diva.canvas.connector
Class ConnectorManipulator

java.lang.Object
  extended by diva.canvas.AbstractFigure
      extended by diva.canvas.AbstractFigureContainer
          extended by diva.canvas.FigureDecorator
              extended by diva.canvas.interactor.Manipulator
                  extended by diva.canvas.connector.ConnectorManipulator
All Implemented Interfaces:
CanvasComponent, Figure, FigureContainer, FigureSet, VisibleComponent, UserObjectContainer
Direct Known Subclasses:
ArcManipulator

public class ConnectorManipulator
extends Manipulator

A manipulator which attaches grab handles to the ends of a connector. The interactor given to the grab-handles determines the behaviour of the grab-handles.

Version:
$Id: ConnectorManipulator.java 38798 2005-07-08 20:00:01Z cxh $
Author:
John Reekie, Michael Shilman

Nested Class Summary
(package private) static class ConnectorManipulator.TargetHighlighter
           
 
Field Summary
(package private)  ConnectorTarget _connectorTarget
          The thing that we use to find sites
private  GrabHandle _headHandle
          The handle at the connector head.
(package private)  LayerMotionListener _layerMotionListener
          Layer motion listeners
private  double _snapHalo
          The snap halo
private  GrabHandle _tailHandle
          The handle at the connector tail.
(package private)  LayerMotionListener _targetHighlighter
          The highlighter listener
(package private)  java.lang.String _targetProperty
          The property name that is tested to see if a figure is a possible drop target.
(package private)  java.lang.String _targetPropertyValue
          The value of the property that is tested to see if a figure is a possible drop target.
 
Constructor Summary
ConnectorManipulator()
          Construct a new manipulator that uses rectangular grab-handles.
ConnectorManipulator(GrabHandleFactory f)
          Construct a new manipulator using the given grab-handle factory.
 
Method Summary
protected  void _createGrabHandles(Connector connector)
          Clear the current grab handles and create one for each of the head and tail sites.
 void addConnectorListener(ConnectorListener l)
          Add a connector listener to the interactor that is attached to grab-handles.
 void addLayerMotionListener(LayerMotionListener l)
          Add the given layer motion listener to this interactor.
 ConnectorTarget getConnectorTarget()
          Get the connector target
 GrabHandle getHeadHandle()
          Get the head handle
 double getSnapHalo()
          Get the snap halo.
 GrabHandle getTailHandle()
          Get the tail handle
 LayerMotionListener getTargetHighlighter()
          Get the listener that highlights target objects.
 FigureDecorator newInstance(Figure f)
          Create a new instance of this manipulator.
 void refresh()
          Refresh the geometry.
 void removeConnectorListener(ConnectorListener l)
          Remove a connector listener from the interactor that is attached to grab-handles.
 void removeLayerMotionListener(LayerMotionListener l)
          Remove the given layer motion listener from this interactor.
 void setChild(Figure f)
          Set the child figure.
 void setConnectorTarget(ConnectorTarget t)
          Set the connector target object
 void setSnapHalo(double halo)
          Set the snap halo.
 void setTargetHighlighter(LayerMotionListener l)
          Set the listener that highlights target objects.
 void setTargetProperty(java.lang.String key, java.lang.String value)
          Set the drop target property and value.
 
Methods inherited from class diva.canvas.interactor.Manipulator
addGrabHandle, clearGrabHandles, getBounds, getGrabHandleFactory, getHandleInteractor, isRepainting, paint, pick, relocateGrabHandles, removeGrabHandle, repaint, repaint, repaintAlready, setGrabHandleFactory, setHandleFilter, setHandleInteractor, setRepainting
 
Methods inherited from class diva.canvas.FigureDecorator
add, contains, figures, figuresFromBack, figuresFromFront, getChild, getContainer, getDecoratedFigure, getFigureCount, getShape, hit, remove, replaceChild, transform, translate
 
Methods inherited from class diva.canvas.AbstractFigureContainer
decorate, pick, undecorate
 
