| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2010 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 <Cocoa/Cocoa.h> | |
| 6 | |
| 7 #import "base/mac/cocoa_protocols.h" | |
| 8 #include "base/scoped_nsobject.h" | |
| 9 | |
| 10 @class AnimatableView; | |
| 11 @class HoverCloseButton; | |
| 12 @protocol InfoBarContainer; | |
| 13 class InfoBarDelegate; | |
| 14 @class InfoBarGradientView; | |
| 15 | |
| 16 // A controller for an infobar in the browser window. There is one | |
| 17 // controller per infobar view. The base InfoBarController is able to | |
| 18 // draw an icon, a text message, and a close button. Subclasses can | |
| 19 // override addAdditionalControls to customize the UI. | |
| 20 @interface InfoBarController : NSViewController<NSTextViewDelegate> { | |
| 21 @private | |
| 22 id<InfoBarContainer> containerController_; // weak, owns us | |
| 23 BOOL infoBarClosing_; | |
| 24 | |
| 25 @protected | |
| 26 IBOutlet InfoBarGradientView* infoBarView_; | |
| 27 IBOutlet NSImageView* image_; | |
| 28 IBOutlet NSTextField* labelPlaceholder_; | |
| 29 IBOutlet NSButton* okButton_; | |
| 30 IBOutlet NSButton* cancelButton_; | |
| 31 IBOutlet HoverCloseButton* closeButton_; | |
| 32 | |
| 33 // In rare instances, it can be possible for |delegate_| to delete itself | |
| 34 // while this controller is still alive. Always check |delegate_| against | |
| 35 // NULL before using it. | |
| 36 InfoBarDelegate* delegate_; // weak, can be NULL | |
| 37 | |
| 38 // Text fields don't work as well with embedded links as text views, but | |
| 39 // text views cannot conveniently be created in IB. The xib file contains | |
| 40 // a text field |labelPlaceholder_| that's replaced by this text view |label_| | |
| 41 // in -awakeFromNib. | |
| 42 scoped_nsobject<NSTextView> label_; | |
| 43 }; | |
| 44 | |
| 45 // Initializes a new InfoBarController. | |
| 46 - (id)initWithDelegate:(InfoBarDelegate*)delegate; | |
| 47 | |
| 48 // Called when someone clicks on the OK or Cancel buttons. Subclasses | |
| 49 // must override if they do not hide the buttons. | |
| 50 - (void)ok:(id)sender; | |
| 51 - (void)cancel:(id)sender; | |
| 52 | |
| 53 // Called when someone clicks on the close button. Dismisses the | |
| 54 // infobar without taking any action. | |
| 55 - (IBAction)dismiss:(id)sender; | |
| 56 | |
| 57 // Returns a pointer to this controller's view, cast as an AnimatableView. | |
| 58 - (AnimatableView*)animatableView; | |
| 59 | |
| 60 // Open or animate open the infobar. | |
| 61 - (void)open; | |
| 62 - (void)animateOpen; | |
| 63 | |
| 64 // Close or animate close the infobar. | |
| 65 - (void)close; | |
| 66 - (void)animateClosed; | |
| 67 | |
| 68 // Subclasses can override this method to add additional controls to | |
| 69 // the infobar view. This method is called by awakeFromNib. The | |
| 70 // default implementation does nothing. | |
| 71 - (void)addAdditionalControls; | |
| 72 | |
| 73 // Subclasses must override this method to perform cleanup just before the | |
| 74 // infobar closes. | |
| 75 - (void)infobarWillClose; | |
| 76 | |
| 77 // Sets the info bar message to the specified |message|. | |
| 78 - (void)setLabelToMessage:(NSString*)message; | |
| 79 | |
| 80 // Removes the OK and Cancel buttons and resizes the textfield to use the | |
| 81 // space. | |
| 82 - (void)removeButtons; | |
| 83 | |
| 84 @property(nonatomic, assign) id<InfoBarContainer> containerController; | |
| 85 @property(nonatomic, readonly) InfoBarDelegate* delegate; | |
| 86 | |
| 87 @end | |
| 88 | |
| 89 ///////////////////////////////////////////////////////////////////////// | |
| 90 // InfoBarController subclasses, one for each InfoBarDelegate | |
| 91 // subclass. Each of these subclasses overrides addAdditionalControls to | |
| 92 // configure its view as necessary. | |
| 93 | |
| 94 @interface AlertInfoBarController : InfoBarController | |
| 95 @end | |
| 96 | |
| 97 | |
| 98 @interface LinkInfoBarController : InfoBarController | |
| 99 // Called when there is a click on the link in the infobar. | |
| 100 - (void)linkClicked; | |
| 101 @end | |
| 102 | |
| 103 | |
| 104 @interface ConfirmInfoBarController : InfoBarController | |
| 105 // Called when the OK and Cancel buttons are clicked. | |
| 106 - (IBAction)ok:(id)sender; | |
| 107 - (IBAction)cancel:(id)sender; | |
| 108 // Called when there is a click on the link in the infobar. | |
| 109 - (void)linkClicked; | |
| 110 @end | |
| OLD | NEW |