JAL-3070 alignment analysis service worker UI and settings management refactored...
[jalview.git] / src / jalview / ws / slivkaws / SlivkaWSDiscoverer.java
index 993d8ed..1531e2d 100644 (file)
@@ -2,12 +2,17 @@ package jalview.ws.slivkaws;
 
 import jalview.gui.AlignFrame;
 import jalview.ws.WSMenuEntryProviderI;
+import jalview.ws.api.ServiceWithParameters;
 import jalview.ws.jws2.MsaWSClient;
+import jalview.ws.jws2.PreferredServiceRegistry;
 import jalview.ws.jws2.SequenceAnnotationWSClient;
 
+import java.beans.PropertyChangeSupport;
 import java.io.IOError;
 import java.io.IOException;
 import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.swing.JMenu;
 
@@ -24,7 +29,7 @@ public class SlivkaWSDiscoverer implements Runnable, WSMenuEntryProviderI
   {
     try
     {
-      slivkaClient = new SlivkaClient("gjb-www-1.cluster.lifesci.dundee.ac.uk", 3203);
+      slivkaClient = new SlivkaClient("localhost", 4954);
     } catch (URISyntaxException e)
     {
       throw new RuntimeException(e);
@@ -55,6 +60,7 @@ public class SlivkaWSDiscoverer implements Runnable, WSMenuEntryProviderI
   {
     SlivkaAnnotationServiceInstance serviceInstance = new SlivkaAnnotationServiceInstance(
             slivkaClient, service, false);
+
     SequenceAnnotationWSClient client = new SequenceAnnotationWSClient();
     client.attachWSMenuEntry(disorderMenu, serviceInstance, alignFrame);
     disorderMenu.addSeparator();
@@ -70,6 +76,9 @@ public class SlivkaWSDiscoverer implements Runnable, WSMenuEntryProviderI
     conservationMenu.addSeparator();
   }
 
+  private PropertyChangeSupport changeSupport = new PropertyChangeSupport(
+          this);
+
   @Override
   public void attachWSMenuEntry(JMenu wsmenu, final AlignFrame alignFrame)
   {
@@ -84,27 +93,36 @@ public class SlivkaWSDiscoverer implements Runnable, WSMenuEntryProviderI
     slivkaMenu.add(conservationMenu);
     try
     {
+      List<ServiceWithParameters> instances = new ArrayList<>();
       for (SlivkaService service : slivkaClient.getServices())
       {
         for (String classifier : service.classifiers)
         {
           if (classifier.contains("Multiple sequence alignment"))
           {
-            addMsaServiceClient(alignmentMenu, service, alignFrame);
+            instances.add(
+                    new SlivkaMsaServiceInstance(slivkaClient, service));
+            // addMsaServiceClient(alignmentMenu, service, alignFrame);
           }
           else if (classifier.contains("Protein sequence analysis"))
           {
-            addDisorderServiceClient(disorderMenu, service, alignFrame);
+            instances.add(new SlivkaAnnotationServiceInstance(slivkaClient,
+                    service, false));
+            // addDisorderServiceClient(disorderMenu, service, alignFrame);
           }
           else if (classifier
                   .contains("Sequence alignment analysis (conservation)"))
           {
-            addConservationServiceClient(conservationMenu, service,
-                    alignFrame);
+            instances.add(new SlivkaAnnotationServiceInstance(slivkaClient,
+                    service, true));
+            // addConservationServiceClient(conservationMenu, service,
+            // alignFrame);
           }
 
         }
       }
+      PreferredServiceRegistry.getRegistry().populateWSMenuEntry(instances,
+              changeSupport, slivkaMenu, alignFrame, null);
     } catch (IOException e)
     {
       throw new IOError(e);