1 //---------------------------------------------------------------------------
\r
2 // $RCSfile: TreeMultiItemNode.cpp,v $
\r
3 // $Source: /cvs/creatis/bbtk/kernel/src/ThirdParty/wx/treemultictrl/TreeMultiItemNode.cpp,v $
\r
5 // $Date: 2008/03/28 13:42:18 $
\r
6 //---------------------------------------------------------------------------
\r
7 // Author: Jorgen Bodde
\r
8 // Copyright: (c) Jorgen Bodde
\r
9 // License: wxWidgets License
10 //---------------------------------------------------------------------------
13 #pragma implementation "TreeMultiItemNode.cpp"
16 /* for compilers that support precompilation
19 #include "wx/wxprec.h"
25 #include "wx/treemultictrl/TreeMultiItemNode.h"
\r
27 #include "wx/arrimpl.cpp"
\r
28 WX_DEFINE_OBJARRAY(TreeMultiItemBaseArray);
\r
31 * This class is a container holder for multiple TreeMultiItemBase classes.
32 * Since both a TreeMultiItemNode and a TreeMultiItemWindow are a descendant
33 * from a TreeMultiItemBase class, it can hold multiple of these.
34 * In the case of a directory tree structure, it can hold multiple
35 * directories, and leafs (files).
38 // default constructor for container composite
39 TreeMultiItemNode::TreeMultiItemNode(TreeMultiItemNode *parent, const wxString &caption, const wxString &name)
40 : TreeMultiItemBase(parent)
49 //------------------------------------------------------------
51 TreeMultiItemNode::~TreeMultiItemNode()
53 // delete all items on this level
57 //------------------------------------------------------------
59 void TreeMultiItemNode::AddNode(TreeMultiItemBase *node)
65 void TreeMultiItemNode::InsertNode(TreeMultiItemBase* NodePtr, size_t Position)
\r
67 if (NodePtr != NULL)
\r
68 this->_items.Insert(NodePtr,Position);
\r
71 //------------------------------------------------------------
\r
73 void TreeMultiItemNode::DeleteNode(TreeMultiItemBase *node)
\r
75 // this is wrong. The RemoveAt and Remove should delete
79 _items.Detach(Index(node));
85 //------------------------------------------------------------
87 void TreeMultiItemNode::DeleteNode(int index)
89 // this is wrong. The RemoveAt and Remove should delete
91 if(index < (int)_items.Count() && index >= 0)
92 _items.RemoveAt(index);
95 //------------------------------------------------------------
97 int TreeMultiItemNode::GetNodeCount() const
99 return _items.Count();
102 //------------------------------------------------------------
104 TreeMultiItemBase *TreeMultiItemNode::GetNode(int index) const
106 TreeMultiItemBase *value = 0;
108 if(index < (int)_items.Count() && index >= 0)
109 value = &_items.Item(index);
114 //------------------------------------------------------------
116 TreeMultiItemBase *TreeMultiItemNode::RemoveNode(TreeMultiItemBase *node)
119 _items.Detach(_items.Index(*node));
124 //------------------------------------------------------------
126 TreeMultiItemBase * TreeMultiItemNode::RemoveNode(int index)
128 TreeMultiItemBase *value = 0;
130 if(index < (int)_items.Count() && index > 0)
132 value = &_items.Item(index);
133 _items.Detach(index);
139 //------------------------------------------------------------
141 int TreeMultiItemNode::Index(TreeMultiItemBase *node, bool searchFromEnd) const
145 return _items.Index(*node, searchFromEnd);
148 //------------------------------------------------------------
150 void TreeMultiItemNode::Clear()
155 //------------------------------------------------------------
157 TreeMultiItemBase * TreeMultiItemNode::GetNodeNext(int &cookie) const
159 TreeMultiItemBase *value = 0;
161 if(cookie >= 0 && cookie < (int)_items.Count())
163 value = &_items[cookie];
170 //------------------------------------------------------------
\r
172 TreeMultiItemBase* TreeMultiItemNode::First() const
\r
174 if (this->_items.GetCount() > 0)
\r
175 return &(this->_items[0]);
\r
178 } /* TreeMultiItemNode::First() const */
\r
180 TreeMultiItemBase* TreeMultiItemNode::Last() const
\r
182 if(this->_items.GetCount() > 0)
\r
183 return &(this->_items.Last());
\r
186 } /* TreeMultiItemNode::Last() const */
\r