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 3 // found in the LICENSE file. 4 5 #ifndef UI_VIEWS_EXAMPLES_TREE_VIEW_EXAMPLE_H_ 6 #define UI_VIEWS_EXAMPLES_TREE_VIEW_EXAMPLE_H_ 7 8 #include "base/macros.h" 9 #include "ui/base/models/simple_menu_model.h" 10 #include "ui/base/models/tree_node_model.h" 11 #include "ui/views/context_menu_controller.h" 12 #include "ui/views/controls/button/button.h" 13 #include "ui/views/controls/tree/tree_view_controller.h" 14 #include "ui/views/examples/example_base.h" 15 16 namespace views { 17 18 class MenuRunner; 19 class TreeView; 20 21 namespace examples { 22 23 class VIEWS_EXAMPLES_EXPORT TreeViewExample 24 : public ExampleBase, 25 public ButtonListener, 26 public TreeViewController, 27 public ContextMenuController, 28 public ui::SimpleMenuModel::Delegate { 29 public: 30 TreeViewExample(); 31 virtual ~TreeViewExample(); 32 33 // ExampleBase: 34 virtual void CreateExampleView(View* container) OVERRIDE; 35 36 private: 37 // IDs used by the context menu. 38 enum MenuIDs { 39 ID_EDIT, 40 ID_REMOVE, 41 ID_ADD 42 }; 43 44 // Adds a new node. 45 void AddNewNode(); 46 47 // Non-const version of IsCommandIdEnabled. 48 bool IsCommandIdEnabled(int command_id); 49 50 // ButtonListener: 51 virtual void ButtonPressed(Button* sender, const ui::Event& event) OVERRIDE; 52 53 // TreeViewController: 54 virtual void OnTreeViewSelectionChanged(TreeView* tree_view) OVERRIDE; 55 virtual bool CanEdit(TreeView* tree_view, ui::TreeModelNode* node) OVERRIDE; 56 57 // ContextMenuController: 58 virtual void ShowContextMenuForView(View* source, 59 const gfx::Point& point, 60 ui::MenuSourceType source_type) OVERRIDE; 61 62 // SimpleMenuModel::Delegate: 63 virtual bool IsCommandIdChecked(int command_id) const OVERRIDE; 64 virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE; 65 virtual bool GetAcceleratorForCommandId( 66 int command_id, 67 ui::Accelerator* accelerator) OVERRIDE; 68 virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE; 69 70 // The tree view to be tested. 71 TreeView* tree_view_; 72 73 // Control buttons to modify the model. 74 Button* add_; 75 Button* remove_; 76 Button* change_title_; 77 78 typedef ui::TreeNodeWithValue<int> NodeType; 79 80 ui::TreeNodeModel<NodeType> model_; 81 82 scoped_ptr<MenuRunner> context_menu_runner_; 83 84 DISALLOW_COPY_AND_ASSIGN(TreeViewExample); 85 }; 86 87 } // namespace examples 88 } // namespace views 89 90 #endif // UI_VIEWS_EXAMPLES_TREE_VIEW_EXAMPLE_H_ 91