KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > gulden > framework > amoda > generic > behaviour > CommandWrapper


1 /*
2  * Project: AMODA - Abstract Modeled Application
3  * Class: de.gulden.framework.amoda.generic.behaviour.CommandWrapper
4  * Version: snapshot-beautyj-1.1
5  *
6  * Date: 2004-09-29
7  *
8  * This is a snapshot version of the AMODA 0.2 development branch,
9  * it is not released as a seperate version.
10  * For AMODA, see http://amoda.berlios.de/.
11  *
12  * This is licensed under the GNU Lesser General Public License (LGPL)
13  * and comes with NO WARRANTY.
14  *
15  * Author: Jens Gulden
16  * Email: amoda@jensgulden.de
17  */

18
19 package de.gulden.framework.amoda.generic.behaviour;
20
21 import de.gulden.framework.amoda.generic.core.*;
22 import de.gulden.framework.amoda.model.behaviour.Command;
23 import de.gulden.framework.amoda.model.data.*;
24 import java.awt.event.*;
25 import java.lang.*;
26 import java.util.*;
27
28 /**
29  * Class CommandWrapper.
30  *
31  * @author Jens Gulden
32  * @version snapshot-beautyj-1.1
33  */

34 public class CommandWrapper extends GenericCommand implements Command {
35
36     // ------------------------------------------------------------------------
37
// --- fields ---
38
// ------------------------------------------------------------------------
39

40     public String JavaDoc text;
41
42     protected GenericApplicationMemberAbstract wrapped;
43
44
45     // ------------------------------------------------------------------------
46
// --- methods ---
47
// ------------------------------------------------------------------------
48

49     public void setParent(CompositeGroup parent) {
50         super.setParent(parent);
51         getWrapped().setParent(parent);
52     }
53
54     public void setText(String JavaDoc _text) {
55         text = _text; // works as classname of wrapped command
56
}
57
58     public GenericApplicationMemberAbstract getWrapped() {
59         text=text.trim();
60         if (wrapped==null) {
61             try {
62                 Class JavaDoc clazz=Class.forName(text); // field "text" has been initialized by XML deserializer
63
wrapped=(GenericApplicationMemberAbstract)clazz.newInstance();
64             } catch (Exception JavaDoc e) {
65                 de.gulden.framework.amoda.generic.core.GenericApplicationEnvironmentFactory.fatalError("cannot instantiate object of class '"+text+"'",e);
66             }
67         }
68         return wrapped;
69     }
70
71     public void actionPerformed(ActionEvent event) {
72         Object JavaDoc wrapped = getWrapped();
73         if (wrapped instanceof GenericCommand) {
74             ((GenericCommand)wrapped).actionPerformed(event);
75         } else {
76             perform();
77         }
78     }
79
80     public void perform() {
81         de.gulden.framework.amoda.model.behaviour.Command wrapped = (de.gulden.framework.amoda.model.behaviour.Command)getWrapped();
82         if (wrapped.getParent()==null) { // make sure command has reference to a parent
83
wrapped.setParent(this.getParent());
84         }
85         wrapped.perform();
86     }
87
88 } // end CommandWrapper
89
Popular Tags