JAL-3070 JAL-3066 provide standard concrete instances for instantaneous analysis...
[jalview.git] / src / jalview / ws / jws2 / Jws2ClientFactory.java
index c724c45..6445cd5 100644 (file)
@@ -7,6 +7,7 @@ import jalview.gui.JvSwingUtils;
 import jalview.util.MessageManager;
 import jalview.ws.api.ServiceWithParameters;
 import jalview.ws.jws2.dm.AAConSettings;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
 import jalview.ws.params.AutoCalcSetting;
 import jalview.ws.uimodel.AlignAnalysisUIText;
 
@@ -85,18 +86,23 @@ public class Jws2ClientFactory
         @Override
         public void actionPerformed(ActionEvent arg0)
         {
+
           List<AlignCalcWorkerI> aaconClient = alignFrame.getViewport()
-                  .getCalcManager()
-                  .getRegisteredWorkersOfClass(aaui.getClient());
-          if (aaconClient != null && aaconClient.size() > 0)
-          {
-            removeCurrentAAConWorkerFor(aaui, alignFrame);
-          }
-          else
+                  .getCalcManager().getRegisteredWorkersOfClass(
+                          SeqAnnotationServiceCalcWorker.class);
+          if (aaconClient != null)
           {
-            buildCurrentAAConWorkerFor(aaui, alignFrame);
-
+            for (AlignCalcWorkerI worker : aaconClient)
+            {
+              if (((SeqAnnotationServiceCalcWorker) worker).getService()
+                      .getClass().equals(aaui.getClient()))
+              {
+                removeCurrentAAConWorkerFor(aaui, alignFrame);
+                return;
+              }
+            }
           }
+          buildCurrentAAConWorkerFor(aaui, alignFrame);
         }
 
       });
@@ -142,6 +148,7 @@ public class Jws2ClientFactory
           boolean serviceEnabled = false;
           if (aaconClient != null)
           {
+            // NB code duplicatino again!
             for (AlignCalcWorkerI _worker : aaconClient)
             {
               SeqAnnotationServiceCalcWorker worker = (SeqAnnotationServiceCalcWorker) _worker;
@@ -271,7 +278,9 @@ public class Jws2ClientFactory
       throw new Error(
               MessageManager.getString("error.no_aacon_service_found"));
     }
-    return new AAConSettings(true, service, null, null);
+    return service instanceof Jws2Instance
+            ? new AAConSettings(true, service, null, null)
+            : new AutoCalcSetting(service, null, null, true);
   }
 
   private static void removeCurrentAAConWorkerFor(AlignAnalysisUIText aaui,