OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "mojo/examples/wm_flow/wm/frame_controller.h" | 5 #include "mojo/examples/wm_flow/wm/frame_controller.h" |
6 | 6 |
| 7 #include "base/macros.h" |
7 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
8 #include "mojo/services/public/cpp/view_manager/view.h" | 9 #include "mojo/services/public/cpp/view_manager/view.h" |
9 #include "mojo/services/window_manager/window_manager_app.h" | 10 #include "mojo/services/window_manager/window_manager_app.h" |
10 #include "mojo/views/native_widget_view_manager.h" | 11 #include "mojo/views/native_widget_view_manager.h" |
11 #include "ui/views/background.h" | 12 #include "ui/views/background.h" |
12 #include "ui/views/controls/button/label_button.h" | 13 #include "ui/views/controls/button/label_button.h" |
13 #include "ui/views/layout/layout_manager.h" | 14 #include "ui/views/layout/layout_manager.h" |
14 #include "ui/views/widget/widget.h" | 15 #include "ui/views/widget/widget.h" |
15 #include "ui/wm/public/activation_client.h" | 16 #include "ui/wm/public/activation_client.h" |
16 | 17 |
17 class FrameController::LayoutManager : public views::LayoutManager, | 18 class FrameController::LayoutManager : public views::LayoutManager, |
18 public views::ButtonListener { | 19 public views::ButtonListener { |
19 public: | 20 public: |
20 explicit LayoutManager(FrameController* controller) | 21 explicit LayoutManager(FrameController* controller) |
21 : controller_(controller), | 22 : controller_(controller), |
22 close_button_( | 23 close_button_( |
23 new views::LabelButton(this, base::ASCIIToUTF16("Begone"))), | 24 new views::LabelButton(this, base::ASCIIToUTF16("Begone"))), |
24 maximize_button_( | 25 maximize_button_( |
25 new views::LabelButton(this, base::ASCIIToUTF16("Embiggen"))) {} | 26 new views::LabelButton(this, base::ASCIIToUTF16("Embiggen"))) {} |
26 virtual ~LayoutManager() {} | 27 virtual ~LayoutManager() {} |
27 | 28 |
28 private: | 29 private: |
29 static const int kButtonFrameMargin = 5; | 30 static const int kButtonFrameMargin = 5; |
30 static const int kButtonFrameSpacing = 2; | 31 static const int kButtonFrameSpacing = 2; |
31 static const int kFrameSize = 10; | 32 static const int kFrameSize = 10; |
32 | 33 |
33 // Overridden from views::LayoutManager: | 34 // Overridden from views::LayoutManager: |
34 virtual void Installed(views::View* host) OVERRIDE { | 35 virtual void Installed(views::View* host) override { |
35 host->AddChildView(close_button_); | 36 host->AddChildView(close_button_); |
36 host->AddChildView(maximize_button_); | 37 host->AddChildView(maximize_button_); |
37 } | 38 } |
38 virtual void Layout(views::View* host) OVERRIDE { | 39 virtual void Layout(views::View* host) override { |
39 gfx::Size ps = close_button_->GetPreferredSize(); | 40 gfx::Size ps = close_button_->GetPreferredSize(); |
40 gfx::Rect bounds = host->GetLocalBounds(); | 41 gfx::Rect bounds = host->GetLocalBounds(); |
41 close_button_->SetBounds(bounds.right() - kButtonFrameMargin - ps.width(), | 42 close_button_->SetBounds(bounds.right() - kButtonFrameMargin - ps.width(), |
42 kButtonFrameMargin, ps.width(), ps.height()); | 43 kButtonFrameMargin, ps.width(), ps.height()); |
43 | 44 |
44 ps = maximize_button_->GetPreferredSize(); | 45 ps = maximize_button_->GetPreferredSize(); |
45 maximize_button_->SetBounds( | 46 maximize_button_->SetBounds( |
46 close_button_->x() - kButtonFrameSpacing - ps.width(), | 47 close_button_->x() - kButtonFrameSpacing - ps.width(), |
47 kButtonFrameMargin, ps.width(), ps.height()); | 48 kButtonFrameMargin, ps.width(), ps.height()); |
48 | 49 |
49 bounds.Inset(kFrameSize, | 50 bounds.Inset(kFrameSize, |
50 close_button_->bounds().bottom() + kButtonFrameMargin, | 51 close_button_->bounds().bottom() + kButtonFrameMargin, |
51 kFrameSize, kFrameSize); | 52 kFrameSize, kFrameSize); |
52 controller_->app_view_->SetBounds(bounds); | 53 controller_->app_view_->SetBounds(bounds); |
53 } | 54 } |
54 virtual gfx::Size GetPreferredSize(const views::View* host) const OVERRIDE { | 55 virtual gfx::Size GetPreferredSize(const views::View* host) const override { |
55 return gfx::Size(); | 56 return gfx::Size(); |
56 } | 57 } |
57 | 58 |
58 // Overridden from views::ButtonListener: | 59 // Overridden from views::ButtonListener: |
59 virtual void ButtonPressed(views::Button* sender, | 60 virtual void ButtonPressed(views::Button* sender, |
60 const ui::Event& event) OVERRIDE { | 61 const ui::Event& event) override { |
61 if (sender == close_button_) | 62 if (sender == close_button_) |
62 controller_->CloseWindow(); | 63 controller_->CloseWindow(); |
63 else if (sender == maximize_button_) | 64 else if (sender == maximize_button_) |
64 controller_->ToggleMaximize(); | 65 controller_->ToggleMaximize(); |
65 } | 66 } |
66 | 67 |
67 FrameController* controller_; | 68 FrameController* controller_; |
68 views::Button* close_button_; | 69 views::Button* close_button_; |
69 views::Button* maximize_button_; | 70 views::Button* maximize_button_; |
70 | 71 |
71 DISALLOW_COPY_AND_ASSIGN(LayoutManager); | 72 DISALLOW_COPY_AND_ASSIGN(LayoutManager); |
72 }; | 73 }; |
73 | 74 |
74 class FrameController::FrameEventHandler : public ui::EventHandler { | 75 class FrameController::FrameEventHandler : public ui::EventHandler { |
75 public: | 76 public: |
76 explicit FrameEventHandler(FrameController* frame_controller) | 77 explicit FrameEventHandler(FrameController* frame_controller) |
77 : frame_controller_(frame_controller) {} | 78 : frame_controller_(frame_controller) {} |
78 virtual ~FrameEventHandler() {} | 79 virtual ~FrameEventHandler() {} |
79 | 80 |
80 private: | 81 private: |
81 | 82 |
82 // Overriden from ui::EventHandler: | 83 // Overriden from ui::EventHandler: |
83 virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { | 84 virtual void OnMouseEvent(ui::MouseEvent* event) override { |
84 if (event->type() == ui::ET_MOUSE_PRESSED) | 85 if (event->type() == ui::ET_MOUSE_PRESSED) |
85 frame_controller_->ActivateWindow(); | 86 frame_controller_->ActivateWindow(); |
86 } | 87 } |
87 | 88 |
88 FrameController* frame_controller_; | 89 FrameController* frame_controller_; |
89 | 90 |
90 DISALLOW_COPY_AND_ASSIGN(FrameEventHandler); | 91 DISALLOW_COPY_AND_ASSIGN(FrameEventHandler); |
91 }; | 92 }; |
92 | 93 |
93 //////////////////////////////////////////////////////////////////////////////// | 94 //////////////////////////////////////////////////////////////////////////////// |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 activation_client_->ActivateWindow(window); | 146 activation_client_->ActivateWindow(window); |
146 } | 147 } |
147 | 148 |
148 //////////////////////////////////////////////////////////////////////////////// | 149 //////////////////////////////////////////////////////////////////////////////// |
149 // FrameController, mojo::ViewObserver implementation: | 150 // FrameController, mojo::ViewObserver implementation: |
150 | 151 |
151 void FrameController::OnViewDestroyed(mojo::View* view) { | 152 void FrameController::OnViewDestroyed(mojo::View* view) { |
152 view_->RemoveObserver(this); | 153 view_->RemoveObserver(this); |
153 delete this; | 154 delete this; |
154 } | 155 } |
OLD | NEW |