From: <ha...@us...> - 2009-12-09 06:27:54
|
Revision: 11880 http://jmol.svn.sourceforge.net/jmol/?rev=11880&view=rev Author: hansonr Date: 2009-12-09 05:58:25 +0000 (Wed, 09 Dec 2009) Log Message: ----------- Modified Paths: -------------- trunk/Jmol/src/com/sparshui/common/messages/events/DblClkEvent.java trunk/Jmol/src/com/sparshui/gestures/unused_gestures.zip trunk/Jmol/src/com/sparshui/server/TouchPoint.java trunk/Jmol/src/org/jmol/multitouch/sparshui/SingleTouchGesture.java Removed Paths: ------------- trunk/Jmol/src/com/sparshui/gestures/StandardDynamicGesture.java trunk/Jmol/src/com/sparshui/gestures/TouchGesture.java Modified: trunk/Jmol/src/com/sparshui/common/messages/events/DblClkEvent.java =================================================================== --- trunk/Jmol/src/com/sparshui/common/messages/events/DblClkEvent.java 2009-12-09 05:32:27 UTC (rev 11879) +++ trunk/Jmol/src/com/sparshui/common/messages/events/DblClkEvent.java 2009-12-09 05:58:25 UTC (rev 11880) @@ -2,6 +2,7 @@ import com.sparshui.common.Event; import com.sparshui.common.utils.Converter; +import com.sparshui.server.TouchPoint; /* * @@ -45,6 +46,14 @@ _time = System.currentTimeMillis(); } + public DblClkEvent(TouchPoint tp) { + _id = tp.getID(); + _x = tp.getLocation().getX(); + _y = tp.getLocation().getY(); + _state = tp.getState(); + _time = tp.getTime(); + } + public int getTouchID() { return _id; } Deleted: trunk/Jmol/src/com/sparshui/gestures/StandardDynamicGesture.java =================================================================== --- trunk/Jmol/src/com/sparshui/gestures/StandardDynamicGesture.java 2009-12-09 05:32:27 UTC (rev 11879) +++ trunk/Jmol/src/com/sparshui/gestures/StandardDynamicGesture.java 2009-12-09 05:58:25 UTC (rev 11880) @@ -1,171 +0,0 @@ -package com.sparshui.gestures; - -import java.util.HashMap; -import java.util.Vector; - -import com.sparshui.common.Location; -import com.sparshui.common.TouchState; -import com.sparshui.server.TouchPoint; - -/** - * This is a class to ease implementation of standard dynamic - * gestures. Standard dynamic gestures can inherit from this class - * and this class takes care of managing the list of touchpoints - * that belong to this gesture. Subclasses need only implement - * the processBirth, processMove, and processDeath methods to - * perform gesture processing. - * - * @author Jay Roltgen - */ -public abstract class StandardDynamicGesture implements Gesture { - - protected HashMap _knownPoints; - protected HashMap _traceData; - protected Location _oldCentroid; - protected Location _newCentroid; - protected float _sumX, _sumY; - - /** - * - */ - protected StandardDynamicGesture() { - _knownPoints = new HashMap(); - _traceData = new HashMap(); - _oldCentroid = new Location(0, 0); - _newCentroid = new Location(0, 0); - } - - /** - * Get the name of this gesture. - * - * @return - * The name of this gesture. - */ - //@override - public abstract String getName(); - - //@override - public Vector processChange(Vector touchPoints, - TouchPoint changedPoint) { - Vector events = null; - - switch(changedPoint.getState()) { - case TouchState.BIRTH: - events = handleBirth(changedPoint); - break; - case TouchState.MOVE: - events = handleMove(changedPoint); - break; - case TouchState.DEATH: - //System.out.println("calling handledeath"); - events = handleDeath(changedPoint); - //System.out.println(events); - break; - } - - return (events != null) ? events : new Vector(); - } - - /** - * - * @param touchPoint - * @return TouchData - */ - protected TouchData createTouchData(TouchPoint touchPoint) { - return new TouchData(touchPoint.getLocation()); - } - - /** - * - * @param touchData - * @return Vector - */ - protected abstract Vector processBirth(TouchData touchData); - - /** - * - * @param touchData - * @return Vector - */ - protected abstract Vector processMove(TouchData touchData); - - /** - * - * @param touchData - * @return Vector - */ - protected abstract Vector processDeath(TouchData touchData); - - /** - * - * @param touchPoint - * @return Vector - */ - private Vector handleBirth(TouchPoint touchPoint) { - TouchData touchData = createTouchData(touchPoint); - _knownPoints.put(new Integer(touchPoint.getID()), touchData); - moveCentroid(touchData.getLocation().getX(), touchData.getLocation().getY()); - return processBirth(touchData); - } - - /** - * - * @param touchPoint - * @return Vector - */ - private Vector handleMove(TouchPoint touchPoint) { - TouchData touchData = (TouchData) _knownPoints.get(new Integer(touchPoint.getID())); - touchData.setLocation(touchPoint.getLocation()); - moveCentroid( - touchData.getLocation().getX() - touchData.getOldLocation().getX(), - touchData.getLocation().getY() - touchData.getOldLocation().getY() - ); - return processMove(touchData); - } - - /** - * - * @param touchPoint - * @return Vector - */ - private Vector handleDeath(TouchPoint touchPoint) { - Integer iid = new Integer(touchPoint.getID()); - TouchData touchData = (TouchData) _knownPoints.get(iid); - touchData.setLocation(touchPoint.getLocation()); - _knownPoints.remove(iid); - moveCentroid(-touchData.getOldLocation().getX(), -touchData.getOldLocation().getY()); - return processDeath(touchData); - } - /** - * - * @param dx - * @param dy - */ - private void moveCentroid(float dx, float dy) { - _sumX += dx; - _sumY += dy; - _oldCentroid = _newCentroid; - _newCentroid = new Location(_sumX / _knownPoints.size(), _sumY / _knownPoints.size()); - } - - /** - * - */ - public class TouchData { - private Location _location; - private Location _oldLocation; - public TouchData(Location location) { - _oldLocation = _location = location; - } - public Location getLocation() { - return _location; - } - public Location getOldLocation() { - return _oldLocation; - } - public void setLocation(Location location) { - _oldLocation = _location; - _location = location; - } - } -} Deleted: trunk/Jmol/src/com/sparshui/gestures/TouchGesture.java =================================================================== --- trunk/Jmol/src/com/sparshui/gestures/TouchGesture.java 2009-12-09 05:32:27 UTC (rev 11879) +++ trunk/Jmol/src/com/sparshui/gestures/TouchGesture.java 2009-12-09 05:58:25 UTC (rev 11880) @@ -1,27 +0,0 @@ -package com.sparshui.gestures; - -import java.util.Vector; - -import com.sparshui.common.messages.events.TouchEvent; -import com.sparshui.server.TouchPoint; - -public class TouchGesture implements Gesture { - - //@override - public Vector processChange(Vector touchPoints, TouchPoint changedTouchPoint) { - Vector retEvents = new Vector(); - retEvents.add(new TouchEvent(changedTouchPoint)); - return retEvents; - } - - //@override - public String getName() { - return "TouchGesture"; - } - - //@override - public int getGestureType() { - return GestureType.TOUCH_GESTURE; - } - -} Modified: trunk/Jmol/src/com/sparshui/gestures/unused_gestures.zip =================================================================== (Binary files differ) Modified: trunk/Jmol/src/com/sparshui/server/TouchPoint.java =================================================================== --- trunk/Jmol/src/com/sparshui/server/TouchPoint.java 2009-12-09 05:32:27 UTC (rev 11879) +++ trunk/Jmol/src/com/sparshui/server/TouchPoint.java 2009-12-09 05:58:25 UTC (rev 11880) @@ -115,7 +115,11 @@ return _state; } - /** + public void setState(int state) { + _state = state; + } + + /** * Set the group for this touch point. * * @param group @@ -164,5 +168,11 @@ public Object clone() { return new TouchPoint(this); } + public boolean isNear(TouchPoint tp) { + // figure 1000 x 800 screen, so 1/1000 is about 1 pixel. + // let's allow for +/- 5 pixels here, or about 0.005 screen widths. + return (Math.abs(_location.getX() - tp._location.getX()) < 0.005 + && Math.abs(_location.getY() - tp._location.getY()) < 0.005); + } } Modified: trunk/Jmol/src/org/jmol/multitouch/sparshui/SingleTouchGesture.java =================================================================== --- trunk/Jmol/src/org/jmol/multitouch/sparshui/SingleTouchGesture.java 2009-12-09 05:32:27 UTC (rev 11879) +++ trunk/Jmol/src/org/jmol/multitouch/sparshui/SingleTouchGesture.java 2009-12-09 05:58:25 UTC (rev 11880) @@ -56,7 +56,18 @@ case TouchState.MOVE: if (_nCurrent > 1) return retEvents; - nMoves++; + switch (++nMoves) { + case 2: + if (changedTouchPoint.getTime() - birth.getTime() > 500) { + // long (1/2 sec) pause and drag == double-click-drag ==> _translate + TouchPoint tp = new TouchPoint(birth); + tp.setState(TouchState.DEATH); + retEvents.add(new TouchEvent(tp)); + tp.setState(TouchState.BIRTH); + retEvents.add(new TouchEvent(tp)); + } + break; + } break; case TouchState.DEATH: if (--_nCurrent > 0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |