001: package org.apache.ojb.tools.mapping.reversedb2.propertyEditors;
002:
003: /* Copyright 2002-2005 The Apache Software Foundation
004: *
005: * Licensed under the Apache License, Version 2.0 (the "License");
006: * you may not use this file except in compliance with the License.
007: * You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: /**
019: * This class provides a basic implementation of a PropertyEditor and a TreeNode.
020: * This is the typical application of the propertyEditor framework, you will usually
021: * have a tree or a table with an overview of possibly editable objects and a panel
022: * with a detailed view on the object.
023: *
024: * The properties are maintained in a HashMap, setProperty sets these properties,
025: * getProperty retrieves them. You may want to define public final keys for your
026: * properties in order to have uniform access to them from all editors.
027: *
028: * @author <a href="mailto:bfl@florianbruckner.com">Florian Bruckner</a>
029: * @version $Id: EditableTreeNodeWithProperties.java,v 1.1.2.1 2005/12/21 22:33:27 tomdz Exp $
030: */
031: public abstract class EditableTreeNodeWithProperties
032: implements
033: javax.swing.tree.TreeNode,
034: org.apache.ojb.tools.mapping.reversedb2.propertyEditors.PropertyEditorTarget,
035: java.io.Serializable {
036: static final long serialVersionUID = -8720549176372985715L;
037: private java.util.HashMap hmAttributes = new java.util.HashMap();
038:
039: protected java.beans.PropertyChangeSupport propertyChangeDelegate = new java.beans.PropertyChangeSupport(
040: this );
041:
042: /** Creates a new instance of EditableTreeNodeWithProperties */
043: public EditableTreeNodeWithProperties() {
044: }
045:
046: /**
047: * Add a new PropertyChangeListener to this node. This functionality has
048: * been borrowed from the java.beans package, though this class has
049: * nothing to do with a bean
050: */
051: public void addPropertyChangeListener(
052: java.beans.PropertyChangeListener listener) {
053: this .propertyChangeDelegate.addPropertyChangeListener(listener);
054: }
055:
056: /**
057: * Add a new PropertyChangeListener to this node for a specific property.
058: * This functionality has
059: * been borrowed from the java.beans package, though this class has
060: * nothing to do with a bean
061: */
062: public void addPropertyChangeListener(String propertyName,
063: java.beans.PropertyChangeListener listener) {
064: this .propertyChangeDelegate.addPropertyChangeListener(
065: propertyName, listener);
066: }
067:
068: /**
069: * Remove a PropertyChangeListener from this node. This functionality has
070: * been borrowed from the java.beans package, though this class has
071: * nothing to do with a bean
072: */
073: public void removePropertyChangeListener(
074: java.beans.PropertyChangeListener listener) {
075: this .propertyChangeDelegate
076: .removePropertyChangeListener(listener);
077: }
078:
079: /**
080: * Remove a PropertyChangeListener for a specific property from this node.
081: * This functionality has. Please note that the listener this does not remove
082: * a listener that has been added without specifying the property it is
083: * interested in.
084: */
085: public void removePropertyChangeListener(String propertyName,
086: java.beans.PropertyChangeListener listener) {
087: this .propertyChangeDelegate.removePropertyChangeListener(
088: propertyName, listener);
089: }
090:
091: /**
092: * Get an attribute of this node as Object. This method is backed by
093: * a HashMap, so all rules of HashMap apply to this method.
094: */
095: public Object getAttribute(String strKey) {
096: return hmAttributes.get(strKey);
097: }
098:
099: /**
100: * Set an attribute of this node as Object. This method is backed by
101: * a HashMap, so all rules of HashMap apply to this method.
102: * Fires a PropertyChangeEvent.
103: */
104: public void setAttribute(String strKey, Object value) {
105: this.propertyChangeDelegate.firePropertyChange(strKey,
106: hmAttributes.put(strKey, value), value);
107: }
108:
109: }
|