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