JAL-853 use service action attribute to index services in webservices menu and hardwi...
[jalview.git] / src / jalview / gui / AlignFrame.java
index 06272c3..ba112b8 100755 (executable)
@@ -71,6 +71,7 @@ import jalview.schemes.TaylorColourScheme;
 import jalview.schemes.TurnColourScheme;
 import jalview.schemes.UserColourScheme;
 import jalview.schemes.ZappoColourScheme;
+import jalview.ws.WSMenuEntryProviderI;
 import jalview.ws.jws1.Discoverer;
 import jalview.ws.jws2.Jws2Discoverer;
 
@@ -3960,6 +3961,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           // object broker mechanism.
           final Vector wsmenu = new Vector();
           final IProgressIndicator af = me;
+          final JMenu msawsmenu = new JMenu("Alignment");
+          final JMenu secstrmenu = new JMenu(
+                  "Secondary Structure Prediction");
+          final JMenu seqsrchmenu = new JMenu(
+                  "Sequence Database Search");
+          final JMenu analymenu = new JMenu(
+                  "Analyse Alignment");
+          
           if (Cache.getDefault("SHOW_JWS1_SERVICES", true)
                   && Discoverer.services != null
                   && (Discoverer.services.size() > 0))
@@ -3978,7 +3987,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             if (msaws != null)
             {
               // Add any Multiple Sequence Alignment Services
-              final JMenu msawsmenu = new JMenu("Alignment");
               for (int i = 0, j = msaws.size(); i < j; i++)
               {
                 final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) msaws
@@ -3988,13 +3996,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                 impl.attachWSMenuEntry(msawsmenu, me);
 
               }
-              wsmenu.add(msawsmenu);
             }
             if (secstrpr != null)
             {
               // Add any secondary structure prediction services
-              final JMenu secstrmenu = new JMenu(
-                      "Secondary Structure Prediction");
               for (int i = 0, j = secstrpr.size(); i < j; i++)
               {
                 final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) secstrpr
@@ -4003,13 +4008,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                         .getServiceClient(sh);
                 impl.attachWSMenuEntry(secstrmenu, me);
               }
-              wsmenu.add(secstrmenu);
             }
             if (seqsrch != null)
             {
               // Add any sequence search services
-              final JMenu seqsrchmenu = new JMenu(
-                      "Sequence Database Search");
               for (int i = 0, j = seqsrch.size(); i < j; i++)
               {
                 final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) seqsrch
@@ -4018,7 +4020,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                         .getServiceClient(sh);
                 impl.attachWSMenuEntry(seqsrchmenu, me);
               }
-              wsmenu.add(seqsrchmenu);
             }
           }
 
@@ -4031,14 +4032,22 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
               if (jws2servs.hasServices())
               {
                 JMenu jws2men = new JMenu("Jaba Web Services");
-                jws2servs.attachWSMenuEntry(jws2men, me);
-                for (int i = 0, iSize = jws2men.getMenuComponentCount(); i < iSize; i++)
-                {
-                  wsmenu.add(jws2men.getMenuComponent(i));
-                }
+                jws2servs.attachWSMenuEntry(msawsmenu, me);
+//                for (int i = 0, iSize = jws2men.getMenuComponentCount(); i < iSize; i++)
+//                {
+//                  msawsmenu.add(jws2men.getMenuComponent(i));
+//                }
               }
             }
           }
+          if (msawsmenu.getMenuComponentCount()>0)
+            wsmenu.add(msawsmenu);
+          if (secstrmenu.getMenuComponentCount()>0)
+            wsmenu.add(secstrmenu);
+          if (analymenu.getMenuComponentCount()>0)
+            wsmenu.add(analymenu);
+          if (seqsrchmenu.getMenuComponentCount()>0)
+            wsmenu.add(seqsrchmenu);
 
           javax.swing.SwingUtilities.invokeLater(new Runnable()
           {
@@ -4116,8 +4125,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     // TODO: refactor to RestClient discoverer and merge menu entries for
     // rest-style services with other types of analysis/calculation service
     // SHmmr test client - still being implemented.
-    jalview.ws.rest.RestClient.makeShmmrRestClient().attachWSMenuEntry(
-            webService, this);
+    
+    for (jalview.ws.rest.RestClient client: jalview.ws.rest.RestClient.getRestClients()) {
+      client.attachWSMenuEntry(JvSwingUtils.findOrCreateMenu(webService, client.getAction()), this);
+    }
     // DEBUG - alignmentView
   }