private final void fireEventForPrimitive(final IPrimitive<?> prim, final INodeXYEvent event) { if (null != prim) { prim.fireEvent(event.getNodeEvent()); } else { fireEvent(event.getNodeEvent()); } }
@SuppressWarnings("unchecked") private final void doCancelEnterExitShape(final INodeXYEvent event) { if ((null != m_over_prim) && (m_over_prim.isEventHandled(NodeMouseExitEvent.getType()))) { if (event instanceof AbstractNodeHumanInputEvent) { m_over_prim.fireEvent(new NodeMouseExitEvent(((AbstractNodeHumanInputEvent<MouseEvent<?>, ?>) event).getHumanInputEvent(), event.getX(), event.getY())); } else { m_over_prim.fireEvent(new NodeMouseExitEvent(null, event.getX(), event.getY())); } } m_over_prim = null; }
private final void fireEventForPrimitive(final IPrimitive<?> prim, final INodeXYEvent event) { if (null != prim) { prim.fireEvent(event.getNodeEvent()); } else { fireEvent(event.getNodeEvent()); } }
@SuppressWarnings("unchecked") private final void doCancelEnterExitShape(final INodeXYEvent event) { if ((null != m_over_prim) && (m_over_prim.isEventHandled(NodeMouseExitEvent.getType()))) { if (event instanceof AbstractNodeHumanInputEvent) { m_over_prim.fireEvent(new NodeMouseExitEvent(((AbstractNodeHumanInputEvent<MouseEvent<?>, ?>) event).getHumanInputEvent(), event.getX(), event.getY())); } else { m_over_prim.fireEvent(new NodeMouseExitEvent(null, event.getX(), event.getY())); } } m_over_prim = null; }
private final void fireEventForPrimitive(final IPrimitive<?> prim, final INodeXYEvent event) { if (null != prim) { prim.fireEvent(event.getNodeEvent()); } else { fireEvent(event.getNodeEvent()); } }
@SuppressWarnings("unchecked") private final void doCancelEnterExitShape(final INodeXYEvent event) { if ((null != m_over_prim) && (m_over_prim.isEventHandled(NodeMouseExitEvent.getType()))) { if (event instanceof AbstractNodeHumanInputEvent) { m_over_prim.fireEvent(new NodeMouseExitEvent(((AbstractNodeHumanInputEvent<MouseEvent<?>, ?>) event).getHumanInputEvent(), event.getX(), event.getY())); } else { m_over_prim.fireEvent(new NodeMouseExitEvent(null, event.getX(), event.getY())); } } m_over_prim = null; }
private final void onNodeMouseDoubleClick(final INodeXYEvent event) { final IPrimitive<?> prim = findPrimitiveForEvent(event, NodeMouseDoubleClickEvent.getType()); if (null != prim) { prim.fireEvent(event.getNodeEvent()); } else { fireEvent(event.getNodeEvent()); } }
private final IPrimitive<?> findPrimitiveForEvent(final INodeXYEvent event, final Type<?> type) { IPrimitive<?> find = null; Node<?> node = findShapeAtPoint(event.getX(), event.getY()); while ((null != node) && (node.getNodeType() != NodeType.LAYER)) { final IPrimitive<?> prim = node.asPrimitive(); if ((null != prim) && (prim.isListening()) && (prim.isVisible()) && (prim.isEventHandled(type))) { find = prim; // find the topmost event matching node, not necessarily the first ancestor } node = node.getParent(); } return find; }
private final void onNodeMouseUp(final INodeXYEvent event) { m_dragging_mouse_pressed = false; if (m_dragging) { doDragCancel(event); m_dragging_ignore_clicks = true; return; } final IPrimitive<?> prim = findPrimitiveForEvent(event, event.getNodeEvent().getAssociatedType()); if (null != prim) { prim.fireEvent(event.getNodeEvent()); } else { fireEvent(event.getNodeEvent()); } }
@Override public boolean isNodeMouseEventOverCaption(final INodeXYEvent event) { final Point2D ap = CoordinateUtilities.convertDOMToGridCoordinate(this, new Point2D(event.getX(), event.getY())); final double cx = ap.getX(); final double cy = ap.getY(); if (cx > headerCaption.getX() && cx < headerCaption.getX() + getHeaderCaptionWidth()) { if (cy > headerCaption.getY() && cy < headerCaption.getY() + HEADER_CAPTION_HEIGHT) { return true; } } return false; }
private final void onNodeMouseClick(final INodeXYEvent event) { if (m_dragging_ignore_clicks) { m_dragging_ignore_clicks = false; return; } final IPrimitive<?> prim = findPrimitiveForEvent(event, NodeMouseClickEvent.getType()); if (null != prim) { prim.fireEvent(event.getNodeEvent()); } else { fireEvent(event.getNodeEvent()); } }
private final void doPrepareDragging(final INodeXYEvent event) { IPrimitive<?> find = null; Node<?> node = findShapeAtPoint(event.getX(), event.getY()); while ((null != node) && (node.getNodeType() != NodeType.LAYER)) { final IPrimitive<?> prim = node.asPrimitive(); if ((null != prim) && (prim.isDraggable()) && (prim.isListening()) && (prim.isVisible())) { find = prim; // find the topmost draggable node, not necessarily the first ancestor } node = node.getParent(); } if (null != find) { doDragStart(find, event); } }
private final void onNodeMouseDown(final INodeXYEvent event) { if (m_dragging_mouse_pressed) { return; } if (m_dragging) { doDragCancel(event); } m_dragging_mouse_pressed = true; final IPrimitive<?> prim = findPrimitiveForEvent(event, event.getNodeEvent().getAssociatedType()); if (null != prim) { prim.fireEvent(event.getNodeEvent()); } else { fireEvent(event.getNodeEvent()); } }
@Override public boolean isNodeMouseEventOverCaption(final INodeXYEvent event) { final Point2D ap = CoordinateUtilities.convertDOMToGridCoordinate(this, new Point2D(event.getX(), event.getY())); final double cx = ap.getX(); final double cy = ap.getY(); if (cx > headerCaption.getX() && cx < headerCaption.getX() + getHeaderCaptionWidth()) { if (cy > headerCaption.getY() && cy < headerCaption.getY() + HEADER_CAPTION_HEIGHT) { return true; } } return false; }
private final void onNodeMouseOut(final INodeXYEvent event) { m_dragging_mouse_pressed = false; // in case someone does a pop up ( Window.alert() ), this causes technically a MouseDown cancel if (m_dragging) { doDragCancel(event); } doCancelEnterExitShape(event); fireEvent(event.getNodeEvent()); }
/** * Starts a drap operation for the specified node, using viewport coordiants * @param event the first drag event * @param prim the node that is being dragged * @param viewportToGlobalTransform The Transform of the Viewport */ public DragContext(final INodeXYEvent event, final IPrimitive<?> prim, final Transform viewportToGlobalTransform) { m_prim = prim; m_vtog = viewportToGlobalTransform; m_lstx = m_prmx = m_prim.getX(); m_lsty = m_prmy = m_prim.getY(); m_evtx = m_begx = event.getX(); m_evty = m_begy = event.getY(); m_ltog = m_prim.getParent().getAbsoluteTransform(); m_gtol = m_ltog.getInverse(); // Convert one point from global to local coordinates // We need it when calculating (dx,dy) in local coordinates m_gtol.transform(new Point2D(0, 0), m_pref); // Initialize the DragConstraintsEnforcer m_drag = m_prim.getDragConstraints(); if (m_drag != null) { m_drag.startDrag(this); } }
private final void onNodeMouseOut(final INodeXYEvent event) { m_dragging_mouse_pressed = false; // in case someone does a pop up ( Window.alert() ), this causes technically a MouseDown cancel if (m_dragging) { doDragCancel(event); } doCancelEnterExitShape(event); fireEvent(event.getNodeEvent()); }
/** * Starts a drap operation for the specified node, using viewport coordiants * @param event the first drag event * @param prim the node that is being dragged * @param viewportToGlobalTransform The Transform of the Viewport */ public DragContext(final INodeXYEvent event, final IPrimitive<?> prim, final Transform viewportToGlobalTransform) { m_prim = prim; m_vtog = viewportToGlobalTransform; m_lstx = m_prmx = m_prim.getX(); m_lsty = m_prmy = m_prim.getY(); m_evtx = m_begx = event.getX(); m_evty = m_begy = event.getY(); m_ltog = m_prim.getParent().getAbsoluteTransform(); m_gtol = m_ltog.getInverse(); // Convert one point from global to local coordinates // We need it when calculating (dx,dy) in local coordinates m_gtol.transform(new Point2D(0, 0), m_pref); // Initialize the DragConstraintsEnforcer m_drag = m_prim.getDragConstraints(); if (m_drag != null) { m_drag.startDrag(this); } }
private final void onNodeMouseOut(final INodeXYEvent event) { m_dragging_mouse_pressed = false; // in case someone does a pop up ( Window.alert() ), this causes technically a MouseDown cancel if (m_dragging) { doDragCancel(event); } doCancelEnterExitShape(event); fireEvent(event.getNodeEvent()); }