| 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/strings/string_util.h" | 6 #include "base/strings/string_util.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "mojo/examples/window_manager/window_manager.mojom.h" | 8 #include "mojo/examples/window_manager/window_manager.mojom.h" |
| 9 #include "mojo/public/cpp/application/application_connection.h" | 9 #include "mojo/public/cpp/application/application_connection.h" |
| 10 #include "mojo/public/cpp/application/application_delegate.h" | 10 #include "mojo/public/cpp/application/application_delegate.h" |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 virtual void OnRootAdded(view_manager::ViewManager* view_manager, | 198 virtual void OnRootAdded(view_manager::ViewManager* view_manager, |
| 199 view_manager::Node* root) OVERRIDE { | 199 view_manager::Node* root) OVERRIDE { |
| 200 // TODO: deal with OnRootAdded() being invoked multiple times. | 200 // TODO: deal with OnRootAdded() being invoked multiple times. |
| 201 view_manager_ = view_manager; | 201 view_manager_ = view_manager; |
| 202 root_ = root; | 202 root_ = root; |
| 203 root_->AddObserver(this); | 203 root_->AddObserver(this); |
| 204 root_->SetActiveView(view_manager::View::Create(view_manager)); | 204 root_->SetActiveView(view_manager::View::Create(view_manager)); |
| 205 root_->SetFocus(); | 205 root_->SetFocus(); |
| 206 CreateWidget(root_); | 206 CreateWidget(root_); |
| 207 } | 207 } |
| 208 virtual void OnViewManagerDisconnected( |
| 209 view_manager::ViewManager* view_manager) OVERRIDE { |
| 210 DCHECK_EQ(view_manager_, view_manager); |
| 211 view_manager_ = NULL; |
| 212 base::MessageLoop::current()->Quit(); |
| 213 } |
| 208 | 214 |
| 209 // views::TextfieldController: | 215 // views::TextfieldController: |
| 210 virtual bool HandleKeyEvent(views::Textfield* sender, | 216 virtual bool HandleKeyEvent(views::Textfield* sender, |
| 211 const ui::KeyEvent& key_event) OVERRIDE { | 217 const ui::KeyEvent& key_event) OVERRIDE { |
| 212 if (key_event.key_code() == ui::VKEY_RETURN) { | 218 if (key_event.key_code() == ui::VKEY_RETURN) { |
| 213 GURL url(sender->text()); | 219 GURL url(sender->text()); |
| 214 printf("User entered this URL: %s\n", url.spec().c_str()); | 220 printf("User entered this URL: %s\n", url.spec().c_str()); |
| 215 navigation::NavigationDetailsPtr nav_details( | 221 navigation::NavigationDetailsPtr nav_details( |
| 216 navigation::NavigationDetails::New()); | 222 navigation::NavigationDetails::New()); |
| 217 nav_details->url = url.spec(); | 223 nav_details->url = url.spec(); |
| 218 navigator_host_->RequestNavigate(view_manager_->GetRoots().front()->id(), | 224 navigator_host_->RequestNavigate(view_manager_->GetRoots().front()->id(), |
| 219 navigation::NEW_NODE, | 225 navigation::NEW_NODE, |
| 220 nav_details.Pass()); | 226 nav_details.Pass()); |
| 221 } | 227 } |
| 222 return false; | 228 return false; |
| 223 } | 229 } |
| 224 | 230 |
| 225 // NodeObserver: | 231 // NodeObserver: |
| 226 virtual void OnNodeFocusChanged(view_manager::Node* gained_focus, | 232 virtual void OnNodeFocusChanged(view_manager::Node* gained_focus, |
| 227 view_manager::Node* lost_focus) OVERRIDE { | 233 view_manager::Node* lost_focus) OVERRIDE { |
| 228 aura::client::FocusClient* focus_client = | 234 aura::client::FocusClient* focus_client = |
| 229 aura::client::GetFocusClient(widget_->GetNativeView()); | 235 aura::client::GetFocusClient(widget_->GetNativeView()); |
| 230 if (lost_focus == root_) | 236 if (lost_focus == root_) |
| 231 focus_client->FocusWindow(NULL); | 237 focus_client->FocusWindow(NULL); |
| 232 else if (gained_focus == root_) | 238 else if (gained_focus == root_) |
| 233 focus_client->FocusWindow(widget_->GetNativeView()); | 239 focus_client->FocusWindow(widget_->GetNativeView()); |
| 234 } | 240 } |
| 241 virtual void OnNodeDestroyed(view_manager::Node* node) OVERRIDE { |
| 242 DCHECK_EQ(root_, node); |
| 243 node->RemoveObserver(this); |
| 244 } |
| 235 | 245 |
| 236 scoped_ptr<ViewsInit> views_init_; | 246 scoped_ptr<ViewsInit> views_init_; |
| 237 | 247 |
| 238 view_manager::ViewManager* view_manager_; | 248 view_manager::ViewManager* view_manager_; |
| 239 view_manager::Node* root_; | 249 view_manager::Node* root_; |
| 240 views::Widget* widget_; | 250 views::Widget* widget_; |
| 241 navigation::NavigatorHostPtr navigator_host_; | 251 navigation::NavigatorHostPtr navigator_host_; |
| 242 IWindowManagerPtr window_manager_; | 252 IWindowManagerPtr window_manager_; |
| 243 | 253 |
| 244 DISALLOW_COPY_AND_ASSIGN(Browser); | 254 DISALLOW_COPY_AND_ASSIGN(Browser); |
| 245 }; | 255 }; |
| 246 | 256 |
| 247 } // namespace examples | 257 } // namespace examples |
| 248 | 258 |
| 249 // static | 259 // static |
| 250 ApplicationDelegate* ApplicationDelegate::Create() { | 260 ApplicationDelegate* ApplicationDelegate::Create() { |
| 251 return new examples::Browser; | 261 return new examples::Browser; |
| 252 } | 262 } |
| 253 | 263 |
| 254 } // namespace mojo | 264 } // namespace mojo |
| OLD | NEW |