ptolemy.vergil.basic
Class LocatableNodeDragInteractor

java.lang.Object
  extended by diva.canvas.interactor.AbstractInteractor
      extended by diva.canvas.interactor.DragInteractor
          extended by diva.graph.NodeDragInteractor
              extended by ptolemy.vergil.basic.LocatableNodeDragInteractor
All Implemented Interfaces:
LayerListener, LayerMotionListener, Interactor, java.util.EventListener

public class LocatableNodeDragInteractor
extends NodeDragInteractor

An interaction role that drags nodes that have locatable objects as semantic objects. When the node is dragged, this interactor updates the location in the locatable object with the new location of the figure.

The dragging of a selection is undoable, and is based on the difference between the point where the mouse was pressed and where the mouse was released. This information is used to create MoML to undo the move if requested.

Since:
Ptolemy II 2.0
Version:
$Id: LocatableNodeDragInteractor.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Steve Neuendorffer
Accepted Rating:
Red (johnr)
Proposed Rating:
Red (eal)

Field Summary
private  LocatableNodeController _controller
           
private  double[] _dragStart
           
private  SnapConstraint _snapConstraint
           
 
Constructor Summary
LocatableNodeDragInteractor(LocatableNodeController controller)
          Create a new interactor contained within the given controller.
 
Method Summary
private  double[] _getConstrainedPoint(LayerEvent e)
           
 void mousePressed(LayerEvent e)
          When the mouse is pressed before dragging, store a copy of the pressed point location so that a relative move can be evaluated for undo purposes.
 void mouseReleased(LayerEvent e)
          When the mouse is released after dragging, mark the frame modified and update the panner, and generate an undo entry for the move.
 void setSnapResolution(double resolution)
          Specify the snap resolution.
 void translate(LayerEvent e, double x, double y)
          Drag all selected nodes and move any attached edges.
 
Methods inherited from class diva.graph.NodeDragInteractor
getController
 
Methods inherited from class diva.canvas.interactor.DragInteractor
addLayerListener, appendConstraint, constrainPoint, fireLayerEvent, getSelectiveEnabled, getTargetArray, getX, getY, mouseDragged, prependConstraint, removeLayerListener, setSelectiveEnabled, setTargetArray, setup, targets
 
Methods inherited from class diva.canvas.interactor.AbstractInteractor
accept, getMouseFilter, isConsuming, isEnabled, isMotionEnabled, mouseClicked, mouseEntered, mouseExited, mouseMoved, setConsuming, setEnabled, setMotionEnabled, setMouseFilter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_controller

private LocatableNodeController _controller

_dragStart

private double[] _dragStart

_snapConstraint

private SnapConstraint _snapConstraint
Constructor Detail

LocatableNodeDragInteractor

public LocatableNodeDragInteractor(LocatableNodeController controller)
Create a new interactor contained within the given controller.

Parameters:
controller - The controller.
Method Detail

mousePressed

public void mousePressed(LayerEvent e)
When the mouse is pressed before dragging, store a copy of the pressed point location so that a relative move can be evaluated for undo purposes.

Specified by:
mousePressed in interface LayerListener
Overrides:
mousePressed in class DragInteractor
Parameters:
e - The press event.

mouseReleased

public void mouseReleased(LayerEvent e)
When the mouse is released after dragging, mark the frame modified and update the panner, and generate an undo entry for the move. If no movement has occurred, then do nothing.

Specified by:
mouseReleased in interface LayerListener
Overrides:
mouseReleased in class DragInteractor
Parameters:
e - The release event.

setSnapResolution

public void setSnapResolution(double resolution)
Specify the snap resolution. The default snap resolution is 5.0.

Parameters:
resolution - The snap resolution.

translate

public void translate(LayerEvent e,
                      double x,
                      double y)
Drag all selected nodes and move any attached edges. Update the locatable nodes with the current location.

Overrides:
translate in class NodeDragInteractor
Parameters:
e - The event triggering this translation.
x - The horizontal delta.
y - The vertical delta.

_getConstrainedPoint

private double[] _getConstrainedPoint(LayerEvent e)