FileDocCategorySizeDatePackage
CompoundEdit.javaAPI DocJava SE 5 API6242Fri Aug 26 14:58:22 BST 2005javax.swing.undo

CompoundEdit

public class CompoundEdit extends AbstractUndoableEdit
A concrete subclass of AbstractUndoableEdit, used to assemble little UndoableEdits into great big ones.
version
1.25 05/05/04
author
Ray Ryan

Fields Summary
boolean
inProgress
True if this edit has never received end.
protected Vector
edits
The collection of UndoableEdits undone/redone en masse by this CompoundEdit.
Constructors Summary
public CompoundEdit()

	super();
	inProgress = true;
	edits = new Vector<UndoableEdit>();
    
Methods Summary
public booleanaddEdit(javax.swing.undo.UndoableEdit anEdit)
If this edit is inProgress, accepts anEdit and returns true.

The last edit added to this CompoundEdit is given a chance to addEdit(anEdit). If it refuses (returns false), anEdit is given a chance to replaceEdit the last edit. If anEdit returns false here, it is added to edits.

param
anEdit the edit to be added
return
true if the edit is inProgress; otherwise returns false

	if (!inProgress) {
	    return false;
	} else {
	    UndoableEdit last = lastEdit();

	    // If this is the first subedit received, just add it.
	    // Otherwise, give the last one a chance to absorb the new
	    // one.  If it won't, give the new one a chance to absorb
	    // the last one.

	    if (last == null) {
		edits.addElement(anEdit);
	    }
	    else if (!last.addEdit(anEdit)) {
		if (anEdit.replaceEdit(last)) {
		    edits.removeElementAt(edits.size()-1);
		}
		edits.addElement(anEdit);
	    }

	    return true;
	}
    
public booleancanRedo()
Returns false if isInProgress or if super returns false.

see
#isInProgress

	return !isInProgress() && super.canRedo();
    
public booleancanUndo()
Returns false if isInProgress or if super returns false.

see
#isInProgress

	return !isInProgress() && super.canUndo();
    
public voiddie()
Sends die to each subedit, in the reverse of the order that they were added.

	int size = edits.size();
	for (int i = size-1; i >= 0; i--)
	{
	    UndoableEdit e = (UndoableEdit)edits.elementAt(i);
// 	    System.out.println("CompoundEdit(" + i + "): Discarding " +
// 			       e.getUndoPresentationName());
	    e.die();
	}
	super.die();
    
public voidend()
Sets inProgress to false.

see
#canUndo
see
#canRedo

	inProgress = false;
    
public java.lang.StringgetPresentationName()
Returns getPresentationName from the last UndoableEdit added to edits. If edits is empty, calls super.

	UndoableEdit last = lastEdit();
	if (last != null) {
	    return last.getPresentationName();
	} else {
	    return super.getPresentationName();
	}
    
public java.lang.StringgetRedoPresentationName()
Returns getRedoPresentationName from the last UndoableEdit added to edits. If edits is empty, calls super.

	UndoableEdit last = lastEdit();
	if (last != null) {
	    return last.getRedoPresentationName();
	} else {
	    return super.getRedoPresentationName();
	}
    
public java.lang.StringgetUndoPresentationName()
Returns getUndoPresentationName from the last UndoableEdit added to edits. If edits is empty, calls super.

	UndoableEdit last = lastEdit();
	if (last != null) {
	    return last.getUndoPresentationName();
	} else {
	    return super.getUndoPresentationName();
	}
    
public booleanisInProgress()
Returns true if this edit is in progress--that is, it has not received end. This generally means that edits are still being added to it.

see
#end

	return inProgress;
    
public booleanisSignificant()
Returns true if any of the UndoableEdits in edits do. Returns false if they all return false.

	Enumeration cursor = edits.elements();
	while (cursor.hasMoreElements()) {
	    if (((UndoableEdit)cursor.nextElement()).isSignificant()) {
		return true;
	    }
	}
	return false;
    
protected javax.swing.undo.UndoableEditlastEdit()
Returns the last UndoableEdit in edits, or null if edits is empty.

	int count = edits.size();
	if (count > 0)
	    return (UndoableEdit)edits.elementAt(count-1);
	else
	    return null;
    
public voidredo()
Sends redo to all contained UndoableEdits in the order in which they were added.

	super.redo();
	Enumeration cursor = edits.elements();
	while (cursor.hasMoreElements()) {
	    ((UndoableEdit)cursor.nextElement()).redo();
	}
    
public java.lang.StringtoString()
Returns a string that displays and identifies this object's properties.

return
a String representation of this object

	return super.toString()
	    + " inProgress: " + inProgress
	    + " edits: " + edits;
    
public voidundo()
Sends undo to all contained UndoableEdits in the reverse of the order in which they were added.

	super.undo();
	int i = edits.size();
	while (i-- > 0) {
	    UndoableEdit e = (UndoableEdit)edits.elementAt(i);
	    e.undo();
	}