NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
niftkDataNodePropertyListener.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef niftkDataStoragePropertyListener_h
16 #define niftkDataStoragePropertyListener_h
17 
18 #include "niftkCoreExports.h"
19 
20 #include <itkObject.h>
21 
22 #include <mitkDataNode.h>
23 #include <mitkDataStorage.h>
24 #include <mitkMessage.h>
25 
27 
28 namespace niftk
29 {
30 
31 class PropertyChangedCommand;
32 
45 class NIFTKCORE_EXPORT DataNodePropertyListener : public DataStorageListener
46 {
47 
48 public:
49 
51  mitkNewMacro2Param(DataNodePropertyListener, const mitk::DataStorage::Pointer, const std::string&)
52  mitkNewMacro3Param(DataNodePropertyListener, const mitk::DataStorage::Pointer, const std::string&, bool)
53  mitkNewMacro3Param(DataNodePropertyListener, const mitk::DataStorage::Pointer, const std::string&, int)
54  mitkNewMacro3Param(DataNodePropertyListener, const mitk::DataStorage::Pointer, const std::string&, float)
55  mitkNewMacro3Param(DataNodePropertyListener, const mitk::DataStorage::Pointer, const std::string&, const std::string&)
56 
57 
58  void SetRenderers(const std::vector<const mitk::BaseRenderer*>& renderers);
59 
61  mitk::Message2<mitk::DataNode*, const mitk::BaseRenderer*> NodePropertyChanged;
62 
63 protected:
64 
65  DataNodePropertyListener(const mitk::DataStorage::Pointer dataStorage, const std::string& propertyName);
66  DataNodePropertyListener(const mitk::DataStorage::Pointer dataStorage, const std::string& propertyName, bool defaultValue);
67  DataNodePropertyListener(const mitk::DataStorage::Pointer dataStorage, const std::string& propertyName, int defaultValue);
68  DataNodePropertyListener(const mitk::DataStorage::Pointer dataStorage, const std::string& propertyName, float defaultValue);
69  DataNodePropertyListener(const mitk::DataStorage::Pointer dataStorage, const std::string& propertyName, const std::string& defaultValue);
70 
71  virtual ~DataNodePropertyListener();
72 
73  DataNodePropertyListener(const DataNodePropertyListener&); // Purposefully not implemented.
74  DataNodePropertyListener& operator=(const DataNodePropertyListener&); // Purposefully not implemented.
75 
79  virtual void OnNodeAdded(mitk::DataNode* node) override;
80 
84  virtual void OnNodeRemoved(mitk::DataNode* node) override;
85 
89  virtual void OnNodeDeleted(mitk::DataNode* node) override;
90 
92  virtual void OnPropertyChanged(mitk::DataNode* node, const mitk::BaseRenderer* renderer);
93 
94 private:
95 
97  void AddObservers(mitk::DataNode* node);
98 
100  void RemoveObservers(mitk::DataNode* node);
101 
104  virtual void AddAllObservers();
105 
107  virtual void RemoveAllObservers();
108 
110  std::string m_PropertyName;
111 
113  std::vector<const mitk::BaseRenderer*> m_Renderers;
114 
115  typedef std::map<mitk::DataNode*, std::vector<unsigned long> > NodePropertyObserverTags;
116 
121  NodePropertyObserverTags m_PropertyObserverTagsPerNode;
122 
123  enum DefaultValueType
124  {
125  NoType, BoolType, IntType, FloatType, StringType
126  };
127 
128  DefaultValueType m_DefaultValueType;
129  bool m_BoolDefaultValue;
130  int m_IntDefaultValue;
131  float m_FloatDefaultValue;
132  std::string m_StringDefaultValue;
133 
135 
136 };
137 
138 }
139 
140 #endif
Definition: niftkDataNodePropertyListener.h:45
mitk::Message2< mitk::DataNode *, const mitk::BaseRenderer * > NodePropertyChanged
GUI independent message callback.
Definition: niftkDataNodePropertyListener.h:61
Definition: niftkExceptionObject.h:21
GLsizei const GLcharARB ** string
Definition: glew.h:5194
Base class for objects that Listen to data storage, and want to update a node.
Definition: niftkDataStorageListener.h:39
Definition: niftkDataNodePropertyListener.cxx:24