Mega Code Archive

 
Categories / Java / Design Pattern
 

Command pattern in Java 2

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