Package com.mxgraph.layout
Class mxFastOrganicLayout
- java.lang.Object
-
- com.mxgraph.layout.mxGraphLayout
-
- com.mxgraph.layout.mxFastOrganicLayout
-
- All Implemented Interfaces:
mxIGraphLayout
public class mxFastOrganicLayout extends mxGraphLayout
Fast organic layout algorithm.
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanallowedToRunBoolean flag that specifies if the layout is allowed to run.protected double[][]cellLocationAn array of locally stored co-ordinate positions for the vertices.protected booleandisableEdgeStyleSpecifies if the STYLE_NOEDGESTYLE flag should be set on edges that are modified by the result.protected double[]dispXAn array of locally stored X co-ordinate displacements for the vertices.protected double[]dispYAn array of locally stored Y co-ordinate displacements for the vertices.protected doubleforceConstantThe force constant by which the attractive forces are divided and the replusive forces are multiple by the square of.protected doubleforceConstantSquaredCache of^2 for performance. protected java.util.Hashtable<java.lang.Object,java.lang.Integer>indicesMaps from vertices to indices.protected doubleinitialTempStart value of temperature.protected boolean[]isMoveableArray of booleans representing the movable states of the vertices.protected doubleiterationCurrent iteration count.protected doublemaxDistanceLimitThe maximum distance between vertices, beyond which their repulsion no longer has an effectprotected doublemaxIterationsTotal number of iterations to run the layout though.protected doubleminDistanceLimitMinimal distance limit.protected doubleminDistanceLimitSquaredCached version ofsquared. protected int[][]neighboursLocal copy of cell neighbours.protected double[]radiusThe approximate radius of each cell, nodes only.protected double[]radiusSquaredThe approximate radius squared of each cell, nodes only.protected booleanresetEdgesSpecifies if all edge points of traversed edges should be removed.protected doubletemperatureTemperature to limit displacement at later stages of layout.protected booleanuseInputOriginSpecifies if the top left corner of the input cells should be the origin of the layout result.protected java.lang.Object[]vertexArrayAn array of all vertices to be laid out.-
Fields inherited from class com.mxgraph.layout.mxGraphLayout
graph, parent, useBoundingBox
-
-
Constructor Summary
Constructors Constructor Description mxFastOrganicLayout(mxGraph graph)Constructs a new fast organic layout for the specified graph.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcalcAttraction()Calculates the attractive forces between all laid out nodes linked by edgesprotected voidcalcPositions()Takes the displacements calculated for each cell and applies them to the local cache of cell positions.protected voidcalcRepulsion()Calculates the repulsive forces between all laid out nodesvoidexecute(java.lang.Object parent)Executes the layout for the children of the specified parent.doublegetForceConstant()doublegetInitialTemp()doublegetMaxDistanceLimit()doublegetMaxIterations()doublegetMinDistanceLimit()booleanisDisableEdgeStyle()booleanisResetEdges()booleanisUseInputOrigin()booleanisVertexIgnored(java.lang.Object vertex)Returns a boolean indicating if the givenshould be ignored as a vertex. voidmoveCell(java.lang.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 voidreduceTemperature()Reduces the temperature of the layout from an initial setting in a linear fashion to zero.voidsetDisableEdgeStyle(boolean value)voidsetForceConstant(double value)voidsetInitialTemp(double value)voidsetMaxDistanceLimit(double maxDistanceLimit)voidsetMaxIterations(double value)voidsetMinDistanceLimit(double value)voidsetResetEdges(boolean value)voidsetUseInputOrigin(boolean value)-
Methods inherited from class com.mxgraph.layout.mxGraphLayout
arrangeGroups, getConstraint, getConstraint, getGraph, getParentOffset, getVertexBounds, isEdgeIgnored, isUseBoundingBox, isVertexMovable, setEdgePoints, setEdgeStyleEnabled, setOrthogonalEdge, setUseBoundingBox, setVertexLocation
-
-
-
-
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 ofsquared.
-
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 java.lang.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 java.util.Hashtable<java.lang.Object,java.lang.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(java.lang.Object vertex)
Returns a boolean indicating if the givenshould be ignored as a vertex. This returns true if the cell has no connections. - Overrides:
isVertexIgnoredin classmxGraphLayout- 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(java.lang.Object cell, double x, double y)Description copied from interface:mxIGraphLayoutNotified 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:
moveCellin interfacemxIGraphLayout- Overrides:
moveCellin classmxGraphLayout- 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(java.lang.Object parent)
Description copied from interface:mxIGraphLayoutExecutes the layout for the children of the specified parent.- Specified by:
executein interfacemxIGraphLayout- Overrides:
executein classmxGraphLayout- 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
-
-