Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(762)

Unified Diff: mojo/examples/window_manager/window_manager.cc

Issue 311373005: Nesting (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/examples/window_manager/window_manager.cc
diff --git a/mojo/examples/window_manager/window_manager.cc b/mojo/examples/window_manager/window_manager.cc
index 1dc1b29c85906560e70269902b6f69aebccc61eb..fa49bb22192d761ee4d28ec0649923a6d5c75633 100644
--- a/mojo/examples/window_manager/window_manager.cc
+++ b/mojo/examples/window_manager/window_manager.cc
@@ -16,6 +16,14 @@
#undef CreateWindow
#endif
+using mojo::view_manager::TransportNodeId;
+using mojo::view_manager::View;
+using mojo::view_manager::ViewManager;
+using mojo::view_manager::ViewManagerDelegate;
+using mojo::view_manager::ViewObserver;
+using mojo::view_manager::ViewTreeNode;
+using mojo::view_manager::ViewTreeNodeObserver;
+
namespace mojo {
namespace examples {
@@ -29,7 +37,7 @@ class WindowManagerConnection : public InterfaceImpl<IWindowManager> {
private:
// Overridden from IWindowManager:
- virtual void CloseWindow(view_manager::TransportNodeId node_id) OVERRIDE;
+ virtual void CloseWindow(TransportNodeId node_id) OVERRIDE;
WindowManager* window_manager_;
@@ -37,14 +45,14 @@ class WindowManagerConnection : public InterfaceImpl<IWindowManager> {
};
class WindowManager : public Application,
- public view_manager::ViewObserver {
+ public ViewObserver,
+ public ViewManagerDelegate {
public:
- WindowManager() {}
+ WindowManager() : view_manager_(NULL) {}
virtual ~WindowManager() {}
- void CloseWindow(view_manager::TransportNodeId node_id) {
- DCHECK(view_manager_);
- view_manager::ViewTreeNode* node = view_manager_->GetNodeById(node_id);
+ void CloseWindow(TransportNodeId node_id) {
+ ViewTreeNode* node = view_manager_->GetNodeById(node_id);
DCHECK(node);
node->Destroy();
}
@@ -53,30 +61,38 @@ class WindowManager : public Application,
// Overridden from Application:
virtual void Initialize() MOJO_OVERRIDE {
AddService<WindowManagerConnection>(this);
+ ViewManager::Create(this, this);
+ }
+
+ // Overridden from ViewObserver:
+ virtual void OnViewInputEvent(View* view, EventPtr event) OVERRIDE {
+ if (event->action == ui::ET_MOUSE_RELEASED) {
+ if (event->flags & ui::EF_LEFT_MOUSE_BUTTON)
+ CreateWindow("mojo:mojo_embedded_app");
+ else if (event->flags & ui::EF_RIGHT_MOUSE_BUTTON)
+ CreateWindow("mojo:mojo_nesting_app");
+ }
+ }
+
+ // Overridden from ViewManagerDelegate:
+ virtual void OnRootAdded(ViewManager* view_manager,
+ ViewTreeNode* root) OVERRIDE {
+ DCHECK(!view_manager_);
+ view_manager_ = view_manager;
- view_manager_ = view_manager::ViewManager::CreateBlocking(this);
- view_manager::ViewTreeNode* node =
- view_manager::ViewTreeNode::Create(view_manager_);
- view_manager_->roots().front()->AddChild(node);
+ ViewTreeNode* node = ViewTreeNode::Create(view_manager);
+ view_manager->roots().front()->AddChild(node);
node->SetBounds(gfx::Rect(800, 600));
parent_node_id_ = node->id();
- view_manager::View* view = view_manager::View::Create(view_manager_);
+ View* view = View::Create(view_manager);
node->SetActiveView(view);
view->SetColor(SK_ColorBLUE);
view->AddObserver(this);
}
- // Overridden from ViewObserver:
- virtual void OnViewInputEvent(view_manager::View* view,
- EventPtr event) OVERRIDE {
- if (event->action == ui::ET_MOUSE_RELEASED)
- CreateWindow();
- }
-
- void CreateWindow() {
- view_manager::ViewTreeNode* node =
- view_manager_->GetNodeById(parent_node_id_);
+ void CreateWindow(const String& url) {
+ ViewTreeNode* node = view_manager_->GetNodeById(parent_node_id_);
gfx::Rect bounds(50, 50, 200, 200);
if (!node->children().empty()) {
@@ -85,21 +101,19 @@ class WindowManager : public Application,
bounds.set_origin(position);
}
- view_manager::ViewTreeNode* embedded =
- view_manager::ViewTreeNode::Create(view_manager_);
+ ViewTreeNode* embedded = ViewTreeNode::Create(view_manager_);
node->AddChild(embedded);
embedded->SetBounds(bounds);
- embedded->Embed("mojo:mojo_embedded_app");
+ embedded->Embed(url);
}
- view_manager::ViewManager* view_manager_;
- view_manager::TransportNodeId parent_node_id_;
+ ViewManager* view_manager_;
+ TransportNodeId parent_node_id_;
DISALLOW_COPY_AND_ASSIGN(WindowManager);
};
-void WindowManagerConnection::CloseWindow(
- view_manager::TransportNodeId node_id) {
+void WindowManagerConnection::CloseWindow(TransportNodeId node_id) {
window_manager_->CloseWindow(node_id);
}

Powered by Google App Engine
This is Rietveld 408576698