Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / extensions / bookmark_app_bubble_view.h
1 // Copyright 2014 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_VIEWS_EXTENSIONS_BOOKMARK_APP_BUBBLE_VIEW_H_
6 #define CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BOOKMARK_APP_BUBBLE_VIEW_H_
7
8 #include "base/basictypes.h"
9 #include "base/strings/string16.h"
10 #include "chrome/common/web_application_info.h"
11 #include "ui/views/bubble/bubble_delegate.h"
12 #include "ui/views/controls/button/button.h"
13
14 class Profile;
15
16 namespace views {
17 class Checkbox;
18 class LabelButton;
19 class Textfield;
20 }
21
22 // BookmarkAppBubbleView is a view intended to be used as the content of a
23 // Bubble. BookmarkAppBubbleView provides views for editing the bookmark app it
24 // is created with. Don't create a BookmarkAppBubbleView directly, instead use
25 // the static ShowBubble method.
26 class BookmarkAppBubbleView : public views::BubbleDelegateView,
27                               public views::ButtonListener {
28  public:
29   virtual ~BookmarkAppBubbleView();
30
31   static void ShowBubble(views::View* anchor_view,
32                          Profile* profile,
33                          const WebApplicationInfo& web_app_info,
34                          const std::string& extension_id);
35
36  private:
37   // Creates a BookmarkAppBubbleView.
38   BookmarkAppBubbleView(views::View* anchor_view,
39                         Profile* profile,
40                         const WebApplicationInfo& web_app_info,
41                         const std::string& extension_id);
42
43   // Overriden from views::BubbleDelegateView:
44   virtual void Init() OVERRIDE;
45   virtual views::View* GetInitiallyFocusedView() OVERRIDE;
46
47   // Overridden from views::WidgetDelegate:
48   virtual void WindowClosing() OVERRIDE;
49
50   // Overridden from views::View:
51   virtual bool AcceleratorPressed(const ui::Accelerator& accelerator) OVERRIDE;
52   virtual gfx::Size GetMinimumSize() OVERRIDE;
53
54   // Overridden from views::ButtonListener:
55   // Closes the bubble or opens the edit dialog.
56   virtual void ButtonPressed(views::Button* sender,
57                              const ui::Event& event) OVERRIDE;
58
59   // Handle the message when the user presses a button.
60   void HandleButtonPressed(views::Button* sender);
61
62   // Sets the title and launch type of the app.
63   void ApplyEdits();
64
65   // The bookmark app bubble, if we're showing one.
66   static BookmarkAppBubbleView* bookmark_app_bubble_;
67
68   // The profile.
69   Profile* profile_;
70
71   // The WebApplicationInfo being used to create the app.
72   const WebApplicationInfo web_app_info_;
73
74   // The extension id of the bookmark app.
75   const std::string extension_id_;
76
77   // Button for removing the bookmark.
78   views::LabelButton* add_button_;
79
80   // Button to close the window.
81   views::LabelButton* cancel_button_;
82
83   // Checkbox to launch as a tab.
84   views::Checkbox* open_as_tab_checkbox_;
85
86   // Textfield showing the title of the app.
87   views::Textfield* title_tf_;
88
89   // When the destructor is invoked should the app be removed?
90   bool remove_app_;
91
92   DISALLOW_COPY_AND_ASSIGN(BookmarkAppBubbleView);
93 };
94
95 #endif  // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_BOOKMARK_APP_BUBBLE_VIEW_H_