FileDocCategorySizeDatePackage
AbstractAction.javaAPI DocJava SE 5 API8470Fri Aug 26 14:57:52 BST 2005javax.swing

AbstractAction

public abstract class AbstractAction extends Object implements Action, Serializable, Cloneable
This class provides default implementations for the JFC Action interface. Standard behaviors like the get and set methods for Action object properties (icon, text, and enabled) are defined here. The developer need only subclass this abstract class and define the actionPerformed method.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package. Please see {@link java.beans.XMLEncoder}.

version
1.51 12/19/03
author
Georges Saab
see
Action

Fields Summary
protected boolean
enabled
Specifies whether action is enabled; the default is true.
private transient ArrayTable
arrayTable
Contains the array of key bindings.
protected SwingPropertyChangeSupport
changeSupport
If any PropertyChangeListeners have been registered, the changeSupport field describes them.
Constructors Summary
public AbstractAction()
Defines an Action object with a default description string and default icon.

    
                     
      
    
public AbstractAction(String name)
Defines an Action object with the specified description string and a default icon.

	putValue(Action.NAME, name);
    
public AbstractAction(String name, Icon icon)
Defines an Action object with the specified description string and a the specified icon.

	this(name);
	putValue(Action.SMALL_ICON, icon);
    
Methods Summary
public synchronized voidaddPropertyChangeListener(java.beans.PropertyChangeListener listener)
Adds a PropertyChangeListener to the listener list. The listener is registered for all properties.

A PropertyChangeEvent will get fired in response to setting a bound property, e.g. setFont, setBackground, or setForeground. Note that if the current component is inheriting its foreground, background, or font from its container, then no event will be fired in response to a change in the inherited property.

param
listener The PropertyChangeListener to be added
see
Action#addPropertyChangeListener

        if (changeSupport == null) {
	    changeSupport = new SwingPropertyChangeSupport(this);
        }
        changeSupport.addPropertyChangeListener(listener);
    
protected java.lang.Objectclone()
Clones the abstract action. This gives the clone its own copy of the key/value list, which is not handled for you by Object.clone().

	AbstractAction newAction = (AbstractAction)super.clone();
	synchronized(this) {
	    if (arrayTable != null) {
		newAction.arrayTable = (ArrayTable)arrayTable.clone();
	    }
	}
	return newAction;
    
protected voidfirePropertyChange(java.lang.String propertyName, java.lang.Object oldValue, java.lang.Object newValue)
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.

        if (changeSupport == null || 
	    (oldValue != null && newValue != null && oldValue.equals(newValue))) {
            return;
        }
        changeSupport.firePropertyChange(propertyName, oldValue, newValue);
    
public java.lang.Object[]getKeys()
Returns an array of Objects which are keys for which values have been set for this AbstractAction, or null if no keys have values set.

return
an array of key objects, or null if no keys have values set
since
1.3

	if (arrayTable == null) {
	    return null;
	}
	Object[] keys = new Object[arrayTable.size()];
	arrayTable.getKeys(keys);
	return keys;
    
public synchronized java.beans.PropertyChangeListener[]getPropertyChangeListeners()
Returns an array of all the PropertyChangeListeners added to this AbstractAction with addPropertyChangeListener().

return
all of the PropertyChangeListeners added or an empty array if no listeners have been added
since
1.4

        if (changeSupport == null) {
            return new PropertyChangeListener[0];
        }
        return changeSupport.getPropertyChangeListeners();
    
public java.lang.ObjectgetValue(java.lang.String key)
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

	if (arrayTable == null) {
	    return null;
	}
	return arrayTable.get(key);
    
public booleanisEnabled()
Returns true if the action is enabled.

return
true if the action is enabled, false otherwise
see
Action#isEnabled

	return enabled;
    
public voidputValue(java.lang.String key, java.lang.Object newValue)
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

	Object oldValue = null;
	if (arrayTable == null) {
	    arrayTable = new ArrayTable();
	}
	if (arrayTable.containsKey(key))
	    oldValue = arrayTable.get(key);
	// Remove the entry for key if newValue is null
	// else put in the newValue for key.
	if (newValue == null) {
	    arrayTable.remove(key);
	} else {
	    arrayTable.put(key,newValue);
	}
	firePropertyChange(key, oldValue, newValue);
    
private voidreadObject(java.io.ObjectInputStream s)

        s.defaultReadObject();
	for (int counter = s.readInt() - 1; counter >= 0; counter--) {
	    putValue((String)s.readObject(), s.readObject());
	}
    
public synchronized voidremovePropertyChangeListener(java.beans.PropertyChangeListener listener)
Removes a PropertyChangeListener from the listener list. This removes a PropertyChangeListener that was registered for all properties.

param
listener the PropertyChangeListener to be removed
see
Action#removePropertyChangeListener

        if (changeSupport == null) {
            return;
        }
        changeSupport.removePropertyChangeListener(listener);
    
public voidsetEnabled(boolean newValue)
Enables or disables the action.

param
newValue true to enable the action, false to disable it
see
Action#setEnabled

	boolean oldValue = this.enabled;

	if (oldValue != newValue) {
	    this.enabled = newValue;
	    firePropertyChange("enabled", 
			       Boolean.valueOf(oldValue), Boolean.valueOf(newValue));
	}
    
private voidwriteObject(java.io.ObjectOutputStream s)

	// Store the default fields
        s.defaultWriteObject();

        // And the keys
        ArrayTable.writeArrayTable(s, arrayTable);