package org.infoobject.magicmap.visualization.layout;
import edu.uci.ics.jung.graph.Graph;
/**
* <p>
* Class LayoutThread ZUSAMMENFASSUNG
* </p>
* <p>
* DETAILS
* </p>
*
* @author Jan Friderici
* Date: 10.08.2008
* Time: 23:21:13
*/
final class LayoutThread {
private Thread layoutThread;
private Graph graph;
private AssociationSpringLayout springLayout;
private boolean terminated;
private boolean suspended;
private Runnable worker = new Runnable(){
public void run(){
while (!terminated) {
try {
if (!suspended) {
springLayout.advancePositions();
}
Thread.sleep(30);
} catch (InterruptedException ex) {
// nix zu dun ;-)
}
}
}
};
/**
*
* @param springLayout
*/
public LayoutThread( AssociationSpringLayout springLayout) {
this.springLayout = springLayout;
}
public void suspend() {
this.suspended = true;
if (layoutThread != null) {
layoutThread.interrupt();
}
}
public void unsupend() {
this.suspended = false;
if (layoutThread != null) {
layoutThread.interrupt();
}
}
public void start() {
if (layoutThread != null) {
return;
}
layoutThread = new Thread(worker,"association layout thread");
layoutThread.setDaemon(true);
//layoutThread.setPriority(Thread.MIN_PRIORITY+1);
layoutThread.start();
}
public void stop () {
this.terminated = true;
layoutThread.interrupt();
}
}