org.pietschy.command.undo

Class UndoableToggleCommand

Implemented Interfaces:
ActionCommandExecutor, UndoableEventSource
Known Direct Subclasses:
SimpleUndoToggle

public abstract class UndoableToggleCommand
extends ToggleCommand
implements UndoableEventSource

UndoableToggleCommands provide a default implementation for toggle commands that can be undone. UndoableToggleCommands implement UndoableEventSource and can be monitored by an UndoController.

Subclasses must implement performEdit(boolean) to handle the selection process.

See Also:
performEdit(boolean), applySelection(boolean)

Field Summary

Fields inherited from class org.pietschy.command.ActionCommand

HINT_ACTION_EVENT, HINT_INVOKER, HINT_INVOKER_WINDOW, HINT_MODIFIERS

Fields inherited from class org.pietschy.command.Command

internalLog, listenerList, pcs

Constructor Summary

UndoableToggleCommand()
Creates a new anonymous UndoableToggleCommand.
UndoableToggleCommand(String commandId)
Creates a new command with the speicifed Id that is bound to the CommandManager.defaultInstance().
UndoableToggleCommand(CommandManager commandManager, String commandId)
Creates a new command with the specified id that is bound to the specified CommandManager.

Method Summary

void
addUndoableEditListener(UndoableEditListener l)
Adds a new javax.swing.event.UndoableEditListener to this command.
UndoableEditListener[]
getUndoableEditListeners()
Gets the javax.swing.event.UndoableEditListeners regstered with this command.
protected void
handleSelection(boolean selected)
Delegates to performEdit(boolean)
protected abstract UndoableEdit
performEdit(boolean selected)
Subclasses must override to perform the actual edit.
protected void
postEdit(UndoableEdit e)
Notifies all the javax.swing.event.UndoableEditListeners of the undoable event.
void
removeUndoableEditListener(UndoableEditListener l)
Removes an javax.swing.event.UndoableEditListener from this command.

Methods inherited from class org.pietschy.command.ToggleCommand

addNotify, applySelection, attemptSelection, configureButtonStates, createButton, createCheckBox, createCheckBox, createCheckBox, createCheckBox, createMenuItem, handleExecute, handleSelection, isSelected, removeNotify, requestDefautIn, setSelected

Methods inherited from class org.pietschy.command.ActionCommand

addCommandListener, addInterceptor, areEqual, attach, configureButtonStates, detach, execute, execute, getActionAdapter, getActionAdapter, getActionCommand, getActionEvent, getHint, getHint, getHints, getInvoker, getInvokerWindow, getModifiers, handleExecute, installShortCut, installShortCut, postExecute, preExecute, putHint, putHints, removeCommandListener, removeInterceptor, requestDefautIn, setActionCommand, uninstallShortCut, uninstallShortCut

Methods inherited from class org.pietschy.command.Command

addFace, addHoverListener, addNewFace, addNotify, addPropertyChangeListener, addPropertyChangeListener, attach, buttonIterator, configureButtonAppearance, configureButtonAppearances, configureButtonAppearances, configureButtonStates, createButton, createButton, createButton, createButton, createMenuItem, createMenuItem, createMenuItem, createMenuItem, detach, export, faceExists, fireHoverEnded, fireHoverStarted, getAccelerator, getAlternativeFaceNames, getButtonFactory, getButtonIn, getCommandManager, getDefaultFace, getDefaultFace, getDescription, getFace, getFace, getIcon, getId, getLongDescription, getMenuFactory, getMnemonic, getMnemonicIndex, getProperty, getProperty, getPropertyNames, getSelectedIcon, getText, getTextPosition, getToolbarFactory, initCommandManager, installFace, isAnonymous, isAttachedTo, isEnabled, isVisible, putProperty, removeHoverListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, requestFocusIn, setAccelerator, setButtonFactory, setDescription, setEnabled, setIcon, setLongDescription, setMenuFactory, setMnemonic, setMnemonicIndex, setSelectedIcon, setText, setTextPosition, setToolbarFactory, setVisible, toString

Constructor Details

UndoableToggleCommand

public UndoableToggleCommand()
Creates a new anonymous UndoableToggleCommand. Anonymous commands must be fully programatically generated and can only be added to groups manually by calling groupCommand.installFace(myAnonymousCommand).

UndoableToggleCommand

public UndoableToggleCommand(String commandId)

UndoableToggleCommand

protected UndoableToggleCommand(CommandManager commandManager,
                                String commandId)
Creates a new command with the specified id that is bound to the specified CommandManager.

Method Details

addUndoableEditListener

public void addUndoableEditListener(UndoableEditListener l)
Adds a new javax.swing.event.UndoableEditListener to this command.
Specified by:
addUndoableEditListener in interface UndoableEventSource
Parameters:
l - the listener to installFace.

getUndoableEditListeners

public UndoableEditListener[] getUndoableEditListeners()
Gets the javax.swing.event.UndoableEditListeners regstered with this command.
Specified by:
getUndoableEditListeners in interface UndoableEventSource

handleSelection

protected final void handleSelection(boolean selected)
            throws ToggleVetoException
Delegates to performEdit(boolean)
Overrides:
handleSelection in interface ToggleCommand
Parameters:
selected - the new desired state of the toggle
Throws:
ToggleVetoException - if the new state can't be fullfilled.

performEdit

protected abstract UndoableEdit performEdit(boolean selected)
            throws ToggleVetoException
Subclasses must override to perform the actual edit. This method behaves similar to ToggleCommand.handleSelection(boolean) in that it can throw a ToggleVetoException to cancel the edit.

Please note that the edit object should call applySelection(boolean) to update the state of this command without causing a new UndoableEdit to be created. For example

 class MyToggle.ToggleUndoableEdit extends UndoableEdit
 {
    public void undo()
    {
       // undo any command specific stuff...
       ...
       // and reset our state without causeing any side effects..
       applySelection(oldState);
    }
 }
 
Parameters:
selected - the new selected state of the command.
Returns:
an UndoableEdit object that can undo and redo the commands action.
Throws:
ToggleVetoException - if the toggle action can't proceed.

postEdit

protected void postEdit(UndoableEdit e)
Notifies all the javax.swing.event.UndoableEditListeners of the undoable event.
Parameters:
e - the undoable event.

removeUndoableEditListener

public void removeUndoableEditListener(UndoableEditListener l)
Removes an javax.swing.event.UndoableEditListener from this command.
Specified by:
removeUndoableEditListener in interface UndoableEventSource
Parameters:
l - the listener to remove.