long nowTime = System.currentTimeMillis();
long elapsedTime = nowTime - this.tapStartTime;
float normalized = (float)elapsedTime / (float)this.holdTime;
if (unUsedCursors.size() > 0){ //check if there are other cursors on the component, we could use
InputCursor otherCursor = unUsedCursors.get(0);
if (this.canLock(otherCursor)
&&
Vector3D.distance2D(buttonDownScreenPos, otherCursor.getPosition()) <= this.maxFingerUpDist)
{ //Check if we have the priority to use this other cursor and if cursor is in range
this.getLock(otherCursor);
unUsedCursors.remove(otherCursor);
lockedCursors.add(otherCursor);
buttonDownScreenPos = otherCursor.getPosition();
}else{
//Other cursor has higher prior -> end this gesture
this.fireGestureEvent(new TapAndHoldEvent(this, MTGestureEvent.GESTURE_ENDED, c.getTarget(), c, false, c.getPosition(), this.holdTime, elapsedTime, normalized));
try {
applet.unregisterPre(this);