import java.awt.TextField;

/** Entry field for double values */
public final class DoubleField extends TextField {
  /** The value entered in the field */
  private double value;
  /** Minimum allowed value */
  private double min;
  /** Maximum allowed value */
  private double max;

  /** Constructs DoubleField
   * @param d		default value
   * @param min		minimal allowed value
   * @param max		maximal allowed value
   */
  DoubleField (double d, double min, double max) {
    super (Double.toString (d));
    value = d;
    this.min = min;
    this.max = max;
  }

  /** Ensure the correctness of the entered value */
  protected void check () {
    try {
      String s = getText ();
      if (s != null && s != "")
	value = Double.valueOf (getText ()).doubleValue ();
    }
    catch (NumberFormatException e) {
      value = 0;
    }

    if (value < min)
      value = min;
    else if (value > max)
      value = max;

    setText (String.valueOf (value));
  }

  /** Read the value entered in the DoubleField */
  public double getValue () { check (); return value; }

  /** Set a value to the DoubleField
   * @param d	value to set
   */
  public void setValue (double d) {
    setText (String.valueOf (d));
    check ();
  }
}