Methods inherited from class diva.canvas.AbstractFigure
contains, getInteractor, getLayer, getOrigin, getParent, getToolTipText, getTransformContext, getUserObject, intersects, isVisible, paint, setInteractor, setParent, setToolTipText, setUserObject, setVisible
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface diva.canvas.VisibleComponent
isVisible, paint, setVisible
 
Methods inherited from interface diva.canvas.CanvasComponent
getParent, getTransformContext
 

Field Detail

_layerMotionListener

LayerMotionListener _layerMotionListener
Layer motion listeners


_connectorTarget

ConnectorTarget _connectorTarget
The thing that we use to find sites


_snapHalo

private double _snapHalo
The snap halo


_targetHighlighter

LayerMotionListener _targetHighlighter
The highlighter listener


_targetProperty

java.lang.String _targetProperty
The property name that is tested to see if a figure is a possible drop target.


_targetPropertyValue

java.lang.String _targetPropertyValue
The value of the property that is tested to see if a figure is a possible drop target.


_headHandle

private GrabHandle _headHandle
The handle at the connector head.


_tailHandle

private GrabHandle _tailHandle
The handle at the connector tail.

Constructor Detail

ConnectorManipulator

public ConnectorManipulator()
Construct a new manipulator that uses rectangular grab-handles.


ConnectorManipulator

public ConnectorManipulator(GrabHandleFactory f)
Construct a new manipulator using the given grab-handle factory.

Method Detail

addConnectorListener

public void addConnectorListener(ConnectorListener l)
Add a connector listener to the interactor that is attached to grab-handles.


addLayerMotionListener

public void addLayerMotionListener(LayerMotionListener l)
Add the given layer motion listener to this interactor. The listener will be invoked when the mouse moves into, around on, or out of a suitable target object.


getConnectorTarget

public ConnectorTarget getConnectorTarget()
Get the connector target


getHeadHandle

public GrabHandle getHeadHandle()
Get the head handle


getTailHandle

public GrabHandle getTailHandle()
Get the tail handle


getSnapHalo

public double getSnapHalo()
Get the snap halo.


getTargetHighlighter

public LayerMotionListener getTargetHighlighter()
Get the listener that highlights target objects.


newInstance

public FigureDecorator newInstance(Figure f)
Create a new instance of this manipulator. The new instance will have the same grab handle, and interactor for grab-handles, as this one.

Specified by:
newInstance in class FigureDecorator

removeConnectorListener

public void removeConnectorListener(ConnectorListener l)
Remove a connector listener from the interactor that is attached to grab-handles.


removeLayerMotionListener

public void removeLayerMotionListener(LayerMotionListener l)
Remove the given layer motion listener from this interactor.


refresh

public void refresh()
Refresh the geometry. Check that the sites that the handles are attached to are the same as the sites at the ends of the connector, and if not, fix them. This is needed because some clients might unnecessarily over-write the sites that a connector is already snapped to. If the grab-handles aren't re-attached accordingly, grabbing and moving them will cause unpredictable results.

Specified by:
refresh in class Manipulator

setChild

public void setChild(Figure f)
Set the child figure. If we have any grab-handles, lose them. Then create the grab-handles on the ends of the connector.

Overrides:
setChild in class FigureDecorator

setConnectorTarget

public void setConnectorTarget(ConnectorTarget t)
Set the connector target object


setSnapHalo

public void setSnapHalo(double halo)
Set the snap halo. This is the distance from a target object that the connector will "snap" to it.


setTargetHighlighter

public void setTargetHighlighter(LayerMotionListener l)
Set the listener that highlights target objects.


setTargetProperty

public void setTargetProperty(java.lang.String key,
                              java.lang.String value)
Set the drop target property and value. The interactor will make callbacks to the layer motion listeners while the mouse is over any figure which has an interactor with matching properties.


_createGrabHandles

protected void _createGrabHandles(Connector connector)
Clear the current grab handles and create one for each of the head and tail sites. Subclasses may override this to create additional grab handles.

Parameters:
connector - The connector.