Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkAbstractDataNodeAction.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
14 
15 #include "mitkIRenderWindowPart.h"
16 
17 // mitk gui common plugin
18 #include <mitkDataNodeSelection.h>
19 
20 // berry
21 #include <berryIWorkbenchPage.h>
22 
23 QList<mitk::DataNode::Pointer> AbstractDataNodeAction::GetSelectedNodes(berry::IWorkbenchPartSite::Pointer workbenchPartSite)
24 {
25  QList<mitk::DataNode::Pointer> selectedNodes;
26  if (workbenchPartSite.IsNull())
27  {
28  return selectedNodes;
29  }
30 
31  berry::ISelection::ConstPointer selection = workbenchPartSite->GetWorkbenchWindow()->GetSelectionService()->GetSelection();
32  mitk::DataNodeSelection::ConstPointer currentSelection = selection.Cast<const mitk::DataNodeSelection>();
33  if (currentSelection.IsNull() || currentSelection->IsEmpty())
34  {
35  return selectedNodes;
36  }
37 
38  selectedNodes = QList<mitk::DataNode::Pointer>::fromStdList(currentSelection->GetSelectedDataNodes());
39  return selectedNodes;
40 }
41 
43 {
44  m_WorkbenchPartSite = workbenchPartSite;
45 }
46 
48 {
50 }
51 
53 {
54  if (m_DataStorage != dataStorage)
55  {
56  // set the new data storage
57  m_DataStorage = dataStorage;
58  }
59 }
60 
61 void QmitkAbstractDataNodeAction::SetSelectedNodes(const QList<mitk::DataNode::Pointer>& selectedNodes)
62 {
63  m_SelectedNodes = selectedNodes;
64  // use the first selected node to initialize the data node actions
66 }
67 
69 {
70  if (m_BaseRenderer != baseRenderer)
71  {
72  // set the new base renderer
73  m_BaseRenderer = baseRenderer;
74  }
75 }
76 
78 {
79  mitk::BaseRenderer::Pointer baseRenderer;
80  if (!m_BaseRenderer.IsExpired())
81  {
82  baseRenderer = m_BaseRenderer.Lock();
83  }
84  return baseRenderer;
85 }
86 
87 QList<mitk::DataNode::Pointer> QmitkAbstractDataNodeAction::GetSelectedNodes() const
88 {
89  if (!m_SelectedNodes.isEmpty())
90  {
91  return m_SelectedNodes;
92  }
93 
95  {
96  // return empty list of selected nodes
97  return m_SelectedNodes;
98  }
99 
100  // retrieve selection from the workbench selection service
102 }
103 
105 {
106  QList<mitk::DataNode::Pointer> selectedNodes = GetSelectedNodes();
107  if (selectedNodes.empty())
108  {
109  return nullptr;
110  }
111 
112  // no batch action; should only be called with a single node
113  mitk::DataNode::Pointer dataNode = selectedNodes.front();
114  if (nullptr == dataNode)
115  {
116  return nullptr;
117  }
118 
119  return dataNode;
120 }
mitk::BaseRenderer::Pointer GetBaseRenderer()
Grants access to the base renderer stored for the action. Will return nullptr if renderer was never s...
void SetBaseRenderer(mitk::BaseRenderer *baseRenderer)
Data management class that handles &#39;was created by&#39; relations.
itk::SmartPointer< T > Lock() const
QList< mitk::DataNode::Pointer > GetSelectedNodes() const
SmartPointer< Other > Cast() const
MITK_QT_APP QList< mitk::DataNode::Pointer > GetSelectedNodes(berry::IWorkbenchPartSite::Pointer workbenchPartSite)
Organizes the rendering process.
QmitkAbstractDataNodeAction(berry::IWorkbenchPartSite::Pointer workbenchPartSite)
SmartPointer< ObjectType > Lock() const
void SetSelectedNodes(const QList< mitk::DataNode::Pointer > &selectedNodes)
virtual void InitializeWithDataNode(const mitk::DataNode *)
berry::SmartPointer< Self > Pointer
Definition: berryObject.h:82
bool IsExpired() const noexcept
mitk::DataNode::Pointer GetSelectedNode() const
mitk::WeakPointer< mitk::DataStorage > m_DataStorage
berry::IWorkbenchPartSite::WeakPtr m_WorkbenchPartSite
QList< mitk::DataNode::Pointer > m_SelectedNodes
void SetDataStorage(mitk::DataStorage *dataStorage)