X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FOptsAndParamsPage.java;h=a74fd2517878a6f35cf685508b3cfb268d2c532c;hb=c19d2a91ca05e052e3408bf5852d88eb5d0608f1;hp=106c3b77face2ee9d87720474194a750cf4e6083;hpb=a45774ee31d9f35d4eff46d54d7deab719afb092;p=jalview.git diff --git a/src/jalview/gui/OptsAndParamsPage.java b/src/jalview/gui/OptsAndParamsPage.java index 106c3b7..a74fd25 100644 --- a/src/jalview/gui/OptsAndParamsPage.java +++ b/src/jalview/gui/OptsAndParamsPage.java @@ -1,22 +1,26 @@ -/******************************************************************************* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) - * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle - * +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b2) + * Copyright (C) 2015 The Jalview Authors + * * 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. - * + * 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 * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with Jalview. If not, see . - *******************************************************************************/ + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.gui; +import jalview.util.MessageManager; import jalview.ws.params.ArgumentI; import jalview.ws.params.OptionI; import jalview.ws.params.ParameterI; @@ -37,7 +41,6 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.net.URL; import java.util.ArrayList; -import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -107,32 +110,32 @@ public class OptsAndParamsPage { hasLink = true; - enabled.setToolTipText("" - + JvSwingUtils - .wrapTooltip(((desc == null) ? "see further details by right-clicking" + enabled.setToolTipText(JvSwingUtils + .wrapTooltip( + true, + ((desc == null || desc.trim().length() == 0) ? MessageManager + .getString("label.opt_and_params_further_details ") : desc) - + "
") - + ""); + + "
")); enabled.addMouseListener(this); } else { - if (desc != null) + if (desc != null && desc.trim().length() > 0) { - enabled.setToolTipText("" - + JvSwingUtils.wrapTooltip(opt.getDescription()) - + ""); + enabled.setToolTipText(JvSwingUtils.wrapTooltip(true, + opt.getDescription())); } } add(enabled, BorderLayout.NORTH); + for (Object str : opt.getPossibleValues()) + { + val.addItem((String) str); + } + val.setSelectedItem((String) opt.getValue()); if (opt.getPossibleValues().size() > 1) { setLayout(new GridLayout(1, 2)); - for (Object str : opt.getPossibleValues()) - { - val.addItem((String) str); - } - val.setSelectedItem((String) opt.getValue()); val.addActionListener(this); add(val, BorderLayout.SOUTH); } @@ -169,7 +172,8 @@ public class OptsAndParamsPage } else { - notmod &= initVal == null; + notmod &= (initVal != null) ? initVal.equals(val.getSelectedItem()) + : val.getSelectedItem() != initVal; } poparent.argSetModified(this, !notmod); } @@ -181,11 +185,24 @@ public class OptsAndParamsPage return null; } OptionI opt = option.copy(); - + if (opt.getPossibleValues() != null + && opt.getPossibleValues().size() == 1) + { + // Hack to make sure the default value for an enabled option with only + // one value is actually returned + opt.setValue(opt.getPossibleValues().get(0)); + } if (val.getSelectedItem() != null) { opt.setValue((String) val.getSelectedItem()); } + else + { + if (option.getValue() != null) + { + opt.setValue(option.getValue()); + } + } return opt; } @@ -221,10 +238,11 @@ public class OptsAndParamsPage } - public void resetToDefault() + public void resetToDefault(boolean setDefaultParams) { enabled.setSelected(false); - if (option.isRequired()) + if (option.isRequired() + || (setDefaultParams && option.getValue() != null)) { // Apply default value selectOption(option, option.getValue()); @@ -241,7 +259,7 @@ public class OptsAndParamsPage } else { - initVal = (initEnabled) ? option.getValue() : null; + initVal = (initEnabled) ? (String) val.getSelectedItem() : null; } } @@ -301,7 +319,7 @@ public class OptsAndParamsPage choice = true; } } - + if (!compact) { makeExpanderParam(parm); @@ -315,9 +333,9 @@ public class OptsAndParamsPage private void makeCompactParam(ParameterI parm) { - setLayout(new MigLayout("","[][grow]")); + setLayout(new MigLayout("", "[][grow]")); - String ttipText=null; + String ttipText = null; controlPanel.setLayout(new BorderLayout()); @@ -325,15 +343,20 @@ public class OptsAndParamsPage && parm.getDescription().trim().length() > 0) { // Only create description boxes if there actually is a description. - ttipText = ("" - + JvSwingUtils - .wrapTooltip(parm.getDescription()+(finfo!=null ?"
Right click for further information.":"")) - + ""); - } - - JvSwingUtils.mgAddtoLayout(this, ttipText, new JLabel(parm.getName()),controlPanel, ""); + ttipText = (JvSwingUtils + .wrapTooltip( + true, + parm.getDescription() + + (finfo != null ? "
" + + MessageManager + .getString("label.opt_and_params_further_detail") + : ""))); + } + + JvSwingUtils.mgAddtoLayout(this, ttipText, + new JLabel(parm.getName()), controlPanel, ""); updateControls(parm); validate(); } @@ -370,20 +393,21 @@ public class OptsAndParamsPage // Only create description boxes if there actually is a description. if (finfo != null) { - showDesc.setToolTipText("" - + JvSwingUtils - .wrapTooltip("Click to show brief description
Right click for further information.") - + ""); + showDesc.setToolTipText(JvSwingUtils.wrapTooltip( + true, + MessageManager + .formatMessage( + "label.opt_and_params_show_brief_desc_image_link", + new String[] { linkImageURL + .toExternalForm() }))); showDesc.addMouseListener(this); } else { - showDesc.setToolTipText("" - + JvSwingUtils - .wrapTooltip("Click to show brief description.") - + ""); + showDesc.setToolTipText(JvSwingUtils.wrapTooltip( + true, + MessageManager + .getString("label.opt_and_params_show_brief_desc"))); } showDesc.addActionListener(new ActionListener() { @@ -566,21 +590,24 @@ public class OptsAndParamsPage valueField.addActionListener(this); valueField.addKeyListener(new KeyListener() { - + @Override public void keyTyped(KeyEvent e) { } - + @Override public void keyReleased(KeyEvent e) { - if (valueField.getText().trim().length()>0) + if (e.isActionKey()) + { + if (valueField.getText().trim().length() > 0) { - actionPerformed(null); + actionPerformed(null); } + } } - + @Override public void keyPressed(KeyEvent e) { @@ -651,24 +678,26 @@ public class OptsAndParamsPage { } ; + // update value field to reflect any bound checking we performed. + valueField.setText("" + iVal); if (validator.getMin() != null && validator.getMax() != null) { slider.getModel().setRangeProperties(iVal, 1, validator.getMin().intValue(), - validator.getMax().intValue(), true); + validator.getMax().intValue() + 1, true); } else { slider.setVisible(false); } - return new int[] - { iVal }; + return new int[] { iVal }; } else { fVal = 0f; try { + valueField.setText(valueField.getText().trim()); fVal = Float.valueOf(valueField.getText()); if (validator.getMin() != null && validator.getMin().floatValue() > fVal) @@ -676,6 +705,8 @@ public class OptsAndParamsPage fVal = validator.getMin().floatValue(); // TODO: provide visual indication that hard limit was reached for // this parameter + // update value field to reflect any bound checking we performed. + valueField.setText("" + fVal); } if (validator.getMax() != null && validator.getMax().floatValue() < fVal) @@ -683,6 +714,8 @@ public class OptsAndParamsPage fVal = validator.getMax().floatValue(); // TODO: provide visual indication that hard limit was reached for // this parameter + // update value field to reflect any bound checking we performed. + valueField.setText("" + fVal); } } catch (Exception e) { @@ -690,16 +723,16 @@ public class OptsAndParamsPage ; if (validator.getMin() != null && validator.getMax() != null) { - slider.getModel().setRangeProperties((int) fVal * 1000, 1, - (int) validator.getMin().floatValue() * 1000, - (int) validator.getMax().floatValue() * 1000, true); + slider.getModel().setRangeProperties((int) (fVal * 1000f), 1, + (int) (validator.getMin().floatValue() * 1000f), + 1 + (int) (validator.getMax().floatValue() * 1000f), + true); } else { slider.setVisible(false); } - return new float[] - { fVal }; + return new float[] { fVal }; } } else @@ -707,13 +740,11 @@ public class OptsAndParamsPage if (!choice) { slider.setVisible(false); - return new String[] - { valueField.getText().trim() }; + return new String[] { valueField.getText().trim() }; } else { - return new String[] - { (String) choicebox.getSelectedItem() }; + return new String[] { (String) choicebox.getSelectedItem() }; } } @@ -728,12 +759,14 @@ public class OptsAndParamsPage public OptsAndParamsPage(OptsParametersContainerI paramContainer) { - this(paramContainer,false); + this(paramContainer, false); } - public OptsAndParamsPage(OptsParametersContainerI paramContainer, boolean compact) + + public OptsAndParamsPage(OptsParametersContainerI paramContainer, + boolean compact) { poparent = paramContainer; - this.compact=compact; + this.compact = compact; } public static void showUrlPopUp(JComponent invoker, final String finfo, @@ -741,7 +774,8 @@ public class OptsAndParamsPage { JPopupMenu mnu = new JPopupMenu(); - JMenuItem mitem = new JMenuItem("View " + finfo); + JMenuItem mitem = new JMenuItem(MessageManager.formatMessage( + "label.view_params", new String[] { finfo })); mitem.addActionListener(new ActionListener() { @@ -758,9 +792,9 @@ public class OptsAndParamsPage URL linkImageURL = getClass().getResource("/images/link.gif"); - Map optSet = new Hashtable(); + Map optSet = new java.util.LinkedHashMap(); - Map paramSet = new Hashtable(); + Map paramSet = new java.util.LinkedHashMap(); public Map getOptSet() { @@ -827,7 +861,9 @@ public class OptsAndParamsPage } else { - throw new Error("Invalid value " + string + " for option " + option); + throw new Error(MessageManager.formatMessage( + "error.invalid_value_for_option", new String[] { string, + option.getName() })); } }