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.editor;
025:
026: import jacareto.record.PauseRecordable;
027: import jacareto.struct.StructureElement;
028: import jacareto.system.Environment;
029: import jacareto.toolkit.event.TextValueListener;
030: import jacareto.toolkit.swing.LongTextField;
031:
032: import java.awt.Component;
033: import java.awt.GridBagConstraints;
034: import java.awt.GridBagLayout;
035:
036: import javax.swing.JLabel;
037: import javax.swing.JPanel;
038: import javax.swing.event.DocumentEvent;
039:
040: /**
041: * An editor for pause recordables.
042: *
043: * @author <a href="mailto:cspannagel@web.de">Christian Spannagel</a>
044: * @version 1.01
045: */
046: public class PauseRecordableEditor extends Editor {
047: /** The editor's component. */
048: protected JPanel editorPanel;
049:
050: /** The grid bag constraints. */
051: protected GridBagConstraints c;
052:
053: /** The element to edit. */
054: private StructureElement element;
055:
056: /** The text area for the duration. */
057: private LongTextField durationField;
058:
059: /**
060: * Create a new pause recordable editor.
061: *
062: * @param env the environment
063: */
064: public PauseRecordableEditor(Environment env) {
065: super (env);
066: editorPanel = new JPanel();
067: c = new GridBagConstraints();
068: editorPanel.setLayout(new GridBagLayout());
069:
070: // The duration field label
071: c.gridx = 0;
072: c.gridy = 0;
073:
074: JLabel durationFieldLabel = new JLabel(
075: language
076: .getString("Recordables.PauseRecordable.Attributes.Duration")
077: + ":");
078: editorPanel.add(durationFieldLabel, c);
079:
080: // The duration field
081: c.gridx = 1;
082: durationField = new LongTextField(5);
083: durationField.getDocument().addDocumentListener(
084: new TextValueListener() {
085: public void textValueChanged(DocumentEvent e) {
086: if (isUpdateOnChange && (getElement() != null)) {
087: ((PauseRecordable) getElement())
088: .setDuration(durationField
089: .getValue());
090: }
091: }
092: });
093: editorPanel.add(durationField, c);
094: durationFieldLabel.setLabelFor(durationField);
095: }
096:
097: /**
098: * Returns whether this editor is responsible for a given structure element. This editor is
099: * responsible for pause recordables.
100: *
101: * @param element the structure element
102: *
103: * @return <code>true</code> if <i>element</i> is a pause recordable and not <code>null</code>,
104: * otherwise <code>false</code>
105: */
106: public boolean handlesElement(StructureElement element) {
107: return (element != null)
108: && (element instanceof PauseRecordable);
109: }
110:
111: /**
112: * Returns the actual structure element to be edited.
113: *
114: * @return DOCUMENT ME!
115: */
116: public StructureElement getElement() {
117: return element;
118: }
119:
120: /**
121: * Sets the element to edit.
122: *
123: * @param element DOCUMENT ME!
124: */
125: public void setElement(StructureElement element) {
126: this .element = element;
127:
128: PauseRecordable pause = (PauseRecordable) element;
129: durationField.setValue(pause.getDuration());
130: }
131:
132: /**
133: * Returns the component of the editor.
134: *
135: * @return the editor component
136: */
137: public Component getComponent() {
138: return editorPanel;
139: }
140: }
|