package hep.aida.ref.plotter; /** * * @author The FreeHEP team @ SLAC */ public class DoubleStyleParameter extends AbstractStyleParameter { private boolean hasLimits = false; private double min; private double max; DoubleStyleParameter(String name, double defaultValue) { super(name, String.valueOf(defaultValue)); } DoubleStyleParameter(String name, double defaultValue, double min, double max) { super(name, String.valueOf(defaultValue)); if ( min >= max ) throw new IllegalArgumentException("Min value: "+min+" cannot be greater or equal to Max value: "+max); this.hasLimits = true; this.min = min; this.max = max; } public boolean hasLimits() { return hasLimits; } public double min() { return min; } public double max() { return max; } public double value() { try { return Double.parseDouble(parameterValue()); } catch (NumberFormatException nfe) { return Double.NaN; } catch (NullPointerException npe) { return Double.NaN; } } public boolean setValue(double value) { return setParameter(String.valueOf(value)); } protected boolean setParameter(String parValue) { boolean result = super.setParameter(parValue); try { double d = Double.parseDouble(parValue); if ( ! result || ! hasLimits() ) return result; return d < max && d > min; } catch (NumberFormatException nfe) { return false; } catch (NullPointerException npe) { return false; } } public Class type() { return Double.TYPE; } }