- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / cocoa / notifications / balloon_controller.h
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_NOTIFICATIONS_BALLOON_CONTROLLER_H_
6 #define CHROME_BROWSER_UI_COCOA_NOTIFICATIONS_BALLOON_CONTROLLER_H_
7
8 #import <Cocoa/Cocoa.h>
9
10 #include "base/mac/scoped_nsobject.h"
11 #include "base/memory/scoped_ptr.h"
12
13 class Balloon;
14 @class BalloonContentViewCocoa;
15 @class BalloonShelfViewCocoa;
16 class BalloonViewHost;
17 @class HoverImageButton;
18 @class MenuController;
19 class NotificationOptionsMenuModel;
20
21 // The Balloon controller creates the view elements to display a
22 // notification balloon, resize it if the HTML contents of that
23 // balloon change, and move it when the collection of balloons is
24 // modified.
25 @interface BalloonController : NSWindowController<NSWindowDelegate> {
26  @private
27   // The balloon which represents the contents of this view. Weak pointer
28   // owned by the browser's NotificationUIManager.
29   Balloon* balloon_;
30
31   // The view that contains the contents of the notification
32   IBOutlet BalloonContentViewCocoa* htmlContainer_;
33
34   // The view that contains the controls of the notification
35   IBOutlet BalloonShelfViewCocoa* shelf_;
36
37   // The close button.
38   IBOutlet NSButton* closeButton_;
39
40   // Tracking region for the close button.
41   int closeButtonTrackingTag_;
42
43   // The origin label.
44   IBOutlet NSTextField* originLabel_;
45
46   // The options menu that appears when "options" is pressed.
47   IBOutlet HoverImageButton* optionsButton_;
48   scoped_ptr<NotificationOptionsMenuModel> menuModel_;
49   base::scoped_nsobject<MenuController> menuController_;
50
51   // The host for the renderer of the HTML contents.
52   scoped_ptr<BalloonViewHost> htmlContents_;
53
54   // Variables to delay close requested by script while showing modal menu.
55   BOOL optionMenuIsActive_;
56   BOOL delayedClose_;
57 }
58
59 // Initialize with a balloon object containing the notification data.
60 - (id)initWithBalloon:(Balloon*)balloon;
61
62 // Callback function for the close button.
63 - (IBAction)closeButtonPressed:(id)sender;
64
65 // Callback function for the options button.
66 - (IBAction)optionsButtonPressed:(id)sender;
67
68 // Callback function for the "revoke" option in the menu.
69 - (IBAction)permissionRevoked:(id)sender;
70
71 // Closes the balloon.  Can be called by the bridge or by the close
72 // button handler.
73 - (void)closeBalloon:(bool)byUser;
74
75 // Update the contents of the balloon to match the notification.
76 - (void)updateContents;
77
78 // Repositions the view to match the position and size of the balloon.
79 // Called by the bridge when the size changes.
80 - (void)repositionToBalloon;
81
82 // The current size of the view, possibly subject to an animation completing.
83 - (int)desiredTotalWidth;
84 - (int)desiredTotalHeight;
85
86 // The BalloonHost
87 - (BalloonViewHost*)getHost;
88 @end
89
90 @interface BalloonController (UnitTesting)
91 - (void)initializeHost;
92 @end
93
94 #endif  // CHROME_BROWSER_UI_COCOA_NOTIFICATIONS_BALLOON_CONTROLLER_H_