JAL-3878 Refactoring SeqAnnotationServiceCalcWorker.
[jalview.git] / src / jalview / ws2 / gui / ProgressBarUpdater.java
1 package jalview.ws2.gui;
2
3 import java.beans.PropertyChangeEvent;
4 import java.beans.PropertyChangeListener;
5
6 import jalview.gui.AlignFrame;
7 import jalview.gui.IProgressIndicator;
8 import jalview.ws2.WSJob;
9 import jalview.ws2.WSJobStatus;
10
11 public class ProgressBarUpdater implements PropertyChangeListener
12 {
13   private IProgressIndicator progressIndicator;
14   
15   public ProgressBarUpdater(IProgressIndicator progressIndicator)
16   {
17     this.progressIndicator = progressIndicator;
18   }
19   
20   @Override
21   public void propertyChange(PropertyChangeEvent evt)
22   {
23     switch (evt.getPropertyName())
24     {
25     case "status":
26       statusChanged(evt);
27       break;
28     }
29   }
30
31   private void statusChanged(PropertyChangeEvent evt)
32   {
33     var job = (WSJob) evt.getSource();
34     var oldStatus = (WSJobStatus) evt.getOldValue();
35     var newStatus = (WSJobStatus) evt.getNewValue();
36     boolean wasRunning = oldStatus.isRunning() || oldStatus.isSubmitted();
37     boolean isRunning = newStatus.isRunning() || newStatus.isSubmitted();
38     if (!wasRunning && isRunning)
39     {
40       progressIndicator.setProgressBar(job.getServiceName(), job.getUid());
41     }
42     else if (wasRunning && !isRunning)
43     {
44       progressIndicator.removeProgressBar(job.getUid());
45     }
46   }
47 }