24c71d763679cdc6b2089c977554a3486fc2a154
[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.IProgressIndicator;
7 import jalview.ws2.WSJob;
8 import jalview.ws2.WSJobStatus;
9
10 public class ProgressBarUpdater implements PropertyChangeListener
11 {
12   private IProgressIndicator progressIndicator;
13   
14   public ProgressBarUpdater(IProgressIndicator progressIndicator)
15   {
16     this.progressIndicator = progressIndicator;
17   }
18   
19   @Override
20   public void propertyChange(PropertyChangeEvent evt)
21   {
22     switch (evt.getPropertyName())
23     {
24     case "status":
25       statusChanged(evt);
26       break;
27     }
28   }
29
30   private void statusChanged(PropertyChangeEvent evt)
31   {
32     var job = (WSJob) evt.getSource();
33     var oldStatus = (WSJobStatus) evt.getOldValue();
34     var newStatus = (WSJobStatus) evt.getNewValue();
35     if (!oldStatus.isSubmitted() && newStatus.isSubmitted())
36     {
37       progressIndicator.setProgressBar(job.getServiceName(), job.getUid());
38     }
39     if (newStatus.isDone() || newStatus.isCancelled())
40     {
41       progressIndicator.removeProgressBar(job.getUid());
42     }
43   }
44 }