Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(48)

Side by Side Diff: chrome/browser/ui/cocoa/infobars/alternate_nav_infobar_controller.mm

Issue 11773025: cocoa/infobars: Split infobar_controller.* into smaller parts. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add files to chrome_nibs.gyp Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "chrome/browser/ui/cocoa/infobars/alternate_nav_infobar_controller.h"
6
7 #include "base/logging.h"
8 #include "base/sys_string_conversions.h"
9 #include "chrome/browser/infobars/alternate_nav_infobar_delegate.h"
10 #import "chrome/browser/ui/cocoa/hyperlink_text_view.h"
11 #include "chrome/browser/ui/cocoa/event_utils.h"
12 #include "chrome/browser/ui/cocoa/infobars/infobar.h"
13 #include "webkit/glue/window_open_disposition.h"
14
15 @implementation AlternateNavInfoBarController
16
17 // Link infobars have a text message, of which part is linkified. We
18 // use an NSAttributedString to display styled text, and we set a
19 // NSLink attribute on the hyperlink portion of the message. Infobars
20 // use a custom NSTextField subclass, which allows us to override
21 // textView:clickedOnLink:atIndex: and intercept clicks.
22 //
23 - (void)addAdditionalControls {
24 // No buttons.
25 [self removeButtons];
26
27 AlternateNavInfoBarDelegate* delegate =
28 delegate_->AsAlternateNavInfoBarDelegate();
29 DCHECK(delegate);
30 size_t offset = string16::npos;
31 string16 message = delegate->GetMessageTextWithOffset(&offset);
32 string16 link = delegate->GetLinkText();
33 NSFont* font = [NSFont labelFontOfSize:
34 [NSFont systemFontSizeForControlSize:NSRegularControlSize]];
35 HyperlinkTextView* view = (HyperlinkTextView*)label_.get();
36 [view setMessageAndLink:base::SysUTF16ToNSString(message)
37 withLink:base::SysUTF16ToNSString(link)
38 atOffset:offset
39 font:font
40 messageColor:[NSColor blackColor]
41 linkColor:[NSColor blueColor]];
42 }
43
44 // Called when someone clicks on the link in the infobar. This method
45 // is called by the InfobarTextField on its delegate (the
46 // AlternateNavInfoBarController).
47 - (void)linkClicked {
48 if (![self isOwned])
49 return;
50 WindowOpenDisposition disposition =
51 event_utils::WindowOpenDispositionFromNSEvent([NSApp currentEvent]);
52 if (delegate_->AsAlternateNavInfoBarDelegate()->LinkClicked(disposition))
53 [self removeSelf];
54 }
55
56 @end
57
58 InfoBar* AlternateNavInfoBarDelegate::CreateInfoBar(InfoBarService* owner) {
59 AlternateNavInfoBarController* controller =
60 [[AlternateNavInfoBarController alloc] initWithDelegate:this owner:owner];
61 return new InfoBar(controller, this);
62 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698