8#include "acme/prototype/data/tree_base.h"
15 class CLASS_DECL_ACME tree_base_composite :
16 virtual public ::data::tree_base
21 ::pointer < tree_base > m_ptreebase;
26 tree_base_composite();
27 ~tree_base_composite()
override;
29 void destroy()
override;
31 virtual void _insert_tree(tree_base * ptree);
33 virtual ::i64 increment_reference_count()
override
35 return ::matter::increment_reference_count();
38 virtual ::i64 decrement_reference_count()
override
40 return ::matter::decrement_reference_count();
44 virtual void erase_all();
46 virtual void update_tree();
48 virtual ::collection::count _tree_count();
49 virtual tree_base * _tree_at(::collection::index iIndex);
51 virtual void predicate_each_tree(const ::function <
void(tree_base *) > & callback);
53 virtual tree_item * _find(const ::item * pitem, ::collection::index * piIndex =
nullptr);
54 virtual bool _contains(const ::item * pitem);
56 virtual bool _contains(
const tree_item * pitem);
58 virtual void _001OnTreeDataChange();
60 virtual void _001OnItemExpand(tree_item * pitem, const ::action_context & action_context);
61 virtual void _001OnItemCollapse(tree_item * pitem, const ::action_context & action_context);
62 virtual void _001OnOpenItem(tree_item * pitem, const ::action_context & action_context);
63 virtual void _001OnItemContextMenu(tree_item * pitem, const ::action_context & action_context, ::user::element * ptree, const ::i32_point & point);
65 void _erase(::data::tree_item_ptr_array & itemptra);
66 void _erase(tree_item * pitem);
67 void _erase(::item * pitem, ::collection::index i = 0);
81 virtual tree_item * __get_proper_item(::collection::index iIndex, ::collection::index * piLevel, ::collection::index * piCount =
nullptr);
82 virtual tree_item * _get_proper_item(::collection::index iIndex, ::collection::index * piLevel)
override;
83 virtual ::collection::index _get_proper_item_index(tree_item * pitemParam, ::collection::index * piLevel, ::collection::index * piCount =
nullptr);
86 virtual void _update_levels();
88 virtual tree_item * _get_base_item();
90 virtual const tree_item * _get_base_item()
const;
92 virtual tree_item * _insert_item(::item * pitemdataNew, enum_relative erelativeNewItem = e_relative_last_child, tree_item * pitemRelative =
nullptr,
bool bVoidTreeDataChangeEvent =
false);
93 virtual bool _insert_item(tree_item * pitemNew, enum_relative erelativeNewItem = e_relative_last_child, tree_item * pitemRelative =
nullptr,
bool bVoidTreeDataChangeEvent =
false);
95 ::image::image_list * get_tree_image_list()
override;
97 virtual void _001ExpandItem(tree_item * pitem, const ::action_context & action_context,
bool bExpand =
true,
bool bRedraw =
true,
bool bLayout =
true);
98 virtual void _001EnsureVisible(tree_item * pitem);
99 virtual void _001SelectItem(tree_item * pitem);
101 virtual void _get_selection(::data::tree_item_base_ptr_array & itemptraSelected)
const;
102 virtual bool _is_selected(
const tree_item * pitem)
const;
103 virtual bool _is_selected(const ::item * pitem)
const;
105 virtual ::collection::count _selection_set(::data::tree_item_base_ptr_array & itemptra);
106 virtual bool _selection_set(tree_item * pitem,
bool bIfNotInSelection =
false,
bool bIfParentInSelection =
false);
107 virtual bool _selection_set(::item * pitem,
bool bIfNotInSelection =
false,
bool bIfParentInSelection =
false);
108 virtual bool _selection_set(::collection::index iIndex, ::item * pitem,
bool bIfNotInSelection =
false,
bool bIfParentInSelection =
false);
112 void handle(::topic * ptopic, ::handler_context * phandlercontext)
override;
115 virtual void on_fill_children()
override;
118 virtual void on_tree_layout();
120 virtual void fill_children();