package jalview.ws2.gui; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import jalview.gui.IProgressIndicator; import jalview.ws2.WSJob; import jalview.ws2.WSJobStatus; /** * Monitors annotation jobs' status and updates progress indicators accordingly. * * @author mmwarowny * */ 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(); if (!oldStatus.isSubmitted() && newStatus.isSubmitted()) { progressIndicator.setProgressBar(job.getServiceName(), job.getUid()); } if (newStatus.isDone() || newStatus.isCancelled()) { progressIndicator.removeProgressBar(job.getUid()); } } }