// Program 13.3: The Event Tutor Applet
import java.applet.Applet;
import java.awt.Event;
import java.awt.Graphics;
import java.util.StringTokenizer;
              
public class EventTutor extends Applet {

  private String events;
  private int num_events = 0; 

  public void init() {
    listEvent("initializing the applet");
  }
  
  public void start() {
    listEvent("starting the applet");
    repaint();
  }
 
 public void stop() {
    listEvent("stopping the applet");
    repaint();
  }
 
  public void destroy() {
    listEvent("destroying the applet");
  }
 
  public boolean mouseUp(Event e, int x, int y) {
    listEvent("mouseUp at (" + x + "," + y + ")");
    return false;
  }
  
  public boolean mouseDown(Event e, int x, int y) {
    listEvent("mouseDown at (" + x + "," + y + ")");
    return false;
  }
  
  public boolean mouseDrag(Event e, int x, int y) {
    listEvent("mouseDrag at (" + x + "," + y + ")");
    return false;
  }
  
  public boolean mouseMove(Event e, int x, int y) {
    listEvent("mouseMove event at (" + x + "," + y + ")");
    return false;
  }
  
  public boolean mouseEnter(Event e, int x, int y) {
    listEvent("mouseEnter at (" + x + "," + y + ")");
    return false;
  }
  
  public boolean mouseExit(Event e, int x, int y) {
    listEvent("mouseExit at (" + x + "," + y + ")");
    return false;
  }
  
  public boolean keyDown(Event e, int x) {
    listEvent("keyDown: " + (char) x);
    return false;
  }
  
  public void paint(Graphics g) {
  
    int i = 0;
    int j = 1;
    int lineheight = 15;
    int numlines = 20;

    StringTokenizer st = new StringTokenizer(events.toString(), 
      "\t");
      while (st.hasMoreTokens()) {
      if (num_events - i++ < numlines) {
        g.drawString(st.nextToken(), 5, lineheight * j++);
      }
    }

  }

 private void listEvent(String st) {
    events += st + "\t";
    showStatus(st);
    System.out.println(st);
    num_events++;
    repaint();
  }
  
}
