javax.help.AbstractHelpAction Maven / Gradle / Ivy
/*
* @(#) AbstractHelpAction.java 1.1 - last change made 10/19/01
*
* Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
*
* This software is the confidential and proprietary information of Sun
* Microsystems, Inc. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with Sun.
*
* SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
* SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
* SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
* THIS SOFTWARE OR ITS DERIVATIVES.
*/
package javax.help;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.Hashtable;
/**
*
* @author Stepan Marek
* @version 1.1 10/19/01
*/
public abstract class AbstractHelpAction implements HelpAction {
AbstractHelpAction(Object control, String name) {
this.control = control;
putValue("name", name);
}
/** Holds value of property enabled. */
private boolean enabled = true;
/** Holds value of property control. */
private Object control;
private Hashtable table;
/** Utility field used by bound properties. */
private PropertyChangeSupport propertyChangeSupport;;
/** Add a PropertyChangeListener to the listener list.
* @param l The listener to add.
*/
public synchronized void addPropertyChangeListener(PropertyChangeListener l) {
if (propertyChangeSupport == null) {
propertyChangeSupport = new PropertyChangeSupport(this);
}
propertyChangeSupport.addPropertyChangeListener(l);
}
/** Removes a PropertyChangeListener from the listener list.
* @param l The listener to remove.
*/
public synchronized void removePropertyChangeListener(PropertyChangeListener l) {
if (propertyChangeSupport == null) {
propertyChangeSupport = new PropertyChangeSupport(this);
}
propertyChangeSupport.removePropertyChangeListener(l);
}
/**
* Supports reporting bound property changes. This method can be called
* when a bound property has changed and it will send the appropriate
* PropertyChangeEvent
to any registered
* PropertyChangeListeners
.
*/
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
if (propertyChangeSupport == null) {
return;
}
propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
}
/** Getter for property enabled.
* @return Value of property enabled.
*/
public boolean isEnabled() {
return enabled;
}
/** Setter for property enabled.
* @param enabled New value of property enabled.
*/
public void setEnabled(boolean enabled) {
boolean oldEnabled = this.enabled;
this.enabled = enabled;
firePropertyChange("enabled", new Boolean(oldEnabled), new Boolean(enabled));
}
/** Getter for property control.
* @return Value of property control.
*/
public Object getControl() {
return control;
}
/**
* Gets the Object
associated with the specified key.
*
* @param key a string containing the specified key
* @return the binding Object
stored with this key; if there
* are no keys, it will return null
* @see Action#getValue
*/
public Object getValue(String key) {
if (table == null) {
return null;
}
return table.get(key);
}
/**
* Sets the Value
associated with the specified key.
*
* @param key the String
that identifies the stored object
* @param newValue the Object
to store using this key
* @see Action#putValue
*/
public void putValue(String key, Object newValue) {
if (table == null) {
table = new Hashtable();
}
Object oldValue;
if (newValue == null) {
oldValue = table.remove(key);
} else {
oldValue = table.put(key, newValue);
}
firePropertyChange(key, oldValue, newValue);
}
}