| /*
 The Design Patterns Java Companion
 
 Copyright (C) 1998, by James W. Cooper
 
 IBM Thomas J. Watson Research Center
 
 */
 
 
 import java.awt.Button;
 import java.awt.Color;
 import java.awt.FileDialog;
 import java.awt.Frame;
 import java.awt.Menu;
 import java.awt.MenuBar;
 import java.awt.MenuItem;
 import java.awt.Panel;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 
 interface Command {
 public void Execute();
 }
 
 public class TestCommand extends Frame implements ActionListener {
 Menu mnuFile;
 
 fileOpenCommand mnuOpen;
 
 fileExitCommand mnuExit;
 
 btnRedCommand btnRed;
 
 Panel p;
 
 Frame fr;
 
 //-----------------------------------------
 public TestCommand() {
 super("Frame without commands");
 fr = this; //save frame object
 MenuBar mbar = new MenuBar();
 setMenuBar(mbar);
 
 mnuFile = new Menu("File", true);
 mbar.add(mnuFile);
 
 mnuOpen = new fileOpenCommand("Open...");
 mnuFile.add(mnuOpen);
 mnuExit = new fileExitCommand("Exit");
 mnuFile.add(mnuExit);
 
 mnuOpen.addActionListener(this);
 mnuExit.addActionListener(this);
 
 btnRed = new btnRedCommand("Red");
 p = new Panel();
 add(p);
 p.add(btnRed);
 
 btnRed.addActionListener(this);
 setBounds(100, 100, 200, 100);
 setVisible(true);
 }
 
 //-----------------------------------------
 public void actionPerformed(ActionEvent e) {
 Command obj = (Command) e.getSource();
 obj.Execute();
 }
 
 //-----------------------------------------
 static public void main(String argv[]) {
 new TestCommand();
 }
 
 //====----====-----inner class----=====----
 class btnRedCommand extends Button implements Command {
 public btnRedCommand(String caption) {
 super(caption);
 }
 
 public void Execute() {
 p.setBackground(Color.red);
 }
 }
 
 //------------------------------------------
 class fileOpenCommand extends MenuItem implements Command {
 public fileOpenCommand(String caption) {
 super(caption);
 }
 
 public void Execute() {
 FileDialog fDlg = new FileDialog(fr, "Open file");
 fDlg.show();
 }
 }
 
 //-------------------------------------------
 class fileExitCommand extends MenuItem implements Command {
 public fileExitCommand(String caption) {
 super(caption);
 }
 
 public void Execute() {
 System.exit(0);
 }
 }
 }
 //==========================================
 
 
 
 
 |