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 Details

    • 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 Details

    • mxFastOrganicLayout

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

    • 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