mxGraph 2.3.0.3


com.mxgraph.layout
Class mxFastOrganicLayout

java.lang.Object
  extended by com.mxgraph.layout.mxGraphLayout
      extended by com.mxgraph.layout.mxFastOrganicLayout
All Implemented Interfaces:
mxIGraphLayout

public class mxFastOrganicLayout
extends mxGraphLayout

Fast organic layout algorithm.


Field Summary
protected  boolean allowedToRun
          Boolean flag that specifies if the layout is allowed to run.
protected  double[][] cellLocation
          An array of locally stored co-ordinate positions for the vertices.
protected  boolean disableEdgeStyle
          Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.
protected  double[] dispX
          An array of locally stored X co-ordinate displacements for the vertices.
protected  double[] dispY
          An array of locally stored Y co-ordinate displacements for the vertices.
protected  double forceConstant
          The force constant by which the attractive forces are divided and the replusive forces are multiple by the square of.
protected  double forceConstantSquared
          Cache of ^2 for performance.
protected  Hashtable<Object,Integer> indices
          Maps from vertices to indices.
protected  double initialTemp
          Start value of temperature.
protected  boolean[] isMoveable
          Array of booleans representing the movable states of the vertices.
protected  double iteration
          Current iteration count.
protected  double maxDistanceLimit
          The maximum distance between vertices, beyond which their repulsion no longer has an effect
protected  double maxIterations
          Total number of iterations to run the layout though.
protected  double minDistanceLimit
          Minimal distance limit.
protected  double minDistanceLimitSquared
          Cached version of squared.
protected  int[][] neighbours
          Local copy of cell neighbours.
protected  double[] radius
          The approximate radius of each cell, nodes only.
protected  double[] radiusSquared
          The approximate radius squared of each cell, nodes only.
protected  boolean resetEdges
          Specifies if all edge points of traversed edges should be removed.
protected  double temperature
          Temperature to limit displacement at later stages of layout.
protected  boolean useInputOrigin
          Specifies if the top left corner of the input cells should be the origin of the layout result.
protected  Object[] vertexArray
          An array of all vertices to be laid out.
 
Fields inherited from class com.mxgraph.layout.mxGraphLayout
graph, parent, useBoundingBox
 
Constructor Summary
mxFastOrganicLayout(mxGraph graph)
          Constructs a new fast organic layout for the specified graph.
 
Method Summary
protected  void calcAttraction()
          Calculates the attractive forces between all laid out nodes linked by edges
protected  void calcPositions()
          Takes the displacements calculated for each cell and applies them to the local cache of cell positions.
