import java.awt.TextField;

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

  /** Constructs IntegerField
   * @param d		default value
   * @param min		minimal allowed value
   * @param max		maximal allowed value
   */
  IntegerField (int d, int min, int max) {
    super (Integer.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 = Integer.parseInt (getText ());
    }
    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 IntegerField */
  public int getValue () { check (); return value; }

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

