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 ASH_SHELL_WINDOW_TYPE_LAUNCHER_H_ 6 #define ASH_SHELL_WINDOW_TYPE_LAUNCHER_H_ 7 8 #include "ui/views/context_menu_controller.h" 9 #include "ui/views/controls/button/button.h" 10 #include "ui/views/controls/menu/menu_delegate.h" 11 #include "ui/views/widget/widget_delegate.h" 12 13 namespace views { 14 class MenuRunner; 15 class LabelButton; 16 } 17 18 namespace ash { 19 namespace shell { 20 21 // The contents view/delegate of a window that shows some buttons that create 22 // various window types. 23 #if defined(OS_MACOSX) 24 class WindowTypeLauncher : public views::WidgetDelegateView, 25 public views::ButtonListener { 26 #else 27 class WindowTypeLauncher : public views::WidgetDelegateView, 28 public views::ButtonListener, 29 public views::MenuDelegate, 30 public views::ContextMenuController { 31 #endif // defined(OS_MACOSX) 32 public: 33 WindowTypeLauncher(); 34 virtual ~WindowTypeLauncher(); 35 36 private: 37 typedef std::pair<aura::Window*, gfx::Rect> WindowAndBoundsPair; 38 39 enum MenuCommands { 40 COMMAND_NEW_WINDOW = 1, 41 COMMAND_TOGGLE_FULLSCREEN = 3, 42 }; 43 44 // Overridden from views::View: 45 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 46 virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE; 47 48 // Overridden from views::WidgetDelegate: 49 virtual views::View* GetContentsView() OVERRIDE; 50 virtual bool CanResize() const OVERRIDE; 51 virtual base::string16 GetWindowTitle() const OVERRIDE; 52 virtual bool CanMaximize() const OVERRIDE; 53 54 // Overridden from views::ButtonListener: 55 virtual void ButtonPressed(views::Button* sender, 56 const ui::Event& event) OVERRIDE; 57 58 #if !defined(OS_MACOSX) 59 // Overridden from views::MenuDelegate: 60 virtual void ExecuteCommand(int id, int event_flags) OVERRIDE; 61 62 // Override from views::ContextMenuController: 63 virtual void ShowContextMenuForView(views::View* source, 64 const gfx::Point& point, 65 ui::MenuSourceType source_type) OVERRIDE; 66 #endif // !defined(OS_MACOSX) 67 68 views::LabelButton* create_button_; 69 views::LabelButton* create_persistant_button_; 70 views::LabelButton* panel_button_; 71 views::LabelButton* create_nonresizable_button_; 72 views::LabelButton* bubble_button_; 73 views::LabelButton* lock_button_; 74 views::LabelButton* widgets_button_; 75 views::LabelButton* system_modal_button_; 76 views::LabelButton* window_modal_button_; 77 views::LabelButton* child_modal_button_; 78 views::LabelButton* transient_button_; 79 views::LabelButton* examples_button_; 80 views::LabelButton* show_hide_window_button_; 81 views::LabelButton* show_screensaver_; 82 views::LabelButton* show_web_notification_; 83 #if !defined(OS_MACOSX) 84 scoped_ptr<views::MenuRunner> menu_runner_; 85 #endif 86 87 DISALLOW_COPY_AND_ASSIGN(WindowTypeLauncher); 88 }; 89 90 } // namespace shell 91 } // namespace ash 92 93 #endif // ASH_SHELL_WINDOW_TYPE_LAUNCHER_H_ 94