Class SpringLayoutAlgorithm
java.lang.Object
org.eclipse.gef.layout.algorithms.SpringLayoutAlgorithm
- All Implemented Interfaces:
ILayoutAlgorithm
The SpringLayoutAlgorithm has its own data repository and relation
repository. A user can populate the repository, specify the layout
conditions, do the computation and query the computed results.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
applyLayout
(LayoutContext layoutContext, boolean clean) Makes this algorithm perform layout computation and apply it to its context.protected void
Computes the force for each node in this SpringLayoutAlgorithm.protected void
Computes one iteration (forces, positions) and increases the iteration counter.protected void
Computes the position for each node in this SpringLayoutAlgorithm.protected int
Returns the current iteration.int
Returns the number of iterations to be used.boolean
Returns whether or not thisSpringLayoutAlgorithm
will layout the nodes randomly before beginning iterations.double
Returns the gravitation-control value of this SpringLayoutAlgorithm in double precision.double
Returns the length-control value of thisSpringLayoutAlgorithm
in double precision.double
Returns the move-control value of this SpringLayoutAlgorithm in double precision.double
Returns the strain-control value of this SpringLayoutAlgorithm in double precision.long
Gets the max time this algorithm will run forprotected int
Returns the maximum number of iterations.boolean
protected boolean
Performs one iteration based on time.void
performNIteration
(int n) Performs the given number of iterations.void
Performs one single iteration.protected void
Puts vertices in random places, all between (0,0) and (1,1).void
setIterations
(int iterations) Sets the number of iterations to be used.void
setRandom
(boolean random) Sets whether or not this SpringLayoutAlgorithm will layout the nodes randomly before beginning iterations.void
setResizing
(boolean resizing) void
setSpringGravitation
(double gravitation) Sets the spring layout gravitation-control.void
setSpringLength
(double length) Sets the spring layout length-control.void
setSpringMove
(double move) Sets the spring layout move-control.void
setSpringStrain
(double strain) Sets the spring layout strain-control.void
setSpringTimeout
(long timeout) Sets the spring timeout to the given value (in millis).
-
Constructor Details
-
SpringLayoutAlgorithm
public SpringLayoutAlgorithm()
-
-
Method Details
-
applyLayout
Description copied from interface:ILayoutAlgorithm
Makes this algorithm perform layout computation and apply it to its context.- Specified by:
applyLayout
in interfaceILayoutAlgorithm
- Parameters:
layoutContext
- TheLayoutContext
that provides all relevant information about what to layout.clean
- if true the receiver should assume that the layout context has changed significantly and recompute the whole layout even if it keeps track of changes with listeners. False can be used after dynamic layout in a context is turned back on so that layout algorithm working in background can apply accumulated changes. Static layout algorithm can ignore this call entirely if clean is false.
-
performNIteration
public void performNIteration(int n) Performs the given number of iterations.- Parameters:
n
- The number of iterations to perform.
-
performOneIteration
public void performOneIteration()Performs one single iteration. -
isResizing
public boolean isResizing()- Returns:
- true if this algorithm is set to resize elements
-
setResizing
public void setResizing(boolean resizing) - Parameters:
resizing
- true if this algorithm should resize elements (default is false)
-
setSpringMove
public void setSpringMove(double move) Sets the spring layout move-control.- Parameters:
move
- The move-control value.
-
getSpringMove
public double getSpringMove()Returns the move-control value of this SpringLayoutAlgorithm in double precision.- Returns:
- The move-control value.
-
setSpringStrain
public void setSpringStrain(double strain) Sets the spring layout strain-control.- Parameters:
strain
- The strain-control value.
-
getSpringStrain
public double getSpringStrain()Returns the strain-control value of this SpringLayoutAlgorithm in double precision.- Returns:
- The strain-control value.
-
setSpringLength
public void setSpringLength(double length) Sets the spring layout length-control.- Parameters:
length
- The length-control value.
-
getSpringTimeout
public long getSpringTimeout()Gets the max time this algorithm will run for- Returns:
- the timeout up to which this algorithm may run
-
setSpringTimeout
public void setSpringTimeout(long timeout) Sets the spring timeout to the given value (in millis).- Parameters:
timeout
- The new spring timeout (in millis).
-
getSpringLength
public double getSpringLength()Returns the length-control value of thisSpringLayoutAlgorithm
in double precision.- Returns:
- The length-control value.
-
setSpringGravitation
public void setSpringGravitation(double gravitation) Sets the spring layout gravitation-control.- Parameters:
gravitation
- The gravitation-control value.
-
getSpringGravitation
public double getSpringGravitation()Returns the gravitation-control value of this SpringLayoutAlgorithm in double precision.- Returns:
- The gravitation-control value.
-
setIterations
public void setIterations(int iterations) Sets the number of iterations to be used.- Parameters:
iterations
- The number of iterations.
-
getIterations
public int getIterations()Returns the number of iterations to be used.- Returns:
- The number of iterations.
-
setRandom
public void setRandom(boolean random) Sets whether or not this SpringLayoutAlgorithm will layout the nodes randomly before beginning iterations.- Parameters:
random
- The random placement value.
-
getRandom
public boolean getRandom()Returns whether or not thisSpringLayoutAlgorithm
will layout the nodes randomly before beginning iterations.- Returns:
true
if this algorithm will layout the nodes randomly before iterating, otherwisefalse
.
-
performAnotherNonContinuousIteration
protected boolean performAnotherNonContinuousIteration()Performs one iteration based on time.- Returns:
true
if the maximum number of iterations was not reached yet, otherwisefalse
.
-
getCurrentLayoutStep
protected int getCurrentLayoutStep()Returns the current iteration.- Returns:
- The current iteration.
-
getTotalNumberOfLayoutSteps
protected int getTotalNumberOfLayoutSteps()Returns the maximum number of iterations.- Returns:
- The maximum number of iterations.
-
computeOneIteration
protected void computeOneIteration()Computes one iteration (forces, positions) and increases the iteration counter. -
placeRandomly
protected void placeRandomly()Puts vertices in random places, all between (0,0) and (1,1). -
computeForces
protected void computeForces()Computes the force for each node in this SpringLayoutAlgorithm. The computed force will be stored in the data repository -
computePositions
protected void computePositions()Computes the position for each node in this SpringLayoutAlgorithm. The computed position will be stored in the data repository. position = position + sprMove * force
-