tree_view_example.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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/basictypes.h" 9#include "base/compiler_specific.h" 10#include "ui/base/models/simple_menu_model.h" 11#include "ui/base/models/tree_node_model.h" 12#include "ui/views/context_menu_controller.h" 13#include "ui/views/controls/button/button.h" 14#include "ui/views/controls/tree/tree_view_controller.h" 15#include "ui/views/examples/example_base.h" 16 17namespace views { 18 19class MenuRunner; 20class TreeView; 21 22namespace examples { 23 24class TreeViewExample : 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) OVERRIDE; 60 61 // SimpleMenuModel::Delegate: 62 virtual bool IsCommandIdChecked(int command_id) const OVERRIDE; 63 virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE; 64 virtual bool GetAcceleratorForCommandId( 65 int command_id, 66 ui::Accelerator* accelerator) OVERRIDE; 67 virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE; 68 69 // The tree view to be tested. 70 TreeView* tree_view_; 71 72 // Control buttons to modify the model. 73 Button* add_; 74 Button* remove_; 75 Button* change_title_; 76 77 typedef ui::TreeNodeWithValue<int> NodeType; 78 79 ui::TreeNodeModel<NodeType> model_; 80 81 scoped_ptr<MenuRunner> context_menu_runner_; 82 83 DISALLOW_COPY_AND_ASSIGN(TreeViewExample); 84}; 85 86} // namespace examples 87} // namespace views 88 89#endif // UI_VIEWS_EXAMPLES_TREE_VIEW_EXAMPLE_H_ 90