X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FWsJobParameters.java;h=77f31556cf8fe10800aabf783c5fc2f099b36c42;hb=02e9934037787599aefda03a6af9b7501e867dc3;hp=d43bd773fe4b8ea80782d6ac77d6d140c6876950;hpb=fad3f340d7479114fd1c5e1ac1c089971d95b1c8;p=jalview.git diff --git a/src/jalview/gui/WsJobParameters.java b/src/jalview/gui/WsJobParameters.java index d43bd77..77f3155 100644 --- a/src/jalview/gui/WsJobParameters.java +++ b/src/jalview/gui/WsJobParameters.java @@ -1,13 +1,13 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) - * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8) + * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * + * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR @@ -114,8 +114,6 @@ public class WsJobParameters extends JPanel implements ItemListener, */ JPanel paramList = new JPanel(); - - JPanel SetNamePanel = new JPanel(); JPanel setDetails = new JPanel(); @@ -124,7 +122,6 @@ public class WsJobParameters extends JPanel implements ItemListener, JPanel jobPanel = new JPanel(); - JScrollPane jobOptionsPane = new JScrollPane(); JButton createpref = new JButton(); @@ -145,9 +142,9 @@ public class WsJobParameters extends JPanel implements ItemListener, JScrollPane paramPane = new JScrollPane(); - -// ScrollablePanel optsAndparams = new ScrollablePanel(); + // ScrollablePanel optsAndparams = new ScrollablePanel(); JPanel optsAndparams = new JPanel(); + RunnerConfig serviceOptions; ParamDatastoreI paramStore; @@ -220,22 +217,24 @@ public class WsJobParameters extends JPanel implements ItemListener, frame.setTitle("Edit parameters for " + 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. frame.validate(); javax.swing.SwingUtilities.invokeLater(new Runnable() { - public void run() - { - //jobPanel.setDividerLocation(0.25); + public void run() + { + // jobPanel.setDividerLocation(0.25); - } - }); - frame.setVisible(true); + } + }); + frame.setVisible(true); if (response > 0) { @@ -248,18 +247,18 @@ public class WsJobParameters extends JPanel implements ItemListener, { this.addHierarchyBoundsListener(new HierarchyBoundsListener() { - + @Override public void ancestorResized(HierarchyEvent arg0) { refreshParamLayout(); } - + @Override public void ancestorMoved(HierarchyEvent arg0) { // TODO Auto-generated method stub - + } }); updatepref = JvSwingUtils.makeButton("Update", @@ -340,10 +339,10 @@ public class WsJobParameters extends JPanel implements ItemListener, JLabel setNameLabel = new JLabel("Current parameter set name :"); setNameLabel.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10)); - + setNameInfo.add(setNameLabel); setNameInfo.add(setName); - + // initial button visibility updatepref.setVisible(false); deletepref.setVisible(false); @@ -354,13 +353,13 @@ public class WsJobParameters extends JPanel implements ItemListener, ((FlowLayout) setsavebuts.getLayout()).setHgap(10); ((FlowLayout) setsavebuts.getLayout()).setVgap(0); JPanel spacer = new JPanel(); - spacer.setPreferredSize(new Dimension(2,30)); + spacer.setPreferredSize(new Dimension(2, 30)); setsavebuts.add(spacer); setsavebuts.add(deletepref); setsavebuts.add(revertpref); setsavebuts.add(createpref); setsavebuts.add(updatepref); -// setsavebuts.setSize(new Dimension(150, 30)); + // setsavebuts.setSize(new Dimension(150, 30)); JPanel buttonArea = new JPanel(new GridLayout(1, 1)); buttonArea.add(setsavebuts); SetNamePanel.add(setNameInfo); @@ -381,18 +380,19 @@ public class WsJobParameters extends JPanel implements ItemListener, jobOptions.setOpaque(true); paramList.setBorder(new TitledBorder("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); bjo.setOpaque(true); - //optsAndparams.setScrollableWidth(ScrollableSizeHint.FIT); + // optsAndparams.setScrollableWidth(ScrollableSizeHint.FIT); // optsAndparams.setScrollableHeight(ScrollableSizeHint.NONE); - // optsAndparams.setLayout(new BorderLayout()); + // optsAndparams.setLayout(new BorderLayout()); optsAndparams.setLayout(new BorderLayout()); optsAndparams.add(jobOptions, BorderLayout.NORTH); optsAndparams.add(paramList, BorderLayout.CENTER); - JPanel jp=new JPanel(new BorderLayout()); + JPanel jp = new JPanel(new BorderLayout()); jp.add(optsAndparams, BorderLayout.CENTER); paramPane.getViewport().setView(jp); paramPane.setBorder(null); @@ -401,7 +401,7 @@ public class WsJobParameters extends JPanel implements ItemListener, jobPanel.setLayout(new BorderLayout()); jobPanel.add(setDetails, BorderLayout.NORTH); jobPanel.add(paramPane, BorderLayout.CENTER); -// jobPanel.setOrientation(JSplitPane.VERTICAL_SPLIT); + // jobPanel.setOrientation(JSplitPane.VERTICAL_SPLIT); add(SetNamePanel, BorderLayout.NORTH); add(jobPanel, BorderLayout.CENTER); @@ -548,7 +548,7 @@ public class WsJobParameters extends JPanel implements ItemListener, if (jobArgset != null && jobArgset.size() > 0) { curSetName = "Supplied Settings"; - isUserPreset=false; + isUserPreset = false; updateTable(p, jobArgset); setName.setSelectedItem(curSetName); updateButtonDisplay(); @@ -566,14 +566,27 @@ public class WsJobParameters extends JPanel implements ItemListener, @SuppressWarnings("unchecked") private void updateTable(WsParamSetI p, List jobArgset) { + boolean setDefaultParams=false; + if (lastParmSet == null) + { + isUserPreset = false; + // First call - so provide Service default settings + setName.setSelectedItem(lastSetName = SVC_DEF); + } + if (p==null && SVC_DEF.equals(""+setName.getSelectedItem())) + { + // indicate that service defaults should be set if available + setDefaultParams=true; + } // populate table from default parameter set. List args = paramStore.getServiceParameters(); // split to params and required arguments { - int cw=0; + int cw = 0; + boolean optset=false; for (ArgumentI myarg : args) - { + { // Ideally, Argument would implement isRequired ! if (myarg instanceof ParameterI) { @@ -586,13 +599,13 @@ public class WsJobParameters extends JPanel implements ItemListener, { OptionI opt = (OptionI) myarg; OptionBox ob = opanp.addOption(opt); - ob.resetToDefault(); + ob.resetToDefault(setDefaultParams); if (MAX_OPTWIDTH < ob.getPreferredSize().width) { MAX_OPTWIDTH = ob.getPreferredSize().width; } ob.validate(); - cw+=ob.getPreferredSize().width+5; + cw += ob.getPreferredSize().width + 5; } else { @@ -620,16 +633,6 @@ public class WsJobParameters extends JPanel implements ItemListener, // TODO: check if args should be unselected prior to resetting using the // preset } - else - { - if (lastParmSet == null) - { - isUserPreset = false; - // first call - so create a dummy name - - setName.setSelectedItem(lastSetName = SVC_DEF); - } - } if (jobArgset != null) { @@ -799,99 +802,115 @@ public class WsJobParameters extends JPanel implements ItemListener, settingDialog = stn; } - public void refreshParamLayout() { -// optsAndparams.setPreferredSize(null); + // 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 sep = fl.getVgap(); + boolean fh = true; + int os = 0, s = jobOptions.getBorder().getBorderInsets(jobOptions).bottom + + jobOptions.getBorder().getBorderInsets(jobOptions).top + + 2 + * sep; /** * final height for viewport */ - int finalh=s; - int panewidth = paramPane.getViewport().getSize().width-120-jobOptions.getBorder().getBorderInsets(jobOptions).left+jobOptions.getBorder().getBorderInsets(jobOptions).right; - - int w = 2 * fl.getHgap() + (MAX_OPTWIDTH > OptsAndParamsPage.PARAM_WIDTH ? MAX_OPTWIDTH : OptsAndParamsPage.PARAM_WIDTH); - int hgap=fl.getHgap(),cw=hgap; - + int finalh = s; + int panewidth = paramPane.getViewport().getSize().width - 120 + - jobOptions.getBorder().getBorderInsets(jobOptions).left + + jobOptions.getBorder().getBorderInsets(jobOptions).right; + + int w = 2 + * fl.getHgap() + + (MAX_OPTWIDTH > OptsAndParamsPage.PARAM_WIDTH ? MAX_OPTWIDTH + : OptsAndParamsPage.PARAM_WIDTH); + int hgap = fl.getHgap(), cw = hgap; + if (opanp.getOptSet().size() > 0) { - - jobOptions.setLayout(new MigLayout("","", "")); + + jobOptions.setLayout(new MigLayout("", "", "")); jobOptions.removeAll(); - + for (OptionBox pbox : opanp.getOptSet().values()) { pbox.validate(); - cw+=pbox.getSize().width+hgap; - if (cw+120>panewidth) - { - jobOptions.add(pbox, "wrap"); - // System.out.println("Wrap on "+pbox.option.getName()); - cw=hgap+pbox.getSize().width; - fh=true; - } else { - jobOptions.add(pbox); - } - if (fh) - { - finalh+=pbox.getSize().height+fl.getVgap(); - fh=false; + cw += pbox.getSize().width + hgap; + if (cw + 120 > panewidth) + { + jobOptions.add(pbox, "wrap"); + // System.out.println("Wrap on "+pbox.option.getName()); + cw = hgap + pbox.getSize().width; + fh = true; + } + else + { + jobOptions.add(pbox); + } + if (fh) + { + finalh += pbox.getSize().height + fl.getVgap(); + fh = false; + } } - } - jobOptions.revalidate(); + jobOptions.revalidate(); } else { jobOptions.setVisible(false); } - // Now layout the parameters assuming they occupy one column - to calculate total height of options+parameters + // Now layout the parameters assuming they occupy one column - to calculate + // total height of options+parameters fl = new FlowLayout(FlowLayout.LEFT); - // helpful hint from http://stackoverflow.com/questions/2743177/top-alignment-for-flowlayout + // helpful hint from + // http://stackoverflow.com/questions/2743177/top-alignment-for-flowlayout fl.setAlignOnBaseline(true); if (opanp.getParamSet().size() > 0) { paramList.removeAll(); - paramList.setLayout(new MigLayout("","","")); - fh=true; - for (ParamBox pbox:opanp.getParamSet().values()) + paramList.setLayout(new MigLayout("", "", "")); + fh = true; + for (ParamBox pbox : opanp.getParamSet().values()) { pbox.validate(); - cw+=pbox.getSize().width+hgap; - if (cw+160>panewidth) { + cw += pbox.getSize().width + hgap; + if (cw + 160 > panewidth) + { paramList.add(pbox, "wrap"); - cw=pbox.getSize().width+hgap; - fh=true; - } else { + cw = pbox.getSize().width + hgap; + fh = true; + } + else + { paramList.add(pbox); } if (fh) { - finalh+=pbox.getSize().height+fl.getVgap(); - fh=false; + finalh += pbox.getSize().height + fl.getVgap(); + fh = false; } } -/* s = 2 * sep; - for (ParamBox pbox : opanp.getParamSet().values()) - { - pbox.validate(); - s += sep + pbox.getPreferredSize().height+pbox.getBorder().getBorderInsets(pbox).bottom; - } - -// paramList.setPreferredSize(new Dimension(w, s)); - os+=s+2*sep+paramList.getBorder().getBorderInsets(paramList).bottom+paramList.getBorder().getBorderInsets(paramList).top; - */ + /* + * s = 2 * sep; for (ParamBox pbox : opanp.getParamSet().values()) { + * pbox.validate(); s += sep + + * pbox.getPreferredSize().height+pbox.getBorder + * ().getBorderInsets(pbox).bottom; } + * + * // paramList.setPreferredSize(new Dimension(w, s)); + * os+=s+2*sep+paramList + * .getBorder().getBorderInsets(paramList).bottom+paramList + * .getBorder().getBorderInsets(paramList).top; + */ paramList.revalidate(); } else { paramList.setVisible(false); } - // TODO: waste some time trying to eliminate any unnecessary .validate calls here + // TODO: waste some time trying to eliminate any unnecessary .validate calls + // here // System.out.println("Size will be : "+w+","+os); // optsAndparams.setPreferredSize(null); // paramPane.getViewport().setView(optsAndparams); @@ -1131,8 +1150,10 @@ 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 getJobParams() { return opanp.getCurrentSettings();