OpendTect  6.6
uitreeitemmanager.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Kristofer Tingdahl
8  Date: 4-11-2002
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "uitoolsmod.h"
16 #include "sets.h"
17 #include "iopar.h"
18 #include "callback.h"
19 #include "bufstring.h"
20 #include "task.h"
21 #include "thread.h"
22 
29 class uiTreeViewItem;
30 class uiTreeView;
31 class uiParent;
32 
33 mExpClass(uiTools) uiTreeItem : public CallBacker
34 {
35 public:
36  uiTreeItem(const uiString& nm=
38  virtual ~uiTreeItem();
39  virtual void prepareForShutdown();
43  virtual bool askContinueAndSaveIfNeeded(bool withcancel);
44  void setName( const uiString& nm ) { name_ = nm; }
45  uiString name() const;
46 
48 
49  void entryInEditMode(int col);
50 
51  virtual int selectionKey() const { return -1; }
52  virtual bool select();
54  virtual bool isSelected() const;
55  void setChecked(bool yn,bool trigger=false);
56  virtual bool isChecked() const;
59  void expand();
60  bool isExpanded() const;
61  void collapse();
62  bool isCollapsed() const;
63 
64  bool hasChildren() const;
65  bool hasGrandChildren() const;
66  bool allChildrenExpanded() const;
67  bool allChildrenCollapsed() const;
68  bool allChildrenChecked() const;
69  bool allChildrenUnchecked() const;
70 
71  virtual int siblingIndex() const;
72  /*\returns the index of this item among
73  its siblings.
74  \note this index is not neseccarely the same
75  as the item's index in the parent's
76  child-list. */
77 
80  virtual void moveItem(uiTreeItem* after);
81  virtual void moveItemToTop();
83 
84  int nrChildren() const { return children_.size(); }
85  const uiTreeItem* getChild(int) const;
87  ObjectSet<uiTreeItem>& getChildren() { return children_; }
88  const ObjectSet<uiTreeItem>& getChildren() const { return children_; }
89 
90  virtual bool addChild(uiTreeItem* child,bool below);
100  virtual void removeChild(uiTreeItem*);
101  virtual void removeAllChildren();
102 
103  virtual const uiTreeItem* findChild(const char* name) const;
106  virtual const uiTreeItem* findChild(int selkey) const;
109  virtual uiTreeItem* findChild(const char* name);
112  virtual uiTreeItem* findChild(int selkey);
115  virtual void findChildren(const char*,
120  template<class T> inline void setProperty(const char* key,const T&);
129  inline void setPropertyPtr(const char* key,void*);
133  template<class T> inline bool getProperty(const char* key, T& res) const;
146  inline bool getPropertyPtr(const char* key,void*&) const;
155  virtual void updateColumnText(int col);
156  virtual void updateCheckStatus();
157 
158  virtual void translateText() { updateColumnText( 0 ); }
159  uiTreeViewItem* getItem() { return uitreeviewitem_; }
160  const uiTreeViewItem* getItem() const { return uitreeviewitem_; }
161 
162 protected:
163 
164  virtual int uiTreeViewItemType() const;
167  virtual uiParent* getUiParent() const;
168 
169  virtual bool addChld(uiTreeItem*,bool below,bool downwards);
181  virtual const char* parentType() const = 0;
183  virtual bool useParentType() const { return true; }
184  virtual bool init() { return true; }
185 
186  virtual bool rightClick(uiTreeViewItem*);
188  virtual bool doubleClick(uiTreeViewItem*);
190  virtual void removeItem(uiTreeViewItem*);
191  virtual void renameItem(uiTreeViewItem*);
192 
193  virtual bool showSubMenu() { return true; }
194  virtual bool selectWithKey(int selkey);
195 
196  virtual bool isSelectable() const { return false; }
197  virtual bool isExpandable() const { return true; }
198 
199  virtual void updateSelection(int selectionKey,
200  bool dw=false );
202  virtual bool shouldSelect(int selectionkey) const;
207 
210 
213  friend class uiTreeTopItem;
214  friend class uiODTreeTop;
215 
216 private:
217 
218  bool addChildImpl(CallBacker*,uiTreeItem*,bool,bool);
219 
220 public:
221  void updateSelTreeColumnText(int col);
223 };
224 
226 {
227 public:
229  int nextStep();
230 
231 protected:
234 };
235 
236 
237 
239 {
240 public:
241  uiTreeTopItem(uiTreeView*, bool=false );
243 
244  virtual bool addChild(uiTreeItem*,bool below);
245  virtual void updateSelection(int selectionkey, bool=false );
247  virtual void updateColumnText(int col);
248  bool isChecked() const { return true; }
249 
250  void disabRightClick(bool yn) { disabrightclick_=yn; }
251  void disabAnyClick(bool yn) { disabanyclick_=yn; }
252  uiTreeView* getTreeView() const { return listview_; }
253 
254 protected:
255 
256  virtual bool addChld(uiTreeItem*,bool below,bool downwards);
257  virtual void removeItem(uiTreeViewItem*);
258 
264  void handleSelectionChanged(bool frmbtclk);
265 
266  virtual const char* parentType() const { return 0; }
267  virtual uiParent* getUiParent() const;
268 
273 
274 };
275 
276 
278 {
279 public:
280  virtual ~uiTreeItemFactory() {}
281  virtual const char* name() const = 0;
282  virtual uiTreeItem* create() const = 0;
283 };
284 
285 
287 {
288 public:
292  int placementindex=-1,
293  int pol2d=1);
302  void remove( const char* );
303 
304  int nrFactories() const;
305  const uiTreeItemFactory* getFactory(int) const;
306  int getPlacementIdx(int) const;
307  int getPol2D(int) const;
308 
311 
312 protected:
313 
317 
318 };
319 
320 
321 template<class T>
322 bool inline uiTreeItem::getProperty( const char* propertykey, T& res ) const
323 {
324  if ( properties_.get( propertykey, res ))
325  return true;
326 
327  return parent_ ? parent_->getProperty( propertykey, res ) : false;
328 }
329 
330 
331 inline bool uiTreeItem::getPropertyPtr(const char* propertykey,void*& res) const
332 {
333  if ( properties_.getPtr( propertykey, res ))
334  return true;
335 
336  return parent_ ? parent_->getPropertyPtr( propertykey, res ) : false;
337 }
338 
339 
340 #include <typeinfo>
341 
342 template<class T>
343 void inline uiTreeItem::setProperty( const char* propertykey, const T& val )
344 {
345  if ( typeid(T)==typeid(void*) )
346  properties_.set( propertykey, (od_int64)val );
347  else
348  properties_.set( propertykey, val );
349 }
350 
351 
352 void inline uiTreeItem::setPropertyPtr( const char* propertykey, void* val )
353 {
354  properties_.setPtr( propertykey, val );
355 }
356 
IOPar::set
void set(const char *ky, const char *val)
uiTreeTopItem::getTreeView
uiTreeView * getTreeView() const
Definition: uitreeitemmanager.h:252
uiTreeItem::isCollapsed
bool isCollapsed() const
uiTreeFactorySet
Definition: uitreeitemmanager.h:287
task.h
uiTreeItem
Definition: uitreeitemmanager.h:34
uiTreeItem::prepareForShutdown
virtual void prepareForShutdown()
IOPar::get
bool get(const char *, short &) const
uiTreeItem::updateColumnText
virtual void updateColumnText(int col)
uiTreeItem::uiTreeViewItemType
virtual int uiTreeViewItemType() const
uiTreeView
Definition: uitreeview.h:33
ObjectSet< uiTreeItem >
uiTreeItem::collapse
void collapse()
uiTreeTopItem::updateSelection
virtual void updateSelection(int selectionkey, bool=false)
uiTreeItem::getChild
const uiTreeItem * getChild(int) const
uiTreeItemRemover
Definition: uitreeitemmanager.h:226
uiTreeItem::getChild
uiTreeItem * getChild(int)
uiTreeTopItem::disabselcngresp_
bool disabselcngresp_
Definition: uitreeitemmanager.h:272
uiTreeItem::findChild
virtual uiTreeItem * findChild(int selkey)
uiTreeItemRemover::uiTreeItemRemover
uiTreeItemRemover(uiTreeItem *parent, uiTreeItem *child)
od_int64
#define od_int64
Definition: plftypes.h:35
uiTreeItem::isExpandable
virtual bool isExpandable() const
Definition: uitreeitemmanager.h:197
uiTreeItem::selectWithKey
virtual bool selectWithKey(int selkey)
uiTreeItemFactory::create
virtual uiTreeItem * create() const =0
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
uiTreeTopItem::parentType
virtual const char * parentType() const
Definition: uitreeitemmanager.h:266
uiTreeItem::moveItem
virtual void moveItem(uiTreeItem *after)
uiTreeItem::select
virtual bool select()
uiTreeItem::lastChild
uiTreeItem * lastChild()
uiTreeFactorySet::getPlacementIdx
int getPlacementIdx(int) const
uiTreeItem::isSelectable
virtual bool isSelectable() const
Definition: uitreeitemmanager.h:196
uiTreeTopItem::updateColumnText
virtual void updateColumnText(int col)
uiTreeTopItem::disabAnyClick
void disabAnyClick(bool yn)
Definition: uitreeitemmanager.h:251
uiTreeItemRemover::nextStep
int nextStep()
uiTreeItem::selectionKey
virtual int selectionKey() const
Definition: uitreeitemmanager.h:51
uiTreeItem::getPropertyPtr
bool getPropertyPtr(const char *key, void *&) const
Definition: uitreeitemmanager.h:331
uiTreeItem::keyPressed
NotifierAccess * keyPressed()
callback.h
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
uiTreeItem::uiTreeTopItem
friend class uiTreeTopItem
Definition: uitreeitemmanager.h:213
uiTreeItem::allChildrenCollapsed
bool allChildrenCollapsed() const
uiTreeItem::setChecked
void setChecked(bool yn, bool trigger=false)
uiTreeItem::rightClick
virtual bool rightClick(uiTreeViewItem *)
uiTreeItem::siblingAbove
virtual uiTreeItem * siblingAbove()
uiTreeFactorySet::uiTreeFactorySet
uiTreeFactorySet()
uiTreeTopItem::addChld
virtual bool addChld(uiTreeItem *, bool below, bool downwards)
uiTreeItem::moveItemToTop
virtual void moveItemToTop()
bufstring.h
uiTreeItem::showSubMenu
virtual bool showSubMenu()
Definition: uitreeitemmanager.h:193
uiTreeItemRemover::child_
uiTreeItem * child_
Definition: uitreeitemmanager.h:233
uiTreeItem::getChildren
ObjectSet< uiTreeItem > & getChildren()
Definition: uitreeitemmanager.h:87
IOPar::setPtr
void setPtr(const char *, void *)
uiTreeItem::askContinueAndSaveIfNeeded
virtual bool askContinueAndSaveIfNeeded(bool withcancel)
uiTreeTopItem::itemRenamed
void itemRenamed(CallBacker *)
uiTreeItem::updateSelection
virtual void updateSelection(int selectionKey, bool dw=false)
uiTreeItem::getProperty
bool getProperty(const char *key, T &res) const
Definition: uitreeitemmanager.h:322
uiTreeItem::addChld
virtual bool addChld(uiTreeItem *, bool below, bool downwards)
uiTreeTopItem::~uiTreeTopItem
~uiTreeTopItem()
uiTreeItem::parentType
virtual const char * parentType() const =0
uiTreeItem::removeChild
virtual void removeChild(uiTreeItem *)
uiTreeFactorySet::remove
void remove(const char *)
uiTreeItem::getChildren
const ObjectSet< uiTreeItem > & getChildren() const
Definition: uitreeitemmanager.h:88
uiTreeItem::removeAllChildren
virtual void removeAllChildren()
uiTreeItem::findChild
virtual const uiTreeItem * findChild(const char *name) const
uiTreeItem::findChild
virtual uiTreeItem * findChild(const char *name)
uiTreeItem::checkStatusChange
NotifierAccess * checkStatusChange()
uiTreeItem::name_
uiString name_
Definition: uitreeitemmanager.h:209
uiTreeTopItem::doubleClickCB
void doubleClickCB(CallBacker *)
uiTreeItem::hasGrandChildren
bool hasGrandChildren() const
uiTreeItem::areAllParentsChecked
bool areAllParentsChecked()
NotifierAccess
Interface class for Notifier. See comments there.
Definition: notify.h:22
uiTreeItem::getUiParent
virtual uiParent * getUiParent() const
uiTreeTopItem::rightClickCB
void rightClickCB(CallBacker *)
uiTreeItem::properties_
IOPar properties_
Definition: uitreeitemmanager.h:206
uiTreeItem::updateCheckStatus
virtual void updateCheckStatus()
uiTreeItem::updateSelTreeColumnText
void updateSelTreeColumnText(int col)
uiTreeItem::uitreeviewitem_
uiTreeViewItem * uitreeviewitem_
Definition: uitreeitemmanager.h:211
uiTreeItem::findChildren
virtual void findChildren(const char *, ObjectSet< uiTreeItem > &)
uiTreeFactorySet::removenotifier
CNotifier< uiTreeFactorySet, int > removenotifier
Definition: uitreeitemmanager.h:310
uiTreeItemFactory::name
virtual const char * name() const =0
uiTreeItem::nrChildren
int nrChildren() const
Definition: uitreeitemmanager.h:84
uiTreeItem::addChildImpl
bool addChildImpl(CallBacker *, uiTreeItem *, bool, bool)
uiTreeItem::parent_
uiTreeItem * parent_
Definition: uitreeitemmanager.h:208
uiTreeItemRemover::parent_
uiTreeItem * parent_
Definition: uitreeitemmanager.h:232
uiTreeTopItem::isChecked
bool isChecked() const
Definition: uitreeitemmanager.h:248
uiTreeTopItem::selectionChanged
void selectionChanged(CallBacker *)
uiTreeItem::translateText
virtual void translateText()
Definition: uitreeitemmanager.h:158
uiTreeTopItem::handleSelectionChanged
void handleSelectionChanged(bool frmbtclk)
uiTreeFactorySet::factories_
ObjectSet< uiTreeItemFactory > factories_
Definition: uitreeitemmanager.h:314
uiTreeItem::getItem
uiTreeViewItem * getItem()
Definition: uitreeitemmanager.h:159
uiTreeFactorySet::addnotifier
CNotifier< uiTreeFactorySet, int > addnotifier
Definition: uitreeitemmanager.h:309
uiTreeItem::entryInEditMode
void entryInEditMode(int col)
uiTreeTopItem::listview_
uiTreeView * listview_
Definition: uitreeitemmanager.h:269
uiTreeTopItem::anyButtonClickCB
void anyButtonClickCB(CallBacker *)
uiTreeTopItem::disabrightclick_
bool disabrightclick_
Definition: uitreeitemmanager.h:270
uiTreeItem::siblingBelow
virtual uiTreeItem * siblingBelow()
uiTreeTopItem::getUiParent
virtual uiParent * getUiParent() const
uiTreeItem::siblingIndex
virtual int siblingIndex() const
uiTreeItem::expand
void expand()
uiTreeItem::uiTreeItem
uiTreeItem(const uiString &nm=uiString::emptyString())
uiTreeItem::children_
ObjectSet< uiTreeItem > children_
Definition: uitreeitemmanager.h:212
uiTreeItem::init
virtual bool init()
Definition: uitreeitemmanager.h:184
uiTreeItem::setProperty
void setProperty(const char *key, const T &)
Definition: uitreeitemmanager.h:343
uiTreeItem::parentTreeItem
uiTreeItem * parentTreeItem()
Definition: uitreeitemmanager.h:222
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
uiString::emptyString
static const uiString & emptyString()
Definition: uistring.h:300
IOPar::getPtr
bool getPtr(const char *, void *&) const
uiTreeItem::getItem
const uiTreeViewItem * getItem() const
Definition: uitreeitemmanager.h:160
uiTreeItem::shouldSelect
virtual bool shouldSelect(int selectionkey) const
uiTreeItem::isChecked
virtual bool isChecked() const
uiTreeItem::isExpanded
bool isExpanded() const
uiTreeItem::doubleClick
virtual bool doubleClick(uiTreeViewItem *)
uiTreeItem::anyButtonClick
virtual bool anyButtonClick(uiTreeViewItem *)
uiTreeItem::allChildrenExpanded
bool allChildrenExpanded() const
uiTreeFactorySet::nrFactories
int nrFactories() const
below
@ below
Definition: i_layout.h:28
uiTreeTopItem::removeItem
virtual void removeItem(uiTreeViewItem *)
uiTreeFactorySet::addFactory
void addFactory(uiTreeItemFactory *ptr, int placementindex=-1, int pol2d=1)
uiTreeItemFactory
Definition: uitreeitemmanager.h:278
uiODTreeTop
Definition: uiodtreeitem.h:52
iopar.h
uiParent
Definition: uiparent.h:26
uiTreeFactorySet::getFactory
const uiTreeItemFactory * getFactory(int) const
uiTreeItem::findChild
virtual const uiTreeItem * findChild(int selkey) const
uiTreeTopItem::disabRightClick
void disabRightClick(bool yn)
Definition: uitreeitemmanager.h:250
uiTreeFactorySet::pol2ds_
TypeSet< int > pol2ds_
Definition: uitreeitemmanager.h:316
uiTreeItem::setName
void setName(const uiString &nm)
Definition: uitreeitemmanager.h:44
uiTreeFactorySet::getPol2D
int getPol2D(int) const
uiTreeItem::setPropertyPtr
void setPropertyPtr(const char *key, void *)
Definition: uitreeitemmanager.h:352
uiTreeTopItem::addChild
virtual bool addChild(uiTreeItem *, bool below)
uiTreeItem::~uiTreeItem
virtual ~uiTreeItem()
uiTreeItem::allChildrenChecked
bool allChildrenChecked() const
uiTreeFactorySet::~uiTreeFactorySet
~uiTreeFactorySet()
uiTreeItem::isSelected
virtual bool isSelected() const
uiTreeItemFactory::~uiTreeItemFactory
virtual ~uiTreeItemFactory()
Definition: uitreeitemmanager.h:280
uiTreeTopItem::uiTreeTopItem
uiTreeTopItem(uiTreeView *, bool=false)
uiTreeItem::name
uiString name() const
sets.h
uiTreeFactorySet::placementidxs_
TypeSet< int > placementidxs_
Definition: uitreeitemmanager.h:315
uiTreeTopItem::disabanyclick_
bool disabanyclick_
Definition: uitreeitemmanager.h:271
thread.h
uiTreeTopItem
Definition: uitreeitemmanager.h:239
uiTreeItem::renameItem
virtual void renameItem(uiTreeViewItem *)
CNotifier< uiTreeFactorySet, int >
SequentialTask
The generalization of something (e.g. a computation) where the steps must be done in sequence,...
Definition: task.h:125
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
uiTreeItem::hasChildren
bool hasChildren() const
uiTreeItem::addChild
virtual bool addChild(uiTreeItem *child, bool below)
uiTreeViewItem
Definition: uitreeview.h:202
uiTreeItem::useParentType
virtual bool useParentType() const
Definition: uitreeitemmanager.h:183
uiTreeItem::removeItem
virtual void removeItem(uiTreeViewItem *)
TypeSet< int >
uiTreeItem::allChildrenUnchecked
bool allChildrenUnchecked() const
uiTreeItem::setTreeViewItem
virtual void setTreeViewItem(uiTreeViewItem *)

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2021