diff --git a/Modules/Annotation/include/mitkAnnotationTemporoSpatialPropertyProvider.h b/Modules/Annotation/include/mitkAnnotationTemporoSpatialPropertyProvider.h index 8a5549a765..ab8c0325a2 100644 --- a/Modules/Annotation/include/mitkAnnotationTemporoSpatialPropertyProvider.h +++ b/Modules/Annotation/include/mitkAnnotationTemporoSpatialPropertyProvider.h @@ -1,60 +1,53 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef MITKANNOTATIONTEMPOROSPATIALPROPERTYPROVIDER_H #define MITKANNOTATIONTEMPOROSPATIALPROPERTYPROVIDER_H #include "mitkAnnotationDataNodeProvider.h" +#include "mitkAnnotationPropertyProvider.h" #include "mitkAnnotationSliceProvider.h" -#include #include "mitkTemporoSpatialStringProperty.h" +#include namespace mitk { - class AnnotationTemporoSpatialPropertyProvider : public DataProvider + class AnnotationTemporoSpatialPropertyProvider : public AnnotationPropertyProvider { public: mitkClassMacro(AnnotationTemporoSpatialPropertyProvider, DataProvider); mitkNewMacro3Param(AnnotationTemporoSpatialPropertyProvider, std::string, AnnotationDataNodeProvider::Pointer, AnnotationSliceProvider::Pointer); ~AnnotationTemporoSpatialPropertyProvider(); private: AnnotationTemporoSpatialPropertyProvider(std::string propertyName, AnnotationDataNodeProvider::Pointer dataNodeProvider, AnnotationSliceProvider::Pointer sliceProvider); - // members for tracking the property void OnEventTriggered(const itk::Object *caller, const itk::EventObject &event) override; - std::string m_PropertyName; // members for tracking the slice AnnotationSliceProvider::Pointer m_SliceProvider; void ObserveSliceProvider(); unsigned long m_SliceProviderId; void OnSliceChanged(const itk::Object *caller, const itk::EventObject &event); unsigned int m_Slice; - - // members for tracking the dataNode - AnnotationDataNodeProvider::Pointer m_DataNodeProvider; - void ObserveDataNodeProvider(); - unsigned long m_DataNodeProviderId; - void OnDataNodeChanged(const itk::Object *caller, const itk::EventObject &event); }; } // namespace mitk #endif // MITKANNOTATIONTEMPOROSPATIALPROPERTYPROVIDER_H diff --git a/Modules/Annotation/src/mitkAnnotationTemporoSpatialPropertyProvider.cpp b/Modules/Annotation/src/mitkAnnotationTemporoSpatialPropertyProvider.cpp index 57ab6ac457..6b6811f1fc 100644 --- a/Modules/Annotation/src/mitkAnnotationTemporoSpatialPropertyProvider.cpp +++ b/Modules/Annotation/src/mitkAnnotationTemporoSpatialPropertyProvider.cpp @@ -1,83 +1,60 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include "mitkAnnotationTemporoSpatialPropertyProvider.h" #include "mitkTemporoSpatialStringProperty.h" mitk::AnnotationTemporoSpatialPropertyProvider::~AnnotationTemporoSpatialPropertyProvider() { m_DataNodeProvider->RemoveObserver(m_DataNodeProviderId); m_SliceProvider->RemoveObserver(m_SliceProviderId); } mitk::AnnotationTemporoSpatialPropertyProvider::AnnotationTemporoSpatialPropertyProvider( std::string propertyName, AnnotationDataNodeProvider::Pointer dataNodeProvider, AnnotationSliceProvider::Pointer sliceProvider) - : m_PropertyName(std::move(propertyName)), m_SliceProvider(sliceProvider), m_DataNodeProvider(dataNodeProvider) + : AnnotationPropertyProvider(std::move(propertyName), dataNodeProvider), m_SliceProvider(sliceProvider), m_SliceProviderId(-1) { - m_DataChangedEvent = itk::ModifiedEvent().MakeObject(); ObserveSliceProvider(); - ObserveDataNodeProvider(); } void mitk::AnnotationTemporoSpatialPropertyProvider::OnEventTriggered(const itk::Object *caller, const itk::EventObject &event) { const auto property = dynamic_cast(caller); if (property) { m_Value = property->GetValueBySlice(m_Slice); } } void mitk::AnnotationTemporoSpatialPropertyProvider::OnSliceChanged(const itk::Object *caller, const itk::EventObject &event) { m_Slice = boost::any_cast(m_SliceProvider->GetValue()); OnEventTriggered(this->GetDataSource(), itk::ModifiedEvent()); this->Modified(); } -void mitk::AnnotationTemporoSpatialPropertyProvider::OnDataNodeChanged(const itk::Object *caller, - const itk::EventObject &event) -{ - const auto nodeProvider = dynamic_cast(caller); - const auto node = boost::any_cast(nodeProvider->GetValue()); - const auto prop = node->GetProperty(m_PropertyName.c_str()); - this->SetDataSource(prop); - - OnEventTriggered(this->GetDataSource(), itk::ModifiedEvent()); - this->Modified(); -} - void mitk::AnnotationTemporoSpatialPropertyProvider::ObserveSliceProvider() { // define onEventCallback auto cmd = itk::MemberCommand::New(); cmd->SetCallbackFunction(this, &AnnotationTemporoSpatialPropertyProvider::OnSliceChanged); m_SliceProviderId = m_SliceProvider->AddObserver(itk::ModifiedEvent(), cmd); -} - -void mitk::AnnotationTemporoSpatialPropertyProvider::ObserveDataNodeProvider() -{ - // define onEventCallback - auto cmd = itk::MemberCommand::New(); - cmd->SetCallbackFunction(this, &AnnotationTemporoSpatialPropertyProvider::OnDataNodeChanged); - - m_DataNodeProviderId = m_DataNodeProvider->AddObserver(itk::ModifiedEvent(), cmd); -} +} \ No newline at end of file