Code Search for Developers
 
 
  

MultiInputGestureProvider.java from MASE: Agile Software Engineering at Krugle


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

MASE: Agile Software Engineering

The MASE project investigates methods to support the coordination and executable acceptance testing of software projects. Keywords: Agile methods, distributed teams, Extreme Programming. See http://ebe.cpsc.ucalgary.ca/ebe for more information.

Project homepage: http://sourceforge.net/projects/mase
Programming language(s): Java,XML
License: other

  AbstractCIGestureProvider.java
  Gesture.java
  MultiInputGestureProvider.java