Public Member Functions | Protected Member Functions | Protected Attributes

QmitkFunctionalityCoordinator Class Reference

#include <QmitkFunctionalityCoordinator.h>

Inheritance diagram for QmitkFunctionalityCoordinator:
Inheritance graph
[legend]
Collaboration diagram for QmitkFunctionalityCoordinator:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 berryObjectMacro (QmitkFunctionalityCoordinator)
 berryNewMacro (QmitkFunctionalityCoordinator)
 QmitkFunctionalityCoordinator ()
virtual ~QmitkFunctionalityCoordinator ()
void SetWindow (berry::IWorkbenchWindow::Pointer window)
berry::IPartListener::Events::Types GetPartEventTypes () const
virtual void PartActivated (berry::IWorkbenchPartReference::Pointer partRef)
virtual void PartDeactivated (berry::IWorkbenchPartReference::Pointer)
virtual void PartOpened (berry::IWorkbenchPartReference::Pointer partRef)
virtual void PartClosed (berry::IWorkbenchPartReference::Pointer partRef)
virtual void PartHidden (berry::IWorkbenchPartReference::Pointer partRef)
virtual void PartVisible (berry::IWorkbenchPartReference::Pointer partRef)
virtual void WindowClosed (berry::IWorkbenchWindow::Pointer window)
virtual void WindowOpened (berry::IWorkbenchWindow::Pointer)

Protected Member Functions

void ActivateStandaloneFunctionality (QmitkFunctionality *functionality)
void DeactivateStandaloneFunctionality (QmitkFunctionality *functionality)

Protected Attributes

berry::IWorkbenchWindow::WeakPtr m_Window
QmitkFunctionalitym_StandaloneFuntionality
std::set< QmitkFunctionality * > m_Functionalities
std::set< QmitkFunctionality * > m_VisibleStandaloneFunctionalities

Detailed Description

A class which coordinates active QmitkFunctionalities, e.g. calling activated and hidden on them.

Definition at line 32 of file QmitkFunctionalityCoordinator.h.


Constructor & Destructor Documentation

QmitkFunctionalityCoordinator::QmitkFunctionalityCoordinator (  )

Add listener

Definition at line 24 of file QmitkFunctionalityCoordinator.cpp.

QmitkFunctionalityCoordinator::~QmitkFunctionalityCoordinator (  ) [virtual]

Remove listener

Definition at line 39 of file QmitkFunctionalityCoordinator.cpp.

{
}

Member Function Documentation

void QmitkFunctionalityCoordinator::ActivateStandaloneFunctionality ( QmitkFunctionality functionality ) [protected]
QmitkFunctionalityCoordinator::berryNewMacro ( QmitkFunctionalityCoordinator   )
QmitkFunctionalityCoordinator::berryObjectMacro ( QmitkFunctionalityCoordinator   )
void QmitkFunctionalityCoordinator::DeactivateStandaloneFunctionality ( QmitkFunctionality functionality ) [protected]

Deactivates the standalone functionality

Definition at line 171 of file QmitkFunctionalityCoordinator.cpp.

References QmitkFunctionality::Deactivated(), QmitkFunctionality::IsActivated(), and QmitkFunctionality::SetActivated().

Referenced by ActivateStandaloneFunctionality(), PartClosed(), and PartHidden().

{
  if(functionality && functionality->IsActivated())
  {
    functionality->SetActivated(false);
    functionality->Deactivated();
  }
}
berry::IPartListener::Events::Types QmitkFunctionalityCoordinator::GetPartEventTypes (  ) const [virtual]
void QmitkFunctionalityCoordinator::PartActivated ( berry::IWorkbenchPartReference::Pointer  partRef ) [virtual]
See also:
IPartListener::PartActivated()

Reimplemented from berry::IPartListener.

Definition at line 50 of file QmitkFunctionalityCoordinator.cpp.

References ActivateStandaloneFunctionality(), berry::SmartPointer< TObjectType >::Cast(), and berry::SmartPointer< TObjectType >::GetPointer().

{
  // Check for QmitkFunctionality
  QmitkFunctionality::Pointer _QmitkFunctionality = partRef->GetPart(false).Cast<QmitkFunctionality>();
  // change the active standalone functionality
  this->ActivateStandaloneFunctionality(_QmitkFunctionality.GetPointer());
}
void QmitkFunctionalityCoordinator::PartClosed ( berry::IWorkbenchPartReference::Pointer  partRef ) [virtual]
See also:
IPartListener::PartClosed()

