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.Dialog;
032: import java.awt.Frame;
033: import java.awt.Window;
034: import java.awt.event.WindowEvent;
035:
036: /**
037: * This class represents window events which can be recorded.
038: *
039: * @author <a href="mailto:cspannagel@web.de">Christian Spannagel</a>
040: * @version 1.01
041: */
042: public class WindowEventRecordable extends ComponentEventRecordable {
043: /** The window's name. */
044: private String windowName;
045:
046: /** The window's title. */
047: private String windowTitle;
048:
049: /**
050: * Creates a new window 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 name of the root component
060: * @param windowName the window's name
061: * @param windowTitle DOCUMENT ME!
062: */
063: public WindowEventRecordable(Environment env, int ID,
064: String sourceName, String sourceClass, long duration,
065: long procTime, String componentName, String rootName,
066: String windowName, String windowTitle) {
067: super (env, ID, sourceName, sourceClass, duration, procTime,
068: componentName, rootName);
069: setWindowName(windowName);
070: setWindowTitle(windowTitle);
071: }
072:
073: /**
074: * Creates a new window event recordable with the specified values (but no title).
075: *
076: * @param env the environment
077: * @param ID the event id
078: * @param sourceName the name of the events source
079: * @param sourceClass the classname of the event's source
080: * @param duration the duration
081: * @param procTime DOCUMENT ME!
082: * @param componentName the component's name
083: * @param rootName the name of the root component
084: * @param windowName the window's name
085: */
086: public WindowEventRecordable(Environment env, int ID,
087: String sourceName, String sourceClass, long duration,
088: long procTime, String componentName, String rootName,
089: String windowName) {
090: this (env, ID, sourceName, sourceClass, duration, procTime,
091: componentName, rootName, windowName, "");
092: }
093:
094: /**
095: * Creates a new window event recordable with the values of the given event and additional
096: * information.
097: *
098: * @param env the environment
099: * @param windowEvent the window event to take the main information from
100: * @param components the instance which knows the components
101: * @param duration the duration
102: * @param procTime DOCUMENT ME!
103: */
104: public WindowEventRecordable(Environment env,
105: WindowEvent windowEvent, Components components,
106: long duration, long procTime) {
107: this (
108: env,
109: windowEvent.getID(),
110: components.getName((Component) windowEvent.getSource()), // The internally generated name of the event source
111: Components.getClassName(windowEvent.getSource()),
112: duration, procTime, windowEvent.getComponent()
113: .getName(), // The name of the component set by the programmer
114:
115: // of the captured application
116: components.getName(components.getRoot(windowEvent
117: .getComponent())), components
118: .getName(windowEvent.getWindow()), "");
119:
120: Window window = windowEvent.getWindow();
121:
122: if (window instanceof Frame) {
123: setWindowTitle(((Frame) window).getTitle());
124: } else if (window instanceof Dialog) {
125: setWindowTitle(((Dialog) window).getTitle());
126: }
127: }
128:
129: /**
130: * Creates a window event recordable with default values and no environment. The environment
131: * should be defined with the method {@link
132: * jacareto.system.EnvironmentMember#setEnvironment(Environment)} before environment instances
133: * will be accessed.
134: */
135: public WindowEventRecordable() {
136: this (null, 0, "", "", 0, 0, "", "", "");
137: }
138:
139: /**
140: * Sets the name of the related window.
141: *
142: * @param windowName the name of the window
143: */
144: public void setWindowName(String windowName) {
145: this .windowName = windowName;
146: fireValuesChanged();
147: }
148:
149: /**
150: * Returns the window's name
151: *
152: * @return DOCUMENT ME!
153: */
154: public String getWindowName() {
155: return windowName;
156: }
157:
158: /**
159: * Sets the title of the related window.
160: *
161: * @param windowTitle the title of the window
162: */
163: public void setWindowTitle(String windowTitle) {
164: this .windowTitle = windowTitle;
165: fireValuesChanged();
166: }
167:
168: /**
169: * Returns the window's title
170: *
171: * @return DOCUMENT ME!
172: */
173: public String getWindowTitle() {
174: return windowTitle;
175: }
176:
177: /**
178: * Returns the name of the window event recordable
179: *
180: * @return the name
181: */
182: public String getElementName() {
183: return getLanguage().getString(
184: "Recordables.WindowEventRecordable.Name");
185: }
186:
187: /**
188: * Returns a String which describes the content of the recordable shortly.
189: *
190: * @return a string with a short description of the object
191: */
192: public String toShortString() {
193: String result = null;
194:
195: switch (getID()) {
196: case WindowEvent.WINDOW_ACTIVATED:
197: result = language.getString("Events.WindowEvent.Activated");
198:
199: break;
200:
201: case WindowEvent.WINDOW_CLOSED:
202: result = language.getString("Events.WindowEvent.Closed");
203:
204: break;
205:
206: case WindowEvent.WINDOW_CLOSING:
207: result = language.getString("Events.WindowEvent.Closing");
208:
209: break;
210:
211: case WindowEvent.WINDOW_DEACTIVATED:
212: result = language
213: .getString("Events.WindowEvent.Deactivated");
214:
215: break;
216:
217: case WindowEvent.WINDOW_DEICONIFIED:
218: result = language
219: .getString("Events.WindowEvent.Deiconified");
220:
221: break;
222:
223: case WindowEvent.WINDOW_ICONIFIED:
224: result = language.getString("Events.WindowEvent.Iconified");
225:
226: break;
227:
228: case WindowEvent.WINDOW_OPENED:
229: result = language.getString("Events.WindowEvent.Opened");
230:
231: break;
232: }
233:
234: if (windowName != null) {
235: String windowIdentifier = (((windowTitle == null) || windowTitle
236: .equals("")) ? windowName : windowTitle);
237: String insertedText = ((windowIdentifier.length() < 40) ? windowIdentifier
238: : (windowIdentifier.substring(0, 37) + "..."));
239: result += (" (" + insertedText + ")");
240: }
241:
242: return result;
243: }
244:
245: /**
246: * Returns a string representation of the window event recordable.
247: *
248: * @return the string representation
249: */
250: public String toString() {
251: return "WindowEventRecordable[" + getSourceName() + ",ID="
252: + getID() + ",duration=" + getDuration() + ",window="
253: + getWindowName() + "]";
254: }
255:
256: /**
257: * Returns a description of the recordable.
258: *
259: * @return the description
260: */
261: public String getElementDescription() {
262: return getLanguage().getString(
263: "Recordables.WindowEventRecordable.Description");
264: }
265:
266: /**
267: * Returns the event with the attributes specified by this recordable (except for the component
268: * attributes which will be dummy components).
269: *
270: * @return DOCUMENT ME!
271: */
272: public AWTEvent getEvent() {
273: return new WindowEvent(new Frame(), getID());
274: }
275: }
|