KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jimm > datavision > gui > cmd > CompoundCommand


1 package jimm.datavision.gui.cmd;
2 import java.util.ArrayList JavaDoc;
3 import java.util.Iterator JavaDoc;
4 import java.util.ListIterator JavaDoc; // For reverse traversal
5

6 /**
7  * A compound command holds a list of commands and allows their use as
8  * one single command.
9  *
10  * @author Jim Menard, <a HREF="mailto:jimm@io.com">jimm@io.com</a>
11  */

12 public class CompoundCommand extends CommandAdapter {
13
14 protected ArrayList JavaDoc commands;
15
16 public CompoundCommand(String JavaDoc name) {
17     super(name);
18     commands = new ArrayList JavaDoc();
19 }
20
21 public void add(Command c) {
22     commands.add(c);
23 }
24
25 public int numCommands() { return commands.size(); }
26
27 public void perform() {
28     for (Iterator JavaDoc iter = commands.iterator(); iter.hasNext(); )
29     ((Command)iter.next()).perform();
30 }
31
32 public void undo() {
33     for (ListIterator JavaDoc iter = commands.listIterator(commands.size());
34      iter.hasPrevious(); )
35     ((Command)iter.previous()).undo();
36 }
37
38 public void redo() {
39     for (Iterator JavaDoc iter = commands.iterator(); iter.hasNext(); )
40     ((Command)iter.next()).redo();
41 }
42
43 }
44
Popular Tags