Reimplemented from berry::IPartListener.

Definition at line 86 of file QmitkFunctionalityCoordinator.cpp.

References berry::SmartPointer< TObjectType >::Cast(), DeactivateStandaloneFunctionality(), QmitkStdMultiWidgetEditor::EDITOR_ID, berry::SmartPointer< TObjectType >::GetPointer(), berry::SmartPointer< TObjectType >::IsNotNull(), m_Functionalities, and m_StandaloneFuntionality.

{
  // check for multiwidget and inform views that it not available any more
  if ( partRef->GetId() == QmitkStdMultiWidgetEditor::EDITOR_ID )
  {

    QmitkStdMultiWidgetEditor::Pointer stdMultiWidgetEditor = partRef->GetPart(false).Cast<QmitkStdMultiWidgetEditor>();
    for (std::set<QmitkFunctionality*>::iterator it = m_Functionalities.begin()
      ; it != m_Functionalities.end(); it++)
    {
      (*it)->StdMultiWidgetClosed(*(stdMultiWidgetEditor->GetStdMultiWidget()));
      (*it)->StdMultiWidgetNotAvailable(); // deprecated call, provided for consistence
    }
  }
  else
  {
    // check for functionality
    QmitkFunctionality::Pointer _QmitkFunctionality = partRef->GetPart(false).Cast<QmitkFunctionality>();
    if(_QmitkFunctionality.IsNotNull())
    {
      // deactivate on close ( the standalone functionality may still be activated  )
      this->DeactivateStandaloneFunctionality(_QmitkFunctionality.GetPointer());
      
      // and set pointer to 0
      if(m_StandaloneFuntionality == _QmitkFunctionality.GetPointer())
        m_StandaloneFuntionality = 0;

      m_Functionalities.erase(_QmitkFunctionality.GetPointer()); // remove as opened functionality
      // call PartClosed on the QmitkFunctionality
      _QmitkFunctionality->ClosePartProxy();
      //m_VisibleStandaloneFunctionalities.erase(_QmitkFunctionality.GetPointer()); // remove if necessary (should be done before in PartHidden()
    }
  }
}
void QmitkFunctionalityCoordinator::PartDeactivated ( berry::IWorkbenchPartReference::Pointer   ) [virtual]
See also:
IPartListener::PartDeactivated()

Reimplemented from berry::IPartListener.

Definition at line 58 of file QmitkFunctionalityCoordinator.cpp.

{    
  // nothing to do here: see PartActivated()
}
void QmitkFunctionalityCoordinator::PartHidden ( berry::IWorkbenchPartReference::Pointer  partRef ) [virtual]
See also:
IPartListener::PartHidden()

Reimplemented from berry::IPartListener.

Definition at line 121 of file QmitkFunctionalityCoordinator.cpp.

References ActivateStandaloneFunctionality(), berry::SmartPointer< TObjectType >::Cast(), DeactivateStandaloneFunctionality(), berry::SmartPointer< TObjectType >::GetPointer(), and m_VisibleStandaloneFunctionalities.

{    
  // Check for QmitkFunctionality
  QmitkFunctionality::Pointer _QmitkFunctionality = partRef->GetPart(false).Cast<QmitkFunctionality>();
  if(_QmitkFunctionality != 0)
  {
    _QmitkFunctionality->SetVisible(false);
    _QmitkFunctionality->Hidden();
    // try to deactivate on hide (if is activated)
    this->DeactivateStandaloneFunctionality(_QmitkFunctionality.GetPointer());

    // tracking of Visible Standalone Functionalities
    m_VisibleStandaloneFunctionalities.erase(_QmitkFunctionality.GetPointer());
    // activate Functionality if just one Standalone Functionality is visible (old one gets deactivated)
    if(m_VisibleStandaloneFunctionalities.size() == 1)
      this->ActivateStandaloneFunctionality(_QmitkFunctionality.GetPointer());
  }
}
void QmitkFunctionalityCoordinator::PartOpened ( berry::IWorkbenchPartReference::Pointer  partRef ) [virtual]
See also:
IPartListener::PartOpened()

Reimplemented from berry::IPartListener.

Definition at line 63 of file QmitkFunctionalityCoordinator.cpp.

References berry::SmartPointer< TObjectType >::Cast(), QmitkStdMultiWidgetEditor::EDITOR_ID, berry::SmartPointer< TObjectType >::GetPointer(), berry::SmartPointer< TObjectType >::IsNotNull(), and m_Functionalities.

