JAL-3949 Complete new abstracted logging framework in jalview.log. Updated log calls...
[jalview.git] / src / jalview / gui / WsJobParameters.java
index 23645df..1c86fec 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;
@@ -61,7 +48,6 @@ import javax.swing.JComboBox;
 import javax.swing.JDialog;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
-import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
@@ -70,14 +56,26 @@ import javax.swing.border.TitledBorder;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 
-import net.miginfocom.swing.MigLayout;
-
 import compbio.metadata.Argument;
 import compbio.metadata.Option;
 import compbio.metadata.Parameter;
 import compbio.metadata.Preset;
 import compbio.metadata.PresetManager;
 import compbio.metadata.RunnerConfig;
+import jalview.bin.Cache;
+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 net.miginfocom.swing.MigLayout;
 
 /**
  * job parameter editing/browsing dialog box. User can browse existing settings
@@ -187,7 +185,8 @@ public class WsJobParameters extends JPanel implements ItemListener,
    * @param jobArgset
    */
   public WsJobParameters(JFrame parent, ParamDatastoreI paramStorei,
-          Jws2Instance service, WsParamSetI preset, List<Argument> jobArgset)
+          Jws2Instance service, WsParamSetI preset,
+          List<Argument> jobArgset)
   {
     super();
     jbInit();
@@ -218,13 +217,15 @@ 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(
-            (int) (deskr.getCenterX() - pref.width / 2), (int) (deskr
-                    .getCenterY() - pref.height / 2), pref.width,
-            pref.height));
+    frame.setBounds(
+            new Rectangle((int) (deskr.getCenterX() - pref.width / 2),
+                    (int) (deskr.getCenterY() - pref.height / 2),
+                    pref.width, pref.height));
     frame.setContentPane(this);
 
     // should perhaps recover defaults from user prefs.
