/*
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);
}
}
}
//==========================================