Show MultiInputGestureProvider.java syntax highlighted
/**
*
*/
package ucalgary.ebe.ci.gestures.impl;
import java.util.ArrayList;
import java.util.List;
import ucalgary.ebe.ci.common.Positions;
import ucalgary.ebe.ci.gestures.ICIGestureProvider;
import ucalgary.ebe.ci.gestures.events.ICIGestureEvent;
import ucalgary.ebe.ci.gestures.events.impl.CIGestureEvent;
import ucalgary.ebe.ci.gestures.input.GestureInput;
import ucalgary.ebe.ci.gestures.input.GestureInputListener;
import ucalgary.ebe.ci.gestures.recognition.IGestureRecognizer;
/**
* @author hkolenda
*
*/
public class MultiInputGestureProvider extends AbstractCIGestureProvider implements ICIGestureProvider {
private class GestureInputHandler implements GestureInputListener {
private int inputHandlerId = 0;
private GestureInputHandler(int id) {
this.inputHandlerId = id;
}
/*
* (non-Javadoc)
*
* @see ucalgary.ebe.ci.gestures.input.GestureInputListener#CancelGesture()
*/
public void cancelGesture() {
gestureRecognizer.stopGesture(false);
}
/*
* (non-Javadoc)
*
* @see ucalgary.ebe.ci.gestures.input.GestureInputListener#CoordInput(int,
* int)
*/
public void coordInput(int x, int y) {
if (calcAfterEveryCoord && areAllInputsRunning()) {
ICIGestureEvent gestureEvent = gestureRecognizer.putCoord(x, y, inputHandlerId, true);
if (gestureEvent != null) {
CIGestureEvent gEvent = new CIGestureEvent(gestureEvent);
gEvent.setId(gestureId);
fireCIGestureEvent(gEvent);
}
}
else {
gestureRecognizer.putCoord(x, y, inputHandlerId);
}
}
/*
* (non-Javadoc)
*
* @see ucalgary.ebe.ci.gestures.input.GestureInputListener#EndGesture()
*/
public void endGesture() {
ICIGestureEvent gestureEvent = gestureRecognizer.stopGesture(true);
if (gestureEvent != null) {
CIGestureEvent gEvent = new CIGestureEvent(gestureEvent);
gEvent.setId(gestureId);
fireCIGestureEvent(gEvent);
}
}
/*
* (non-Javadoc)
*
* @see ucalgary.ebe.ci.gestures.input.GestureInputListener#StartGesture()
*/
public void startGesture() {
gestureRecognizer.startGesture();
}
}
private static int idCounter = 0;
private static int getNewId() {
return idCounter++;
}
private boolean calcAfterEveryCoord = false;
private int gestureId = 0;
private List<GestureInput> gestureInputList = new ArrayList<GestureInput>();
private IGestureRecognizer gestureRecognizer = null;
private int position = Positions.SOUTH;
private boolean areAllInputsRunning() {
for (GestureInput gestureInput : gestureInputList) {
if (!gestureInput.isGestureRunning()) {
return false;
}
}
return true;
}
public void addGestureInput(GestureInput gestureInput) {
// inputList.addGestureInput(gestureInput);
gestureInputList.add(gestureInput);
gestureInput.setGestureInputListener(new GestureInputHandler(getNewId()));
}
public void removeGestureInput(GestureInput gestureInput) {
// inputList.removeGestureInput(gestureInput);
gestureInput.setGestureInputListener(null);
gestureInputList.remove(gestureInput);
}
/**
* @param calcAfterEveryCoord
* the calcAfterEveryCoord to set
*/
public void setCalcAfterEveryCoord(boolean calcAfterEveryCoord) {
this.calcAfterEveryCoord = calcAfterEveryCoord;
}
/**
* @param gestureId
* the gestureId to set
*/
public void setGestureId(int gestureId) {
this.gestureId = gestureId;
}
/**
* @param gestureRecognizer
* the gestureRecognizer to set
*/
public void setGestureRecognizer(IGestureRecognizer gestureRecognizer) {
if (this.gestureRecognizer != null) {
this.gestureRecognizer.stopGesture(false);
}
this.gestureRecognizer = gestureRecognizer;
if (gestureRecognizer != null) {
gestureRecognizer.setPosition(this.position);
}
}
/**
* @param position
* the position to set
*/
public void setPosition(int position) {
this.position = position;
if (gestureRecognizer != null) {
gestureRecognizer.setPosition(position);
}
}
/*
* (non-Javadoc)
*
* @see ucalgary.ebe.ci.ICIInputProvider#stop()
*/
public void stop() {
// inputList.clear();
for (GestureInput gestureInput : gestureInputList) {
removeGestureInput(gestureInput);
}
}
}
See more files for this project here