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