JAL-1270 protection against NullPointer when run as JUnit
[jalview.git] / src / jalview / gui / WsJobParameters.java
index 23645df..a3a61b7 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  */
 package jalview.gui;
 
-import jalview.gui.OptsAndParamsPage.OptionBox;
-import jalview.gui.OptsAndParamsPage.ParamBox;
-import jalview.util.MessageManager;
-import jalview.ws.jws2.JabaParamStore;
-import jalview.ws.jws2.JabaPreset;
-import jalview.ws.jws2.Jws2Discoverer;
-import jalview.ws.jws2.jabaws2.Jws2Instance;
-import jalview.ws.params.ArgumentI;
-import jalview.ws.params.OptionI;
-import jalview.ws.params.ParamDatastoreI;
-import jalview.ws.params.ParameterI;
-import jalview.ws.params.WsParamSetI;
-
 import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.Dimension;
@@ -79,6 +66,19 @@ import compbio.metadata.Preset;
 import compbio.metadata.PresetManager;
 import compbio.metadata.RunnerConfig;
 
+import jalview.gui.OptsAndParamsPage.OptionBox;
+import jalview.gui.OptsAndParamsPage.ParamBox;
+import jalview.util.MessageManager;
+import jalview.ws.jws2.JabaParamStore;
+import jalview.ws.jws2.JabaPreset;
+import jalview.ws.jws2.Jws2Discoverer;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.params.ArgumentI;
+import jalview.ws.params.OptionI;
+import jalview.ws.params.ParamDatastoreI;
+import jalview.ws.params.ParameterI;
+import jalview.ws.params.WsParamSetI;
+
 /**
  * job parameter editing/browsing dialog box. User can browse existing settings
  * (user + presets + Defaults), and any changes to parameters creates a modified
@@ -218,7 +218,9 @@ public class WsJobParameters extends JPanel implements ItemListener,
 
     frame = new JDialog(Desktop.instance, true);
 
-    frame.setTitle(MessageManager.formatMessage("label.edit_params_for", new String[]{service.getActionText()}));
+    frame.setTitle(MessageManager.formatMessage("label.edit_params_for",
+            new String[]
+            { service.getActionText() }));
     Rectangle deskr = Desktop.instance.getBounds();
     Dimension pref = this.getPreferredSize();
     frame.setBounds(new Rectangle(
@@ -342,7 +344,6 @@ public class WsJobParameters extends JPanel implements ItemListener,
     setDescr.setToolTipText(MessageManager
             .getString("label.edit_notes_parameter_set"));
     JScrollPane setDescrView = new JScrollPane();
-    // setDescrView.setPreferredSize(new Dimension(350, 200));
     setDescrView.getViewport().setView(setDescr);
     setName.setEditable(true);
     setName.addItemListener(this);
@@ -426,6 +427,11 @@ public class WsJobParameters extends JPanel implements ItemListener,
     JPanel dialogpanel = new JPanel();
     dialogpanel.add(startjob);
     dialogpanel.add(canceljob);
+    // JAL-1580: setMaximumSize() doesn't work, so just size for the worst case:
+    // check for null is for JUnit usage
+    final int windowHeight = Desktop.instance == null ? 540
+            : Desktop.instance.getHeight();
+    setPreferredSize(new Dimension(540, windowHeight));
     add(dialogpanel, BorderLayout.SOUTH);
     validate();
   }
@@ -433,7 +439,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
   protected void revert_actionPerformed(ActionEvent e)
   {
     reInitDialog(lastParmSet);
-
+    updateWebServiceMenus();
   }
 
   protected void update_actionPerformed(ActionEvent e)
@@ -462,6 +468,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
       _deleteUserPreset(lastParmSet);
     }
     reInitDialog(null); // service default
+    updateWebServiceMenus();
   }
 
   protected void create_actionPerformed(ActionEvent e)
@@ -472,7 +479,9 @@ public class WsJobParameters extends JPanel implements ItemListener,
       _storeCurrentPreset(curname);
       lastParmSet = curname;
       isUserPreset = true;
+      reInitDialog(curname);
       initArgSetModified();
+      updateWebServiceMenus();
     }
     else
     {
@@ -527,7 +536,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
     Hashtable exnames = new Hashtable();
     for (int i = 0, iSize = setName.getItemCount(); i < iSize; i++)
     {
-      exnames.put((String) setName.getItemAt(i), setName.getItemAt(i));
+      exnames.put(setName.getItemAt(i), setName.getItemAt(i));
     }
     servicePresets = new Hashtable();
     // Add the default entry - if not present already.
@@ -950,7 +959,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
     {
       Vector<String> services = new Vector<String>();
       services.addElement(args[p++]);
-      Jws2Discoverer.setServiceUrls(services);
+      Jws2Discoverer.getDiscoverer().setServiceUrls(services);
     }
     try
     {
@@ -1091,7 +1100,9 @@ public class WsJobParameters extends JPanel implements ItemListener,
             }
             WsJobParameters pgui = new WsJobParameters(lastserv,
                     new JabaPreset(lastserv, pr));
-            JFrame jf = new JFrame(MessageManager.formatMessage("label.ws_parameters_for", new String[]{lastserv.getActionText()}));
+            JFrame jf = new JFrame(MessageManager.formatMessage(
+                    "label.ws_parameters_for", new String[]
+                    { lastserv.getActionText() }));
             JPanel cont = new JPanel(new BorderLayout());
             pgui.validate();
             cont.setPreferredSize(pgui.getPreferredSize());
@@ -1290,7 +1301,18 @@ public class WsJobParameters extends JPanel implements ItemListener,
     SetNamePanel.validate();
     validate();
     settingDialog = false;
+  }
 
+  /**
+   * Rebuild the AlignFrame web service menus (after add/delete of a preset
+   * option).
+   */
+  protected void updateWebServiceMenus()
+  {
+    for (AlignFrame alignFrame : Desktop.getAlignFrames())
+    {
+      alignFrame.BuildWebServiceMenu();
+    }
   }
 
   String curSetName = null;
@@ -1401,7 +1423,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
       if (src.getParent() == setName)
       {
         // rename any existing records we know about for this set.
-        String newname = (String) e.getActionCommand().trim();
+        String newname = e.getActionCommand().trim();
         String msg = null;
         if (isServicePreset(newname))
         {
@@ -1415,9 +1437,10 @@ public class WsJobParameters extends JPanel implements ItemListener,
           {
             public void run()
             {
-              JOptionPane.showMessageDialog(ourframe,
-                      MessageManager.getString("label.invalid_name_preset_exists"),
-                      MessageManager.getString("label.invalid_name"), JOptionPane.WARNING_MESSAGE);
+              JOptionPane.showMessageDialog(ourframe, MessageManager
+                      .getString("label.invalid_name_preset_exists"),
+                      MessageManager.getString("label.invalid_name"),
+                      JOptionPane.WARNING_MESSAGE);
             }
           });