MIRA
WorkbenchPart.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 by
3  * MetraLabs GmbH (MLAB), GERMANY
4  * and
5  * Neuroinformatics and Cognitive Robotics Labs (NICR) at TU Ilmenau, GERMANY
6  * All rights reserved.
7  *
8  * Contact: info@mira-project.org
9  *
10  * Commercial Usage:
11  * Licensees holding valid commercial licenses may use this file in
12  * accordance with the commercial license agreement provided with the
13  * software or, alternatively, in accordance with the terms contained in
14  * a written agreement between you and MLAB or NICR.
15  *
16  * GNU General Public License Usage:
17  * Alternatively, this file may be used under the terms of the GNU
18  * General Public License version 3.0 as published by the Free Software
19  * Foundation and appearing in the file LICENSE.GPL3 included in the
20  * packaging of this file. Please review the following information to
21  * ensure the GNU General Public License version 3.0 requirements will be
22  * met: http://www.gnu.org/copyleft/gpl.html.
23  * Alternatively you may (at your option) use any later version of the GNU
24  * General Public License if such license has been publicly approved by
25  * MLAB and NICR (or its successors, if any).
26  *
27  * IN NO EVENT SHALL "MLAB" OR "NICR" BE LIABLE TO ANY PARTY FOR DIRECT,
28  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
29  * THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF "MLAB" OR
30  * "NICR" HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * "MLAB" AND "NICR" SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING,
33  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
34  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
35  * ON AN "AS IS" BASIS, AND "MLAB" AND "NICR" HAVE NO OBLIGATION TO
36  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR MODIFICATIONS.
37  */
38 
47 #ifndef _MIRA_WORKBENCHPART_H_
48 #define _MIRA_WORKBENCHPART_H_
49 
50 #include <factory/Factory.h>
51 #include <rcp/Adaptable.h>
52 
53 class QWidget;
54 
55 namespace mira {
56 
58 
59 class IPartListener;
60 class IWorkbenchPart;
61 
63 
68 {
69 public:
70  virtual ~IWorkbenchPartSite() {}
71 
72  virtual void addPartListener(IPartListener* listener) = 0;
73  virtual void removePartListener(IPartListener* listener) = 0;
74 
76  virtual IWorkbenchPart* getActiveEditor() = 0;
77 
83  virtual std::list<IWorkbenchPart*> getEditors(bool backToFront = false) = 0;
84 };
85 
87 
88 class IWorkbenchPart : public Object, public IAdaptable
89 {
90 public:
91  virtual ~IWorkbenchPart() {}
92 
93 public:
94 
96  virtual void activate() = 0;
97 
99  virtual void deactivate() = 0;
100 };
101 
103 
118 {
120 public:
121 
122  WorkbenchPart();
123 
124  template <typename Reflector>
125  void reflect(Reflector& r)
126  {
127  // nothing to do here
128  }
129 
130 public: // implementation if IWorkbenchPart
131 
132  virtual void activate();
133  virtual void deactivate();
134 
136  bool isActivated() const { return mIsActivated; }
137 
138 public:
139 
145  virtual void init(IWorkbenchPartSite* site) = 0;
146 
147 public:
148 
149  virtual Object* getAdapter(const Class& adapter) { return NULL; }
150 
151 private:
152 
154  bool mIsActivated;
155 };
156 
158 
159 }
160 
161 #endif
virtual ~IWorkbenchPart()
Definition: WorkbenchPart.h:91
virtual void activate()=0
Is called by the Workbench to inform the Part that is being activated by the user.
specialize cv::DataType for our ImgPixel and inherit from cv::DataType<Vec>
Definition: IOService.h:67
void reflect(Reflector &r)
Definition: WorkbenchPart.h:125
An interface for an adaptable object.
Definition: Adaptable.h:62
virtual void init(IWorkbenchPartSite *site)=0
Is called by the workbench.
Class object which supports some kind of class reflection.
Definition: Class.h:97
virtual std::list< IWorkbenchPart * > getEditors(bool backToFront=false)=0
Returns a list of all editors of this workbench site.
A workbench part is a component within the workbench.
Definition: WorkbenchPart.h:117
virtual void removePartListener(IPartListener *listener)=0
virtual ~IWorkbenchPartSite()
Definition: WorkbenchPart.h:70
#define MIRA_ABSTRACT_OBJECT(classIdentifier)
Use this MACRO instead of MIRA_OBJECT to declare the class as abstract.
Definition: FactoryMacros.h:235
$Header file containing base classes to enable class creation using a class factory$ ...
Definition: PartListener.h:56
The object class acts as a generic base class for classes which should be used with the classFactory...
Definition: Object.h:144
bool isActivated() const
Returns true if this ViewPart currently has the focus and hence the users attention.
Definition: WorkbenchPart.h:136
Definition: WorkbenchPart.h:88
The primary interface between a workbench part and the workbench.
Definition: WorkbenchPart.h:67
virtual Object * getAdapter(const Class &adapter)
Returns an object which is an instance of the given class associated with this object.
Definition: WorkbenchPart.h:149
virtual IWorkbenchPart * getActiveEditor()=0
Returns the currently active editor part, or NULL, if no editor is active.
Declaration of the IAdaptable interface.
virtual void deactivate()=0
Is called by the Workbench to inform the Part that is being deactivated since another Part got the fo...
virtual void addPartListener(IPartListener *listener)=0
virtual void deactivate()
Is called by the Workbench to inform the Part that is being deactivated since another Part got the fo...
virtual void activate()
Is called by the Workbench to inform the Part that is being activated by the user.