View Javadoc

1   /*
2    *  XNap - A P2P framework and client.
3    *
4    *  See the file AUTHORS for copyright information.
5    *
6    *  This program is free software; you can redistribute it and/or modify
7    *  it under the terms of the GNU General Public License as published by
8    *  the Free Software Foundation.
9    *
10   *  This program is distributed in the hope that it will be useful,
11   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   *  GNU General Public License for more details.
14   *
15   *  You should have received a copy of the GNU General Public License
16   *  along with this program; if not, write to the Free Software
17   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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      //--- Constant(s) ---
39      
40      //--- Data field(s) ---
41  
42      private List actions = new LinkedList();
43      
44      //--- Constructor(s) ---
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  		//       ^ don't remove the space, or some Makefile rules will break.
62  
63  		add(action);
64      }
65  
66      //--- Method(s) ---
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  }