Mega Code Archive

 
Categories / Java / Design Pattern
 

Command pattern in Java 3

/* 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 ExtrnCommand extends Frame implements ActionListener {   Menu mnuFile;   fileOpenCommand mnuOpen;   fileExitCommand mnuExit;   btnRedCommand btnRed;   Panel p;   Frame fr;   //-----------------------------------------   public ExtrnCommand() {     super("Frame with external commands");     fr = this; //save frame object     MenuBar mbar = new MenuBar();     setMenuBar(mbar);     mnuFile = new Menu("File", true);     mbar.add(mnuFile);     mnuOpen = new fileOpenCommand("Open...", this);     mnuFile.add(mnuOpen);     mnuExit = new fileExitCommand("Exit");     mnuFile.add(mnuExit);     mnuOpen.addActionListener(this);     mnuExit.addActionListener(this);     p = new Panel();     add(p);     btnRed = new btnRedCommand("Red", 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 ExtrnCommand();   } } //========================================== class btnRedCommand extends Button implements Command {   Panel p;   public btnRedCommand(String caption, Panel pnl) {     super(caption);     p = pnl;   }   public void Execute() {     p.setBackground(Color.red);   } } //------------------------------------------ class fileOpenCommand extends MenuItem implements Command {   Frame fr;   public fileOpenCommand(String caption, Frame frm) {     super(caption);     fr = frm;   }   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);   } }