Home | History | Annotate | Download | only in examples
      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