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.event.ActionEvent;
032:
033: import javax.swing.JLabel;
034:
035: /**
036: * This class represents list selection event
037: *
038: * @author <a href="mailto:cspannagel@web.de">Christian Spannagel</a>
039: * @version 1.01
040: */
041: public class ActionEventRecordable extends AWTEventRecordable {
042: /** The modifiers. */
043: private int modifiers;
044:
045: /** The action command. */
046: private String action;
047:
048: /**
049: * Creates a new action event recordable with the specified values.
050: *
051: * @param env the environment
052: * @param ID the event id
053: * @param sourceName the name of the event's source
054: * @param sourceClass the classname of the source
055: * @param duration the duration of replaying including the relativeTime
056: * @param procTime DOCUMENT ME!
057: * @param modifiers the modifiers of the event
058: * @param action the command of the action
059: */
060: public ActionEventRecordable(Environment env, int ID,
061: String sourceName, String sourceClass, long duration,
062: long procTime, int modifiers, String action) {
063: super (env, ID, sourceName, sourceClass, duration, procTime);
064: setModifiers(modifiers);
065: setActionCommand(action);
066: }
067:
068: /**
069: * Creates a new action event recordable with the values of the given event and additional
070: * information.
071: *
072: * @param env the environment
073: * @param actionEvent the action event to take the main information from
074: * @param components the instance which knows the components
075: * @param duration the duration
076: * @param procTime DOCUMENT ME!
077: */
078: public ActionEventRecordable(Environment env,
079: ActionEvent actionEvent, Components components,
080: long duration, long procTime) {
081: this (env, actionEvent.getID(), components
082: .getName((Component) actionEvent.getSource()),
083: Components.getClassName(actionEvent.getSource()),
084: duration, procTime, actionEvent.getModifiers(),
085: actionEvent.getActionCommand());
086: }
087:
088: /**
089: * Creates an empty action event recordable with default values and no environment. The
090: * environment should be defined with the method {@link
091: * jacareto.system.EnvironmentMember#setEnvironment(Environment)} before environment instances
092: * will be accessed.
093: */
094: public ActionEventRecordable() {
095: this (null, 0, "", "", 0, 0, 0, "");
096: }
097:
098: /**
099: * Sets the modifiers.
100: *
101: * @param modifiers the modifiers
102: */
103: public void setModifiers(int modifiers) {
104: this .modifiers = modifiers;
105: fireValuesChanged();
106: }
107:
108: /**
109: * Returns the modifiers.
110: *
111: * @return the modifiers
112: */
113: public int getModifiers() {
114: return modifiers;
115: }
116:
117: /**
118: * Sets the action command.
119: *
120: * @param action the action command
121: */
122: public void setActionCommand(String action) {
123: this .action = action;
124: fireValuesChanged();
125: }
126:
127: /**
128: * Returns the action command.
129: *
130: * @return the action command
131: */
132: public String getActionCommand() {
133: return action;
134: }
135:
136: /**
137: * Returns the name of the mouse event recordable
138: *
139: * @return the name
140: */
141: public String getElementName() {
142: return getLanguage().getString(
143: "Recordables.ActionEventRecordable.Name");
144: }
145:
146: /**
147: * Returns a description of the recordable.
148: *
149: * @return the description
150: */
151: public String getElementDescription() {
152: return getLanguage().getString(
153: "Recordables.ActionEventRecordable.Description");
154: }
155:
156: /**
157: * Returns a String which describes the content of the recordable shortly.
158: *
159: * @return a string with a short description of the recordable
160: */
161: public String toShortString() {
162: return getElementName() + " (" + action + ")";
163: }
164:
165: /**
166: * Returns a string representation.
167: *
168: * @return the string representation
169: */
170: public String toString() {
171: return "ActionEventRecordable[" + getSourceName() + ",ID="
172: + getID() + ",modifiers=" + getModifiers()
173: + ",actionCommand=" + getActionCommand() + ","
174: + getDuration() + "]";
175: }
176:
177: /**
178: * Returns the event with the attributes specified by this recordable (except for the component
179: * attributes which will be dummy components).
180: *
181: * @return DOCUMENT ME!
182: */
183: public AWTEvent getEvent() {
184: return new ActionEvent(new JLabel(), getID(), action, modifiers);
185: }
186:
187: public boolean hasProcTime() {
188: return true;
189: }
190: }
|