Chromium Code Reviews| Index: chrome/browser/ui/panels/panel_browser_frame_view.h |
| =================================================================== |
| --- chrome/browser/ui/panels/panel_browser_frame_view.h (revision 87324) |
| +++ chrome/browser/ui/panels/panel_browser_frame_view.h (working copy) |
| @@ -9,19 +9,28 @@ |
| #include "base/gtest_prod_util.h" |
| #include "base/message_loop.h" |
| #include "base/scoped_ptr.h" |
| +#include "chrome/browser/extensions/extension_uninstall_dialog.h" |
| #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" |
| #include "chrome/browser/ui/views/tab_icon_view.h" |
| +#include "ui/base/models/simple_menu_model.h" |
| #include "views/controls/button/button.h" |
| +#include "views/controls/menu/view_menu_delegate.h" |
| +class Extension; |
| class PanelBrowserView; |
| namespace views { |
| class ImageButton; |
| class Label; |
| +class Menu2; |
| +class MenuButton; |
| } |
| class PanelBrowserFrameView : public BrowserNonClientFrameView, |
| public views::ButtonListener, |
| - public TabIconView::TabIconViewModel { |
| + public views::ViewMenuDelegate, |
| + public ui::SimpleMenuModel::Delegate, |
| + public TabIconView::TabIconViewModel, |
| + public ExtensionUninstallDialog::Delegate { |
| public: |
| PanelBrowserFrameView(BrowserFrame* frame, PanelBrowserView* browser_view); |
| virtual ~PanelBrowserFrameView(); |
| @@ -60,14 +69,28 @@ |
| virtual void ButtonPressed(views::Button* sender, const views::Event& event) |
| OVERRIDE; |
| + // Overridden from views::ViewMenuDelegate: |
| + virtual void RunMenu(View* source, const gfx::Point& pt) OVERRIDE; |
| + |
| + // Overridden from ui::SimpleMenuModel::Delegate: |
| + virtual bool IsCommandIdChecked(int command_id) const OVERRIDE; |
| + virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE; |
| + virtual bool GetAcceleratorForCommandId( |
| + int command_id, ui::Accelerator* accelerator) OVERRIDE; |
| + virtual void ExecuteCommand(int command_id) OVERRIDE; |
| + |
| // Overridden from TabIconView::TabIconViewModel: |
| virtual bool ShouldTabIconViewAnimate() const OVERRIDE; |
| virtual SkBitmap GetFaviconForTabIconView() OVERRIDE; |
| + // ExtensionUninstallDialog::Delegate: |
| + virtual void ExtensionDialogAccepted(); |
|
Dmitry Titov
2011/06/01 20:06:20
OVERRIDE?
jianli
2011/06/01 20:39:50
Done.
|
| + virtual void ExtensionDialogCanceled(); |
| + |
| private: |
| friend class PanelBrowserViewTest; |
| FRIEND_TEST_ALL_PREFIXES(PanelBrowserViewTest, CreatePanel); |
| - FRIEND_TEST_ALL_PREFIXES(PanelBrowserViewTest, ShowOrHideInfoButton); |
| + FRIEND_TEST_ALL_PREFIXES(PanelBrowserViewTest, ShowOrHideWrenchButton); |
| enum PaintState { |
| NOT_PAINTED, |
| @@ -75,6 +98,14 @@ |
| PAINT_AS_ACTIVE |
| }; |
| + enum { |
| + COMMAND_NAME = 0, |
| + COMMAND_CONFIGURE, |
| + COMMAND_DISABLE, |
| + COMMAND_UNINSTALL, |
| + COMMAND_MANAGE |
| + }; |
| + |
| class MouseWatcher : public MessageLoopForUI::Observer { |
| public: |
| explicit MouseWatcher(PanelBrowserFrameView* view); |
| @@ -117,11 +148,15 @@ |
| // Called by MouseWatcher to notify if the mouse enters or leaves the window. |
| void OnMouseEnterOrLeaveWindow(bool mouse_entered); |
| - // Make info button visible if either of the conditions is met: |
| + // Make wrench button visible if either of the conditions is met: |
| // 1) The panel is active, i.e. having focus. |
| // 2) The mouse is over the panel. |
| - void UpdateInfoButtonVisibility(bool active, bool cursor_in_view); |
| + void UpdateWrenchButtonVisibility(bool active, bool cursor_in_view); |
| + const Extension* GetExtension() const; |
| + |
| + void EnsureCreateWrenchMenu(); |
| + |
| #ifdef UNIT_TEST |
| void set_mouse_watcher(MouseWatcher* mouse_watcher) { |
| mouse_watcher_.reset(mouse_watcher); |
| @@ -138,12 +173,15 @@ |
| PanelBrowserView* browser_view_; |
| PaintState paint_state_; |
| - views::ImageButton* info_button_; |
| + views::MenuButton* wrench_button_; |
| views::ImageButton* close_button_; |
| TabIconView* title_icon_; |
| views::Label* title_label_; |
| gfx::Rect client_view_bounds_; |
| scoped_ptr<MouseWatcher> mouse_watcher_; |
| + scoped_ptr<views::Menu2> wrench_menu_; |
| + scoped_ptr<ui::SimpleMenuModel> wrench_menu_contents_; |
| + scoped_ptr<ExtensionUninstallDialog> extension_uninstall_dialog_; |
| DISALLOW_COPY_AND_ASSIGN(PanelBrowserFrameView); |
| }; |