{
   // check for multiwidget and inform views that it is available now
  if ( partRef->GetId() == QmitkStdMultiWidgetEditor::EDITOR_ID )
  {
    for (std::set<QmitkFunctionality*>::iterator it = m_Functionalities.begin()
      ; it != m_Functionalities.end(); it++)
    {
      (*it)->StdMultiWidgetAvailable(*(partRef
        ->GetPart(false).Cast<QmitkStdMultiWidgetEditor>()->GetStdMultiWidget()));
    }
  }
  else
  {
    // Check for QmitkFunctionality
    QmitkFunctionality::Pointer _QmitkFunctionality = partRef->GetPart(false).Cast<QmitkFunctionality>();
    if(_QmitkFunctionality.IsNotNull())
    {
      m_Functionalities.insert(_QmitkFunctionality.GetPointer()); // save as opened functionality
    }
  }
}
void QmitkFunctionalityCoordinator::PartVisible ( berry::IWorkbenchPartReference::Pointer  partRef ) [virtual]
See also:
IPartListener::PartVisible()

Reimplemented from berry::IPartListener.

Definition at line 140 of file QmitkFunctionalityCoordinator.cpp.

References ActivateStandaloneFunctionality(), berry::SmartPointer< TObjectType >::Cast(), berry::SmartPointer< TObjectType >::GetPointer(), berry::SmartPointer< TObjectType >::IsNotNull(), and m_VisibleStandaloneFunctionalities.

{
  // Check for QmitkFunctionality
  QmitkFunctionality::Pointer _QmitkFunctionality = partRef->GetPart(false).Cast<QmitkFunctionality>();
  if(_QmitkFunctionality.IsNotNull())
  {
    _QmitkFunctionality->SetVisible(true);
    _QmitkFunctionality->Visible();

    // tracking of Visible Standalone Functionalities
    m_VisibleStandaloneFunctionalities.insert(_QmitkFunctionality.GetPointer());
    // activate Functionality if just one Standalone Functionality is visible
    if(m_VisibleStandaloneFunctionalities.size() == 1)
      this->ActivateStandaloneFunctionality(_QmitkFunctionality.GetPointer());
  }
}
void QmitkFunctionalityCoordinator::SetWindow ( berry::IWorkbenchWindow::Pointer  window )

Sets the window to attach the part listener

Definition at line 29 of file QmitkFunctionalityCoordinator.cpp.

References berry::SmartPointer< TObjectType >::IsNotNull(), and m_Window.

{
  m_Window = window;
  if(window.IsNotNull())
  {
    window->GetWorkbench()->AddWindowListener(berry::IWindowListener::Pointer(this));
    window->GetPartService()->AddPartListener(berry::IPartListener::Pointer(this));
  }
}
void QmitkFunctionalityCoordinator::WindowClosed ( berry::IWorkbenchWindow::Pointer  window ) [virtual]

Notifies this listener that the given window has been closed.

Reimplemented from berry::IWindowListener.

Definition at line 180 of file QmitkFunctionalityCoordinator.cpp.

References berry::SmartPointer< TObjectType >::IsNotNull().

{
  if(window.IsNotNull())
  {
    window->GetWorkbench()->RemoveWindowListener(berry::IWindowListener::Pointer(this));
    window->GetPartService()->RemovePartListener(berry::IPartListener::Pointer(this));
  }
}
void QmitkFunctionalityCoordinator::WindowOpened ( berry::IWorkbenchWindow::Pointer   ) [virtual]

Notifies this listener that the given window has been opened.

Reimplemented from berry::IWindowListener.

Definition at line 189 of file QmitkFunctionalityCoordinator.cpp.

{

}

Member Data Documentation

Saves all opened QmitkFunctionalities

Definition at line 109 of file QmitkFunctionalityCoordinator.h.

Referenced by PartClosed(), and PartOpened().

Saves the last QmitkFunctionality that added interactors

Definition at line 105 of file QmitkFunctionalityCoordinator.h.

Referenced by ActivateStandaloneFunctionality(), and PartClosed().

Saves all visible QmitkFunctionalities

Definition at line 113 of file QmitkFunctionalityCoordinator.h.

Referenced by PartHidden(), and PartVisible().

Saves the workbench window

Definition at line 101 of file QmitkFunctionalityCoordinator.h.

Referenced by SetWindow().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines