JAL-4199 Remove viewport reference from AnnotationTask
[jalview.git] / src / jalview / ws2 / gui / AnnotationServiceGuiHandler.java
index 32bc4b1..73ad8f6 100644 (file)
@@ -1,21 +1,22 @@
 package jalview.ws2.gui;
 
-import java.util.List;
-
+import jalview.api.FeatureColourI;
+import jalview.datamodel.features.FeatureMatcherSetI;
 import jalview.gui.AlignFrame;
 import jalview.gui.AlignmentPanel;
 import jalview.gui.IProgressIndicator;
 import jalview.gui.IProgressIndicatorHandler;
+import jalview.schemes.FeatureSettingsAdapter;
+import jalview.util.MathUtils;
+import jalview.ws2.actions.annotation.AlignCalcWorkerAdapter;
 import jalview.ws2.actions.annotation.AnnotationAction;
 import jalview.ws2.actions.annotation.AnnotationResult;
-import jalview.ws2.actions.api.JobI;
-import jalview.ws2.actions.api.TaskEventListener;
-import jalview.ws2.actions.api.TaskI;
-import jalview.ws2.api.JobStatus;
 
 public class AnnotationServiceGuiHandler
-    implements TaskEventListener<AnnotationResult>
+    implements AlignCalcWorkerAdapter.WorkerListener
 {
+  private final long progressId = MathUtils.getUID();
+
   private final AlignFrame alignFrame;
 
   private final AlignmentPanel alignPanel;
@@ -33,9 +34,9 @@ public class AnnotationServiceGuiHandler
   }
 
   @Override
-  public void taskStarted(TaskI<AnnotationResult> source, List<? extends JobI> subJobs)
+  public void workerStarted(AlignCalcWorkerAdapter source)
   {
-    progressIndicator.registerHandler(source.getUid(),
+    progressIndicator.registerHandler(progressId,
         new IProgressIndicatorHandler()
         {
           @Override
@@ -51,64 +52,48 @@ public class AnnotationServiceGuiHandler
             return true;
           }
         });
+    progressIndicator.addProgressBar(progressId, action.getFullName());
   }
 
   @Override
-  public void taskStatusChanged(TaskI<AnnotationResult> source, JobStatus status)
+  public void workerStopped(AlignCalcWorkerAdapter source)
   {
-    switch (status)
-    {
-    case INVALID:
-    case COMPLETED:
-    case CANCELLED:
-    case FAILED:
-    case SERVER_ERROR:
-      progressIndicator.removeProgressBar(source.getUid());
-      break;
-    case READY:
-    case SUBMITTED:
-    case QUEUED:
-    case RUNNING:
-    case UNKNOWN:
-      progressIndicator.addProgressBar(source.getUid(), action.getFullName());
-      break;
-    }
+    progressIndicator.removeProgressBar(progressId);
   }
 
   @Override
-  public void taskCompleted(TaskI<AnnotationResult> source, AnnotationResult result)
+  public void workerHasResult(AlignCalcWorkerAdapter source, final AnnotationResult result)
   {
     if (result == null)
       return;
-    if (result.getTransferFeatures() && alignFrame.alignPanel == alignPanel)
+    if (result.getTransferFeatures())
     {
-      alignFrame.getViewport().setShowSequenceFeatures(true);
-      alignFrame.setMenusForViewport();
-    }
-    alignPanel.adjustAnnotationHeight();
-  }
-
-  @Override
-  public void taskException(TaskI<AnnotationResult> source, Exception e)
-  {
-
-  }
-
-  @Override
-  public void subJobStatusChanged(TaskI<AnnotationResult> source, JobI job, JobStatus status)
-  {
-
-  }
-
-  @Override
-  public void subJobLogChanged(TaskI<AnnotationResult> source, JobI job, String log)
-  {
-
-  }
+      alignFrame.getViewport().applyFeaturesStyle(new FeatureSettingsAdapter()
+      {
+        @Override
+        public FeatureColourI getFeatureColour(String type)
+        {
+          return result.getFeatureColours().get(type);
+        }
 
-  @Override
-  public void subJobErrorLogChanged(TaskI<AnnotationResult> source, JobI job, String log)
-  {
+        @Override
+        public FeatureMatcherSetI getFeatureFilters(String type)
+        {
+          return result.getFeatureFilters().get(type);
+        }
 
+        @Override
+        public boolean isFeatureDisplayed(String type)
+        {
+          return result.getFeatureColours().containsKey(type);
+        }
+      });
+      if (alignFrame.alignPanel == alignPanel)
+      {
+        alignFrame.getViewport().setShowSequenceFeatures(true);
+        alignFrame.setMenusForViewport();
+      }
+    }
+    alignPanel.adjustAnnotationHeight();
   }
 }