import java.awt.*;
import java.awt.event.*;

// This appears in Core Web Programming from
// Prentice Hall Publishers, and may be freely used
// or adapted. 1997 Marty Hall, hall@apl.jhu.edu.

/** A spelling-correcting TextField for entering
 *  a language name.
 */

public class LanguageField extends TextField {
  private String[] substrings =
    { "", "J", "Ja", "Jav", "Java" };

  public LanguageField() {
    super();
    enableEvents(AWTEvent.KEY_EVENT_MASK |
                 AWTEvent.ACTION_EVENT_MASK |
                 AWTEvent.FOCUS_EVENT_MASK);

  }

  /** Monitor/correct spelling as user types */
  
  public void processKeyEvent(KeyEvent event) {
    if (event.getID() == event.KEY_RELEASED)
      setLanguage();
    super.processKeyEvent(event);
  }

  // "Correct" the user's spelling if they've
  // made a typo.
  
  private void setLanguage() {
    int length = getText().length();
    if (length <= 4)
      setText(substrings[length]);
    else
      setText("Java");
  }

  /** When they hit RETURN, fill in the right answer. */

  public void processActionEvent(ActionEvent event) {
    setText("Java");
    super.processActionEvent(event);
  }

  /** Subliminal advertising! Give the user a hint. */
  
  public void processFocusEvent(FocusEvent event) {
    if (event.getID() == event.FOCUS_GAINED) {
      String text = getText();
      for(int i=0; i<5; i++) {
        setText("Hint: Java");
        setText(text);
      }
    }
    super.processFocusEvent(event);
  }
}

