/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package us.menzies.plot;

/**
 *
 * @author zmurray
 */
public class JRangeSlider extends javax.swing.JSlider {
    private double dmin = 0.0;
    private double dmax = 0.0;
    private double drange = 0.0;
    private double dvalue = 0.0;
    public JRangeSlider() {
        super();
    }
    public JRangeSlider(javax.swing.BoundedRangeModel brm) {
        super(brm);
    }
    public JRangeSlider(int orientation) {
        super(orientation);
    }
    public JRangeSlider(double min, double max) {
        this();
        setTicks();
        setMaximum(max);
        setMinimum(min);
    }
    public JRangeSlider(double min, double max, double value) {
        this(min, max);
        setValue(value);
    }
    protected void recalculateRange() {
        drange = dmax-dmin;
    }
    public void setTicks(int ticks) {
        setMinimum(0);
        setMaximum(ticks);
    }
    protected void setTicks() {
        setTicks(100);
    }
    public int getTicks() {
        return getValue();
    }
    public void setMinimum(double value) {
        dmin = value;
        recalculateRange();
    }
    public void setMaximum(double value) {
        dmax = value;
        recalculateRange();
    }
    public double getDecimalMinimum() {
        return dmin;
    }
    public double getDecimalMaximum() {
        return dmax;
    }
    public void setValue(double value) {
        dvalue = value;
        double coefficient = ((double)getMaximum())/drange;
        setValue((int)(coefficient*(dvalue-dmin)));
    }
    public void setDecimalValue(double value) {
        setValue(value);
    }
    public double getDecimalValue() {
        return dvalue;
    }
    public double getRange() {
        return drange;
    }
}
