Show SWTMouseWithKeyComboInput.java syntax highlighted
/**
*
*/
package ucalgary.ebe.ci.gestures.input.swt;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseMoveListener;
import org.eclipse.swt.widgets.Control;
import ucalgary.ebe.ci.ICIInputProvider;
import ucalgary.ebe.ci.gestures.input.AbstractTimedInput;
import ucalgary.ebe.ci.gestures.input.GestureInput;
/**
* @author hkolenda
*
*/
public class SWTMouseWithKeyComboInput extends AbstractTimedInput implements GestureInput, ICIInputProvider {
private class InputHandler implements KeyListener, MouseMoveListener {
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.events.KeyListener#keyPressed(org.eclipse.swt.events.KeyEvent)
*/
public void keyPressed(KeyEvent e) {
if (((keyCode == 0) || (e.keyCode == keyCode))
&& (((keyCode == 0) && (e.keyCode == keyModifier)) || (keyModifier == 0) || ((e.stateMask & keyModifier) == keyModifier))) {
if (!isGestureRunning()) {
fireStartGesture();
}
}
else {
fireCancelGesture();
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.events.KeyListener#keyReleased(org.eclipse.swt.events.KeyEvent)
*/
public void keyReleased(KeyEvent e) {
if (((keyCode == 0) || (e.keyCode == keyCode)) && ((keyModifier == 0) || ((e.stateMask & keyModifier) == keyModifier))) {
fireStopGesture();
}
else {
fireCancelGesture();
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.swt.events.MouseMoveListener#mouseMove(org.eclipse.swt.events.MouseEvent)
*/
public void mouseMove(MouseEvent e) {
if (isGestureRunning()) {
fireCoordInput(e.x, e.y);
}
}
}
private Control control = null;
private InputHandler inputHandler = null;
private char keyCode = 0;
private int keyModifier = 0;
public SWTMouseWithKeyComboInput(Control control) {
inputHandler = new InputHandler();
control.addKeyListener(inputHandler);
control.addMouseMoveListener(inputHandler);
this.control = control;
setGestureTimeout(3000);
}
/**
* @param keyCode
* the keyCode to set
*/
public void setKeyCode(char keyCode) {
this.keyCode = keyCode;
}
/**
* @param keyModifier
* the keyModifier to set
*/
public void setKeyModifier(int keyModifier) {
this.keyModifier = keyModifier;
}
/*
* (non-Javadoc)
*
* @see ucalgary.ebe.ci.ICIInputProvider#stop()
*/
public void stop() {
if (control != null) {
control.removeKeyListener(inputHandler);
control.removeMouseMoveListener(inputHandler);
}
}
}
See more files for this project here