20 #include <boost/signal.hpp>
21 #include <boost/unordered_map.hpp>
22 #include <boost/function.hpp>
28 class DtElementIDHierarchyState;
49 InitiallyExpanded = 5,
55 ShouldHaveChildren = 0x00000001,
56 CollapseIfNoChildren = 0x00000002,
73 return !(*
this == rhs);
82 const ChildHierarchyNodes& children()
const;
84 void removeAllChildren();
91 virtual bool childInHierarchy(
DtElementID id)
const;
93 void setFlags(
int flags);
96 void setDisplayState(DisplayState);
97 DisplayState displayState()
const;
116 typedef boost::function<DtElementIDHierarchyNode::DisplayState (const DtElementIDHierarchyNode*)>
ExpectedDisplayState;
126 virtual void addToHierarchy(
DtElementID elementID,
DtElementID child,
int flags = 0,
bool setAsNewChildren =
true,
127 bool processList =
true);
129 int flags = 0,
bool setAsNewChildren =
true,
bool processList =
true);
163 virtual void detachChildFromParent(
DtElementID child);
174 virtual void expand(
DtElementID elementID,
bool processList =
true);
177 virtual void expandAll(
DtElementID elementID,
bool processList =
true);
183 virtual void expandDown(
DtElementID elementID,
int numLevels = -1,
bool processList =
true);
186 virtual void collapseAll(
DtElementID elementID,
bool processList =
true);
190 virtual void collapse(
DtElementID elementID,
bool processList =
true);
193 virtual void processVisibilityList();
196 void setInitiallyExpanded(
bool);
197 virtual bool initiallyExpanded()
const;
209 virtual void reprocessAllNodes();
216 virtual void processParentedNode(
DtElementIDHierarchyNode* node,
bool forceUpdate =
false,
bool processChildren =
true);
221 virtual void hierarchyUpdated();
228 virtual void updateHierarchy(
DtElementID id,
const ElementIDs& children,
bool setAsNewChildren =
true);
234 virtual void attachParentToChildren(
DtElementID parentId,
const ElementIDs& children,
bool setAsNewChildren =
true);
236 virtual void removeAllChildrenFromParent(
DtElementID);