| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
| 6 | 6 |
| 7 #include "base/mac/scoped_nsobject.h" | 7 #include "base/mac/scoped_nsobject.h" |
| 8 #include "base/memory/weak_ptr.h" | 8 #include "base/memory/weak_ptr.h" |
| 9 | 9 |
| 10 @protocol InfoBarContainerControllerBase; | 10 @protocol InfoBarContainerControllerBase; |
| 11 class InfoBarCocoa; | 11 class InfoBarCocoa; |
| 12 class InfoBarDelegate; | |
| 13 class InfoBarService; | 12 class InfoBarService; |
| 14 @class InfoBarGradientView; | 13 @class InfoBarGradientView; |
| 15 | 14 |
| 15 namespace infobars { |
| 16 class InfoBarDelegate; |
| 17 } |
| 18 |
| 16 // A controller for an infobar in the browser window. There is one | 19 // A controller for an infobar in the browser window. There is one |
| 17 // controller per infobar view. The base InfoBarController is able to | 20 // controller per infobar view. The base InfoBarController is able to |
| 18 // draw an icon, a text message, and a close button. Subclasses can | 21 // draw an icon, a text message, and a close button. Subclasses can |
| 19 // override addAdditionalControls to customize the UI. | 22 // override addAdditionalControls to customize the UI. |
| 20 @interface InfoBarController : NSViewController<NSTextViewDelegate> { | 23 @interface InfoBarController : NSViewController<NSTextViewDelegate> { |
| 21 @private | 24 @private |
| 22 id<InfoBarContainerControllerBase> containerController_; // weak, owns us | 25 id<InfoBarContainerControllerBase> containerController_; // weak, owns us |
| 23 base::WeakPtr<InfoBarCocoa> infobar_; | 26 base::WeakPtr<InfoBarCocoa> infobar_; |
| 24 | 27 |
| 25 @protected | 28 @protected |
| 26 IBOutlet InfoBarGradientView* infoBarView_; | 29 IBOutlet InfoBarGradientView* infoBarView_; |
| 27 IBOutlet NSImageView* image_; | 30 IBOutlet NSImageView* image_; |
| 28 IBOutlet NSTextField* labelPlaceholder_; | 31 IBOutlet NSTextField* labelPlaceholder_; |
| 29 IBOutlet NSButton* okButton_; | 32 IBOutlet NSButton* okButton_; |
| 30 IBOutlet NSButton* cancelButton_; | 33 IBOutlet NSButton* cancelButton_; |
| 31 IBOutlet NSButton* closeButton_; | 34 IBOutlet NSButton* closeButton_; |
| 32 | 35 |
| 33 // Text fields don't work as well with embedded links as text views, but | 36 // Text fields don't work as well with embedded links as text views, but |
| 34 // text views cannot conveniently be created in IB. The xib file contains | 37 // text views cannot conveniently be created in IB. The xib file contains |
| 35 // a text field |labelPlaceholder_| that's replaced by this text view |label_| | 38 // a text field |labelPlaceholder_| that's replaced by this text view |label_| |
| 36 // in -awakeFromNib. | 39 // in -awakeFromNib. |
| 37 base::scoped_nsobject<NSTextView> label_; | 40 base::scoped_nsobject<NSTextView> label_; |
| 38 } | 41 } |
| 39 | 42 |
| 40 @property(nonatomic, assign) | 43 @property(nonatomic, assign) |
| 41 id<InfoBarContainerControllerBase> containerController; | 44 id<InfoBarContainerControllerBase> containerController; |
| 42 @property(nonatomic, readonly) InfoBarDelegate* delegate; | 45 @property(nonatomic, readonly) infobars::InfoBarDelegate* delegate; |
| 43 @property(nonatomic, readonly) InfoBarCocoa* infobar; | 46 @property(nonatomic, readonly) InfoBarCocoa* infobar; |
| 44 | 47 |
| 45 // Initializes a new InfoBarController and takes a WeakPtr to |infobar|. | 48 // Initializes a new InfoBarController and takes a WeakPtr to |infobar|. |
| 46 - (id)initWithInfoBar:(InfoBarCocoa*)infobar; | 49 - (id)initWithInfoBar:(InfoBarCocoa*)infobar; |
| 47 | 50 |
| 48 // Returns YES if the infobar is owned. If this is NO, it is not safe to call | 51 // Returns YES if the infobar is owned. If this is NO, it is not safe to call |
| 49 // any delegate functions, since they might attempt to access the owner. Code | 52 // any delegate functions, since they might attempt to access the owner. Code |
| 50 // should generally just do nothing at all in this case (once we're closing, all | 53 // should generally just do nothing at all in this case (once we're closing, all |
| 51 // controls can safely just go dead). | 54 // controls can safely just go dead). |
| 52 - (BOOL)isOwned; | 55 - (BOOL)isOwned; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 @interface InfoBarController (Protected) | 94 @interface InfoBarController (Protected) |
| 92 // Disables the provided menu. Subclasses should call this for each popup menu | 95 // Disables the provided menu. Subclasses should call this for each popup menu |
| 93 // in -infobarWillClose. | 96 // in -infobarWillClose. |
| 94 - (void)disablePopUpMenu:(NSMenu*)menu; | 97 - (void)disablePopUpMenu:(NSMenu*)menu; |
| 95 @end | 98 @end |
| 96 | 99 |
| 97 ///////////////////////////////////////////////////////////////////////// | 100 ///////////////////////////////////////////////////////////////////////// |
| 98 // InfoBarController subclasses, one for each InfoBarDelegate | 101 // InfoBarController subclasses, one for each InfoBarDelegate |
| 99 // subclass. Each of these subclasses overrides addAdditionalControls to | 102 // subclass. Each of these subclasses overrides addAdditionalControls to |
| 100 // configure its view as necessary. | 103 // configure its view as necessary. |
| OLD | NEW |