- private OptionBox addOption(Option opt)
- {
- OptionBox cb = optSet.get(opt.getName());
- if (cb == null)
- {
- cb = new OptionBox(opt);
- optSet.put(opt.getName(), cb);
- jobOptions.add(cb);
- }
- return cb;
- }
-
- public static void showUrlPopUp(JComponent invoker, final String finfo,
- int x, int y)
- {
-
- JPopupMenu mnu = new JPopupMenu();
- JMenuItem mitem = new JMenuItem("View " + finfo);
- mitem.addActionListener(new ActionListener()
- {
-
- @Override
- public void actionPerformed(ActionEvent e)
- {
- Desktop.showUrl(finfo);
-
- }
- });
- mnu.add(mitem);
- mnu.show(invoker, x, y);
- }
-
- protected void refreshParamLayout()
- {
- FlowLayout fl = new FlowLayout();
- paramList.setLayout(fl);
- int s = 2 * fl.getVgap();
- for (ParamBox pbox : paramSet.values())
- {
- s += fl.getVgap() + pbox.getBoxHeight(); // getBoxHeight();
- }
- paramList.setPreferredSize(new Dimension(PARAM_WIDTH, s));
- validate();
- }
-
- /**
- * testing method - grab a service and parameter set and show the window
- *
- * @param args
- */
- public static void main(String[] args)
- {
- jalview.ws.jws2.Jws2Discoverer disc = jalview.ws.jws2.Jws2Discoverer
- .getDiscoverer();
- int p = 0;
- if (args.length > 3)
- {
- Vector<String> services = new Vector<String>();
- services.addElement(args[p++]);
- Jws2Discoverer.setServiceUrls(services);
- }
- try
- {
- disc.run();
- } catch (Exception e)
- {
- System.err.println("Aborting. Problem discovering services.");
- e.printStackTrace();
- return;
- }
- Jws2Discoverer.Jws2Instance lastserv = null;
- for (Jws2Discoverer.Jws2Instance service : disc.getServices())
- {
- lastserv = service;
- if (p >= args.length || service.serviceType.equalsIgnoreCase(args[p]))
- {
- if (lastserv != null)
- {
- List<Preset> prl = null;
- Preset pr = null;
- if (++p < args.length)
- {
- PresetManager prman = lastserv.getPresets();
- if (prman != null)
- {
- pr = prman.getPresetByName(args[p]);
- if (pr == null)
- {
- // just grab the last preset.
- prl = prman.getPresets();
- }
- }
- }
- else
- {
- PresetManager prman = lastserv.getPresets();
- if (prman != null)
- {
- prl = prman.getPresets();
- }
- }
- Iterator<Preset> en = (prl == null) ? null : prl.iterator();
- while (en != null && en.hasNext())
- {
- if (en != null)
- {
- if (!en.hasNext())
- {
- en = prl.iterator();
- }
- pr = en.next();
- }
- {
- System.out.println("Testing opts dupes for "
- + lastserv.getHost() + " : "
- + lastserv.getActionText() + ":" + pr.getName());
- List<Option> rg = lastserv.getRunnerConfig().getOptions();
- for (Option o : rg)
- {
- try
- {
- Option cpy = jalview.ws.jws2.ParameterUtils.copyOption(o);
- } catch (Exception e)
- {
- System.err.println("Failed to copy " + o.getName());
- e.printStackTrace();
- } catch (Error e)
- {
- System.err.println("Failed to copy " + o.getName());
- e.printStackTrace();
- }
- }
- }
- {
- System.out.println("Testing param dupes:");
- List<Parameter> rg = lastserv.getRunnerConfig()
- .getParameters();
- for (Parameter o : rg)
- {
- try
- {
- Parameter cpy = jalview.ws.jws2.ParameterUtils
- .copyParameter(o);
- } catch (Exception e)
- {
- System.err.println("Failed to copy " + o.getName());
- e.printStackTrace();
- } catch (Error e)
- {
- System.err.println("Failed to copy " + o.getName());
- e.printStackTrace();
- }
- }
- }
- {
- System.out.println("Testing param write:");
- List<String> writeparam = null, readparam = null;
- try
- {
- writeparam = jalview.ws.jws2.ParameterUtils
- .writeParameterSet(
- pr.getArguments(lastserv.getRunnerConfig()),
- " ");
- System.out.println("Testing param read :");
- List<Option> pset = jalview.ws.jws2.ParameterUtils
- .processParameters(writeparam,
- lastserv.getRunnerConfig(), " ");
- readparam = jalview.ws.jws2.ParameterUtils
- .writeParameterSet(pset, " ");
- 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);
- 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);
-
- }
- } catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- WsJobParameters pgui = new WsJobParameters(lastserv, pr);
- JFrame jf = new JFrame("Parameters for "
- + lastserv.getActionText());
- JPanel cont = new JPanel();
- // jf.setPreferredSize(new Dimension(600, 800));
- cont.add(pgui);
- jf.add(cont);
- final Thread thr = Thread.currentThread();
- jf.addWindowListener(new WindowListener()
- {
-
- public void windowActivated(WindowEvent e)
- {
- // TODO Auto-generated method stub
-
- }
-
- public void windowClosed(WindowEvent e)
- {
- }
-
- public void windowClosing(WindowEvent e)
- {
- thr.interrupt();
-
- }
-
- public void windowDeactivated(WindowEvent e)
- {
- // TODO Auto-generated method stub
-
- }
-
- public void windowDeiconified(WindowEvent e)
- {
- // TODO Auto-generated method stub
-
- }
-
- public void windowIconified(WindowEvent e)
- {
- // TODO Auto-generated method stub
-
- }
-
- public void windowOpened(WindowEvent e)
- {
- // TODO Auto-generated method stub
-
- }
-
- });
- jf.setVisible(true);
- boolean inter = false;
- while (!inter)
- {
- try
- {
- Thread.sleep(10000);
- } catch (Exception e)
- {
- inter = true;
- }
- ;
- }
- jf.dispose();
- }
- }
- }
- }
- }
-
- public List<Argument> getJobParams()
- {
- List<Argument> argSet = new ArrayList<Argument>();
- // recover options and parameters from GUI
- for (OptionBox opts : optSet.values())
- {
- Option opt = opts.getOptionIfEnabled();
- if (opt != null)
- {
- argSet.add(opt);
- }
- }
- for (ParamBox parambox : paramSet.values())
- {
- Parameter parm = parambox.getParameter();
- if (parm != null)
- {
- argSet.add(parm);
- }
- }
-
- return argSet;
- }
-
- String lastParmSet = null;
-
- Hashtable<String, Object[]> editedParams = new Hashtable<String, Object[]>();
-
- /**
- * store the given parameters in the user parameter set database.
- *
- * @param storeSetName
- * - lastParmSet
- * @param descr
- * - setDescr.getText()
- * @param jobParams
- * - getJobParams()
- */
- private void _storeUserPreset(String storeSetName, String descr,
- List<Argument> jobParams)
- {
- // this is a simple hash store.
- Object[] pset;
- editedParams.put(storeSetName, pset = new Object[3]);
- pset[0] = storeSetName;
- pset[1] = descr;
- pset[2] = jobParams;
- // writeParam("Saving " + storeSetName + ": ", jobParams);
- }
-
- private void writeParam(String nm, List<Argument> params)
- {
- for (Argument p : params)
- {
- System.out.println(nm + ":" + System.identityHashCode(p) + " Name: "
- + p.getName() + " Value: " + p.getDefaultValue());
- }
- }
-
- private Object[] _getUserPreset(String setName)
- {
- Object[] pset = editedParams.get(setName);
- // if (pset != null)
- // writeParam("Retrieving " + setName + ": ", (List<Argument>) pset[2]);
- return pset;
- }
-
- /**
- * remove the given user preset from the preset stash
- *
- * @param setName
- */
- private void _deleteUserPreset(String setName)
- {
- editedParams.remove(setName);
- }
-
- private void syncSetNamesWithStore()
- {
- int n = 0;
- // remove any set names in the drop down menu that aren't either a reserved
- // setting, or a user defined or service preset.
- Vector items = new Vector();
- while (n < setName.getItemCount())
- {
- String item = (String) setName.getItemAt(n);
- if (!isServicePreset(item) && _getUserPreset(item) == null)
- {
- setName.removeItemAt(n);
- }
- else
- {
- items.addElement(item);
- n++;
- }
- }
- for (String upn : editedParams.keySet())
- {
- if (!items.contains(upn))
- {
- setName.addItem(upn);
- }
- }
- }
-
- /**
- * true if lastParmSet is a user preset
- */
- boolean isUserPreset = false;
-
- private void reInitDialog(String nextPreset)
- {
- settingDialog = true;
- // updateTable(null,null); // first reset to defaults
- Object[] pset = null;
- if (nextPreset != null && nextPreset.length() > 0)
- {
- pset = _getUserPreset(nextPreset);
- }
- if (pset != null)
- {
- isUserPreset = true;
- setDescr.setText((String) pset[1]);
- updateTable(null, (List<Argument>) pset[2]);
- lastParmSet = nextPreset;
- }
- else
- {
- isUserPreset = false;
- setDescr.setText("");
- // must be a default preset from service
- Preset p = null;
- try
- {
- PresetManager prman = service.getPresets();
- if (prman != null)
- {
- isUserPreset = false;
- p = prman.getPresetByName(nextPreset);
- }
- } catch (Exception ex)
- {
- ex.printStackTrace();
- }
- if (p != null)
- {
- updateTable(p, null);
- lastParmSet = nextPreset;
- }
- else
- {
- updateTable(null, null);
- lastParmSet = SVC_DEF;
- }
- }
- initArgSetModified();
- syncSetNamesWithStore();
- setName.setSelectedItem(lastParmSet);
- validate();
- settingDialog = false;
-
- }
-
- String curSetName = null;
-
- public void itemStateChanged(ItemEvent e)
- {
- if (e.getSource() == setName && e.getStateChange() == e.SELECTED)
- {
- String setname = (String) setName.getSelectedItem();
- System.out.println("Item state changed for " + setname
- + " (handling ? " + !settingDialog + ")");
- if (settingDialog)
- {
- // ignore event
- return;
- }
- if (setname == null)
- {
- return;
- }
- // user has selected a different item from combo-box
- if (isModified())
- {
- String lsetname = (curSetName != null) ? curSetName : lastParmSet;
- if (lsetname.equals(setname))
- {
- // setname was just edited - so ignore this event.
- return;
- }
- settingDialog = true;
- System.out.println("Prompting to save " + lsetname);
- if (javax.swing.JOptionPane.showConfirmDialog(this,
- "Parameter set '" + lsetname + "' is modifed\nsave ?",
- "Save changes ?", javax.swing.JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION)
- {
- System.out.println("Saving for " + lsetname);
- _storeCurrentPreset(lsetname);
-
- }
- }
- settingDialog = true;
- reInitDialog(setname);
- settingDialog = false;
-
- }
- }
-
- /**
- * store current settings as given name. You should then reset gui.
- *
- * @param curSetName2
- */
- private void _storeCurrentPreset(String curSetName2)
- {
- _storeUserPreset(curSetName2, setDescr.getText(), getJobParams());
- }
-