Medical Imaging Interaction Toolkit  2018.4.99-36d69b77
Medical Imaging Interaction Toolkit
mitk::EventStateMachine Class Reference

Super-class that provides the functionality of a StateMachine to DataInteractors. More...

#include <mitkEventStateMachine.h>

Inheritance diagram for mitk::EventStateMachine:
Collaboration diagram for mitk::EventStateMachine:

Public Types

typedef EventStateMachine Self
typedef InteractionEventHandler Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer< const SelfConstPointer
typedef std::map< std::string, TActionFunctor * > ActionFunctionsMapType
typedef itk::SmartPointer< StateMachineStateStateMachineStateType
- Public Types inherited from mitk::InteractionEventHandler
typedef InteractionEventHandler Self
typedef itk::Object Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer< const SelfConstPointer

Public Member Functions

virtual std::vector< std::string > GetClassHierarchy () const override
virtual const char * GetClassName () const
bool LoadStateMachine (const std::string &filename, const us::Module *module=nullptr)
 Loads XML resource. More...
bool HandleEvent (InteractionEvent *event, DataNode *dataNode)
void EnableUndo (bool enable)
 Enables or disabled Undo. More...
void EnableInteraction (bool enable)
 Enables/disables the state machine. In un-enabled state it won't react to any events. More...
- Public Member Functions inherited from mitk::InteractionEventHandler
bool SetEventConfig (const std::string &filename, const us::Module *module=nullptr)
 Loads a configuration from an XML resource. More...
bool SetEventConfig (const EventConfig &config)
 Loads a configuration from an EventConfig object. More...
EventConfig GetEventConfig () const
 Returns the current configuration. More...
bool AddEventConfig (const std::string &filename, const us::Module *module=nullptr)
 This method extends the configuration. More...
bool AddEventConfig (const EventConfig &config)
 This method extends the configuration. The configuration from the EventConfig object is loaded and only the ones conflicting are replaced by the new one. This way several configurations can be combined. More...

Static Public Member Functions

static const char * GetStaticNameOfClass ()
- Static Public Member Functions inherited from mitk::InteractionEventHandler
static const char * GetStaticNameOfClass ()

Protected Types

typedef MessageAbstractDelegate2< StateMachineAction *, InteractionEvent *, void > ActionFunctionDelegate
typedef MessageAbstractDelegate1< const InteractionEvent *, bool > ConditionFunctionDelegate

Protected Member Functions

 EventStateMachine ()
 ~EventStateMachine () override
void AddActionFunction (const std::string &action, TActionFunctor *functor)
void AddActionFunction (const std::string &action, const ActionFunctionDelegate &delegate)
void AddConditionFunction (const std::string &condition, const ConditionFunctionDelegate &delegate)
StateMachineStateGetCurrentState () const
void ResetToStartState ()
 ResetToStartState Reset state machine to it initial starting state. More...
virtual void ConnectActionsAndFunctions ()
virtual bool CheckCondition (const StateMachineCondition &condition, const InteractionEvent *interactionEvent)
virtual void ExecuteAction (StateMachineAction *action, InteractionEvent *interactionEvent)
virtual bool FilterEvents (InteractionEvent *interactionEvent, DataNode *dataNode)
void SetMouseCursor (const char *xpm[], int hotspotX, int hotspotY)
 Sets the specified mouse cursor. More...
void ResetMouseCursor ()
 Resets the mouse cursor (if modified by the SlicesCoordinator) to its original state. More...
StateMachineTransitionGetExecutableTransition (InteractionEvent *event)
 Returns the executable transition for the given event. More...
- Protected Member Functions inherited from mitk::InteractionEventHandler
 InteractionEventHandler ()
 ~InteractionEventHandler () override
PropertyList::Pointer GetAttributes () const
std::string MapToEventVariant (InteractionEvent *interactionEvent)
virtual void ConfigurationChanged ()

Protected Attributes

bool m_IsActive
bool m_UndoEnabled

Detailed Description

Super-class that provides the functionality of a StateMachine to DataInteractors.

A state machine is created by loading a state machine pattern. It consists of states, transitions and action. The state represent the current status of the interaction, transitions are means to switch between states. Each transition is triggered by an event and it is associated with actions that are to be executed when the state change is performed.

