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_CONTROLLER_H_
6#define CHROME_BROWSER_UI_COCOA_CONFIRM_BUBBLE_CONTROLLER_H_
7
8#import <Cocoa/Cocoa.h>
9
10#include "base/memory/scoped_ptr.h"
11
12class ConfirmBubbleModel;
13
14// A view controller that manages a bubble view and becomes a proxy between
15// the view and the ConfirmBubbleModel object. This class is internally used
16// in ShowConfirmBubble() and users do not have to change this class directly.
17@interface ConfirmBubbleController :
18    NSViewController<NSTextViewDelegate> {
19 @private
20  NSView* parent_;  // weak
21  CGPoint origin_;
22  scoped_ptr<ConfirmBubbleModel> model_;
23}
24
25// Creates a ConfirmBubbleController object. The ConfirmBubbleController
26// controller takes the ownership of the passed-in ConfirmBubbleModel.
27- (id)initWithParent:(NSView*)parent
28              origin:(CGPoint)origin
29               model:(ConfirmBubbleModel*)model;
30
31// Access to the properties of the ConfirmBubbleModel object. These functions
32// also converts C++ types returned by the ConfirmBubbleModel object to
33// Objective-C types.
34- (NSPoint)origin;
35- (NSString*)title;
36- (NSString*)messageText;
37- (NSString*)linkText;
38- (NSString*)okButtonText;
39- (NSString*)cancelButtonText;
40- (BOOL)hasOkButton;
41- (BOOL)hasCancelButton;
42- (NSImage*)icon;
43
44// Handle actions from the ConfirmBubbleCocoa objet.
45- (void)accept;
46- (void)cancel;
47- (void)linkClicked;
48
49@end
50
51#endif  // CHROME_BROWSER_UI_COCOA_CONFIRM_BUBBLE_CONTROLLER_H_
52