001: /*
002: * Jacareto Copyright (c) 2002-2005
003: * Applied Computer Science Research Group, Darmstadt University of
004: * Technology, Institute of Mathematics & Computer Science,
005: * Ludwigsburg University of Education, and Computer Based
006: * Learning Research Group, Aachen University. All rights reserved.
007: *
008: * Jacareto is free software; you can redistribute it and/or
009: * modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation; either
011: * version 2 of the License, or (at your option) any later version.
012: *
013: * Jacareto is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
016: * General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public
019: * License along with Jacareto; if not, write to the Free
020: * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
021: *
022: */
023:
024: package jacareto.record;
025:
026: import jacareto.comp.Components;
027: import jacareto.system.Environment;
028:
029: import java.awt.AWTEvent;
030: import java.awt.Component;
031: import java.awt.Panel;
032: import java.awt.event.ContainerEvent;
033:
034: import javax.swing.JLabel;
035:
036: /**
037: * This class represents container events which can be recorded.
038: *
039: * @author <a href="mailto:cspannagel@web.de">Christian Spannagel</a>
040: * @version 1.00
041: */
042: public class ContainerEventRecordable extends ComponentEventRecordable {
043: /** The container's name. */
044: private String containerName;
045:
046: /** The child's name. */
047: private String childName;
048:
049: /**
050: * Creates a new container event recordable with the specified values.
051: *
052: * @param env the environment
053: * @param ID the event id
054: * @param sourceName the name of the events source
055: * @param sourceClass the classname of the event's source
056: * @param duration the duration
057: * @param procTime DOCUMENT ME!
058: * @param componentName the component's name
059: * @param rootName the root component name
060: * @param containerName the container's name
061: * @param childName the child's name
062: */
063: public ContainerEventRecordable(Environment env, int ID,
064: String sourceName, String sourceClass, long duration,
065: long procTime, String componentName, String rootName,
066: String containerName, String childName) {
067: super (env, ID, sourceName, sourceClass, duration, procTime,
068: componentName, rootName);
069: setContainerName(containerName);
070: setChildName(childName);
071: }
072:
073: /**
074: * Creates a new container event recordable with the values of the given event and additional
075: * information.
076: *
077: * @param env the environment
078: * @param containerEvent the container event to take the main information from
079: * @param components the instance which knows the components
080: * @param duration the relative time
081: * @param procTime DOCUMENT ME!
082: */
083: public ContainerEventRecordable(Environment env,
084: ContainerEvent containerEvent, Components components,
085: long duration, long procTime) {
086: this (env,
087: containerEvent.getID(),
088: components.getName((Component) containerEvent
089: .getSource()), // The internally generated name of the event source
090: Components.getClassName(containerEvent.getSource()),
091: duration, procTime,
092: containerEvent.getComponent().getName(), // The name of the component set by the programmer
093:
094: // of the captured application
095: components.getName(components.getRoot(containerEvent
096: .getComponent())), components
097: .getName(containerEvent.getContainer()),
098: components.getName(containerEvent.getChild()));
099: }
100:
101: /**
102: * Creates a container event recordable with default values and no environment. The environment
103: * should be defined with the method {@link
104: * jacareto.system.EnvironmentMember#setEnvironment(Environment)} before environment instances
105: * will be accessed.
106: */
107: public ContainerEventRecordable() {
108: this (null, 0, "", "", 0, 0, "", "", "", "");
109: }
110:
111: /**
112: * Sets the name of the related container.
113: *
114: * @param containerName the name of the container
115: */
116: public void setContainerName(String containerName) {
117: this .containerName = containerName;
118: fireValuesChanged();
119: }
120:
121: /**
122: * Returns the container's name
123: *
124: * @return DOCUMENT ME!
125: */
126: public String getContainerName() {
127: return containerName;
128: }
129:
130: /**
131: * Sets the name of the related child component.
132: *
133: * @param childName the name of the child
134: */
135: public void setChildName(String childName) {
136: this .childName = childName;
137: fireValuesChanged();
138: }
139:
140: /**
141: * Returns the child's name
142: *
143: * @return DOCUMENT ME!
144: */
145: public String getChildName() {
146: return childName;
147: }
148:
149: /**
150: * Returns the name of the container event recordable
151: *
152: * @return the name
153: */
154: public String getElementName() {
155: return getLanguage().getString("ContainerEventRecordable.Name");
156: }
157:
158: /**
159: * Returns a String which describes the content of the recordable shortly.
160: *
161: * @return a string with a short description of the object
162: */
163: public String toShortString() {
164: String eventString = null;
165:
166: switch (getID()) {
167: case ContainerEvent.COMPONENT_ADDED:
168: eventString = language.getString("ContainerEvent.Added");
169:
170: break;
171:
172: case ContainerEvent.COMPONENT_REMOVED:
173: eventString = language.getString("ContainerEvent.Removed");
174:
175: break;
176: }
177:
178: return eventString;
179: }
180:
181: /**
182: * Returns a string representation of the container event recordable.
183: *
184: * @return the string representation
185: */
186: public String toString() {
187: return "ContainerEventRecordable[" + getSourceName() + ",ID="
188: + getID() + ",duration=" + getDuration()
189: + ",container=" + getContainerName() + ",child="
190: + getChildName() + "]";
191: }
192:
193: /**
194: * Returns a description of the recordable.
195: *
196: * @return the description
197: */
198: public String getElementDescription() {
199: return getLanguage().getString(
200: "ContainerEventRecordable.Description");
201: }
202:
203: /**
204: * Returns the event with the attributes specified by this recordable (except for the component
205: * attributes which will be dummy components).
206: *
207: * @return DOCUMENT ME!
208: */
209: public AWTEvent getEvent() {
210: return new ContainerEvent(new Panel(), getID(), new JLabel());
211: }
212: }
|