JAL-976 - tweak web services gui so empty menus don't get shown and included a 'still...
authorjprocter <jprocter@compbio.dundee.ac.uk>
Tue, 27 Mar 2012 14:59:39 +0000 (15:59 +0100)
committerjprocter <jprocter@compbio.dundee.ac.uk>
Tue, 27 Mar 2012 14:59:39 +0000 (15:59 +0100)
src/jalview/gui/AlignFrame.java

index 51a119e..e4d66e9 100755 (executable)
@@ -4017,20 +4017,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
           // TODO: group services by location as well as function and/or
           // introduce
           // object broker mechanism.
-          final Vector wsmenu = new Vector();
+          final Vector<JMenu> wsmenu = new Vector<JMenu>();
           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(
-                  "Analysis");
-          // JAL-940 - only show secondary structure prediction services from the legacy server
+          final JMenu seqsrchmenu = new JMenu("Sequence Database Search");
+          final JMenu analymenu = new JMenu("Analysis");
+          final JMenu dismenu = new JMenu("Disorder");
+          // JAL-940 - only show secondary structure prediction services from
+          // the legacy server
           if (// Cache.getDefault("SHOW_JWS1_SERVICES", true)
-                  // && 
-                  Discoverer.services != null
-                  && (Discoverer.services.size() > 0))
+              // &&
+          Discoverer.services != null && (Discoverer.services.size() > 0))
           {
             // TODO: refactor to allow list of AbstractName/Handler bindings to
             // be
@@ -4038,7 +4037,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             Vector msaws = null; // (Vector) Discoverer.services.get("MsaWS");
             Vector secstrpr = (Vector) Discoverer.services
                     .get("SecStrPred");
-            Vector seqsrch = null; // (Vector) Discoverer.services.get("SeqSearch");
+            Vector seqsrch = null; // (Vector)
+                                   // Discoverer.services.get("SeqSearch");
             // TODO: move GUI generation code onto service implementation - so a
             // client instance attaches itself to the GUI with method call like
             // jalview.ws.MsaWSClient.bind(servicehandle, Desktop.instance,
@@ -4082,12 +4082,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             }
           }
 
-          
-          // Add all submenus in the order they should appear on the web services menu
+          // Add all submenus in the order they should appear on the web
+          // services menu
           wsmenu.add(msawsmenu);
           wsmenu.add(secstrmenu);
-          wsmenu.add(new JMenu("Disorder"));
+          wsmenu.add(dismenu);
           wsmenu.add(analymenu);
+//          final ArrayList<JMenu> submens=new ArrayList<JMenu>();
+//          submens.add(msawsmenu);
+ //         submens.add(secstrmenu);
+ //         submens.add(dismenu);
+  //        submens.add(analymenu);
           
           // No search services yet
           // wsmenu.add(seqsrchmenu);
@@ -4121,11 +4126,29 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                     {
                       jws2servs.attachWSMenuEntry(webService, me);
                     }
+                    if (jws2servs.isRunning())
+                    {
+                      JMenuItem tm = new JMenuItem(
+                              "Still discovering JABA Services");
+                      tm.setEnabled(false);
+                      webService.add(tm);
+                    }
                   }
                 }
 
                 build_urlServiceMenu(me.webService);
                 build_fetchdbmenu(webService);
+                for (JMenu item : wsmenu)
+                {
+                  if (item.getItemCount() == 0)
+                  {
+                    item.setEnabled(false);
+                  }
+                  else
+                  {
+                    item.setEnabled(true);
+                  }
+                }
               } catch (Exception e)
               {
               }