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;
    }    
}

 

Ads help maintain this website.