protected  void calcRepulsion()
          Calculates the repulsive forces between all laid out nodes
 void execute(Object parent)
          Executes the layout for the children of the specified parent.
 double getForceConstant()
           
 double getInitialTemp()
           
 double getMaxDistanceLimit()
           
 double getMaxIterations()
           
 double getMinDistanceLimit()
           
 boolean isDisableEdgeStyle()
           
 boolean isResetEdges()
           
 boolean isUseInputOrigin()
           
 boolean isVertexIgnored(Object vertex)
          Returns a boolean indicating if the given should be ignored as a vertex.
 void moveCell(Object cell, double x, double y)
          Notified when a cell is being moved in a parent that has automatic layout to update the cell state (eg.
protected  void reduceTemperature()
          Reduces the temperature of the layout from an initial setting in a linear fashion to zero.
 void setDisableEdgeStyle(boolean value)
           
 void setForceConstant(double value)
           
 void setInitialTemp(double value)
           
 void setMaxDistanceLimit(double maxDistanceLimit)
           
 void setMaxIterations(double value)
           
 void setMinDistanceLimit(double value)
           
 void setResetEdges(boolean value)
           
 void setUseInputOrigin(boolean value)
           
 
Methods inherited from class com.mxgraph.layout.mxGraphLayout
arrangeGroups, getConstraint, getConstraint, getGraph, getParentOffset, getVertexBounds, isEdgeIgnored, isUseBoundingBox, isVertexMovable, setEdgePoints, setEdgeStyleEnabled, setOrthogonalEdge, setUseBoundingBox, setVertexLocation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

useInputOrigin

protected boolean useInputOrigin
Specifies if the top left corner of the input cells should be the origin of the layout result. Default is true.


resetEdges

protected boolean resetEdges
Specifies if all edge points of traversed edges should be removed. Default is true.


disableEdgeStyle

protected boolean disableEdgeStyle
Specifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result. Default is true.


forceConstant

protected double forceConstant
The force constant by which the attractive forces are divided and the replusive forces are multiple by the square of. The value equates to the average radius there is of free space around each node. Default is 50.


forceConstantSquared

protected double forceConstantSquared
Cache of ^2 for performance.


minDistanceLimit

protected double minDistanceLimit
Minimal distance limit. Default is 2. Prevents of dividing by zero.


minDistanceLimitSquared

protected double minDistanceLimitSquared
Cached version of squared.


maxDistanceLimit

protected double maxDistanceLimit
The maximum distance between vertices, beyond which their repulsion no longer has an effect


initialTemp

protected double initialTemp
Start value of temperature. Default is 200.


temperature

protected double temperature
Temperature to limit displacement at later stages of layout.


maxIterations

protected double maxIterations
Total number of iterations to run the layout though.


iteration

protected double iteration
Current iteration count.


vertexArray

protected Object[] vertexArray
An array of all vertices to be laid out.


dispX

protected double[] dispX
An array of locally stored X co-ordinate displacements for the vertices.


dispY

protected double[] dispY
An array of locally stored Y co-ordinate displacements for the vertices.


cellLocation

protected double[][] cellLocation
An array of locally stored co-ordinate positions for the vertices.


radius

protected double[] radius
The approximate radius of each cell, nodes only.


radiusSquared

protected double[] radiusSquared
The approximate radius squared of each cell, nodes only.


isMoveable

protected boolean[] isMoveable
Array of booleans representing the movable states of the vertices.


neighbours

protected int[][] neighbours
Local copy of cell neighbours.


allowedToRun

protected boolean allowedToRun
Boolean flag that specifies if the layout is allowed to run. If this is set to false, then the layout exits in the following iteration.


indices

protected Hashtable<Object,Integer> indices
Maps from vertices to indices.

Constructor Detail

mxFastOrganicLayout

public mxFastOrganicLayout(mxGraph graph)
Constructs a new fast organic layout for the specified graph.

Method Detail

isVertexIgnored

public boolean isVertexIgnored(Object vertex)
Returns a boolean indicating if the given should be ignored as a vertex. This returns true if the cell has no connections.

Overrides:
isVertexIgnored in class mxGraphLayout
Parameters:
vertex - Object that represents the vertex to be tested.
Returns:
Returns true if the vertex should be ignored.

isUseInputOrigin

public boolean isUseInputOrigin()

setUseInputOrigin

public void setUseInputOrigin(boolean value)
Parameters:
value -

isResetEdges

public boolean isResetEdges()

setResetEdges

public void setResetEdges(boolean value)
Parameters:
value -

isDisableEdgeStyle

public boolean isDisableEdgeStyle()

setDisableEdgeStyle

public void setDisableEdgeStyle(boolean value)
Parameters:
value -

getMaxIterations

public double getMaxIterations()

setMaxIterations

public void setMaxIterations(double value)
Parameters:
value -

getForceConstant

public double getForceConstant()

setForceConstant

public void setForceConstant(double value)
Parameters:
value -

getMinDistanceLimit

public double getMinDistanceLimit()

setMinDistanceLimit

public void setMinDistanceLimit(double value)
Parameters:
value -

getMaxDistanceLimit

public double getMaxDistanceLimit()
Returns:
the maxDistanceLimit

setMaxDistanceLimit

public void setMaxDistanceLimit(double maxDistanceLimit)
Parameters:
maxDistanceLimit - the maxDistanceLimit to set

getInitialTemp

public double getInitialTemp()

setInitialTemp

public void setInitialTemp(double value)
Parameters:
value -

reduceTemperature

protected void reduceTemperature()
Reduces the temperature of the layout from an initial setting in a linear fashion to zero.


moveCell

public void moveCell(Object cell,
                     double x,
                     double y)
Description copied from interface: mxIGraphLayout
Notified when a cell is being moved in a parent that has automatic layout to update the cell state (eg. index) so that the outcome of the layout will position the vertex as close to the point (x, y) as possible.

Specified by:
moveCell in interface mxIGraphLayout
Overrides:
moveCell in class mxGraphLayout
Parameters:
cell - Cell which is being moved.
x - X-coordinate of the new cell location.
y - Y-coordinate of the new cell location.

execute

public void execute(Object parent)
Description copied from interface: mxIGraphLayout
Executes the layout for the children of the specified parent.

Specified by:
execute in interface mxIGraphLayout
Overrides:
execute in class mxGraphLayout
Parameters:
parent - Parent cell that contains the children to be layed out.

calcPositions

protected void calcPositions()
Takes the displacements calculated for each cell and applies them to the local cache of cell positions. Limits the displacement to the current temperature.


calcAttraction

protected void calcAttraction()
Calculates the attractive forces between all laid out nodes linked by edges


calcRepulsion

protected void calcRepulsion()
Calculates the repulsive forces between all laid out nodes


mxGraph 2.3.0.3


Copyright (c) 2010 Gaudenz Alder, David Benson. All rights reserved.