1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.xnap.gui.action;
21
22 import java.awt.event.ActionEvent;
23 import java.util.Iterator;
24 import java.util.LinkedList;
25 import java.util.List;
26
27 import javax.swing.AbstractAction;
28 import javax.swing.Action;
29
30 import org.xnap.gui.util.IconHelper;
31
32 /***
33 * Provides a class that looks like a single action but performs multiple
34 * actions.
35 */
36 public class ActionContainer extends AbstractAction {
37
38
39
40
41
42 private List actions = new LinkedList();
43
44
45
46 /***
47 * Constructs a MultiAction.
48 *
49 * @param action the action to read the properties from
50 */
51 public ActionContainer(Action action)
52 {
53 putValue(Action.NAME, action.getValue(Action.NAME));
54 putValue(Action.SHORT_DESCRIPTION,
55 action.getValue(Action.SHORT_DESCRIPTION));
56 putValue(Action.LONG_DESCRIPTION,
57 action.getValue(Action.LONG_DESCRIPTION));
58 putValue(Action.SMALL_ICON, action.getValue(Action.SMALL_ICON));
59 putValue( IconHelper.XNAP_ICON,
60 action.getValue(IconHelper.XNAP_ICON));
61
62
63 add(action);
64 }
65
66
67
68 /***
69 * Calls actionPerformed() on all added <code>Action</code> objects.
70 */
71 public void actionPerformed(ActionEvent event)
72 {
73 for (Iterator i = actions.iterator(); i.hasNext();) {
74 ((Action)i.next()).actionPerformed(event);
75 }
76 }
77
78 /***
79 * Adds <code>action</code>.
80 */
81 public void add(Action action)
82 {
83 if (!action.isEnabled()) {
84 setEnabled(false);
85 }
86 actions.add(action);
87 }
88
89 }