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
9 * VTT Technical Research Centre of Finland - initial API and implementation
\r
10 *******************************************************************************/
\r
11 package org.simantics.proconf.g3d.input;
\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
19 public class AWTInputProvider implements KeyListener, MouseListener, MouseMotionListener , InputProvider{
\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
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
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
40 private int mouseX = 0;
\r
41 private int mouseY = 0;
\r
43 private int prevMouseX = 0;
\r
44 private int prevMouseY = 0;
\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
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
58 public AWTInputProvider() {
\r
59 for (int i = 0; i < keyDown.length; i++) {
\r
62 keyPressed[i] = false;
\r
67 public boolean keyPressed(int i) {
\r
68 return keyPressed[i];
\r
71 public boolean keyDown(int i) {
\r
75 public boolean keyUp(int i) {
\r
79 public int mouseX() {
\r
83 public int mouseY() {
\r
87 public int prevMouseX() {
\r
91 public int prevMouseY() {
\r
95 public boolean mousePressed() {
\r
96 return mousePressed;
\r
99 public boolean mouseMoved() {
\r
103 public boolean mouseReleased() {
\r
104 return mouseReleased;
\r
107 public boolean mouseClicked() {
\r
108 return mouseClicked;
\r
111 public boolean mouseDragged() {
\r
112 return mouseDragged;
\r
115 public int pressModifiers() {
\r
116 return pressModifiers;
\r
119 public int clickModifiers() {
\r
120 return clickModifiers;
\r
123 public int dragModifiers() {
\r
124 return dragModifiers;
\r
127 public int moveModifiers() {
\r
128 return moveModifiers;
\r
131 public int clickButton() {
\r
132 return clickButton;
\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
165 keyPressed[i] = true;
\r
167 else if (keyDown[i] && keyTemp[i]) {
\r
168 keyPressed[i] = false;
\r
170 else if (!keyDown[i] && keyTemp[i]) {
\r
172 keyTemp[i] = false;
\r
173 keyPressed[i] = false;
\r
175 else if (!keyDown[i]) {
\r
176 keyTemp[i] = false;
\r
177 keyPressed[i] = false;
\r
185 * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
\r
187 public void mouseDragged(MouseEvent e) {
\r
188 awtMouseX = e.getX();
\r
189 awtMouseY = e.getY();
\r
191 awtDragModifiers = e.getModifiers() | e.getButton();
\r
195 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
\r
197 public void mouseReleased(MouseEvent e) {
\r
198 awtReleased = true;
\r
206 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
\r
208 public void mouseClicked(MouseEvent e) {
\r
210 awtMouseX = e.getX();
\r
211 awtMouseY = e.getY();
\r
214 awtClickModifiers = e.getModifiersEx();
\r
215 awtClickButton = e.getButton();
\r
216 awtMouseClicked = true;
\r
223 * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
\r
225 public void mouseEntered(MouseEvent arg0) {
\r
232 * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
\r
234 public void mouseExited(MouseEvent arg0) {
\r
241 * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
\r
243 public void mouseMoved(MouseEvent arg0) {
\r
245 awtMouseMoved = true;
\r
246 awtMouseX = arg0.getX();
\r
247 awtMouseY = arg0.getY();
\r
248 awtMoveModifiers = arg0.getModifiersEx();
\r
253 * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
\r
255 public void keyPressed(KeyEvent arg0) {
\r
256 keyDown[arg0.getKeyCode()] = true;
\r
260 * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
\r
262 public void keyReleased(KeyEvent arg0) {
\r
263 keyDown[arg0.getKeyCode()] = false;
\r
268 * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
\r
270 public void keyTyped(KeyEvent e) {
\r
275 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
\r
277 public void mousePressed(MouseEvent e) {
\r
278 awtMouseX = e.getX();
\r
279 awtMouseY = e.getY();
\r
281 awtPressModifiers = e.getModifiers() | e.getButton();
\r
284 public void setMouseMoved(boolean b) {
\r
288 public void setMouseX(int x) {
\r
292 public void setMouseY(int y) {
\r
296 public String toString() {
\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