window_type_launcher.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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 13namespace views { 14class MenuRunner; 15class LabelButton; 16} 17 18namespace ash { 19namespace 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) 24class WindowTypeLauncher : public views::WidgetDelegateView, 25 public views::ButtonListener { 26#else 27class 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) OVERRIDE; 65#endif // !defined(OS_MACOSX) 66 67 views::LabelButton* create_button_; 68 views::LabelButton* create_persistant_button_; 69 views::LabelButton* panel_button_; 70 views::LabelButton* create_nonresizable_button_; 71 views::LabelButton* bubble_button_; 72 views::LabelButton* lock_button_; 73 views::LabelButton* widgets_button_; 74 views::LabelButton* system_modal_button_; 75 views::LabelButton* window_modal_button_; 76 views::LabelButton* child_modal_button_; 77 views::LabelButton* transient_button_; 78 views::LabelButton* examples_button_; 79 views::LabelButton* show_hide_window_button_; 80 views::LabelButton* show_screensaver_; 81 views::LabelButton* show_web_notification_; 82#if !defined(OS_MACOSX) 83 scoped_ptr<views::MenuRunner> menu_runner_; 84#endif 85 86 DISALLOW_COPY_AND_ASSIGN(WindowTypeLauncher); 87}; 88 89} // namespace shell 90} // namespace ash 91 92#endif // ASH_SHELL_WINDOW_TYPE_LAUNCHER_H_ 93