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.Component;
030:
031: import javax.swing.event.HyperlinkEvent;
032:
033: /**
034: * This class represents hyperlink events.
035: *
036: * @author <a href="mailto:cspannagel@web.de">Christian Spannagel</a>
037: * @version 1.0
038: */
039: public class HyperlinkEventRecordable extends EventObjectRecordable {
040: /** The url (as string). */
041: private String url;
042:
043: /** The description. */
044: private String description;
045:
046: /** The event type (as string). */
047: private String type;
048:
049: /**
050: * Creates a new hyperlink event recordable with the specified values.
051: *
052: * @param env the env object
053: * @param sourceName the name of the events source
054: * @param sourceClass the classname of the source
055: * @param duration the duration
056: * @param procTime DOCUMENT ME!
057: * @param url the url as string
058: * @param description the description of the link
059: * @param type the type of the event, as string
060: */
061: public HyperlinkEventRecordable(Environment env, String sourceName,
062: String sourceClass, long duration, long procTime,
063: String url, String description, String type) {
064: super (env, sourceName, sourceClass, duration, procTime);
065: setURL(url);
066: setDescription(description);
067: setType(type);
068: }
069:
070: /**
071: * Creates a HyperlinkEventRecordable with default values and no environment. The environment
072: * should be defined with the method {@link
073: * jacareto.system.EnvironmentMember#setEnvironment(Environment)} before environment instances
074: * will be accessed.
075: */
076: public HyperlinkEventRecordable() {
077: this (null, "", "", 0, 0, "", "", "");
078: }
079:
080: /**
081: * Creates a HyperlinkEventRecordable with the valued of the given hyperlink event.
082: *
083: * @param env the environment
084: * @param event the hyperlink event
085: * @param components the components
086: * @param duration the duration
087: * @param procTime DOCUMENT ME!
088: */
089: public HyperlinkEventRecordable(Environment env,
090: HyperlinkEvent event, Components components, long duration,
091: long procTime) {
092: this (env, components.getName((Component) event.getSource()),
093: Components.getClassName(event.getSource()), duration,
094: procTime, event.getURL().toString(), event
095: .getDescription(), event.getEventType()
096: .toString());
097: }
098:
099: /**
100: * Sets the url of the event.
101: *
102: * @param url url, as string
103: */
104: public void setURL(String url) {
105: this .url = url;
106: fireValuesChanged();
107: }
108:
109: /**
110: * Returns the url of the event as string.
111: *
112: * @return DOCUMENT ME!
113: */
114: public String getURL() {
115: return url;
116: }
117:
118: /**
119: * Sets the description of the event.
120: *
121: * @param description description, as string
122: */
123: public void setDescription(String description) {
124: this .description = description;
125: fireValuesChanged();
126: }
127:
128: /**
129: * Returns the url of the event as string.
130: *
131: * @return DOCUMENT ME!
132: */
133: public String getDescription() {
134: return description;
135: }
136:
137: /**
138: * Sets the type of the event.
139: *
140: * @param type type, as string
141: */
142: public void setType(String type) {
143: this .type = type;
144: fireValuesChanged();
145: }
146:
147: /**
148: * Returns the type of the event as string.
149: *
150: * @return DOCUMENT ME!
151: */
152: public String getType() {
153: return type;
154: }
155:
156: /**
157: * Returns the name of the key event recordable
158: *
159: * @return the name
160: */
161: public String getElementName() {
162: return getLanguage().getString(
163: "Recordables.HyperlinkEventRecordable.Name");
164: }
165:
166: /**
167: * Returns a description of the recordable.
168: *
169: * @return the description
170: */
171: public String getElementDescription() {
172: return getLanguage().getString(
173: "Recordables.HyperlinkEventRecordable.Description");
174: }
175:
176: /**
177: * Returns a String which describes the content of the recordable shortly.
178: *
179: * @return a string with a short description of the object
180: */
181: public String toShortString() {
182: String insertedText = ((getURL().length() < 40) ? getURL()
183: : (getURL().substring(0, 37) + "..."));
184:
185: return getElementName() + " (" + insertedText + ")";
186: }
187:
188: /**
189: * Returns a string representation of the recordable.
190: *
191: * @return the string representation
192: */
193: public String toString() {
194: return "HyperlinkEventRecordable[" + getSourceName() + ","
195: + getURL() + "," + getDescription() + "," + getType()
196: + "]";
197: }
198:
199: public boolean hasProcTime() {
200: return true;
201: }
202: }
|