package edu.jsu.leathrum.mathlets.shared; import java.text.DecimalFormat; import java.text.ParsePosition; public class DblButtonSet extends AButtonSet { double val = 0.0; double inc = 0.1; double def = 0.0; double min = -10000.0; double max = 10000.0; boolean cycling = false; DecimalFormat nf; ActionWrapper act = new NullAction(); public void setValue(double newValue) { if (nf == null) { nf = (DecimalFormat) AMathlet.getNumberFormat().clone(); nf.setMinimumFractionDigits(1); nf.setMaximumFractionDigits(1); } if ((newValue > min - 1) && (newValue < max + 1)) { val = newValue; setValueString(nf.format(newValue)); } } public void setDigits(int numdigits) { if (nf == null) nf = (DecimalFormat) AMathlet.getNumberFormat().clone(); nf.setMinimumFractionDigits(numdigits); nf.setMaximumFractionDigits(numdigits); } public double getValue() { return val; } public void setRange(double newmin, double newmax) { min = newmin; max = newmax; val = 0.0; def = 0.0; } public void setIncrement(double newinc) { inc = newinc; } public void setButtonAction(ActionWrapper newact) { act = newact; } public void setCycling(boolean newcyc) { cycling = newcyc; } public void setDefault(double newdef) { def = newdef; } // not overriding, but use this instead of AButtonSet version public void setToDefault() { setValue(def); } // overrides // do *not* need to override AButtonSet.getField() public void setField(String s) { if (nf == null) { nf = (DecimalFormat) AMathlet.getNumberFormat().clone(); nf.setMinimumFractionDigits(1); nf.setMaximumFractionDigits(1); } Number n = nf.parse(s, new ParsePosition(0)); if ((n == null) || (s.length() == 0)) { val = 00; setValueString(""); } else setValue(n.doubleValue()); } // overrides protected void plusAction() { if (val+incmin) { setValue(val-inc); act.doThis(); } else if (cycling) { setValue(max); act.doThis(); } } }