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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_UI_COCOA_CONFIRM_BUBBLE_COCOA_H_ 6 #define CHROME_BROWSER_UI_COCOA_CONFIRM_BUBBLE_COCOA_H_ 7 8 #import <Cocoa/Cocoa.h> 9 10 #include "base/mac/scoped_nsobject.h" 11 12 @class ConfirmBubbleController; 13 class ConfirmBubbleModel; 14 15 // A view class that implements a bubble consisting of the following items: 16 // * one icon ("icon") 17 // * one title text ("title") 18 // * one message text ("message") 19 // * one optional link ("link") 20 // * two optional buttons ("ok" and "cancel") 21 // 22 // This bubble is convenient when we wish to ask transient, non-blocking 23 // questions. Unlike a dialog, a bubble menu disappears when we click outside of 24 // its window to avoid blocking user operations. A bubble is laid out as 25 // follows: 26 // 27 // +------------------------+ 28 // | icon title | 29 // | message | 30 // | link | 31 // | [Cancel] [OK] | 32 // +------------------------+ 33 // 34 @interface ConfirmBubbleCocoa : NSView<NSTextViewDelegate> { 35 @private 36 NSView* parent_; // weak 37 ConfirmBubbleController* controller_; // weak 38 39 // Controls used in this bubble. 40 base::scoped_nsobject<NSImageView> icon_; 41 base::scoped_nsobject<NSTextView> titleLabel_; 42 base::scoped_nsobject<NSTextView> messageLabel_; 43 base::scoped_nsobject<NSButton> okButton_; 44 base::scoped_nsobject<NSButton> cancelButton_; 45 } 46 47 // Initializes a bubble view. Since this initializer programmatically creates a 48 // custom NSView (i.e. without using a nib file), this function should be called 49 // from loadView: of the controller object which owns this view. 50 - (id)initWithParent:(NSView*)parent 51 controller:(ConfirmBubbleController*)controller; 52 53 @end 54 55 // Exposed only for unit testing. 56 @interface ConfirmBubbleCocoa (ExposedForUnitTesting) 57 - (void)clickOk; 58 - (void)clickCancel; 59 - (void)clickLink; 60 @end 61 62 #endif // CHROME_BROWSER_UI_COCOA_CONFIRM_BUBBLE_COCOA_H_ 63