3 import java.awt.BorderLayout;
5 import java.awt.Component;
6 import java.awt.Dimension;
7 import java.awt.FlowLayout;
9 import java.awt.GridLayout;
10 import java.awt.Rectangle;
11 import java.awt.event.ActionEvent;
12 import java.awt.event.ActionListener;
13 import java.awt.event.ComponentEvent;
14 import java.awt.event.ComponentListener;
15 import java.awt.event.ContainerEvent;
16 import java.awt.event.ContainerListener;
17 import java.awt.event.ItemEvent;
18 import java.awt.event.ItemListener;
19 import java.awt.event.KeyEvent;
20 import java.awt.event.KeyListener;
21 import java.awt.event.MouseEvent;
22 import java.awt.event.MouseListener;
23 import java.awt.event.WindowEvent;
24 import java.awt.event.WindowListener;
25 import java.awt.event.WindowStateListener;
26 import java.util.ArrayList;
27 import java.util.EventObject;
28 import java.util.HashSet;
29 import java.util.Hashtable;
30 import java.util.Iterator;
31 import java.util.List;
33 import java.util.Vector;
35 import javax.swing.JButton;
36 import javax.swing.JCheckBox;
37 import javax.swing.JComboBox;
38 import javax.swing.JDialog;
39 import javax.swing.JFrame;
40 import javax.swing.JLabel;
41 import javax.swing.JList;
42 import javax.swing.JOptionPane;
43 import javax.swing.JPanel;
44 import javax.swing.JScrollPane;
45 import javax.swing.JSlider;
46 import javax.swing.JSplitPane;
47 import javax.swing.JTable;
48 import javax.swing.JTextArea;
49 import javax.swing.JTextField;
50 import javax.swing.ListSelectionModel;
51 import javax.swing.SwingConstants;
52 import javax.swing.SwingUtilities;
53 import javax.swing.border.TitledBorder;
54 import javax.swing.event.CellEditorListener;
55 import javax.swing.event.ChangeEvent;
56 import javax.swing.event.ChangeListener;
57 import javax.swing.table.*;
59 import compbio.metadata.Argument;
60 import compbio.metadata.Option;
61 import compbio.metadata.Parameter;
62 import compbio.metadata.Preset;
63 import compbio.metadata.PresetManager;
64 import compbio.metadata.RunnerConfig;
65 import compbio.metadata.ValueConstrain;
66 import compbio.metadata.WrongParameterException;
67 import compbio.metadata.ValueConstrain.Type;
69 import jalview.ws.jws2.Jws2Discoverer;
70 import jalview.ws.jws2.Jws2Discoverer.Jws2Instance;
72 public class WsJobParameters extends JPanel implements ItemListener,
75 private static final int PARAM_WIDTH = 340, PARAM_HEIGHT = 150,
76 PARAM_CLOSEDHEIGHT = 80;
78 private static final int OPTSET_HEIGHT = 30;
80 JPanel setDetails = new JPanel();
82 JSplitPane settingsPanel = new JSplitPane();
84 JSplitPane jobPanel = new JSplitPane();
86 JPanel jobOptions = new JPanel();
88 JScrollPane jobOptionsPane = new JScrollPane();
90 JPanel jobParameters = new JPanel();
92 JButton savmodified = new JButton();
94 JButton renmodified = new JButton();
96 JButton startjob = new JButton();
98 JButton canceljob = new JButton();
100 JComboBox setName = new JComboBox();
102 JTextArea setDescr = new JTextArea();
104 JScrollPane paramPane = new JScrollPane();
106 // JList paramList = new JList();
107 JPanel paramList = new JPanel();
109 RunnerConfig serviceOptions;
111 private BorderLayout jparamLayout;
113 WsJobParameters(Jws2Instance service)
118 public WsJobParameters(Jws2Instance service, Preset p)
120 this(null, service, p, null);
126 * - if null, create new JFrame outside of desktop
130 public WsJobParameters(JFrame parent, Jws2Instance service, Preset p,
131 List<Argument> jobArgset)
135 // argSetModified(false);
136 // populate parameter table
137 initForService(service, p, jobArgset);
138 // display in new JFrame attached to parent.
144 JDialog frame = null;
146 public boolean showRunDialog()
149 frame = new JDialog(Desktop.instance, true);
151 frame.setTitle("Edit parameters for " + service.getActionText());
152 Rectangle deskr = Desktop.instance.getBounds();
153 frame.setBounds(new Rectangle((int) (deskr.getCenterX() - 240),
154 (int) (deskr.getCenterY() - 92), 380, 385));
155 frame.setContentPane(this);
157 frame.setVisible(true);
166 private void jbInit()
168 savmodified.setText("Save");
169 savmodified.setToolTipText("Not implemented yet :) ");
170 savmodified.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));
171 savmodified.setForeground(Color.red);
172 savmodified.setHorizontalAlignment(SwingConstants.RIGHT);
173 savmodified.addActionListener(new ActionListener()
176 public void actionPerformed(ActionEvent e)
178 savModified_actionPerformed(e);
181 renmodified.setText("Rename");
182 renmodified.setToolTipText("Not implemented yet :) ");
183 renmodified.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));
184 renmodified.setForeground(Color.red);
185 renmodified.setHorizontalAlignment(SwingConstants.CENTER);
186 renmodified.addActionListener(new ActionListener()
189 public void actionPerformed(ActionEvent e)
191 renModified_actionPerformed(e);
194 renmodified.setVisible(false);
195 startjob.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));
196 startjob.setText("Start");
197 startjob.setToolTipText("Start Job");
198 startjob.addActionListener(new ActionListener()
200 public void actionPerformed(ActionEvent e)
202 startjob_actionPerformed(e);
205 canceljob.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));
206 canceljob.setText("Cancel");
207 canceljob.setToolTipText("Cancel Job");
208 canceljob.addActionListener(new ActionListener()
210 public void actionPerformed(ActionEvent e)
212 canceljob_actionPerformed(e);
216 setDetails.setBorder(new TitledBorder("Details"));
217 setDetails.setLayout(new BorderLayout());
218 setDescr.setColumns(40);
219 setDescr.setWrapStyleWord(true);
220 setDescr.setLineWrap(true);
221 setDescr.setBackground(getBackground());
222 setDescr.setEditable(false);
223 JScrollPane setDescrView = new JScrollPane();
224 // setDescrView.setPreferredSize(new Dimension(350, 200));
225 setDescrView.getViewport().setView(setDescr);
226 setName.setEditable(true);
227 setName.addItemListener(this);
228 setName.getEditor().addActionListener(this);
229 savmodified.setEnabled(false); // initially unmodified parameters
230 // modified.setPreferredSize(new Dimension(15, 15));
231 JPanel SetNamePanel = new JPanel();
232 SetNamePanel.setLayout(new BorderLayout());
233 SetNamePanel.add(setName, BorderLayout.WEST);
234 SetNamePanel.add(renmodified, BorderLayout.CENTER);
235 SetNamePanel.add(savmodified, BorderLayout.EAST);
236 setDetails.add(SetNamePanel, BorderLayout.NORTH);
237 setDetails.add(setDescrView, BorderLayout.CENTER);
238 // setDetails.setPreferredSize(new Dimension(360, 100));
239 jobParameters.setBorder(new TitledBorder("Parameters"));
240 jobParameters.setLayout(jparamLayout = new BorderLayout());
241 paramPane.setPreferredSize(new Dimension(360, 300));
242 paramPane.getVerticalScrollBar().setUnitIncrement(20);
243 // paramPanel.setPreferredSize(new Dimension(360, 300));
244 // TODO: relayout buttons nicely
245 paramPane.getViewport().setView(paramList);
246 jobParameters.add(paramPane, BorderLayout.CENTER);
247 JPanel jobOptionsPanel = new JPanel();
248 jobOptionsPanel.setLayout(new BorderLayout());
249 jobOptionsPanel.setBorder(new TitledBorder("Options"));
250 jobOptionsPane.getViewport().setView(jobOptions);
251 jobOptionsPanel.add(jobOptionsPane, BorderLayout.CENTER);
252 settingsPanel.setLeftComponent(jobOptionsPanel);
253 settingsPanel.setRightComponent(jobParameters);
254 settingsPanel.setOrientation(JSplitPane.VERTICAL_SPLIT);
255 settingsPanel.setDividerLocation(0.4);
257 setLayout(new BorderLayout());
258 // setPreferredSize(new Dimension(400, 600));
259 // setSize(new Dimension(400, 600));
260 jobPanel.setLeftComponent(setDetails);
261 jobPanel.setRightComponent(settingsPanel);
262 jobPanel.setOrientation(JSplitPane.VERTICAL_SPLIT);
263 jobPanel.setDividerLocation(0.8);
264 add(jobPanel, BorderLayout.CENTER);
265 JPanel dialogpanel = new JPanel();
266 dialogpanel.add(startjob);
267 dialogpanel.add(canceljob);
268 add(dialogpanel, BorderLayout.SOUTH);
271 protected void renModified_actionPerformed(ActionEvent e)
274 // TODO Auto-generated method stub
275 // save current prefs with new name and delete user pref with old name
279 protected void savModified_actionPerformed(ActionEvent e)
281 // TODO Auto-generated method stub
282 // Store the current settings
283 // write out param file and name.
285 initArgSetModified(); // reset the modification state
289 protected void canceljob_actionPerformed(ActionEvent e)
294 frame.setVisible(false);
298 protected void startjob_actionPerformed(ActionEvent e)
303 frame.setVisible(false);
307 Jws2Instance service;
310 * set if dialog is being set - so handlers will avoid spurious events
312 boolean settingDialog = false;
314 void initForService(Jws2Instance service, Preset p,
315 List<Argument> jobArgset)
317 settingDialog = true;
318 this.service = service;
319 // TODO: Recover window geometry prefs for this service
320 // jobPanel.setDividerLocation(proportionalLocation)
321 // settingsPanel.setDividerLocation(proportionalLocation)
322 Hashtable exnames = new Hashtable();
323 for (int i=0,iSize=setName.getItemCount(); i<iSize; i++)
325 exnames.put((String) setName.getItemAt(i),setName.getItemAt(i));
327 // Add the default entry - if not present already.
328 if (!exnames.contains("Defaults"))
330 setName.addItem("Defaults");
331 exnames.put("Defaults", "Defaults");
333 serviceOptions = service.getRunnerConfig();
334 // add any presets not already added.
335 String curname = (p == null ? "" : p.getName());
336 PresetManager prman = service.getPresets();
339 List prList = service.getPresets().getPresets();
342 for (Object pr : prList)
344 if (!exnames.contains(((Preset) pr).getName()))
346 setName.addItem(((Preset) pr).getName());
351 updateTable(p, jobArgset);
352 initArgSetModified();
353 settingDialog = false;
357 @SuppressWarnings("unchecked")
358 private void updateTable(Preset p, List<Argument> jobArgset)
360 List<Parameter> setargs = new ArrayList<Parameter>();
361 // populate table from default parameter set.
362 List<Argument> args = serviceOptions.getArguments();
364 // split to params and required arguments
366 for (Argument arg : args)
368 Argument myarg = (Argument) arg;
369 // Ideally, Argument would implement isRequired !
370 if (myarg instanceof Parameter)
372 Parameter parm = (Parameter) myarg;
377 if (myarg instanceof Option)
379 Option opt = (Option) myarg;
381 // Apply default value, always.
382 selectOption(opt, opt.getDefaultValue());
386 System.err.println("Ignoring unknown service argument type "
387 + arg.getClass().getName());
391 args = null; // no more args to process.
395 // initialise setname
396 setName.setSelectedItem(lastSetName=p.getName());
397 setDescr.setText(lastDescrText=p.getDescription());
401 args = p.getArguments(serviceOptions);
402 } catch (Exception e)
406 // TODO: check if args should be unselected prior to resetting using the
412 if (lastParmSet == null)
414 // first call - so create a dummy name
415 setName.setSelectedItem(lastSetName="Defaults");
419 if (jobArgset != null)
421 argSetModified(jobArgset, true);
424 // get setargs from current object
427 for (Argument arg : args)
429 if (arg instanceof Parameter)
431 setargs.add((Parameter) arg);
435 if (arg instanceof Option)
437 System.out.println("Setting option "+arg.getName()+" with "+arg.getDefaultValue());
438 selectOption((Option) arg, arg.getDefaultValue());
445 // mdl.setData(setargs);
446 // jobOptions.setLayout(new GridLayout(optSet.size() / 2 + 1, 2));
447 jobOptions.setPreferredSize(new Dimension(PARAM_WIDTH, optSet.size()
449 jobOptions.setLayout(new GridLayout(optSet.size(), 1));
450 refreshParamLayout();
451 // paramPanel.setLayout(new GridLayout(paramSet.size(), 1));
453 // paramPane.getViewport().validate();
454 paramPane.validate();
458 private boolean isModified()
460 return savmodified.isEnabled();
463 private Hashtable modifiedElements = new Hashtable();
465 * reset gui and modification state settings
467 private void initArgSetModified() {
469 modifiedElements.clear();
470 renmodified.setVisible(false);
471 savmodified.setEnabled(false);
474 private void argSetModified(Object modifiedElement, boolean b)
478 modifiedElements.remove(modifiedElement);
482 modifiedElements.put(modifiedElement, modifiedElement);
484 // set mod status based on presence of elements in table
485 savmodified.setEnabled(modifiedElements.size() > 0);
486 // special reveal if setName has been modified
487 if (modifiedElements.get(setName) != null)
489 if (curSetName != null && lastSetName!=null && !lastSetName.equals(curSetName))
491 // also test to see if lastSetName exists in preset store
492 renmodified.setVisible(true);
497 // setname isn't in modlist - so don't rename
498 renmodified.setEnabled(false);
503 private void addParameter(Parameter parm)
505 ParamBox pb = paramSet.get(parm.getName());
508 pb = new ParamBox(this, parm);
509 paramSet.put(parm.getName(), pb);
513 // take the defaults from the parameter
514 pb.updateControls(parm);
517 private void selectOption(Option opt, String string)
519 OptionBox cb = optSet.get(opt.getName());
526 // no value specified. Either a ..
527 // if (opt.getPossibleValues()==null || opt.getPossibleValues().size()<=1) {
529 // cb.enabled.setSelected(true);
531 // // or unselected option
532 // cb.enabled.setSelected(false);
534 if (opt.isRequired())
536 // indicate option needs to be selected!
540 cb.enabled.setSelected(false);
545 cb.enabled.setSelected(true);
547 if (opt.getPossibleValues().contains(string))
549 cb.val.setSelectedItem(string);
553 throw new Error("Invalid value " + string + " for option " + opt);
557 if (opt.isRequired() && !cb.enabled.isSelected())
559 // TODO: indicate paramset is not valid.. option needs to be selected!
561 cb.setInitialValue();
564 Map<String, ParamBox> paramSet = new Hashtable<String, ParamBox>();
566 public class ParamBox extends JPanel implements ChangeListener,
569 JButton showDesc = new JButton();
571 JTextArea string = new JTextArea();
573 JScrollPane descPanel = new JScrollPane();
575 JSlider slider = null;
577 JTextField valueField = null;
579 ValueConstrain validator = null;
581 JPanel settingPanel = new JPanel();
583 JPanel controlPanel = new JPanel();
585 boolean integ = false;
587 boolean choice = false;
589 boolean descisvisible = false;
591 final WsJobParameters pmdialogbox;
593 public ParamBox(final WsJobParameters pmlayout, Parameter parm)
595 pmdialogbox = pmlayout;
596 setPreferredSize(new Dimension(PARAM_WIDTH, PARAM_CLOSEDHEIGHT));
597 setBorder(new TitledBorder(parm.getName()));
599 showDesc.setFont(new Font("Verdana", Font.PLAIN, 6));
600 showDesc.setText("+");
601 string.setFont(new Font("Verdana", Font.PLAIN, 11));
602 string.setBackground(getBackground());
603 // string.setSize(new Dimension(PARAM_WIDTH, 80));
604 string.setEditable(false);
605 descPanel.getViewport().setView(string);
606 // descPanel.setLocation(2,17);
607 descPanel.setVisible(false);
608 // string.setMinimumSize(new Dimension(140,80));
609 // string.setMaximumSize(new Dimension(280,80));
610 final ParamBox me = this;
611 showDesc.addActionListener(new ActionListener()
615 public void actionPerformed(ActionEvent e)
617 descisvisible = !descisvisible;
618 descPanel.setVisible(descisvisible);
619 me.setPreferredSize(new Dimension(PARAM_WIDTH,
620 (descisvisible) ? PARAM_HEIGHT : PARAM_CLOSEDHEIGHT));
622 pmlayout.refreshParamLayout();
625 string.setWrapStyleWord(true);
626 string.setLineWrap(true);
627 string.setColumns(32);
628 string.setText(parm.getDescription());
629 JPanel firstrow = new JPanel();
630 firstrow.setLayout(null);
631 controlPanel.setLayout(new BorderLayout());
632 controlPanel.setBounds(new Rectangle(39, 10, PARAM_WIDTH - 70,
633 PARAM_CLOSEDHEIGHT - 50));
634 showDesc.setBounds(new Rectangle(10, 10, 16, 16));
635 firstrow.add(showDesc);
636 firstrow.add(controlPanel);
637 firstrow.setBounds(new Rectangle(10, 20, PARAM_WIDTH - 30,
638 PARAM_CLOSEDHEIGHT - 30));
640 validator = parm.getValidValue();
642 if (validator != null)
644 integ = validator.getType() == Type.Integer;
648 if (parameter.getPossibleValues() != null)
653 updateControls(parm);
654 descPanel.setBounds(new Rectangle(10, PARAM_CLOSEDHEIGHT,
655 PARAM_WIDTH - 20, PARAM_HEIGHT - PARAM_CLOSEDHEIGHT - 5));
662 // reset the widget's initial value.
666 boolean adjusting = false;
672 public int getBoxHeight()
674 return (descisvisible ? PARAM_HEIGHT : PARAM_CLOSEDHEIGHT);
677 public void updateControls(Parameter parm)
680 boolean init = (choicebox==null && valueField==null);
687 choicebox = new JComboBox();
688 choicebox.addActionListener(this);
689 controlPanel.add(choicebox, BorderLayout.CENTER);
693 slider = new JSlider();
694 slider.addChangeListener(this);
695 valueField = new JTextField();
696 valueField.addActionListener(this);
697 valueField.setPreferredSize(new Dimension(60, 25));
698 controlPanel.add(slider, BorderLayout.WEST);
699 controlPanel.add(valueField, BorderLayout.EAST);
709 List vals = parm.getPossibleValues();
710 for (Object val : vals)
712 choicebox.addItem(val);
716 if (parm.getDefaultValue() != null)
718 choicebox.setSelectedItem(parm.getDefaultValue());
723 valueField.setText(parm.getDefaultValue());
726 lastVal = updateSliderFromValueField();
732 public Parameter getParameter()
738 parameter.setDefaultValue((String) choicebox.getSelectedItem());
742 parameter.setDefaultValue(valueField.getText());
744 } catch (WrongParameterException e)
752 public Object updateSliderFromValueField()
756 if (validator != null)
763 valueField.setText(valueField.getText().trim());
764 iVal = Integer.valueOf(valueField.getText());
765 } catch (Exception e)
769 if (validator.getMin() != null && validator.getMax() != null)
771 slider.getModel().setRangeProperties(iVal, 1,
772 validator.getMin().intValue(),
773 validator.getMax().intValue(), true);
777 slider.setVisible(false);
787 fVal = Float.valueOf(valueField.getText());
788 } catch (Exception e)
792 if (validator.getMin() != null && validator.getMax() != null)
794 slider.getModel().setRangeProperties((int) fVal * 1000, 1,
795 (int) validator.getMin().floatValue() * 1000,
796 (int) validator.getMax().floatValue() * 1000, true);
800 slider.setVisible(false);
810 slider.setVisible(false);
812 { valueField.getText().trim() };
817 { (String) choicebox.getSelectedItem() };
824 public void stateChanged(ChangeEvent e)
828 valueField.setText(""
829 + ((integ) ? ("" + (int) slider.getValue())
830 : ("" + (float) (slider.getValue() / 1000f))));
837 public void actionPerformed(ActionEvent e)
845 updateSliderFromValueField();
850 private void checkIfModified()
852 Object cstate = updateSliderFromValueField();
853 boolean notmod = false;
854 if (cstate.getClass() == lastVal.getClass())
856 if (cstate instanceof int[])
858 notmod = (((int[]) cstate)[0] == ((int[]) lastVal)[0]);
860 else if (cstate instanceof float[])
862 notmod = (((float[]) cstate)[0] == ((float[]) lastVal)[0]);
864 else if (cstate instanceof String[])
866 notmod = (((String[]) cstate)[0].equals(((String[]) lastVal)[0]));
869 pmdialogbox.argSetModified(this, !notmod);
873 Map<String, OptionBox> optSet = new Hashtable<String, OptionBox>();
875 public class OptionBox extends JPanel implements ActionListener
877 JComboBox val = new JComboBox();
879 JCheckBox enabled = new JCheckBox();
883 public OptionBox(Option opt)
886 setLayout(new BorderLayout());
887 enabled.setSelected(opt.isRequired()); // TODO: lock required options
888 enabled.setFont(new Font("Verdana", Font.PLAIN, 11));
889 enabled.setText(opt.getName());
890 enabled.setToolTipText(opt.getDescription());
891 enabled.addActionListener(this);
892 add(enabled, BorderLayout.NORTH);
893 if (opt.getPossibleValues().size() > 1)
895 setLayout(new GridLayout(1, 2));
896 for (Object str : opt.getPossibleValues())
898 val.addItem((String) str);
900 val.setSelectedItem((String) opt.getDefaultValue());
901 val.addActionListener(this);
902 add(val, BorderLayout.SOUTH);
904 // TODO: add actionListeners for popup (to open further info),
905 // and to update list of parameters if an option is enabled
906 // that takes a value.
910 boolean initEnabled = false;
912 String initVal = null;
914 public void setInitialValue()
916 initEnabled = enabled.isSelected();
917 if (option.getPossibleValues() != null
918 && option.getPossibleValues().size() > 1)
920 initVal = (String) val.getSelectedItem();
924 public Option getOptionIfEnabled()
926 if (!enabled.isSelected())
932 if (val.getSelectedItem() != null)
934 option.setDefaultValue((String) val.getSelectedItem());
936 } catch (WrongParameterException e)
945 public void actionPerformed(ActionEvent e)
947 if (e.getSource() != enabled)
949 enabled.setSelected(true);
954 private void checkIfModified()
956 boolean notmod = (initEnabled == enabled.isSelected());
959 notmod = initVal.equals(val.getSelectedItem());
961 argSetModified(this, !notmod);
965 private OptionBox addOption(Option opt)
967 OptionBox cb = optSet.get(opt.getName());
970 cb = new OptionBox(opt);
971 optSet.put(opt.getName(), cb);
977 protected void refreshParamLayout()
980 for (ParamBox pbox : paramSet.values())
982 s += pbox.getBoxHeight();
984 paramList.setPreferredSize(new Dimension(PARAM_WIDTH, s));
985 paramList.setLayout(new FlowLayout());
990 * testing method - grab a service and parameter set and show the window
994 public static void main(String[] args)
996 jalview.ws.jws2.Jws2Discoverer disc = jalview.ws.jws2.Jws2Discoverer
1001 Vector<String> services = new Vector<String>();
1002 services.addElement(args[p++]);
1003 Jws2Discoverer.setServiceUrls(services);
1008 } catch (Exception e)
1010 System.err.println("Aborting. Problem discovering services.");
1011 e.printStackTrace();
1014 Jws2Discoverer.Jws2Instance lastserv = null;
1015 for (Jws2Discoverer.Jws2Instance service : disc.getServices())
1018 if (p < args.length && service.serviceType.equalsIgnoreCase(args[p]))
1023 if (lastserv != null)
1025 List<Preset> prl = null;
1027 if (++p < args.length)
1029 PresetManager prman = lastserv.getPresets();
1032 pr = prman.getPresetByName(args[p]);
1035 // just grab the last preset.
1036 prl = prman.getPresets();
1040 Iterator<Preset> en = (prl == null) ? null : prl.iterator();
1047 en = prl.iterator();
1051 WsJobParameters pgui = new WsJobParameters(lastserv, pr);
1052 JFrame jf = new JFrame("Parameters for " + lastserv.getActionText());
1053 JPanel cont = new JPanel();
1054 // jf.setPreferredSize(new Dimension(600, 800));
1057 final Thread thr = Thread.currentThread();
1058 jf.addWindowListener(new WindowListener()
1062 public void windowActivated(WindowEvent e)
1064 // TODO Auto-generated method stub
1069 public void windowClosed(WindowEvent e)
1074 public void windowClosing(WindowEvent e)
1081 public void windowDeactivated(WindowEvent e)
1083 // TODO Auto-generated method stub
1088 public void windowDeiconified(WindowEvent e)
1090 // TODO Auto-generated method stub
1095 public void windowIconified(WindowEvent e)
1097 // TODO Auto-generated method stub
1102 public void windowOpened(WindowEvent e)
1104 // TODO Auto-generated method stub
1109 jf.setVisible(true);
1110 boolean inter = false;
1115 Thread.sleep(10000);
1116 } catch (Exception e)
1127 public List<Argument> getJobParams()
1129 List<Argument> argSet = new ArrayList<Argument>();
1130 // recover options and parameters from GUI
1131 for (OptionBox opts : optSet.values())
1133 Option opt = opts.getOptionIfEnabled();
1139 for (ParamBox parambox : paramSet.values())
1141 Parameter parm = parambox.getParameter();
1151 String lastParmSet = null;
1153 Hashtable<String, Object[]> editedParams = new Hashtable<String, Object[]>();
1156 * store the given parameters in the user parameter set database.
1158 * @param storeSetName
1161 * - setDescr.getText()
1165 private void _storeUserPreset(String storeSetName, String descr,
1166 List<Argument> jobParams)
1168 // this is a simple hash store.
1170 editedParams.put(storeSetName, pset = new Object[3]);
1171 pset[0] = storeSetName;
1173 pset[2] = jobParams;
1176 private Object[] _getUserPreset(String setName)
1178 return editedParams.get(setName);
1181 private void reInitDialog(String nextPreset)
1183 settingDialog = true;
1184 // updateTable(null,null);
1185 Object[] pset = _getUserPreset(nextPreset);
1188 setDescr.setText((String) pset[1]);
1189 updateTable(null, (List<Argument>) pset[2]);
1190 lastParmSet = nextPreset;
1195 // must be a default preset from service
1199 PresetManager prman = service.getPresets();
1202 p = prman.getPresetByName(nextPreset);
1204 } catch (Exception ex)
1206 ex.printStackTrace();
1210 updateTable(p, null);
1211 lastParmSet = nextPreset;
1214 initArgSetModified();
1216 settingDialog = false;
1220 String curSetName = null;
1223 public void itemStateChanged(ItemEvent e)
1230 if (e.getSource() == setName)
1232 String setname = (String) setName.getSelectedItem();
1233 if (setname == null)
1237 if (curSetName == null || !setname.equals(curSetName))
1241 raiseQueryAndSave();
1243 reInitDialog(setname);
1249 * ask the user if they wan't to save the current settings before switching
1251 private void raiseQueryAndSave()
1257 * last saved name for this user preset
1259 String lastSetName = null;
1262 * last saved value of the description text for this user preset
1264 String lastDescrText = null;
1267 public void actionPerformed(ActionEvent e)
1269 if (e.getSource() instanceof Component)
1271 Component src = (Component) e.getSource();
1272 if (src.getParent() == setName)
1274 // rename any existing records we know about for this set.
1275 curSetName = (String) e.getActionCommand();
1276 System.err.println("Command " + curSetName + " : "
1277 + setName.getSelectedItem());
1278 if (curSetName.trim().equals(setName.getSelectedItem()))
1282 if (curSetName!=null)
1284 argSetModified(setName, lastSetName!=null || !curSetName.equals(lastSetName));
1290 if (e.getSource() == setDescr)
1292 if (lastDescrText != null)
1294 argSetModified(setDescr, !setDescr.getText().equals(lastDescrText));