< prev index next >
src/java.desktop/share/classes/javax/swing/undo/UndoableEditSupport.java
Print this page
*** 27,37 ****
import javax.swing.event.*;
import java.util.*;
/**
! * A support class used for managing <code>UndoableEdit</code> listeners.
*
* @author Ray Ryan
*/
public class UndoableEditSupport {
/**
--- 27,37 ----
import javax.swing.event.*;
import java.util.*;
/**
! * A support class used for managing {@code UndoableEdit} listeners.
*
* @author Ray Ryan
*/
public class UndoableEditSupport {
/**
*** 50,114 ****
* The real source.
*/
protected Object realSource;
/**
! * Constructs an <code>UndoableEditSupport</code> object.
*/
public UndoableEditSupport() {
this(null);
}
/**
! * Constructs an <code>UndoableEditSupport</code> object.
*
! * @param r an <code>Object</code>
*/
public UndoableEditSupport(Object r) {
realSource = r == null ? this : r;
updateLevel = 0;
compoundEdit = null;
listeners = new Vector<UndoableEditListener>();
}
/**
! * Registers an <code>UndoableEditListener</code>.
* The listener is notified whenever an edit occurs which can be undone.
*
! * @param l an <code>UndoableEditListener</code> object
* @see #removeUndoableEditListener
*/
public synchronized void addUndoableEditListener(UndoableEditListener l) {
listeners.addElement(l);
}
/**
! * Removes an <code>UndoableEditListener</code>.
*
! * @param l the <code>UndoableEditListener</code> object to be removed
* @see #addUndoableEditListener
*/
public synchronized void removeUndoableEditListener(UndoableEditListener l)
{
listeners.removeElement(l);
}
/**
! * Returns an array of all the <code>UndoableEditListener</code>s added
* to this UndoableEditSupport with addUndoableEditListener().
*
! * @return all of the <code>UndoableEditListener</code>s added or an empty
* array if no listeners have been added
* @since 1.4
*/
public synchronized UndoableEditListener[] getUndoableEditListeners() {
return listeners.toArray(new UndoableEditListener[0]);
}
/**
! * Called only from <code>postEdit</code> and <code>endUpdate</code>. Calls
! * <code>undoableEditHappened</code> in all listeners. No synchronization
* is performed here, since the two calling methods are synchronized.
*
* @param e edit to be verified
*/
protected void _postEdit(UndoableEdit e) {
--- 50,114 ----
* The real source.
*/
protected Object realSource;
/**
! * Constructs an {@code UndoableEditSupport} object.
*/
public UndoableEditSupport() {
this(null);
}
/**
! * Constructs an {@code UndoableEditSupport} object.
*
! * @param r an {@code Object}
*/
public UndoableEditSupport(Object r) {
realSource = r == null ? this : r;
updateLevel = 0;
compoundEdit = null;
listeners = new Vector<UndoableEditListener>();
}
/**
! * Registers an {@code UndoableEditListener}.
* The listener is notified whenever an edit occurs which can be undone.
*
! * @param l an {@code UndoableEditListener} object
* @see #removeUndoableEditListener
*/
public synchronized void addUndoableEditListener(UndoableEditListener l) {
listeners.addElement(l);
}
/**
! * Removes an {@code UndoableEditListener}.
*
! * @param l the {@code UndoableEditListener} object to be removed
* @see #addUndoableEditListener
*/
public synchronized void removeUndoableEditListener(UndoableEditListener l)
{
listeners.removeElement(l);
}
/**
! * Returns an array of all the {@code UndoableEditListener}s added
* to this UndoableEditSupport with addUndoableEditListener().
*
! * @return all of the {@code UndoableEditListener}s added or an empty
* array if no listeners have been added
* @since 1.4
*/
public synchronized UndoableEditListener[] getUndoableEditListeners() {
return listeners.toArray(new UndoableEditListener[0]);
}
/**
! * Called only from {@code postEdit} and {@code endUpdate}. Calls
! * {@code undoableEditHappened} in all listeners. No synchronization
* is performed here, since the two calling methods are synchronized.
*
* @param e edit to be verified
*/
protected void _postEdit(UndoableEdit e) {
*** 121,131 ****
}
}
/**
* DEADLOCK WARNING: Calling this method may call
! * <code>undoableEditHappened</code> in all listeners.
* It is unwise to call this method from one of its listeners.
*
* @param e edit to be posted
*/
public synchronized void postEdit(UndoableEdit e) {
--- 121,131 ----
}
}
/**
* DEADLOCK WARNING: Calling this method may call
! * {@code undoableEditHappened} in all listeners.
* It is unwise to call this method from one of its listeners.
*
* @param e edit to be posted
*/
public synchronized void postEdit(UndoableEdit e) {
*** 155,176 ****
}
updateLevel++;
}
/**
! * Called only from <code>beginUpdate</code>.
* Exposed here for subclasses' use.
*
* @return new created {@code CompoundEdit} object
*/
protected CompoundEdit createCompoundEdit() {
return new CompoundEdit();
}
/**
* DEADLOCK WARNING: Calling this method may call
! * <code>undoableEditHappened</code> in all listeners.
* It is unwise to call this method from one of its listeners.
*/
public synchronized void endUpdate() {
updateLevel--;
if (updateLevel == 0) {
--- 155,176 ----
}
updateLevel++;
}
/**
! * Called only from {@code beginUpdate}.
* Exposed here for subclasses' use.
*
* @return new created {@code CompoundEdit} object
*/
protected CompoundEdit createCompoundEdit() {
return new CompoundEdit();
}
/**
* DEADLOCK WARNING: Calling this method may call
! * {@code undoableEditHappened} in all listeners.
* It is unwise to call this method from one of its listeners.
*/
public synchronized void endUpdate() {
updateLevel--;
if (updateLevel == 0) {
*** 182,192 ****
/**
* Returns a string that displays and identifies this
* object's properties.
*
! * @return a <code>String</code> representation of this object
*/
public String toString() {
return super.toString() +
" updateLevel: " + updateLevel +
" listeners: " + listeners +
--- 182,192 ----
/**
* Returns a string that displays and identifies this
* object's properties.
*
! * @return a {@code String} representation of this object
*/
public String toString() {
return super.toString() +
" updateLevel: " + updateLevel +
" listeners: " + listeners +
< prev index next >