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;
13class 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