All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.uci.ics.jung.visualization.util.Animator Maven / Gradle / Ivy

/*
 * Copyright (c) 2005, The JUNG Authors
 * All rights reserved.
 *
 * This software is open-source under the BSD license; see either "license.txt"
 * or https://github.com/jrtom/jung/blob/master/LICENSE for a description.
 *
 *
 */
package edu.uci.ics.jung.visualization.util;

import edu.uci.ics.jung.algorithms.util.IterativeContext;

/** @author Tom Nelson - [email protected] */
public class Animator implements Runnable {

  protected IterativeContext process;
  protected boolean stop;
  protected Thread thread;

  /** how long the relaxer thread pauses between iteration loops. */
  protected long sleepTime = 10L;

  public Animator(IterativeContext process) {
    this(process, 10L);
  }

  public Animator(IterativeContext process, long sleepTime) {
    this.process = process;
    this.sleepTime = sleepTime;
  }

  /** @return the relaxer thread sleep time */
  public long getSleepTime() {
    return sleepTime;
  }

  /** @param sleepTime the relaxer thread sleep time to set */
  public void setSleepTime(long sleepTime) {
    this.sleepTime = sleepTime;
  }

  public void start() {
    // in case its running
    stop();
    stop = false;
    thread = new Thread(this);
    thread.setPriority(Thread.MIN_PRIORITY);
    thread.start();
  }

  public synchronized void stop() {
    stop = true;
  }

  public void run() {
    while (!process.done() && !stop) {

      process.step();

      if (stop) {
        return;
      }

      try {
        Thread.sleep(sleepTime);
      } catch (InterruptedException ie) {
      }
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy