Java touch event projects

These are interesting because they will work on 10.5 and 10.6, but the implementation relies on a private framework. The only official AppKit support for touch events exists in 10.6.

Requirements

A collection of new Event subclasses and SWTEventListener subclasses will be defined

TouchEvent, GestureEvent, ....

TouchEventListener, GestureEventListener, ....

A TouchEvent has a collection of TouchState objects that correspond to the set of touch points that made up the TouchEvent. A TouchState represents one component of the TouchEvent. TouchStates have:

a phase that represents what the particular touch point is doing -- e.g., Touch_Start, Touch_End, Touch_Move, Touch_Resting

an identifier that is unique for a given sequence of touches.

a device ID that corresponds to the touchpad or trackpad that generated the event

device height and width in pixels

the location of the touch, represented as the fraction of the distance up or right from the edge of the device

a flag indicating a 'resting' or ignored touch.

A TouchEvent is sent when there is some change in state of the fingers on the touch pad. The type of the event reflects what changed for that event.

Control adds new methods to add and remove TouchListeners.

GestureEvents are higher-level constructs that represent an interpretation of touch events.

A GestureEvent will have additional gesture-specific information associated with it. For example, a RotateGesture will have a number of degrees that the user rotated their fingers, a ZoomGesture will have a scale factor associated with the pinch/stretch, a SwipeGesture will have a direction, and a TapGesture will have the number of taps. The names are strictly for discussion. The SWT pattern would lean towards subclasses of GestureEvent with named fields as opposed to a more general dictionary of properties. That seems to be the case for all of the platform APIs.

A Control can get TouchEvents or

GestureEvent has 3 notifications

GESTURE_BEGIN -- gesture is about to happen

GESTURE_PERFORM -- gesture is happening

GESTURE_END -- gesture finished

Mac and Windows have specific gesture callbacks for pinch/zoom, rotate, and panning/swiping. Windows 7 has a distinct gesture for two-finger tap or tap and hold; Mac does not.