JGraphpad Pro
v6.0.5.0


com.jgraph.pad.util
Class JGraphpadMorphingManager

java.lang.Object
  extended bycom.jgraph.pad.util.JGraphpadMorphingManager
All Implemented Interfaces:
ActionListener, EventListener

public class JGraphpadMorphingManager
extends Object
implements ActionListener

Animation for simple graph changes (moves). This takes a nested map and animates the change visually so the vertices appear to float to their new locations. This implementation only takes into account new positions of vertices, sizes, colors etc are changed after the animation in a single step.
Note: This class is not thread-safe.


Field Summary
protected  Shape clip
          Holds the clipping shape to be used for repainting the graph.
protected  org.jgraph.graph.CellView[] context
          Holds the context cells, eg the edges connected to the animated cells or one of their parents.
protected  int delay
          Specifies the delay between morphing steps in milliseconds.
protected  org.jgraph.JGraph graph
          References the graph to be morphed.
protected  Map nestedMap
          Holds the original nested map for the final execute step.
protected  Map newBounds
          Holds the current and final bounds of the animation.
protected  Map oldBounds
          Holds the current and final bounds of the animation.
protected  int step
          Holds the current morhing step.
protected  int steps
          Specifies the number of animation steps.
 
Constructor Summary
JGraphpadMorphingManager()
           
 
Method Summary
 void actionPerformed(ActionEvent event)
          Invoked to perform an animation step and stop the timer if all animation steps have been performed.
protected  void execute()
          Executes the actual change on the graph layout cache.
protected  void initialize()
          Initializes the datastructures required for the animation.
protected  boolean isAnimatable(Object cell)
          Hook for subclassers to determine whether the specified cell should be animated.
 void morph(org.jgraph.JGraph graph, Map nestedMap)
          Animates the graph so that all vertices move from their current location to the new location stored in the nested map.
protected  void setCellBounds(Object cell, Rectangle2D bounds)
          Sets the bounds for the specified cell.
protected  void updateCell(Object cell)
          Updates the specified cell for step.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

delay

protected int delay
Specifies the delay between morphing steps in milliseconds. Default is 30.


steps

protected int steps
Specifies the number of animation steps. Default is 10.


graph

protected org.jgraph.JGraph graph
References the graph to be morphed.


step

protected transient int step
Holds the current morhing step.


oldBounds

protected transient Map oldBounds
Holds the current and final bounds of the animation.


newBounds

protected transient Map newBounds
Holds the current and final bounds of the animation.


context

protected transient org.jgraph.graph.CellView[] context
Holds the context cells, eg the edges connected to the animated cells or one of their parents.


clip

protected transient Shape clip
Holds the clipping shape to be used for repainting the graph.


nestedMap

protected transient Map nestedMap
Holds the original nested map for the final execute step.

Constructor Detail

JGraphpadMorphingManager

public JGraphpadMorphingManager()
Method Detail

morph

public void morph(org.jgraph.JGraph graph,
                  Map nestedMap)
Animates the graph so that all vertices move from their current location to the new location stored in the nested map. This sets the nestedMap and graph variable and spawns a timer process. While the timer is running, further method calls are ignored. The call will return immediately.

Parameters:
nestedMap - The nested map that defines the new locations.

isAnimatable

protected boolean isAnimatable(Object cell)
Hook for subclassers to determine whether the specified cell should be animated. This implementation returns true for all cells.

Parameters:
cell - The cells to be checked.
Returns:
Returns true if the cell may be animated.

initialize

protected void initialize()
Initializes the datastructures required for the animation. This implementation sets the current and final location for the cells to be animated using the specified nestedMap to get the new locations. If a cell is in the nested map but isAnimatable(Object) returns false then the cell is moved to it's final location in the first animation step.


actionPerformed

public void actionPerformed(ActionEvent event)
Invoked to perform an animation step and stop the timer if all animation steps have been performed.

Specified by:
actionPerformed in interface ActionListener
Parameters:
event - The object that describes the event.

execute

protected void execute()
Executes the actual change on the graph layout cache. This implementation restored the bounds on the modified cells to their old values for correct undo of the change, then calls the graph layout cache's edit method with the original nested map and cleans up the datastructures. This implements the final step of the animation.


updateCell

protected void updateCell(Object cell)
Updates the specified cell for step. This implementation moves the cell by a single increment towards it's final location using setCellBounds(Object, Rectangle2D) to update the cell's bounds.

Parameters:
cell - The cell to be updated.

setCellBounds

protected void setCellBounds(Object cell,
                             Rectangle2D bounds)
Sets the bounds for the specified cell.

Parameters:
cell - The cell whose bounds to set.
bounds - The new bounds of the cell.

JGraphpad Pro
v6.0.5.0


Copyright (C) 2005 JGraph.com. All rights reserved.