public class LayoutRunner extends Thread
A layout runner will run in its own thread and periodically activate a layout algorithm on a graph event stream (you do not need a graph). This implementation is mainly used by the graph viewer but could be used by any program that needs a layout algorithm that run continuously on a dynamic graph (adapting the layout as the graph changes).
The layout algorithms in GraphStream are iterative versions that can be
called repeatedly to take graph dynamics into account and may produce a
result only after several invocations. This is why the layout runner invokes
the layout on a regular basis. The runner is temporized, it will not run in a
loop as fast as possible, instead it will wait a little between each layout
invocation. When the last layout invocation indicated the layout was good, it
will wait longer that when the last invocation indicated the layout was not
good (stabilized). These two times can be configured using
setNaps(long, long)
.
Once you finished using the runner, you must call release()
to break
the link with the event source and stop the thread. The runner cannot be used
after.
Thread.State, Thread.UncaughtExceptionHandler
Modifier and Type | Field and Description |
---|---|
protected Layout |
layout
The layout algorithm.
|
protected long |
longNap
The time to wait between each layout invocation, when the layout
stabilized.
|
protected boolean |
loop
The meaning of life.
|
protected ThreadProxyPipe |
pumpPipe
The proxy on the source of graph events.
|
protected long |
shortNap
The time to wait between each layout invocation, when the layout is not
yet stabilized.
|
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
Constructor and Description |
---|
LayoutRunner(Graph graph,
Layout layout,
boolean start,
boolean replay)
New layout runner that listen at the given graph and compute a layout on
its graph structure in a distinct thread.
|
LayoutRunner(Source source,
Layout layout)
New layout runner that listens at the given source and compute a layout
on its graph structure in a distinct thread.
|
LayoutRunner(Source source,
Layout layout,
boolean start)
New layout runner that listen at the given source and compute a layout on
its graph structure in a distinct thread.
|
Modifier and Type | Method and Description |
---|---|
protected void |
nap(long ms)
Sleep for the given period of time in milliseconds.
|
ProxyPipe |
newLayoutPipe()
Pipe out whose input is connected to the layout algorithm.
|
void |
release()
Release any link to the source of events and stop the layout proces.
|
void |
run() |
void |
setNaps(long longNap,
long shortNap)
Configure the time to wait between each layout invocation.
|
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
protected ThreadProxyPipe pumpPipe
protected boolean loop
protected long longNap
protected long shortNap
public LayoutRunner(Source source, Layout layout)
source
- The source of graph events.layout
- The layout algorithm to use.public LayoutRunner(Source source, Layout layout, boolean start)
source
- The source of graph events.layout
- The layout algorithm to use.start
- Start the layout thread immediately ? Else the start() method
must be called later.public LayoutRunner(Graph graph, Layout layout, boolean start, boolean replay)
graph
- The source of graph events.layout
- The layout algorithm to use.start
- Start the layout thread immediately ? Else the start() method
must be called later.replay
- If the graph already contains some data, replay events to
create the data, this is mostly always needed.public ProxyPipe newLayoutPipe()
public void release()
protected void nap(long ms)
ms
- The number of milliseconds to wait.public void setNaps(long longNap, long shortNap)
longNap
- The time to wait between stabilized layout invocations, by
default 80.shortNap
- The time to wait between non stabilized layout invocations, by
default 10.WebARTS Library Licensed Under the GNU - General Public License. Other Libraries licensed under their respective Open Source Licenses