UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ui_node_abstractnode.h
Go to the documentation of this file.
1 
5 /*
6 Copyright (C) 2002-2020 UFO: Alien Invasion.
7 
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
12 
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16 
17 See the GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 
23 */
24 
25 #pragma once
26 
27 #include "../../../shared/cxx.h"
28 #include "../ui_nodes.h"
29 #include "../ui_node.h"
30 
31 struct uiBehaviour_t;
32 
33 class uiNode {
34 public:
35  /* system allocation */
36 
38  virtual void onLoading(uiNode_t* node);
40  virtual void onLoaded(uiNode_t* node);
42  virtual void clone(uiNode_t const* source, uiNode_t* clone);
44  virtual void initNode(uiNode_t* node);
46  virtual void initNodeDynamic(uiNode_t* node);
48  virtual void deleteNode(uiNode_t* node);
49 
50  /* system callback */
51 
53  virtual void onWindowOpened(uiNode_t* node, linkedList_t* params);
55  virtual void onWindowClosed(uiNode_t* node);
57  virtual void onWindowActivate(uiNode_t* node);
59  virtual void onActivate(uiNode_t* node);
61  virtual void onPropertyChanged(uiNode_t* node, const value_t* property);
62 
63  virtual ~uiNode() {}
64 };
65 
67 
68 class uiLocatedNode : public uiNode {
69 public:
71  virtual void draw(uiNode_t* node) {}
73  virtual void drawTooltip(const uiNode_t* node, int x, int y) const;
75  virtual void drawOverWindow(uiNode_t* node) {}
76 
78  virtual void doLayout(uiNode_t* node);
80  virtual void onSizeChanged(uiNode_t* node);
81 
82  /* mouse events */
83 
85  virtual void onLeftClick(uiNode_t* node, int x, int y);
87  virtual void onRightClick(uiNode_t* node, int x, int y);
89  virtual void onMiddleClick(uiNode_t* node, int x, int y);
91  virtual bool onScroll(uiNode_t* node, int deltaX, int deltaY);
93  virtual void onMouseMove(uiNode_t* node, int x, int y) {}
95  virtual void onMouseDown(uiNode_t* node, int x, int y, int button) {}
97  virtual void onMouseUp(uiNode_t* node, int x, int y, int button) {}
102  virtual bool onMouseLongPress(uiNode_t* node, int x, int y, int button) {
103  return false;
104  }
106  virtual void onMouseEnter(uiNode_t* node);
108  virtual void onMouseLeave(uiNode_t* node);
110  virtual void onCapturedMouseMove(uiNode_t* node, int x, int y) {}
112  virtual void onCapturedMouseLost(uiNode_t* node) {}
117  virtual bool onStartDragging(uiNode_t* node, int startX, int startY, int currentX, int currentY, int button) {
118  return false;
119  }
120 
121  /* drag and drop callback */
122 
124  virtual bool onDndEnter(uiNode_t* node);
126  virtual bool onDndMove(uiNode_t* node, int x, int y);
128  virtual void onDndLeave(uiNode_t* node);
130  virtual bool onDndDrop(uiNode_t* node, int x, int y);
132  virtual bool onDndFinished(uiNode_t* node, bool isDropped);
133 
134  /* focus and keyboard events */
135  virtual void onFocusGained(uiNode_t* node);
136  virtual void onFocusLost(uiNode_t* node);
137  virtual bool onKeyPressed(uiNode_t* node, unsigned int key, unsigned short unicode);
138  virtual bool onKeyReleased(uiNode_t* node, unsigned int key, unsigned short unicode);
139 
141  virtual void getClientPosition(uiNode_t const* node, vec2_t position) {}
143  virtual int getCellWidth (uiNode_t* node) {return 1;}
145  virtual int getCellHeight (uiNode_t* node) {return 1;}
146 
147 };
148 
static int startX
virtual bool onDndDrop(uiNode_t *node, int x, int y)
virtual void onWindowActivate(uiNode_t *node)
virtual void onMouseLeave(uiNode_t *node)
virtual bool onDndMove(uiNode_t *node, int x, int y)
virtual void initNodeDynamic(uiNode_t *node)
virtual void getClientPosition(uiNode_t const *node, vec2_t position)
virtual void onRightClick(uiNode_t *node, int x, int y)
virtual void onFocusGained(uiNode_t *node)
virtual void onDndLeave(uiNode_t *node)
virtual bool onMouseLongPress(uiNode_t *node, int x, int y, int button)
Send mouse event when a pressed mouse button is dragged.
virtual void onLoaded(uiNode_t *node)
virtual void onWindowOpened(uiNode_t *node, linkedList_t *params)
virtual void onMouseUp(uiNode_t *node, int x, int y, int button)
virtual void onMouseMove(uiNode_t *node, int x, int y)
virtual void onLoading(uiNode_t *node)
virtual void clone(uiNode_t const *source, uiNode_t *clone)
unsigned short unicode
Definition: cl_input.cpp:69
virtual void drawTooltip(const uiNode_t *node, int x, int y) const
unsigned int key
Definition: cl_input.cpp:68
virtual void onCapturedMouseMove(uiNode_t *node, int x, int y)
static int startY
SharedPtr< uiNode > UINodePtr
virtual int getCellWidth(uiNode_t *node)
virtual bool onScroll(uiNode_t *node, int deltaX, int deltaY)
Atomic structure used to define most of the UI.
Definition: ui_nodes.h:80
virtual bool onStartDragging(uiNode_t *node, int startX, int startY, int currentX, int currentY, int button)
Send mouse event when a pressed mouse button is dragged.
virtual void drawOverWindow(uiNode_t *node)
virtual bool onDndEnter(uiNode_t *node)
virtual void draw(uiNode_t *node)
virtual void onMiddleClick(uiNode_t *node, int x, int y)
virtual bool onKeyReleased(uiNode_t *node, unsigned int key, unsigned short unicode)
virtual ~uiNode()
virtual void initNode(uiNode_t *node)
virtual void onFocusLost(uiNode_t *node)
virtual void onMouseDown(uiNode_t *node, int x, int y, int button)
node behaviour, how a node work
Definition: ui_behaviour.h:39
virtual void onWindowClosed(uiNode_t *node)
virtual void onCapturedMouseLost(uiNode_t *node)
virtual void onSizeChanged(uiNode_t *node)
Callback stub.
vec_t vec2_t[2]
Definition: ufotypes.h:38
virtual void onPropertyChanged(uiNode_t *node, const value_t *property)
virtual void deleteNode(uiNode_t *node)
virtual int getCellHeight(uiNode_t *node)
virtual void onMouseEnter(uiNode_t *node)
virtual void onLeftClick(uiNode_t *node, int x, int y)
virtual void doLayout(uiNode_t *node)
Call to update the node layout. This common code revalidates the node tree.
virtual bool onDndFinished(uiNode_t *node, bool isDropped)
virtual void onActivate(uiNode_t *node)
Activate the node. Can be used without the mouse (ie. a button will execute onClick) ...
virtual bool onKeyPressed(uiNode_t *node, unsigned int key, unsigned short unicode)
void UI_RegisterAbstractNode(uiBehaviour_t *)