OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "mojo/public/cpp/application/application_delegate.h" |
| 6 #include "mojo/services/public/cpp/view_manager/view_manager.h" |
| 7 #include "mojo/services/public/cpp/view_manager/view_manager_delegate.h" |
| 8 #include "mojo/services/public/cpp/view_manager/window_manager_delegate.h" |
| 9 #include "mojo/services/window_manager/window_manager_app.h" |
| 10 |
| 11 namespace examples { |
| 12 |
| 13 class SimpleWM : public mojo::ApplicationDelegate, |
| 14 public mojo::view_manager::ViewManagerDelegate, |
| 15 public mojo::view_manager::WindowManagerDelegate { |
| 16 public: |
| 17 SimpleWM() |
| 18 : window_manager_app_(new mojo::WindowManagerApp(this)), |
| 19 view_manager_(NULL), |
| 20 root_(NULL), |
| 21 window_container_(NULL), |
| 22 next_window_origin_(10, 10) {} |
| 23 virtual ~SimpleWM() {} |
| 24 |
| 25 private: |
| 26 // Overridden from mojo::ApplicationDelegate: |
| 27 virtual void Initialize(mojo::ApplicationImpl* impl) MOJO_OVERRIDE { |
| 28 window_manager_app_->Initialize(impl); |
| 29 } |
| 30 virtual bool ConfigureIncomingConnection( |
| 31 mojo::ApplicationConnection* connection) MOJO_OVERRIDE { |
| 32 window_manager_app_->ConfigureIncomingConnection(connection); |
| 33 return true; |
| 34 } |
| 35 |
| 36 // Overridden from mojo::view_manager::ViewManagerDelegate: |
| 37 virtual void OnRootAdded( |
| 38 mojo::view_manager::ViewManager* view_manager, |
| 39 mojo::view_manager::Node* root) MOJO_OVERRIDE { |
| 40 view_manager_ = view_manager; |
| 41 root_ = root; |
| 42 view_manager_->SetWindowManagerDelegate(this); |
| 43 |
| 44 window_container_ = mojo::view_manager::Node::Create(view_manager_); |
| 45 window_container_->SetBounds(root_->bounds()); |
| 46 root_->AddChild(window_container_); |
| 47 |
| 48 } |
| 49 virtual void OnViewManagerDisconnected( |
| 50 mojo::view_manager::ViewManager* view_manager) MOJO_OVERRIDE { |
| 51 view_manager_ = NULL; |
| 52 root_ = NULL; |
| 53 } |
| 54 |
| 55 // Overridden from mojo::view_manager::WindowManagerDelegate: |
| 56 virtual void Embed(const mojo::String& url) MOJO_OVERRIDE { |
| 57 mojo::view_manager::Node* embed_node = |
| 58 mojo::view_manager::Node::Create(view_manager_); |
| 59 embed_node->SetBounds(gfx::Rect(next_window_origin_, gfx::Size(400, 400))); |
| 60 window_container_->AddChild(embed_node); |
| 61 embed_node->Embed(url); |
| 62 next_window_origin_.Offset(50, 50); |
| 63 } |
| 64 virtual void DispatchEvent(mojo::view_manager::View* target, |
| 65 mojo::EventPtr event) MOJO_OVERRIDE { |
| 66 view_manager_->DispatchEvent(target, event.Pass()); |
| 67 } |
| 68 |
| 69 scoped_ptr<mojo::WindowManagerApp> window_manager_app_; |
| 70 |
| 71 mojo::view_manager::ViewManager* view_manager_; |
| 72 mojo::view_manager::Node* root_; |
| 73 mojo::view_manager::Node* window_container_; |
| 74 |
| 75 gfx::Point next_window_origin_; |
| 76 |
| 77 DISALLOW_COPY_AND_ASSIGN(SimpleWM); |
| 78 }; |
| 79 |
| 80 } // namespace examples |
| 81 |
| 82 namespace mojo { |
| 83 |
| 84 // static |
| 85 ApplicationDelegate* ApplicationDelegate::Create() { |
| 86 return new examples::SimpleWM; |
| 87 } |
| 88 |
| 89 } // namespace |
OLD | NEW |