javax.swing.undo

Class UndoableEditSupport

public class UndoableEditSupport extends Object

A helper class for supporting {@link javax.swing.event.UndoableEditListener}.
Field Summary
protected CompoundEditcompoundEdit
compoundEdit
protected Vector<UndoableEditListener>listeners
The currently registered listeners.
protected ObjectrealSource
The source of the broadcast UndoableEditEvents.
protected intupdateLevel
The number of times that {@link #beginUpdate()} has been called without a matching call to {@link #endUpdate()}.
Constructor Summary
UndoableEditSupport()
Constructs a new helper for broadcasting UndoableEditEvents.
UndoableEditSupport(Object realSource)
Constructs a new helper for broadcasting UndoableEditEvents.
Method Summary
voidaddUndoableEditListener(UndoableEditListener val)
Registers a listener.
voidbeginUpdate()
Starts a (possibly nested) update session.
protected CompoundEditcreateCompoundEdit()
Creates a new instance of {@link CompoundEdit}.
voidendUpdate()
Ends an update session.
UndoableEditListener[]getUndoableEditListeners()
Returns an array containing the currently registered listeners.
intgetUpdateLevel()
Returns the current update level.
voidpostEdit(UndoableEdit edit)
If {@link #beginUpdate} has been called (so that the current update level is greater than zero), adds the specified edit to {@link #compoundEdit}.
voidremoveUndoableEditListener(UndoableEditListener val)
Unregisters a listener.
StringtoString()
Returns a string representation of this object that may be useful for debugging.
protected void_postEdit(UndoableEdit edit)
Notifies all registered listeners that an {@link UndoableEditEvent} has occured.

Field Detail

compoundEdit

protected CompoundEdit compoundEdit
compoundEdit

listeners

protected Vector<UndoableEditListener> listeners
The currently registered listeners.

realSource

protected Object realSource
The source of the broadcast UndoableEditEvents.

updateLevel

protected int updateLevel
The number of times that {@link #beginUpdate()} has been called without a matching call to {@link #endUpdate()}.

Constructor Detail

UndoableEditSupport

public UndoableEditSupport()
Constructs a new helper for broadcasting UndoableEditEvents. The events will indicate the newly constructed UndoableEditSupport instance as their source.

See Also: UndoableEditSupport

UndoableEditSupport

public UndoableEditSupport(Object realSource)
Constructs a new helper for broadcasting UndoableEditEvents.

Parameters: realSource the source of the UndoableEditEvents that will be broadcast by this helper. If realSource is null, the events will indicate the newly constructed UndoableEditSupport instance as their source.

Method Detail

addUndoableEditListener

public void addUndoableEditListener(UndoableEditListener val)
Registers a listener.

Parameters: val the listener to be added.

beginUpdate

public void beginUpdate()
Starts a (possibly nested) update session. If the current update level is zero, {@link #compoundEdit} is set to the result of the {@link #createCompoundEdit} method. In any case, the update level is increased by one.

Thread Safety: It is safe to call this method from any thread without external synchronization.

createCompoundEdit

protected CompoundEdit createCompoundEdit()
Creates a new instance of {@link CompoundEdit}. Called by {@link #beginUpdate}. If a subclass wants {@link #beginUpdate} to work on a specific {@link #compoundEdit}, it should override this method.

Returns: a newly created instance of {@link CompoundEdit}.

endUpdate

public void endUpdate()
Ends an update session. If the terminated session was the outermost session, {@link #compoundEdit} will receive an end message, and {@link #_postEdit} gets called in order to notify any listeners. Finally, the compoundEdit is discarded.

Thread Safety: It is safe to call this method from any thread without external synchronization.

getUndoableEditListeners

public UndoableEditListener[] getUndoableEditListeners()
Returns an array containing the currently registered listeners.

getUpdateLevel

public int getUpdateLevel()
Returns the current update level.

postEdit

public void postEdit(UndoableEdit edit)
If {@link #beginUpdate} has been called (so that the current update level is greater than zero), adds the specified edit to {@link #compoundEdit}. Otherwise, notify listeners of the edit by calling {@link #_postEdit(UndoableEdit)}.

Thread Safety: It is safe to call this method from any thread without external synchronization.

Parameters: edit the edit action to be posted.

removeUndoableEditListener

public void removeUndoableEditListener(UndoableEditListener val)
Unregisters a listener.

Parameters: val the listener to be removed.

toString

public String toString()
Returns a string representation of this object that may be useful for debugging.

_postEdit

protected void _postEdit(UndoableEdit edit)
Notifies all registered listeners that an {@link UndoableEditEvent} has occured.

Lack of Thread Safety: It is not safe to call this method from concurrent threads, unless the call is protected by a synchronization on this UndoableEditSupport instance.

Parameters: edit the edit action to be posted.