X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FOptsAndParamsPage.java;h=59e70499feb6a254ed374b77b402cdab120bea52;hb=d59d262069ac37d288e72f6caba4a45e1a3ebb07;hp=e584eb754d80c9c6641293eaa14b2379c3403276;hpb=37de9310bec3501cbc6381e0c3dcb282fcaad812;p=jalview.git diff --git a/src/jalview/gui/OptsAndParamsPage.java b/src/jalview/gui/OptsAndParamsPage.java index e584eb7..59e7049 100644 --- a/src/jalview/gui/OptsAndParamsPage.java +++ b/src/jalview/gui/OptsAndParamsPage.java @@ -26,6 +26,7 @@ import jalview.ws.params.OptionI; import jalview.ws.params.ParameterI; import jalview.ws.params.ValueConstrainI; import jalview.ws.params.ValueConstrainI.ValueType; +import jalview.ws.params.simple.LogarithmicParameter; import java.awt.BorderLayout; import java.awt.Component; @@ -76,8 +77,8 @@ public class OptsAndParamsPage */ boolean compact = false; - public class OptionBox extends JPanel implements MouseListener, - ActionListener + public class OptionBox extends JPanel + implements MouseListener, ActionListener { JCheckBox enabled = new JCheckBox(); @@ -110,21 +111,20 @@ public class OptsAndParamsPage { hasLink = true; - enabled.setToolTipText(JvSwingUtils - .wrapTooltip( - true, - ((desc == null || desc.trim().length() == 0) ? MessageManager - .getString("label.opt_and_params_further_details") - : desc) - + "
")); + 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 && desc.trim().length() > 0) { - enabled.setToolTipText(JvSwingUtils.wrapTooltip(true, - opt.getDescription())); + enabled.setToolTipText( + JvSwingUtils.wrapTooltip(true, opt.getDescription())); } } add(enabled, BorderLayout.NORTH); @@ -271,9 +271,12 @@ public class OptsAndParamsPage } - public class ParamBox extends JPanel implements ChangeListener, - ActionListener, MouseListener + public class ParamBox extends JPanel + implements ChangeListener, ActionListener, MouseListener { + + boolean isLogarithmic; + boolean adjusting = false; boolean choice = false; @@ -308,7 +311,8 @@ public class OptsAndParamsPage JTextField valueField = null; - public ParamBox(final OptsParametersContainerI pmlayout, ParameterI parm) + public ParamBox(final OptsParametersContainerI pmlayout, + ParameterI parm) { pmdialogbox = pmlayout; finfo = parm.getFurtherDetails(); @@ -325,6 +329,10 @@ public class OptsAndParamsPage choice = true; } } + if (parm instanceof LogarithmicParameter) + { + isLogarithmic = true; + } if (!compact) { @@ -349,20 +357,16 @@ public class OptsAndParamsPage && parm.getDescription().trim().length() > 0) { // Only create description boxes if there actually is a description. - ttipText = (JvSwingUtils - .wrapTooltip( - true, - parm.getDescription() - + (finfo != null ? "
" - + MessageManager - .getString("label.opt_and_params_further_details") - : ""))); - } - - JvSwingUtils.mgAddtoLayout(this, ttipText, - new JLabel(parm.getName()), controlPanel, ""); + ttipText = (JvSwingUtils.wrapTooltip(true, + parm.getDescription() + (finfo != null ? "
" + + MessageManager.getString( + "label.opt_and_params_further_details") + : ""))); + } + + JvSwingUtils.mgAddtoLayout(this, ttipText, new JLabel(parm.getName()), + controlPanel, ""); updateControls(parm); validate(); } @@ -399,21 +403,18 @@ public class OptsAndParamsPage // Only create description boxes if there actually is a description. if (finfo != null) { - showDesc.setToolTipText(JvSwingUtils.wrapTooltip( - true, - MessageManager - .formatMessage( - "label.opt_and_params_show_brief_desc_image_link", - new String[] { linkImageURL - .toExternalForm() }))); + 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( - true, - MessageManager - .getString("label.opt_and_params_show_brief_desc"))); + showDesc.setToolTipText( + JvSwingUtils.wrapTooltip(true, MessageManager.getString( + "label.opt_and_params_show_brief_desc"))); } showDesc.addActionListener(new ActionListener() { @@ -578,14 +579,38 @@ public class OptsAndParamsPage { if (!adjusting) { - valueField.setText("" - + ((integ) ? ("" + slider.getValue()) : ("" + slider - .getValue() / 1000f))); + if (!isLogarithmic) + { + valueField.setText("" + ((integ) ? ("" + slider.getValue()) + : ("" + slider.getValue() / 1000f))); + } + else + { + Double base = ((LogarithmicParameter) parameter).getBase(); + Double value = Math.pow( + base, + slider.getValue()); + valueField.setText(formatDouble(value)); + } checkIfModified(); } } + public String formatDouble(Double value) + { + String string = ""; + if (value < 0.0000001) + { + string = String.format("%3.3e", value); + } + else + { + string = value.toString(); + } + return string; + } + public void updateControls(ParameterI parm) { adjusting = true; @@ -667,6 +692,7 @@ public class OptsAndParamsPage { int iVal; float fVal; + double dVal; if (validator != null) { if (integ) @@ -708,6 +734,53 @@ public class OptsAndParamsPage } return new int[] { iVal }; } + else if (isLogarithmic) + { + double eValue; + dVal = 0d; + try + { + valueField.setText(valueField.getText().trim()); + eValue = Double.valueOf(valueField.getText()); + + dVal = Math.log(eValue) / Math + .log(((LogarithmicParameter) parameter).getBase()); + + if (validator.getMin() != null + && validator.getMin().doubleValue() > dVal) + { + dVal = validator.getMin().doubleValue(); + // TODO: provide visual indication that hard limit was reached for + // this parameter + // update value field to reflect any bound checking we performed. + valueField.setText("" + formatDouble(eValue)); + } + if (validator.getMax() != null + && validator.getMax().doubleValue() < dVal) + { + dVal = validator.getMax().doubleValue(); + // TODO: provide visual indication that hard limit was reached for + // this parameter + // update value field to reflect any bound checking we performed. + valueField.setText("" + formatDouble(eValue)); + } + } catch (Exception e) + { + } + ; + if (validator.getMin() != null && validator.getMax() != null) + { + slider.getModel().setRangeProperties((int) (dVal), 1, + (int) (validator.getMin().doubleValue()), + 1 + (int) (validator.getMax().doubleValue()), + true); + } + else + { + slider.setVisible(false); + } + return new double[] { dVal }; + } else { fVal = 0f; @@ -790,8 +863,9 @@ public class OptsAndParamsPage { JPopupMenu mnu = new JPopupMenu(); - JMenuItem mitem = new JMenuItem(MessageManager.formatMessage( - "label.view_params", new String[] { finfo })); + JMenuItem mitem = new JMenuItem( + MessageManager.formatMessage("label.view_params", new String[] + { finfo })); mitem.addActionListener(new ActionListener() { @@ -808,9 +882,9 @@ public class OptsAndParamsPage URL linkImageURL = getClass().getResource("/images/link.gif"); - Map optSet = new java.util.LinkedHashMap(); + Map optSet = new java.util.LinkedHashMap<>(); - Map paramSet = new java.util.LinkedHashMap(); + Map paramSet = new java.util.LinkedHashMap<>(); public Map getOptSet() { @@ -878,8 +952,8 @@ public class OptsAndParamsPage else { throw new Error(MessageManager.formatMessage( - "error.invalid_value_for_option", new String[] { string, - option.getName() })); + "error.invalid_value_for_option", new String[] + { string, option.getName() })); } } @@ -911,7 +985,7 @@ public class OptsAndParamsPage */ public List getCurrentSettings() { - List argSet = new ArrayList(); + List argSet = new ArrayList<>(); for (OptionBox opts : getOptSet().values()) { OptionI opt = opts.getOptionIfEnabled();