package jalview.ws2.gui; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import jalview.gui.AlignFrame; import jalview.gui.IProgressIndicator; import jalview.ws2.WSJob; import jalview.ws2.WSJobStatus; public class ProgressBarUpdater implements PropertyChangeListener { private IProgressIndicator progressIndicator; public ProgressBarUpdater(IProgressIndicator progressIndicator) { this.progressIndicator = progressIndicator; } @Override public void propertyChange(PropertyChangeEvent evt) { switch (evt.getPropertyName()) { case "status": statusChanged(evt); break; } } private void statusChanged(PropertyChangeEvent evt) { var job = (WSJob) evt.getSource(); var oldStatus = (WSJobStatus) evt.getOldValue(); var newStatus = (WSJobStatus) evt.getNewValue(); boolean wasRunning = oldStatus.isRunning() || oldStatus.isSubmitted(); boolean isRunning = newStatus.isRunning() || newStatus.isSubmitted(); if (!wasRunning && isRunning) { progressIndicator.setProgressBar(job.getServiceName(), job.getUid()); } else if (wasRunning && !isRunning) { progressIndicator.removeProgressBar(job.getUid()); } } }