| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/views/examples/tree_view_example.h" | 5 #include "ui/views/examples/tree_view_example.h" |
| 6 | 6 |
| 7 #include "base/memory/ptr_util.h" |
| 7 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 8 #include "ui/views/controls/button/label_button.h" | 9 #include "ui/views/controls/button/label_button.h" |
| 9 #include "ui/views/controls/menu/menu_model_adapter.h" | 10 #include "ui/views/controls/menu/menu_model_adapter.h" |
| 10 #include "ui/views/controls/menu/menu_runner.h" | 11 #include "ui/views/controls/menu/menu_runner.h" |
| 11 #include "ui/views/controls/tree/tree_view.h" | 12 #include "ui/views/controls/tree/tree_view.h" |
| 12 #include "ui/views/layout/grid_layout.h" | 13 #include "ui/views/layout/grid_layout.h" |
| 13 | 14 |
| 14 using base::ASCIIToUTF16; | 15 using base::ASCIIToUTF16; |
| 15 | 16 |
| 16 namespace views { | 17 namespace views { |
| 17 namespace examples { | 18 namespace examples { |
| 18 | 19 |
| 19 TreeViewExample::TreeViewExample() | 20 TreeViewExample::TreeViewExample() |
| 20 : ExampleBase("Tree View"), | 21 : ExampleBase("Tree View"), |
| 21 tree_view_(NULL), | 22 model_(base::MakeUnique<NodeType>(ASCIIToUTF16("root"), 1)) {} |
| 22 model_(new NodeType(ASCIIToUTF16("root"), 1)) { | |
| 23 } | |
| 24 | 23 |
| 25 TreeViewExample::~TreeViewExample() { | 24 TreeViewExample::~TreeViewExample() { |
| 26 // Delete the view before the model. | 25 // Delete the view before the model. |
| 27 delete tree_view_; | 26 tree_view_.reset(); |
| 28 tree_view_ = NULL; | |
| 29 } | 27 } |
| 30 | 28 |
| 31 void TreeViewExample::CreateExampleView(View* container) { | 29 void TreeViewExample::CreateExampleView(View* container) { |
| 32 // Add some sample data. | 30 // Add some sample data. |
| 33 NodeType* colors_node = new NodeType(ASCIIToUTF16("colors"), 1); | 31 NodeType* colors_node = model_.GetRoot()->Add( |
| 34 model_.GetRoot()->Add(colors_node, 0); | 32 base::MakeUnique<NodeType>(ASCIIToUTF16("colors"), 1), 0); |
| 35 colors_node->Add(new NodeType(ASCIIToUTF16("red"), 1), 0); | 33 colors_node->Add(base::MakeUnique<NodeType>(ASCIIToUTF16("red"), 1), 0); |
| 36 colors_node->Add(new NodeType(ASCIIToUTF16("green"), 1), 1); | 34 colors_node->Add(base::MakeUnique<NodeType>(ASCIIToUTF16("green"), 1), 1); |
| 37 colors_node->Add(new NodeType(ASCIIToUTF16("blue"), 1), 2); | 35 colors_node->Add(base::MakeUnique<NodeType>(ASCIIToUTF16("blue"), 1), 2); |
| 38 | 36 |
| 39 NodeType* sheep_node = new NodeType(ASCIIToUTF16("sheep"), 1); | 37 NodeType* sheep_node = model_.GetRoot()->Add( |
| 40 model_.GetRoot()->Add(sheep_node, 0); | 38 base::MakeUnique<NodeType>(ASCIIToUTF16("sheep"), 1), 0); |
| 41 sheep_node->Add(new NodeType(ASCIIToUTF16("Sheep 1"), 1), 0); | 39 sheep_node->Add(base::MakeUnique<NodeType>(ASCIIToUTF16("Sheep 1"), 1), 0); |
| 42 sheep_node->Add(new NodeType(ASCIIToUTF16("Sheep 2"), 1), 1); | 40 sheep_node->Add(base::MakeUnique<NodeType>(ASCIIToUTF16("Sheep 2"), 1), 1); |
| 43 | 41 |
| 44 tree_view_ = new TreeView(); | 42 tree_view_ = base::MakeUnique<TreeView>(); |
| 45 tree_view_->set_context_menu_controller(this); | 43 tree_view_->set_context_menu_controller(this); |
| 46 tree_view_->SetRootShown(false); | 44 tree_view_->SetRootShown(false); |
| 47 tree_view_->SetModel(&model_); | 45 tree_view_->SetModel(&model_); |
| 48 tree_view_->SetController(this); | 46 tree_view_->SetController(this); |
| 49 add_ = new LabelButton(this, ASCIIToUTF16("Add")); | 47 add_ = new LabelButton(this, ASCIIToUTF16("Add")); |
| 50 add_->SetFocusForPlatform(); | 48 add_->SetFocusForPlatform(); |
| 51 add_->set_request_focus_on_press(true); | 49 add_->set_request_focus_on_press(true); |
| 52 remove_ = new LabelButton(this, ASCIIToUTF16("Remove")); | 50 remove_ = new LabelButton(this, ASCIIToUTF16("Remove")); |
| 53 remove_->SetFocusForPlatform(); | 51 remove_->SetFocusForPlatform(); |
| 54 remove_->set_request_focus_on_press(true); | 52 remove_->set_request_focus_on_press(true); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 78 layout->AddView(add_); | 76 layout->AddView(add_); |
| 79 layout->AddView(remove_); | 77 layout->AddView(remove_); |
| 80 layout->AddView(change_title_); | 78 layout->AddView(change_title_); |
| 81 } | 79 } |
| 82 | 80 |
| 83 void TreeViewExample::AddNewNode() { | 81 void TreeViewExample::AddNewNode() { |
| 84 NodeType* selected_node = | 82 NodeType* selected_node = |
| 85 static_cast<NodeType*>(tree_view_->GetSelectedNode()); | 83 static_cast<NodeType*>(tree_view_->GetSelectedNode()); |
| 86 if (!selected_node) | 84 if (!selected_node) |
| 87 selected_node = model_.GetRoot(); | 85 selected_node = model_.GetRoot(); |
| 88 NodeType* new_node = new NodeType(selected_node->GetTitle(), 1); | 86 NodeType* new_node = model_.Add( |
| 89 model_.Add(selected_node, new_node, selected_node->child_count()); | 87 selected_node, base::MakeUnique<NodeType>(selected_node->GetTitle(), 1), |
| 88 selected_node->child_count()); |
| 90 tree_view_->SetSelectedNode(new_node); | 89 tree_view_->SetSelectedNode(new_node); |
| 91 } | 90 } |
| 92 | 91 |
| 93 bool TreeViewExample::IsCommandIdEnabled(int command_id) { | 92 bool TreeViewExample::IsCommandIdEnabled(int command_id) { |
| 94 return command_id != ID_REMOVE || | 93 return command_id != ID_REMOVE || |
| 95 tree_view_->GetSelectedNode() != model_.GetRoot(); | 94 tree_view_->GetSelectedNode() != model_.GetRoot(); |
| 96 } | 95 } |
| 97 | 96 |
| 98 void TreeViewExample::ButtonPressed(Button* sender, const ui::Event& event) { | 97 void TreeViewExample::ButtonPressed(Button* sender, const ui::Event& event) { |
| 99 NodeType* selected_node = | 98 NodeType* selected_node = |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 case ID_ADD: | 161 case ID_ADD: |
| 163 AddNewNode(); | 162 AddNewNode(); |
| 164 break; | 163 break; |
| 165 default: | 164 default: |
| 166 NOTREACHED(); | 165 NOTREACHED(); |
| 167 } | 166 } |
| 168 } | 167 } |
| 169 | 168 |
| 170 } // namespace examples | 169 } // namespace examples |
| 171 } // namespace views | 170 } // namespace views |
| OLD | NEW |