]> gerrit.simantics Code Review - simantics/3d.git/blob - dev/org.simantics.proconf.g3d/src/org/simantics/proconf/g3d/input/AWTInputProvider.java
Release
[simantics/3d.git] / dev / org.simantics.proconf.g3d / src / org / simantics / proconf / g3d / input / AWTInputProvider.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007 VTT Technical Research Centre of Finland and others.\r
3  * All rights reserved. This program and the accompanying materials\r
4  * are made available under the terms of the Eclipse Public License v1.0\r
5  * which accompanies this distribution, and is available at\r
6  * http://www.eclipse.org/legal/epl-v10.html\r
7  *\r
8  * Contributors:\r
9  *     VTT Technical Research Centre of Finland - initial API and implementation\r
10  *******************************************************************************/\r
11 package org.simantics.proconf.g3d.input;\r
12 \r
13 import java.awt.event.KeyEvent;\r
14 import java.awt.event.KeyListener;\r
15 import java.awt.event.MouseEvent;\r
16 import java.awt.event.MouseListener;\r
17 import java.awt.event.MouseMotionListener;\r
18 \r
19 public class AWTInputProvider implements KeyListener, MouseListener, MouseMotionListener , InputProvider{\r
20     \r
21     private boolean keyPressed[] = new boolean[1024];\r
22     private boolean keyTemp[] = new boolean[1024];\r
23     private boolean keyDown[] = new boolean[1024];\r
24     private boolean keyUp[] = new boolean[1024];\r
25     \r
26     private int awtMouseX = 0;\r
27     private int awtMouseY = 0;\r
28     private boolean awtPressed = false;\r
29     private boolean awtDragged = false;\r
30     private boolean awtReleased = false;\r
31     private boolean awtMouseClicked = false;\r
32     private boolean awtMouseMoved = false;\r
33     \r
34     private int awtPressModifiers = 0;\r
35     private int awtDragModifiers = 0;\r
36     private int awtClickModifiers = 0;\r
37     private int awtMoveModifiers = 0;\r
38     private int awtClickButton = 0;\r
39      \r
40     private int mouseX = 0;\r
41     private int mouseY = 0;\r
42     \r
43     private int prevMouseX = 0;\r
44     private int prevMouseY = 0;\r
45     \r
46     private boolean mousePressed = false;\r
47     private boolean mouseDragged = false;\r
48     private boolean mouseReleased = false;\r
49     private boolean mouseClicked = false;\r
50     private boolean mouseMoved = false;\r
51     \r
52     private int pressModifiers = 0;\r
53     private int clickModifiers = 0;\r
54     private int dragModifiers = 0;\r
55     private int clickButton = 0;\r
56     private int moveModifiers = 0;\r
57     \r
58     public AWTInputProvider() {\r
59         for (int i = 0; i < keyDown.length; i++) {\r
60             keyDown[i] = false;\r
61             keyTemp[i] = false;\r
62             keyPressed[i] = false;  \r
63             keyUp[i] = false;\r
64         }\r
65     }\r
66     \r
67     public boolean keyPressed(int i) {\r
68         return keyPressed[i];\r
69     }\r
70     \r
71     public boolean keyDown(int i) {\r
72         return keyDown[i];\r
73     }\r
74     \r
75     public boolean keyUp(int i) {\r
76         return keyUp[i];\r
77     }\r
78     \r
79     public int mouseX() {\r
80         return mouseX;\r
81     }\r
82     \r
83     public int mouseY() {\r
84         return mouseY;\r
85     }\r
86     \r
87     public int prevMouseX() {\r
88         return prevMouseX;\r
89     }\r
90     \r
91     public int prevMouseY() {\r
92         return prevMouseY;\r
93     }\r
94     \r
95     public boolean mousePressed() {\r
96         return mousePressed;\r
97     }\r
98     \r
99     public boolean mouseMoved() {\r
100         return mouseMoved;\r
101     }\r
102     \r
103     public boolean mouseReleased() {\r
104         return mouseReleased;\r
105     }\r
106     \r
107     public boolean mouseClicked() {\r
108         return mouseClicked;\r
109     }\r
110     \r
111     public boolean mouseDragged() {\r
112         return mouseDragged;\r
113     }\r
114     \r
115     public int pressModifiers() {\r
116         return pressModifiers;\r
117     }\r
118     \r
119     public int clickModifiers() {\r
120         return clickModifiers;\r
121     }\r
122     \r
123     public int dragModifiers() {\r
124         return dragModifiers;\r
125     }\r
126     \r
127     public int moveModifiers() {\r
128         return moveModifiers;\r
129     }\r
130     \r
131     public int clickButton() {\r
132         return clickButton;\r
133     }\r
134     \r
135     \r
136     public void update() {\r
137         prevMouseX = mouseX;\r
138         prevMouseY = mouseY;\r
139         mouseX = awtMouseX;\r
140         mouseY = awtMouseY;\r
141         //System.out.println(mouseX + " " + mouseY);\r
142         mousePressed = awtPressed;\r
143         awtPressed = false;\r
144         mouseReleased = awtReleased;\r
145         awtReleased = false;\r
146         mouseMoved = awtMouseMoved;\r
147         awtMouseMoved = false;\r
148         mouseDragged = awtDragged;\r
149         awtDragged = false;\r
150         mouseClicked = awtMouseClicked;\r
151         awtMouseClicked = false;\r
152         pressModifiers = awtPressModifiers;\r
153        // awtPressModifiers = 0;\r
154         clickModifiers = awtClickModifiers;\r
155         //awtClickModifiers = 0;\r
156         dragModifiers = awtDragModifiers;\r
157        // awtDragModifiers = 0;\r
158         moveModifiers = awtMoveModifiers;\r
159         //awtMoveModifiers = 0;\r
160         clickButton = awtClickButton;\r
161         awtClickButton = 0;\r
162         for (int i = 0; i < keyDown.length; i++) {\r
163             if (keyDown[i] && !keyTemp[i]) {\r
164               keyTemp[i] = true;\r
165               keyPressed[i] = true;\r
166             }\r
167             else if (keyDown[i] && keyTemp[i]) {\r
168              keyPressed[i] = false;\r
169             }\r
170             else if (!keyDown[i] && keyTemp[i]) {\r
171                 keyUp[i] = true;\r
172                 keyTemp[i] = false;\r
173                 keyPressed[i] = false;\r
174             }\r
175             else if (!keyDown[i]) {\r
176               keyTemp[i] = false;\r
177               keyPressed[i] = false;\r
178               keyUp[i] = false;\r
179             }\r
180           }\r
181     \r
182     }\r
183     \r
184     /* (non-Javadoc)\r
185      * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)\r
186      */\r
187     public void mouseDragged(MouseEvent e) {\r
188         awtMouseX = e.getX();\r
189         awtMouseY = e.getY();\r
190         awtDragged = true;\r
191         awtDragModifiers = e.getModifiers() | e.getButton();\r
192     }\r
193  \r
194     /* (non-Javadoc)\r
195      * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)\r
196      */\r
197     public void mouseReleased(MouseEvent e) {\r
198         awtReleased = true;\r
199         //ms.set(msTmp);\r
200 \r
201     }\r
202 \r
203     /*\r
204      * (non-Javadoc)\r
205      * \r
206      * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)\r
207      */\r
208     public void mouseClicked(MouseEvent e) {\r
209 \r
210         awtMouseX = e.getX();\r
211         awtMouseY = e.getY();\r
212         e.getButton();\r
213         \r
214         awtClickModifiers  = e.getModifiersEx();\r
215         awtClickButton = e.getButton();\r
216         awtMouseClicked = true;\r
217 \r
218     }\r
219 \r
220     /*\r
221      * (non-Javadoc)\r
222      * \r
223      * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)\r
224      */\r
225     public void mouseEntered(MouseEvent arg0) {\r
226 \r
227     }\r
228 \r
229     /*\r
230      * (non-Javadoc)\r
231      * \r
232      * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)\r
233      */\r
234     public void mouseExited(MouseEvent arg0) {\r
235 \r
236     }\r
237 \r
238     /*\r
239      * (non-Javadoc)\r
240      * \r
241      * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)\r
242      */\r
243     public void mouseMoved(MouseEvent arg0) {\r
244 \r
245         awtMouseMoved = true;\r
246         awtMouseX = arg0.getX();\r
247         awtMouseY = arg0.getY();\r
248         awtMoveModifiers  = arg0.getModifiersEx();\r
249 \r
250     }\r
251     \r
252     /* (non-Javadoc)\r
253      * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)\r
254      */\r
255     public void keyPressed(KeyEvent arg0) {\r
256            keyDown[arg0.getKeyCode()] = true;\r
257     }\r
258     \r
259     /* (non-Javadoc)\r
260      * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)\r
261      */\r
262     public void keyReleased(KeyEvent arg0) {\r
263            keyDown[arg0.getKeyCode()] = false;\r
264     }\r
265     \r
266  \r
267     /* (non-Javadoc)\r
268      * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)\r
269      */\r
270     public void keyTyped(KeyEvent e) {\r
271 \r
272     }\r
273 \r
274     /* (non-Javadoc)\r
275      * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)\r
276      */\r
277     public void mousePressed(MouseEvent e) {\r
278         awtMouseX = e.getX();\r
279         awtMouseY = e.getY();\r
280         awtPressed = true;\r
281         awtPressModifiers = e.getModifiers() | e.getButton();\r
282     }\r
283     \r
284     public void setMouseMoved(boolean b) {\r
285 \r
286     }\r
287     \r
288     public void setMouseX(int x) {\r
289 \r
290     }\r
291     \r
292     public void setMouseY(int y) {\r
293 \r
294     }\r
295     \r
296     public String toString() {\r
297         String s = "";\r
298         s += "(" + mouseX + "," + mouseY + ")\n";\r
299         s += "Pressed " + mousePressed + "\n";\r
300         s += "Released " + mouseReleased + "\n";\r
301         s += "Moved " + mouseMoved + "\n";\r
302         s += "Dragged " + mouseDragged + "\n";\r
303         s += "Clicked " + mouseClicked + "\n";\r
304         s += "DragModifiers " + dragModifiers + "\n";\r
305         s += "ClickModifiers " + clickModifiers + "\n";\r
306         s += "PressModifiers " + pressModifiers + "\n";\r
307         return s;\r
308     }\r
309 }