@@ -232,6 +233,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
     frame.validate();
     javax.swing.SwingUtilities.invokeLater(new Runnable()
     {
+      @Override
       public void run()
       {
         // jobPanel.setDividerLocation(0.25);
@@ -271,6 +273,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
             new ActionListener()
             {
 
+              @Override
               public void actionPerformed(ActionEvent e)
               {
                 update_actionPerformed(e);
@@ -282,6 +285,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
             new ActionListener()
             {
 
+              @Override
               public void actionPerformed(ActionEvent e)
               {
                 delete_actionPerformed(e);
@@ -293,17 +297,20 @@ public class WsJobParameters extends JPanel implements ItemListener,
             new ActionListener()
             {
 
+              @Override
               public void actionPerformed(ActionEvent e)
               {
                 create_actionPerformed(e);
               }
             });
-    revertpref = JvSwingUtils.makeButton(MessageManager
-            .getString("action.revert"), MessageManager
-            .getString("label.revert_changes_user_parameter_set"),
+    revertpref = JvSwingUtils.makeButton(
+            MessageManager.getString("action.revert"),
+            MessageManager
+                    .getString("label.revert_changes_user_parameter_set"),
             new ActionListener()
             {
 
+              @Override
               public void actionPerformed(ActionEvent e)
               {
                 revert_actionPerformed(e);
@@ -314,6 +321,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
             MessageManager.getString("label.start_job_current_settings"),
             new ActionListener()
             {
+              @Override
               public void actionPerformed(ActionEvent e)
               {
                 startjob_actionPerformed(e);
@@ -324,14 +332,15 @@ public class WsJobParameters extends JPanel implements ItemListener,
             MessageManager.getString("label.cancel_job_close_dialog"),
             new ActionListener()
             {
+              @Override
               public void actionPerformed(ActionEvent e)
               {
                 canceljob_actionPerformed(e);
               }
             });
 
-    setDetails.setBorder(new TitledBorder(MessageManager
-            .getString("label.details")));
+    setDetails.setBorder(
+            new TitledBorder(MessageManager.getString("label.details")));
     setDetails.setLayout(new BorderLayout());
     setDescr.setColumns(40);
     setDescr.setWrapStyleWord(true);
@@ -339,10 +348,9 @@ public class WsJobParameters extends JPanel implements ItemListener,
     setDescr.setBackground(getBackground());
     setDescr.setEditable(true);
     setDescr.getDocument().addDocumentListener(this);
-    setDescr.setToolTipText(MessageManager
-            .getString("label.edit_notes_parameter_set"));
+    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);
@@ -391,14 +399,14 @@ public class WsJobParameters extends JPanel implements ItemListener,
 
     // paramPane.setPreferredSize(new Dimension(360, 400));
     // paramPane.setPreferredSize(null);
-    jobOptions.setBorder(new TitledBorder(MessageManager
-            .getString("label.options")));
+    jobOptions.setBorder(
+            new TitledBorder(MessageManager.getString("label.options")));
     jobOptions.setOpaque(true);
-    paramList.setBorder(new TitledBorder(MessageManager
-            .getString("label.parameters")));
+    paramList.setBorder(
+            new TitledBorder(MessageManager.getString("label.parameters")));
     paramList.setOpaque(true);
-    JPanel bjo = new JPanel(new BorderLayout()), bjp = new JPanel(
-            new BorderLayout());
+    JPanel bjo = new JPanel(new BorderLayout()),
+            bjp = new JPanel(new BorderLayout());
     bjo.add(jobOptions, BorderLayout.CENTER);
     bjp.add(paramList, BorderLayout.CENTER);
     bjp.setOpaque(true);
@@ -426,6 +434,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 +446,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 +475,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
       _deleteUserPreset(lastParmSet);
     }
     reInitDialog(null); // service default
+    updateWebServiceMenus();
   }
 
   protected void create_actionPerformed(ActionEvent e)
@@ -472,7 +486,9 @@ public class WsJobParameters extends JPanel implements ItemListener,
       _storeCurrentPreset(curname);
       lastParmSet = curname;
       isUserPreset = true;
+      reInitDialog(curname);
       initArgSetModified();
+      updateWebServiceMenus();
     }
     else
     {
@@ -518,8 +534,8 @@ public class WsJobParameters extends JPanel implements ItemListener,
     List<ArgumentI> jobArgset = null;
     settingDialog = true;
     { // instantiate the abstract proxy for Jaba objects
-      jobArgset = jabajobArgset == null ? null : JabaParamStore
-              .getJwsArgsfromJaba(jabajobArgset);
+      jobArgset = jabajobArgset == null ? null
+              : JabaParamStore.getJwsArgsfromJaba(jabajobArgset);
       p = jabap; // (jabap != null) ? paramStore.getPreset(jabap.getName()) :
                  // null;
     }
@@ -527,7 +543,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.
@@ -702,7 +718,8 @@ public class WsJobParameters extends JPanel implements ItemListener,
 
   private void updateButtonDisplay()
   {
-    boolean _update = false, _create = false, _delete = false, _revert = false;
+    boolean _update = false, _create = false, _delete = false,
+            _revert = false;
     if (modifiedElements.size() > 0)
     {
       // set modified
@@ -728,6 +745,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
     validate();
   }
 
+  @Override
   public void argSetModified(Object modifiedElement, boolean b)
   {
     if (settingDialog)
@@ -772,8 +790,8 @@ public class WsJobParameters extends JPanel implements ItemListener,
     boolean stn = settingDialog;
     boolean renamed = false;
     settingDialog = true;
-    String nm = (curSetName != null ? curSetName : (String) setName
-            .getSelectedItem());
+    String nm = (curSetName != null ? curSetName
+            : (String) setName.getSelectedItem());
     // check if the name is reserved - if it is, rename it.
     if (isServicePreset(nm))
     {
@@ -819,16 +837,17 @@ public class WsJobParameters extends JPanel implements ItemListener,
     settingDialog = stn;
   }
 
+  @Override
   public void refreshParamLayout()
   {
     // optsAndparams.setPreferredSize(null);
     FlowLayout fl = new FlowLayout(FlowLayout.LEFT);
     int sep = fl.getVgap();
     boolean fh = true;
-    int os = 0, s = jobOptions.getBorder().getBorderInsets(jobOptions).bottom
-            + jobOptions.getBorder().getBorderInsets(jobOptions).top
-            + 2
-            * sep;
+    int os = 0,
+            s = jobOptions.getBorder().getBorderInsets(jobOptions).bottom
+                    + jobOptions.getBorder().getBorderInsets(jobOptions).top
+                    + 2 * sep;
     /**
      * final height for viewport
      */
@@ -837,8 +856,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
             - jobOptions.getBorder().getBorderInsets(jobOptions).left
             + jobOptions.getBorder().getBorderInsets(jobOptions).right;
 
-    int w = 2
-            * fl.getHgap()
+    int w = 2 * fl.getHgap()
             + (MAX_OPTWIDTH > OptsAndParamsPage.PARAM_WIDTH ? MAX_OPTWIDTH
                     : OptsAndParamsPage.PARAM_WIDTH);
     int hgap = fl.getHgap(), cw = hgap;
@@ -940,6 +958,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
    * testing method - grab a service and parameter set and show the window
    * 
    * @param args
+   * @j2sIgnore
    */
   public static void main(String[] args)
   {
@@ -948,9 +967,9 @@ public class WsJobParameters extends JPanel implements ItemListener,
     int p = 0;
     if (args.length > 0)
     {
-      Vector<String> services = new Vector<String>();
+      Vector<String> services = new Vector<>();
       services.addElement(args[p++]);
-      Jws2Discoverer.setServiceUrls(services);
+      Jws2Discoverer.getDiscoverer().setServiceUrls(services);
     }
     try
     {
@@ -1005,8 +1024,8 @@ public class WsJobParameters extends JPanel implements ItemListener,
             }
             {
               System.out.println("Testing opts dupes for "
-                      + lastserv.getUri() + " : "
-                      + lastserv.getActionText() + ":" + pr.getName());
+                      + lastserv.getUri() + " : " + lastserv.getActionText()
+                      + ":" + pr.getName());
               List<Option> rg = lastserv.getRunnerConfig().getOptions();
               for (Option o : rg)
               {
@@ -1060,28 +1079,28 @@ public class WsJobParameters extends JPanel implements ItemListener,
                                 lastserv.getRunnerConfig(), " ");
                 readparam = jalview.ws.jws2.ParameterUtils
                         .writeParameterSet(pset, " ");
-                Iterator<String> o = pr.getOptions().iterator(), s = writeparam
-                        .iterator(), t = readparam.iterator();
+                Iterator<String> o = pr.getOptions().iterator(),
+                        s = writeparam.iterator(), t = readparam.iterator();
                 boolean failed = false;
                 while (s.hasNext() && t.hasNext())
                 {
                   String on = o.next(), sn = s.next(), st = t.next();
                   if (!sn.equals(st))
                   {
-                    System.out.println("Original was " + on
-                            + " Phase 1 wrote " + sn + "\tPhase 2 wrote "
-                            + st);
+                    System.out.println(
+                            "Original was " + on + " Phase 1 wrote " + sn
+                                    + "\tPhase 2 wrote " + st);
                     failed = true;
                   }
                 }
                 if (failed)
                 {
-                  System.out.println("Original parameters:\n"
-                          + pr.getOptions());
-                  System.out.println("Wrote parameters in first set:\n"
-                          + writeparam);
-                  System.out.println("Wrote parameters in second set:\n"
-                          + readparam);
+                  System.out.println(
+                          "Original parameters:\n" + pr.getOptions());
+                  System.out.println(
+                          "Wrote parameters in first set:\n" + writeparam);
+                  System.out.println(
+                          "Wrote parameters in second set:\n" + readparam);
 
                 }
               } catch (Exception e)
@@ -1091,7 +1110,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());
@@ -1103,40 +1124,47 @@ public class WsJobParameters extends JPanel implements ItemListener,
             jf.addWindowListener(new WindowListener()
             {
 
+              @Override
               public void windowActivated(WindowEvent e)
               {
                 // TODO Auto-generated method stub
 
               }
 
+              @Override
               public void windowClosed(WindowEvent e)
               {
               }
 
+              @Override
               public void windowClosing(WindowEvent e)
               {
                 thr.interrupt();
 
               }
 
+              @Override
               public void windowDeactivated(WindowEvent e)
               {
                 // TODO Auto-generated method stub
 
               }
 
+              @Override
               public void windowDeiconified(WindowEvent e)
               {
                 // TODO Auto-generated method stub
 
               }
 
+              @Override
               public void windowIconified(WindowEvent e)
               {
                 // TODO Auto-generated method stub
 
               }
 
+              @Override
               public void windowOpened(WindowEvent e)
               {
                 // TODO Auto-generated method stub
@@ -1155,7 +1183,6 @@ public class WsJobParameters extends JPanel implements ItemListener,
               {
                 inter = true;
               }
-              ;
             }
             jf.dispose();
           }
@@ -1166,8 +1193,8 @@ public class WsJobParameters extends JPanel implements ItemListener,
 
   public boolean isServiceDefaults()
   {
-    return (!isModified() && (lastParmSet != null && lastParmSet
-            .equals(SVC_DEF)));
+    return (!isModified()
+            && (lastParmSet != null && lastParmSet.equals(SVC_DEF)));
   }
 
   public List<ArgumentI> getJobParams()
@@ -1290,18 +1317,33 @@ 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;
 
+  @Override
   public void itemStateChanged(ItemEvent e)
   {
     if (e.getSource() == setName && e.getStateChange() == e.SELECTED)
     {
       final String setname = (String) setName.getSelectedItem();
-      System.out.println("Item state changed for " + setname
-              + " (handling ? " + !settingDialog + ")");
+      if (Cache.isDebugEnabled())
+      {
+        Cache.debug("Item state changed for " + setname
+                + " (handling ? " + !settingDialog + ")");
+      }
       if (settingDialog)
       {
         // ignore event
@@ -1313,6 +1355,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
       }
       javax.swing.SwingUtilities.invokeLater(new Runnable()
       {
+        @Override
         public void run()
         {
           doPreferenceComboStateChange(setname);
@@ -1334,14 +1377,10 @@ public class WsJobParameters extends JPanel implements ItemListener,
       }
       settingDialog = true;
       System.out.println("Prompting to save " + lsetname);
-      if (javax.swing.JOptionPane
-              .showConfirmDialog(
-                      this,
-                      "Parameter set '"
-                              + lsetname
-                              + "' is modifed, and your changes will be lost.\nReally change preset ?",
-                      "Warning: Unsaved Changes",
-                      javax.swing.JOptionPane.OK_CANCEL_OPTION) != JOptionPane.OK_OPTION)
+      if (JvOptionPane.showConfirmDialog(this, "Parameter set '" + lsetname
+              + "' is modifed, and your changes will be lost.\nReally change preset ?",
+              "Warning: Unsaved Changes",
+              JvOptionPane.OK_CANCEL_OPTION) != JvOptionPane.OK_OPTION)
       {
         // revert the combobox to the current item
         settingDialog = true;
@@ -1393,6 +1432,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
    */
   String lastDescrText = null;
 
+  @Override
   public void actionPerformed(ActionEvent e)
   {
     if (e.getSource() instanceof Component)
@@ -1401,7 +1441,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))
         {
@@ -1413,11 +1453,14 @@ public class WsJobParameters extends JPanel implements ItemListener,
           settingDialog = false;
           javax.swing.SwingUtilities.invokeLater(new Runnable()
           {
+            @Override
             public void run()
             {
-              JOptionPane.showMessageDialog(ourframe,
-                      MessageManager.getString("label.invalid_name_preset_exists"),
-                      MessageManager.getString("label.invalid_name"), JOptionPane.WARNING_MESSAGE);
+              JvOptionPane.showMessageDialog(ourframe,
+                      MessageManager.getString(
+                              "label.invalid_name_preset_exists"),
+                      MessageManager.getString("label.invalid_name"),
+                      JvOptionPane.WARNING_MESSAGE);
             }
           });
 
@@ -1445,24 +1488,27 @@ public class WsJobParameters extends JPanel implements ItemListener,
     if (!settingDialog)
     {
 
-      argSetModified(
-              setDescr,
-              (lastDescrText == null ? setDescr.getText().trim().length() > 0
+      argSetModified(setDescr,
+              (lastDescrText == null
+                      ? setDescr.getText().trim().length() > 0
                       : !setDescr.getText().equals(lastDescrText)));
 
     }
   }
 
+  @Override
   public void insertUpdate(DocumentEvent e)
   {
     checkDescrModified();
   }
 
+  @Override
   public void removeUpdate(DocumentEvent e)
   {
     checkDescrModified();
   }
 
+  @Override
   public void changedUpdate(DocumentEvent e)
   {
     checkDescrModified();