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 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 java.util.Hashtable<java.lang.Object,java.lang.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 effectprotected double
maxIterations
Total number of iterations to run the layout though.protected double
minDistanceLimit
Minimal distance limit.protected double
minDistanceLimitSquared
Cached version ofsquared. 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 java.lang.Object[]
vertexArray
An 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 void
calcAttraction()
Calculates the attractive forces between all laid out nodes linked by edgesprotected 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 nodesvoid
execute(java.lang.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(java.lang.Object vertex)
Returns a boolean indicating if the givenshould be ignored as a vertex. void
moveCell(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 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
-
-
-
-
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:
isVertexIgnored
in 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: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 interfacemxIGraphLayout
- Overrides:
moveCell
in 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:mxIGraphLayout
Executes the layout for the children of the specified parent.- Specified by:
execute
in interfacemxIGraphLayout
- Overrides:
execute
in 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
-
-