javax.swing.undo

Class UndoableEditSupport


public class UndoableEditSupport
extends Object

A helper class for supporting UndoableEditListener.

Field Summary

protected CompoundEdit
compoundEdit
compoundEdit
protected Vector
listeners
The currently registered listeners.
protected Object
realSource
The source of the broadcast UndoableEditEvents.
protected int
updateLevel
The number of times that beginUpdate() has been called without a matching call to endUpdate().

Constructor Summary

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

Method Summary

protected void
_postEdit(UndoableEdit edit)
Notifies all registered listeners that an UndoableEditEvent has occured.
void
addUndoableEditListener(UndoableEditListener val)
Registers a listener.
void
beginUpdate()
Starts a (possibly nested) update session.
protected CompoundEdit
createCompoundEdit()
Creates a new instance of CompoundEdit.
void
endUpdate()
Ends an update session.
UndoableEditListener[]
getUndoableEditListeners()
Returns an array containing the currently registered listeners.
int
getUpdateLevel()
Returns the current update level.
void
postEdit(UndoableEdit edit)
If beginUpdate() has been called (so that the current update level is greater than zero), adds the specified edit to compoundEdit.
void
removeUndoableEditListener(UndoableEditListener val)
Unregisters a listener.
String
toString()
Returns a string representation of this object that may be useful for debugging.

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

compoundEdit

protected CompoundEdit compoundEdit
compoundEdit

listeners

protected Vector listeners
The currently registered listeners.

realSource

protected Object realSource
The source of the broadcast UndoableEditEvents.

updateLevel

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

Constructor Details

UndoableEditSupport

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

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 Details

_postEdit

protected void _postEdit(UndoableEdit edit)
Notifies all registered listeners that an 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.

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, compoundEdit is set to the result of the 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 CompoundEdit. Called by beginUpdate(). If a subclass wants beginUpdate() to work on a specific compoundEdit, it should override this method.
Returns:
a newly created instance of CompoundEdit.

endUpdate

public void endUpdate()
Ends an update session. If the terminated session was the outermost session, compoundEdit will receive an end message, and _postEdit(UndoableEdit) 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 beginUpdate() has been called (so that the current update level is greater than zero), adds the specified edit to compoundEdit. Otherwise, notify listeners of the edit by calling _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.
Overrides:
toString in interface Object

UndoableEditSupport.java -- Copyright (C) 2002, 2003, 2004, 2005, 2006, Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.