JAL-1601 Load and display JPred4 service in AlignFrame
[jalview.git] / src / jalview / gui / AlignFrame.java
index 63bbb72..2849d6b 100644 (file)
@@ -183,6 +183,8 @@ import jalview.ws.params.ParamDatastoreI;
 import jalview.ws.params.WsParamSetI;
 import jalview.ws.seqfetcher.DbSourceProxy;
 import jalview.ws2.client.api.WebServiceDiscovererI;
+import jalview.ws2.client.ebi.JobDispatcherWSDiscoverer;
+import jalview.ws2.client.jpred4.JPred4WSDiscoverer;
 import jalview.ws2.client.slivka.SlivkaWSDiscoverer;
 import jalview.ws2.gui.WebServicesMenuManager;
 
@@ -977,6 +979,24 @@ public class AlignFrame extends GAlignFrame
         menu.setNoServices(services.isEmpty() && discoverer.isDone());
       };
 
+  private WebServiceDiscovererI.ServicesChangeListener ebiServiceChangeListener =
+      (discoverer, services) -> {
+        // run when ebi services change
+        var menu = AlignFrame.this.ebiMenu;
+        menu.setServices(discoverer);
+        menu.setInProgress(discoverer.isRunning());
+        menu.setNoServices(services.isEmpty() && discoverer.isDone());
+      };
+  
+  private WebServiceDiscovererI.ServicesChangeListener jpred4ServiceChangeListener =
+      (discoverer, services) -> {
+        // run when jpred4 services change
+        var menu = AlignFrame.this.jpred4Menu;
+        menu.setServices(discoverer);
+        menu.setInProgress(discoverer.isRunning());
+        menu.setNoServices(services.isEmpty() && discoverer.isDone());
+      };
+
   /* Set up intrinsic listeners for dynamically generated GUI bits. */
   private void addServiceListeners()
   {
@@ -985,6 +1005,14 @@ public class AlignFrame extends GAlignFrame
       WebServiceDiscovererI discoverer = SlivkaWSDiscoverer.getInstance();
       discoverer.addServicesChangeListener(slivkaServiceChangeListener);
     }
+    if (Cache.getDefault("SHOW_EBI_SERVICES", true))
+    {
+      JobDispatcherWSDiscoverer.getInstance().addServicesChangeListener(ebiServiceChangeListener);
+    }
+    if (Cache.getDefault("SHOW_JPRED4_SERVICES", true))
+    {
+      JPred4WSDiscoverer.getInstance().addServicesChangeListener(jpred4ServiceChangeListener);
+    }
     if (Cache.getDefault("SHOW_JWS2_SERVICES", true))
     {
       WSDiscovererI discoverer = Jws2Discoverer.getInstance();
@@ -1001,6 +1029,7 @@ public class AlignFrame extends GAlignFrame
       public void internalFrameClosed(InternalFrameEvent e) {
         System.out.println("deregistering discoverer listener");
         SlivkaWSDiscoverer.getInstance().removeServicesChangeListener(slivkaServiceChangeListener);
+        JPred4WSDiscoverer.getInstance().removeServicesChangeListener(jpred4ServiceChangeListener);
         Jws2Discoverer.getInstance().removeServiceChangeListener(AlignFrame.this);
         Desktop.getInstance().removeJalviewPropertyChangeListener("services", legacyListener);
         closeMenuItem_actionPerformed(true);
@@ -4657,6 +4686,8 @@ public class AlignFrame extends GAlignFrame
   }
 
   private WebServicesMenuManager slivkaMenu = new WebServicesMenuManager("slivka", this);
+  private WebServicesMenuManager ebiMenu = new WebServicesMenuManager("job dispatcher", this);
+  private WebServicesMenuManager jpred4Menu = new WebServicesMenuManager("jpred4", this);
 
   /**
    * Schedule the web services menu rebuild to the event dispatch thread.
@@ -4675,6 +4706,24 @@ public class AlignFrame extends GAlignFrame
         slivkaMenu.setNoServices(discoverer.isDone() && !discoverer.hasServices());
         webService.add(slivkaMenu.getMenu());
       }
+      if (Cache.getDefault("SHOW_EBI_SERVICES", true))
+      {
+        Console.info("Building web services menu for jobs dispatcher");
+        JobDispatcherWSDiscoverer discoverer = JobDispatcherWSDiscoverer.getInstance();
+        ebiMenu.setServices(discoverer);
+        ebiMenu.setInProgress(discoverer.isRunning());
+        ebiMenu.setNoServices(discoverer.isDone() && !discoverer.hasServices());
+        webService.add(ebiMenu.getMenu());
+      }
+      if (Cache.getDefault("SHOW_JPRED4_SERVICES", true))
+      {
+        Console.info("Building web services menu for jpred4");
+        JPred4WSDiscoverer discoverer = JPred4WSDiscoverer.getInstance();
+        jpred4Menu.setServices(discoverer);
+        jpred4Menu.setInProgress(discoverer.isRunning());
+        jpred4Menu.setNoServices(discoverer.isDone() && !discoverer.hasServices());
+        webService.add(jpred4Menu.getMenu());
+      }
       if (Cache.getDefault("SHOW_JWS2_SERVICES", true))
       {
         WSDiscovererI jws2servs = Jws2Discoverer.getInstance();