Definition at line 111 of file mitkEventStateMachine.h.

Member Typedef Documentation

◆ ActionFunctionDelegate

◆ ActionFunctionsMapType

Definition at line 114 of file mitkEventStateMachine.h.

◆ ConditionFunctionDelegate

◆ ConstPointer

◆ Pointer

◆ Self

◆ StateMachineStateType

◆ Superclass

Constructor & Destructor Documentation

◆ EventStateMachine()

mitk::EventStateMachine::EventStateMachine ( )

here the Undo mechanism is enabled / disabled for all interactors.

Definition at line 23 of file mitkEventStateMachine.cpp.

References m_UndoController, m_UndoEnabled, and mitk::UndoController::VERBOSE_LIMITEDLINEARUNDO.

◆ ~EventStateMachine()

mitk::EventStateMachine::~EventStateMachine ( )

Definition at line 84 of file mitkEventStateMachine.cpp.

Member Function Documentation

◆ AddActionFunction() [1/2]

void mitk::EventStateMachine::AddActionFunction ( const std::string &  action,
mitk::TActionFunctor functor 

Connects action from StateMachine (String in XML file) with a function that is called when this action is to be executed.

Definition at line 92 of file mitkEventStateMachine.cpp.

◆ AddActionFunction() [2/2]

void mitk::EventStateMachine::AddActionFunction ( const std::string &  action,
const ActionFunctionDelegate delegate 

◆ AddConditionFunction()

void mitk::EventStateMachine::AddConditionFunction ( const std::string &  condition,
const ConditionFunctionDelegate delegate 

◆ CheckCondition()

bool mitk::EventStateMachine::CheckCondition ( const StateMachineCondition condition,
const InteractionEvent interactionEvent 

◆ ConnectActionsAndFunctions()

◆ EnableInteraction()

void mitk::EventStateMachine::EnableInteraction ( bool  enable)

Enables/disables the state machine. In un-enabled state it won't react to any events.

Definition at line 151 of file mitkEventStateMachine.h.

◆ EnableUndo()

void mitk::EventStateMachine::EnableUndo ( bool  enable)

Enables or disabled Undo.

Definition at line 147 of file mitkEventStateMachine.h.

◆ ExecuteAction()

void mitk::EventStateMachine::ExecuteAction ( StateMachineAction action,
InteractionEvent interactionEvent 

Looks up function that is associated with action and executes it. To implement your own execution scheme overwrite this in your DataInteractor.

Definition at line 192 of file mitkEventStateMachine.cpp.

References mitk::StateMachineAction::GetActionName(), and MITK_WARN.

Referenced by HandleEvent().

◆ FilterEvents()

bool mitk::EventStateMachine::FilterEvents ( InteractionEvent interactionEvent,
DataNode dataNode 

Implements filter scheme for events. Standard implementation accepts events from 2d and 3d windows, and rejects events if DataNode is not visible.

true if event is accepted, else false

Overwrite this function to adapt for your own needs, for example to filter out events from 3d windows like this:

bool mitk::EventStateMachine::FilterEvents(InteractionEvent* interactionEvent, DataNode*dataNode)
return interactionEvent->GetSender()->GetMapperID() == BaseRenderer::Standard2D; // only 2D mappers

or to enforce that the interactor only reacts when the corresponding DataNode is selected in the DataManager view..

Reimplemented in mitk::Tool, mitk::PlanarFigureInteractor, mitk::SegTool2D, mitk::DisplayInteractor, and mitk::DisplayActionEventBroadcast.

Definition at line 226 of file mitkEventStateMachine.cpp.

References mitk::DataNode::GetBoolProperty(), mitk::InteractionEvent::GetSender(), and MITK_WARN.

Referenced by HandleEvent().

◆ GetClassHierarchy()

virtual std::vector<std::string> mitk::EventStateMachine::GetClassHierarchy ( ) const

◆ GetClassName()

virtual const char* mitk::EventStateMachine::GetClassName ( ) const

◆ GetCurrentState()

mitk::StateMachineState * mitk::EventStateMachine::GetCurrentState ( ) const

Definition at line 221 of file mitkEventStateMachine.cpp.

Referenced by mitk::DataInteractor::GetMode().

◆ GetExecutableTransition()

mitk::StateMachineTransition * mitk::EventStateMachine::GetExecutableTransition ( mitk::InteractionEvent event)

Returns the executable transition for the given event.

This method takes a list of transitions that correspond to the given event from the current state.

This method iterates through all transitions and checks all corresponding conditions. The results of each condition in stored in map, as other transitions may need the same condition again.

As soon as a transition is found for which all conditions are fulfilled, this instance is returned.

If a transition has no condition, it is automatically returned. If no executable transition is found, nullptr is returned.

Definition at line 241 of file mitkEventStateMachine.cpp.

References CheckCondition(), mitk::InteractionEventHandler::MapToEventVariant(), and MITK_ERROR.

Referenced by HandleEvent().

◆ GetStaticNameOfClass()

static const char* mitk::EventStateMachine::GetStaticNameOfClass ( )

Definition at line 114 of file mitkEventStateMachine.h.

◆ HandleEvent()

bool mitk::EventStateMachine::HandleEvent ( InteractionEvent event,
DataNode dataNode 

Receives Event from Dispatcher. Event is mapped using the EventConfig Object to a variant, then it is checked if the StateMachine is listening for such an Event. If this is the case, the transition to the next state it performed and all actions associated with the transition executed, and true is returned to the caller. If the StateMachine can't handle this event false is returned. Attention: If a transition is associated with multiple actions - "true" is returned if one action returns true, and the event is treated as HANDLED even though some actions might not have been executed! So be sure that all actions that occur within one transitions have the same conditions.

Definition at line 126 of file mitkEventStateMachine.cpp.

References ExecuteAction(), FilterEvents(), GetExecutableTransition(), m_IsActive, and MITK_ERROR.

Referenced by mitk::DisplayActionEventBroadcast::Notify(), mitk::DisplayInteractor::Notify(), mitk::Tool::Notify(), and mitk::PlanarFigureInteractor::RemoveSelectedPoint().

◆ LoadStateMachine()

bool mitk::EventStateMachine::LoadStateMachine ( const std::string &  filename,
const us::Module module = nullptr 

Loads XML resource.

Loads a XML resource file from the given module. Default is the Mitk module (core). The files have to be placed in the Resources/Interaction folder of their respective module.

Definition at line 41 of file mitkEventStateMachine.cpp.

References ConnectActionsAndFunctions(), mitk::StateMachineContainer::GetStartState(), mitk::StateMachineContainer::LoadBehavior(), MITK_WARN, and mitk::StateMachineContainer::New().

Referenced by mitk::Tool::InitializeStateMachine().

◆ ResetMouseCursor()

void mitk::EventStateMachine::ResetMouseCursor ( )

Resets the mouse cursor (if modified by the SlicesCoordinator) to its original state.

Should be used by subclasses and from external application instead of using QmitkApplicationCursor directly to avoid conflicts.

Definition at line 338 of file mitkEventStateMachine.cpp.

References mitk::ApplicationCursor::GetInstance(), and mitk::ApplicationCursor::PopCursor().

Referenced by mitk::DisplayActionEventBroadcast::EndRotation(), and mitk::DisplayInteractor::EndRotation().

◆ ResetToStartState()

void mitk::EventStateMachine::ResetToStartState ( )

ResetToStartState Reset state machine to it initial starting state.

Definition at line 321 of file mitkEventStateMachine.cpp.

References mitk::StateMachineContainer::GetStartState().

Referenced by mitk::LiveWireTool2D::Activated(), and mitk::LiveWireTool2D::ClearSegmentation().

◆ SetMouseCursor()

void mitk::EventStateMachine::SetMouseCursor ( const char *  xpm[],
int  hotspotX,
int  hotspotY 

Member Data Documentation

◆ m_IsActive

bool mitk::EventStateMachine::m_IsActive

Definition at line 244 of file mitkEventStateMachine.h.

Referenced by HandleEvent().

◆ m_UndoController

◆ m_UndoEnabled

The documentation for this class was generated from the following files: