/******************************************************************************* * Copyright (c) 2007 VTT Technical Research Centre of Finland and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.proconf.g3d.input; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; public class AWTInputProvider implements KeyListener, MouseListener, MouseMotionListener , InputProvider{ private boolean keyPressed[] = new boolean[1024]; private boolean keyTemp[] = new boolean[1024]; private boolean keyDown[] = new boolean[1024]; private boolean keyUp[] = new boolean[1024]; private int awtMouseX = 0; private int awtMouseY = 0; private boolean awtPressed = false; private boolean awtDragged = false; private boolean awtReleased = false; private boolean awtMouseClicked = false; private boolean awtMouseMoved = false; private int awtPressModifiers = 0; private int awtDragModifiers = 0; private int awtClickModifiers = 0; private int awtMoveModifiers = 0; private int awtClickButton = 0; private int mouseX = 0; private int mouseY = 0; private int prevMouseX = 0; private int prevMouseY = 0; private boolean mousePressed = false; private boolean mouseDragged = false; private boolean mouseReleased = false; private boolean mouseClicked = false; private boolean mouseMoved = false; private int pressModifiers = 0; private int clickModifiers = 0; private int dragModifiers = 0; private int clickButton = 0; private int moveModifiers = 0; public AWTInputProvider() { for (int i = 0; i < keyDown.length; i++) { keyDown[i] = false; keyTemp[i] = false; keyPressed[i] = false; keyUp[i] = false; } } public boolean keyPressed(int i) { return keyPressed[i]; } public boolean keyDown(int i) { return keyDown[i]; } public boolean keyUp(int i) { return keyUp[i]; } public int mouseX() { return mouseX; } public int mouseY() { return mouseY; } public int prevMouseX() { return prevMouseX; } public int prevMouseY() { return prevMouseY; } public boolean mousePressed() { return mousePressed; } public boolean mouseMoved() { return mouseMoved; } public boolean mouseReleased() { return mouseReleased; } public boolean mouseClicked() { return mouseClicked; } public boolean mouseDragged() { return mouseDragged; } public int pressModifiers() { return pressModifiers; } public int clickModifiers() { return clickModifiers; } public int dragModifiers() { return dragModifiers; } public int moveModifiers() { return moveModifiers; } public int clickButton() { return clickButton; } public void update() { prevMouseX = mouseX; prevMouseY = mouseY; mouseX = awtMouseX; mouseY = awtMouseY; //System.out.println(mouseX + " " + mouseY); mousePressed = awtPressed; awtPressed = false; mouseReleased = awtReleased; awtReleased = false; mouseMoved = awtMouseMoved; awtMouseMoved = false; mouseDragged = awtDragged; awtDragged = false; mouseClicked = awtMouseClicked; awtMouseClicked = false; pressModifiers = awtPressModifiers; // awtPressModifiers = 0; clickModifiers = awtClickModifiers; //awtClickModifiers = 0; dragModifiers = awtDragModifiers; // awtDragModifiers = 0; moveModifiers = awtMoveModifiers; //awtMoveModifiers = 0; clickButton = awtClickButton; awtClickButton = 0; for (int i = 0; i < keyDown.length; i++) { if (keyDown[i] && !keyTemp[i]) { keyTemp[i] = true; keyPressed[i] = true; } else if (keyDown[i] && keyTemp[i]) { keyPressed[i] = false; } else if (!keyDown[i] && keyTemp[i]) { keyUp[i] = true; keyTemp[i] = false; keyPressed[i] = false; } else if (!keyDown[i]) { keyTemp[i] = false; keyPressed[i] = false; keyUp[i] = false; } } } /* (non-Javadoc) * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent) */ public void mouseDragged(MouseEvent e) { awtMouseX = e.getX(); awtMouseY = e.getY(); awtDragged = true; awtDragModifiers = e.getModifiers() | e.getButton(); } /* (non-Javadoc) * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent) */ public void mouseReleased(MouseEvent e) { awtReleased = true; //ms.set(msTmp); } /* * (non-Javadoc) * * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent) */ public void mouseClicked(MouseEvent e) { awtMouseX = e.getX(); awtMouseY = e.getY(); e.getButton(); awtClickModifiers = e.getModifiersEx(); awtClickButton = e.getButton(); awtMouseClicked = true; } /* * (non-Javadoc) * * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent) */ public void mouseEntered(MouseEvent arg0) { } /* * (non-Javadoc) * * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent) */ public void mouseExited(MouseEvent arg0) { } /* * (non-Javadoc) * * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent) */ public void mouseMoved(MouseEvent arg0) { awtMouseMoved = true; awtMouseX = arg0.getX(); awtMouseY = arg0.getY(); awtMoveModifiers = arg0.getModifiersEx(); } /* (non-Javadoc) * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent) */ public void keyPressed(KeyEvent arg0) { keyDown[arg0.getKeyCode()] = true; } /* (non-Javadoc) * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent) */ public void keyReleased(KeyEvent arg0) { keyDown[arg0.getKeyCode()] = false; } /* (non-Javadoc) * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent) */ public void keyTyped(KeyEvent e) { } /* (non-Javadoc) * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent) */ public void mousePressed(MouseEvent e) { awtMouseX = e.getX(); awtMouseY = e.getY(); awtPressed = true; awtPressModifiers = e.getModifiers() | e.getButton(); } public void setMouseMoved(boolean b) { } public void setMouseX(int x) { } public void setMouseY(int y) { } public String toString() { String s = ""; s += "(" + mouseX + "," + mouseY + ")\n"; s += "Pressed " + mousePressed + "\n"; s += "Released " + mouseReleased + "\n"; s += "Moved " + mouseMoved + "\n"; s += "Dragged " + mouseDragged + "\n"; s += "Clicked " + mouseClicked + "\n"; s += "DragModifiers " + dragModifiers + "\n"; s += "ClickModifiers " + clickModifiers + "\n"; s += "PressModifiers " + pressModifiers + "\n"; return s; } }