package Window;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.ProgressBar;
public class ProgressBarManager {
private static ProgressBarManager _instance = null;
private ProgressBarManager() {
progressbarList = new ArrayList<ProgressBar>();
}
public synchronized static ProgressBarManager getInstance() {
if (_instance == null)
_instance = new ProgressBarManager();
return _instance;
}
List<ProgressBar> progressbarList;
public void add(ProgressBar pb) {
progressbarList.add(pb);
}
private int lastsendValue = -1;
public void setProgress(final int value) {
if (Display.getDefault().isDisposed())
return;
if (lastsendValue == value)
return;
lastsendValue = value;
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
if (value < 0)
for (ProgressBar pb : progressbarList) {
if (pb.isDisposed() == false)
pb.setVisible(false);
}
else
for (ProgressBar pb : progressbarList) {
if (pb.isDisposed() == false) {
pb.setVisible(true);
pb.setSelection(value);
}
}
}
});
}
public void remove(ProgressBar pb) {
progressbarList.remove(pb);
}
}