// Program 17.6: Active Menu Tester
import java.applet.Applet;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextField;
import java.awt.Event;
import java.awt.Label;

public class ActiveMenuTester extends Applet {

  public void init () {
    MenuFrame f = new MenuFrame("Simple Window");
    f.resize(300, 200);
    f.move(300,200);
    f.show();
  }
  
}

class MenuFrame extends Frame {

  TextField theMenuChoice;

  public MenuFrame(String s) {
  
    super (s);
    add("North", new Label("The last menu choice was", 
      Label.CENTER));
    theMenuChoice = new TextField(
      "Choose a menu item");
    add("Center", theMenuChoice);
    MenuBar myMenuBar = new MenuBar();
    makeFileMenu(myMenuBar);
    makeEditMenu(myMenuBar);
    setMenuBar(myMenuBar);
    
  }
  
  public boolean handleEvent(Event e) {
  
    if (e.id == Event.WINDOW_DESTROY) {
      dispose();
      return true;
    }
    else if (e.id == Event.ACTION_EVENT) {
      return action(e, e.target);
    }
    return super.handleEvent(e);
    
  }


  public boolean action (Event e, Object o) {

    if (e.target instanceof MenuItem) {
      MenuItem mi = (MenuItem) o;
      String s = mi.getLabel();
      if (s != null) handleMenuChoice(s);
      return true;
    }
    else {
      return false;
    }
    
  }
  
  private void handleMenuChoice (String s) {
    theMenuChoice.setText(s);
  }

  void makeEditMenu(MenuBar mb) {
    Menu editMenu = new Menu("Edit");
    editMenu.add("Undo");
    editMenu.addSeparator();
    editMenu.add("Cut");
    editMenu.add("Copy");
    editMenu.add("Paste");
    editMenu.add("Clear");
    mb.add(editMenu);
  }

  void makeFileMenu(MenuBar mb) {
    Menu fileMenu = new Menu("File");
    fileMenu.add("New");
    fileMenu.add("Open...");
    fileMenu.addSeparator();
    fileMenu.add("Close");
    fileMenu.add("Save");
    fileMenu.add("Save As...");
    fileMenu.addSeparator();
    fileMenu.add("Page Setup...");
    fileMenu.add("Print");
    fileMenu.addSeparator();
    fileMenu.add("Quit");
    mb.add(fileMenu);
  }
  
}
