/** Issues an interact call to the captured layer's listener(s) with a localized copy of the * given event. {@code onCancel} is used if this is a multi-layer dispatcher and one of the layer * listeners calls {@link Events.Input#capture()}. */ <L, E extends Input.Impl> void dispatch( Class<L> listenerType, E event, Interaction<L, E> interaction, Interaction<L, E> onCancel) { dispatch(event.captureState.layer, listenerType, event, interaction, onCancel); }
/** Issues an interact call to a layer and listener with a localized copy of the given event. */ <L, E extends Input.Impl> void dispatch( AbstractLayer layer, Class<L> listenerType, E event, Interaction<L, E> interaction) { dispatch(layer, listenerType, event, interaction, null); } }
public void onTouchMove(Event.Impl[] touches) { if (!enabled) return; if (listener != null) listener.onTouchMove(touches); for (Event.Impl event : touches) { AbstractLayer activeLayer = activeLayers.get(event.id()); if (activeLayer != null) { dispatcher.dispatch(activeLayer, LayerListener.class, event, MOVE); } } }
@Override public void cancelLayerTouches(Layer except) { double now = PlayN.currentTime(); Iterator<Map.Entry<Integer,AbstractLayer>> iter = activeLayers.entrySet().iterator(); while (iter.hasNext()) { Map.Entry<Integer,AbstractLayer> entry = iter.next(); AbstractLayer layer = entry.getValue(); if (layer == except) continue; iter.remove(); Event.Impl event = new Event.Impl(new Events.Flags.Impl(), now, 0, 0, entry.getKey()); dispatcher.dispatch(layer, LayerListener.class, event, CANCEL); } }
public void onTouchCancel(Event.Impl[] touches) { if (!enabled) return; if (listener != null) listener.onTouchCancel(touches); for (Event.Impl event : touches) { AbstractLayer activeLayer = activeLayers.get(event.id()); if (activeLayer != null) { dispatcher.dispatch(activeLayer, LayerListener.class, event, CANCEL); activeLayers.remove(event.id()); } } }
public void onTouchEnd(Event.Impl[] touches) { if (!enabled) return; if (listener != null) listener.onTouchEnd(touches); for (Event.Impl event : touches) { AbstractLayer activeLayer = activeLayers.get(event.id()); if (activeLayer != null) { dispatcher.dispatch(activeLayer, LayerListener.class, event, END); activeLayers.remove(event.id()); } } }
protected boolean onMouseWheelScroll(final WheelEvent.Impl event) { if (!enabled) return false; if (listener != null) listener.onMouseWheelScroll(event); AbstractLayer target = (activeLayer != null) ? activeLayer : hoverLayer; if (target != null) dispatcher.dispatch(target, LayerListener.class, event, WHEEL_SCROLL); return event.flags().getPreventDefault(); }
@Override public void cancelLayerDrags() { if (active.layer != null) { Event.Impl event = new Event.Impl(new Events.Flags.Impl(), PlayN.currentTime(), 0, 0, false); event.captureState = active; dispatcher.dispatch(Listener.class, event, CANCEL, null); active.clear(); } }
protected boolean onMouseUp(ButtonEvent.Impl event) { if (!enabled) return false; event.flags().setPreventDefault(false); if (listener != null) { listener.onMouseUp(event); } if (activeLayer != null) { dispatcher.dispatch(activeLayer, LayerListener.class, event, UP); activeLayer = null; } return event.flags().getPreventDefault(); }
protected boolean onPointerDrag(Event.Impl event, boolean preventDefault) { if (!enabled) return preventDefault; event.flags().setPreventDefault(preventDefault); if (listener != null) { listener.onPointerDrag(event); } if (active.layer != null) { event.captureState = active; dispatcher.dispatch(Listener.class, event, DRAG, CANCEL); } return event.flags().getPreventDefault(); }
dispatcher.dispatch(activeLayer, LayerListener.class, event, DRAG); } else if (hoverLayer != null) { dispatcher.dispatch(hoverLayer, LayerListener.class, event, MOVE); dispatcher.dispatch(lastHoverLayer, LayerListener.class, event, OUT); dispatcher.dispatch(hoverLayer, LayerListener.class, event, OVER);
protected boolean onPointerCancel(Event.Impl event, boolean preventDefault) { if (!enabled) return preventDefault; event.flags().setPreventDefault(preventDefault); if (listener != null) { listener.onPointerCancel(event); } if (active.layer != null) { event.captureState = active; dispatcher.dispatch(Listener.class, event, CANCEL, null); active.clear(); } return event.flags().getPreventDefault(); }
protected boolean onPointerEnd(Event.Impl event, boolean preventDefault) { if (!enabled) return preventDefault; event.flags().setPreventDefault(preventDefault); if (listener != null) { listener.onPointerEnd(event); } if (active.layer != null) { event.captureState = active; dispatcher.dispatch(Listener.class, event, END, null); active.clear(); } return event.flags().getPreventDefault(); }
public void onTouchStart(Event.Impl[] touches) { if (!enabled) return; if (listener != null) listener.onTouchStart(touches); GroupLayer root = PlayN.graphics().rootLayer(); if (root.interactive()) { for (Event.Impl event : touches) { Point p = new Point(event.x(), event.y()); root.transform().inverseTransform(p, p); p.x += root.originX(); p.y += root.originY(); AbstractLayer hitLayer = (AbstractLayer)root.hitTest(p); if (hitLayer != null) { activeLayers.put(event.id(), hitLayer); dispatcher.dispatch(hitLayer, LayerListener.class, event, START); } } } }
protected boolean onPointerStart(Event.Impl event, boolean preventDefault) { if (!enabled) return preventDefault; event.flags().setPreventDefault(preventDefault); if (listener != null) { listener.onPointerStart(event); } GroupLayer root = PlayN.graphics().rootLayer(); if (root.interactive()) { Point p = new Point(event.x(), event.y()); root.transform().inverseTransform(p, p); p.x += root.originX(); p.y += root.originY(); active.layer = (AbstractLayer)root.hitTest(p); if (active.layer != null) { event.captureState = active; dispatcher.dispatch(Listener.class, event, START, CANCEL); } } return event.flags().getPreventDefault(); }
protected boolean onMouseDown(ButtonEvent.Impl event) { if (!enabled) return false; event.flags().setPreventDefault(false); if (listener != null) { listener.onMouseDown(event); } GroupLayer root = PlayN.graphics().rootLayer(); if (root.interactive()) { Point p = new Point(event.x(), event.y()); root.transform().inverseTransform(p, p); p.x += root.originX(); p.y += root.originY(); activeLayer = (AbstractLayer)root.hitTest(p); if (activeLayer != null) { dispatcher.dispatch(activeLayer, LayerListener.class, event, DOWN); } } return event.flags().getPreventDefault(); }