package com.dgex.offspring.application.utils;
import org.apache.log4j.Logger;
import org.eclipse.jface.dialogs.ProgressIndicator;
import org.eclipse.swt.widgets.Composite;
public class OffspringProgressIndicator extends ProgressIndicator {
static Logger logger = Logger.getLogger(OffspringProgressIndicator.class);
private int interval = 100;
private int total_work = 1000;
public interface CompleteCallback {
public boolean complete();
};
public OffspringProgressIndicator(Composite parent, int style) {
super(parent, style);
}
/**
* Runs a Thread that updates the progress bar.
*
* @param duration
* @param doneRunnable
*/
public void beginWork(final int duration, final Runnable doneRunnable) {
interval = 50;
total_work = 1000;
beginTask(total_work);
new Thread(new Runnable() {
@Override
public void run() {
final int iterations = duration / interval;
for (final int[] i = new int[1]; i[0] <= iterations; i[0]++) {
try {
Thread.sleep(interval);
}
catch (Throwable th) {
}
getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
worked(total_work / iterations);
}
});
}
getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
doneRunnable.run();
}
});
}
}).start();
}
public void finish() {
logger.debug("finish");
interval = 10;
}
}