OpenCOVER
coMenu.h
Go to the documentation of this file.
1/* This file is part of COVISE.
2
3 You can use it under the terms of the GNU Lesser General Public License
4 version 2.1 or later, see lgpl-2.1.txt.
5
6 * License: LGPL 2+ */
7
8#ifndef CO_MENU_H
9#define CO_MENU_H
10
12#include <OpenVRUI/coMenuItem.h>
13#include <OpenVRUI/coAction.h>
14
15#include <util/coTypes.h>
16
17#include <list>
18#include <vector>
19#include <string>
20
21namespace vrui
22{
23
24class coMenuItem;
25class coGenericSubMenuItem;
26class coCombinedButtonInteraction;
27
28class vruiMatrix;
29
30typedef std::vector<coMenuItem *> coMenuItemVector;
31
33class OPENVRUIEXPORT coMenuFocusListener
34{
35public:
37 {
38 }
43 virtual void focusEvent(bool focus, coMenu *menu) = 0;
44};
45
50class OPENVRUIEXPORT coMenu : public coAction, public coUpdateable
51{
52public:
53 coMenu(coMenu *parentMenu, const std::string &name);
54 virtual ~coMenu();
55
57 virtual void setTransformMatrix(vruiMatrix *matrix) = 0;
60 virtual void setTransformMatrix(vruiMatrix *matrix, float scale) = 0;
62 // virtual vruiMatrix* getTransformMatrixLocal() = 0;
64 // virtual void setOffsetMatrix(vruiMatrix * matrix) = 0;
65
66 virtual void setScale(float s) = 0;
67 virtual float getScale() const = 0;
68 virtual void add(coMenuItem *item);
69 virtual void insert(coMenuItem *item, int location);
70 virtual void setMenuListener(coMenuFocusListener *listener);
71 virtual int hit(vruiHit *hit);
72 virtual void miss();
74 virtual void setVisible(bool);
76 virtual void positionAllSubmenus();
77 virtual void remove(coMenuItem *item);
78 virtual void removeAll();
79 virtual int getItemCount() const;
80 virtual void closeMenu();
81
82 virtual void selected(bool select);
83 virtual void doActionPress();
84 virtual void doActionRelease();
85 virtual void doSecondActionPress();
86 virtual void doSecondActionRelease();
87 virtual void makeVisible(coMenuItem *);
88
89 virtual vruiTransformNode *getDCS() = 0;
90
91 virtual bool isInteractionActive() const;
94
95 // Functions to Show and Hide the Menu
96 virtual void show() = 0;
97 virtual void hide() = 0;
98
99 enum
100 {
101 MENU_ONOFF = 0,
102 MENU_SLIDE
103 };
104
105 void setShowMode(int mode);
106 int getShowMode() const;
107
110
112 virtual const char *getClassName() const;
114 virtual bool isOfClassName(const char *) const;
115
118
121
123 bool isVisible() const;
124
126 const char *getName() const;
127
128 // get my menu's items
130
131 coMenuItem *getItemByName(const char *name);
132
133 // check if menu contains item, return position in menu or -1
134 int index(const coMenuItem *item);
135
136 // test change parent
137 void setParent(coMenu *newParent)
138 {
139 parent = newParent;
140 };
142 {
143 return parent;
144 };
145
146 virtual void setAttachment(int att);
147 virtual int getAttachment() const
148 {
149 return attachment_;
150 };
151
152 bool wasMoved() const;
153 void setMoved(bool flag);
154
155protected:
156 std::list<coMenuItem *> items;
158
161
164 std::string name;
168
169 float scale_;
171
173 bool wasMoved_ = false;
174};
175}
176#endif
collaborative interface manager
Definition: coVRCommunication.h:41
std::vector< coMenuItem * > coMenuItemVector
Definition: coMenu.h:28
Definition: coAction.h:26
Definition: coCombinedButtonInteraction.h:22
Definition: coGenericSubMenuItem.h:23
Action listener for events triggered by any coMenuItem.
Definition: coMenu.h:34
virtual ~coMenuFocusListener()
Definition: coMenu.h:36
virtual void focusEvent(bool focus, coMenu *menu)=0
Definition: coMenu.h:51
virtual void setVisible(bool)
virtual vruiTransformNode * getDCS()=0
Get Transformation Node.
virtual void makeVisible(coMenuItem *)
makes the item visible for joystick interaction
virtual void insert(coMenuItem *item, int location)
virtual bool isInteractionActive() const
void setParent(coMenu *newParent)
Definition: coMenu.h:137
vruiMatrix * matrix_
Definition: coMenu.h:170
coGenericSubMenuItem * myMenuItem
Definition: coMenu.h:159
void setShowMode(int mode)
virtual void doActionPress()
Action is called via joystick.
std::string name
Definition: coMenu.h:164
virtual void add(coMenuItem *item)
const char * getName() const
get my menu's name
virtual ~coMenu()
Sets the matrix which defines location and orientation.
float scale_
Definition: coMenu.h:169
virtual void selected(bool select)
Menu is selected via joystick.
coCombinedButtonInteraction * wheelInteraction
interaction for preventing accidental global wheel interaction
Definition: coMenu.h:167
bool wasMoved() const
virtual void setSubMenuItem(coGenericSubMenuItem *item)
virtual int hit(vruiHit *hit)
int index(const coMenuItem *item)
coMenuFocusListener * listener
menu event listener, triggered on menu selection
Definition: coMenu.h:160
virtual void show()=0
makes the menu visible
coCombinedButtonInteraction * getInteraction() const
int getShowMode() const
virtual void positionAllSubmenus()
reposition all submenus, for example after the main menu was repositioned with setTransform matrix
virtual void setMenuListener(coMenuFocusListener *listener)
coGenericSubMenuItem * getSubMenuItem()
virtual const char * getClassName() const
get the Element's classname
virtual void closeMenu()
virtual void removeAll()
virtual void hide()=0
hides this menu
void setMoved(bool flag)
virtual float getScale() const =0
Gets the current scaling factor.
coCombinedButtonInteraction * moveInteraction
Definition: coMenu.h:166
coMenu(coMenu *parentMenu, const std::string &name)
int showMode
how to show and hide this Menu
Definition: coMenu.h:162
virtual void setAttachment(int att)
void closeAllOtherMenus(coMenuItem *leave=0)
close all menus: optionally leave one open
virtual void doActionRelease()
Action is called via joystick.
coCombinedButtonInteraction * getMoveInteraction() const
const coMenu * getParent()
Definition: coMenu.h:141
std::list< coMenuItem * > items
list of menu items which can be accessed from this menu
Definition: coMenu.h:156
bool visible
Definition: coMenu.h:163
void removeAllAfter(coMenuItem *last)
remove all items behind a given one
virtual void setTransformMatrix(vruiMatrix *matrix, float scale)=0
virtual void setTransformMatrix(vruiMatrix *matrix)=0
virtual coUIElement * getUIElement()
virtual void miss()
virtual void remove(coMenuItem *item)
coCombinedButtonInteraction * interaction
Definition: coMenu.h:165
virtual bool isOfClassName(const char *) const
check if the Element or any ancestor is this classname
virtual int getItemCount() const
virtual void setScale(float s)=0
Returns the matrix which defines location and orientation of the menu.
coMenuItem * getItemByName(const char *name)
virtual void doSecondActionRelease()
Action is called via joystick.
int attachment_
Definition: coMenu.h:172
virtual int getAttachment() const
Definition: coMenu.h:147
bool isVisible() const
check whether menu is currently visible
coMenuItemVector getAllItems()
coMenu * parent
parent menu, NULL if this is the topmost menu
Definition: coMenu.h:157
virtual void doSecondActionPress()
Action is called via joystick.
Definition: coMenuItem.h:45
Definition: coUIElement.h:53
objects that are derived from this class are called once per frame
Definition: coUpdateManager.h:20
Definition: vruiHit.h:21
Definition: vruiMatrix.h:20
Definition: vruiTransformNode.h:18