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

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
« no previous file with comments | « mojo/examples/nesting_app/nesting_app.cc ('k') | mojo/mojo.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..255a962a12bedd1f9978c0e485721d04dbe4aa4e 100644
--- a/mojo/examples/window_manager/window_manager.cc
+++ b/mojo/examples/window_manager/window_manager.cc
@@ -8,6 +8,7 @@
#include "mojo/public/cpp/application/application.h"
#include "mojo/services/public/cpp/view_manager/view.h"
#include "mojo/services/public/cpp/view_manager/view_manager.h"
+#include "mojo/services/public/cpp/view_manager/view_manager_delegate.h"
#include "mojo/services/public/cpp/view_manager/view_observer.h"
#include "mojo/services/public/cpp/view_manager/view_tree_node.h"
#include "ui/events/event_constants.h"
@@ -16,6 +17,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 +38,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 +46,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 +62,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 +102,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);
}
« no previous file with comments | « mojo/examples/nesting_app/nesting_app.cc ('k') | mojo/mojo.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698