- /*
- * @(#)UndoableEdit.java 1.14 00/02/02
- *
- * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
- *
- * This software is the proprietary information of Sun Microsystems, Inc.
- * Use is subject to license terms.
- *
- */
-
- package javax.swing.undo;
-
- import javax.swing.event.*;
-
- /**
- * An object representing an edit that has been done, and that can be
- * undone and redone
- *
- * @version 1.14, 02/02/00
- * @author Ray Ryan
- */
-
- public interface UndoableEdit {
- /**
- * Undo the edit that was made.
- */
- public void undo() throws CannotUndoException;
-
- /**
- * True if it is still possible to undo this operation
- */
- public boolean canUndo();
-
- /**
- * Re-apply the edit, assuming that it has been undone.
- */
- public void redo() throws CannotRedoException;
-
- /**
- * True if it is still possible to redo this operation
- */
- public boolean canRedo();
-
- /**
- * May be sent to inform an edit that it should no longer be
- * used. This is a useful hook for cleaning up state no longer
- * needed once undoing or redoing is impossible--for example,
- * deleting file resources used by objects that can no longer be
- * undeleted. UndoManager calls this before it dequeues edits.
- *
- * Note that this is a one-way operation. There is no "undie"
- * method.
- *
- * @see CompoundEdit#die
- */
- public void die();
-
- /**
- * This UndoableEdit should absorb anEdit if it can. Return true
- * if anEdit has been incoporated, false if it has not.
- *
- * <p>Typically the receiver is already in the queue of a
- * UndoManager (or other UndoableEditListener), and is being
- * given a chance to incorporate anEdit rather than letting it be
- * added to the queue in turn.</p>
- *
- * <p>If true is returned, from now on anEdit must return false from
- * canUndo() and canRedo(), and must throw the appropriate
- * exception on undo() or redo().</p>
- */
- public boolean addEdit(UndoableEdit anEdit);
-
- /**
- * Return true if this UndoableEdit should replace anEdit. The
- * receiver should incorporate anEdit's state before returning true.
- *
- * <p>This message is the opposite of addEdit--anEdit has typically
- * already been queued in a UndoManager (or other
- * UndoableEditListener), and the receiver is being given a chance
- * to take its place.</p>
- *
- * <p>If true is returned, from now on anEdit must return false from
- * canUndo() and canRedo(), and must throw the appropriate
- * exception on undo() or redo().</p>
- */
- public boolean replaceEdit(UndoableEdit anEdit);
-
- /**
- * Return false if this edit is insignificant--for example one
- * that maintains the user's selection, but does not change any
- * model state. This status can be used by an UndoableEditListener
- * (like UndoManager) when deciding which UndoableEdits to present
- * to the user as Undo/Redo options, and which to perform as side
- * effects of undoing or redoing other events.
- */
- public boolean isSignificant();
-
- /**
- * Provide a localized, human readable description of this edit
- * suitable for use in, say, a change log.
- */
- public String getPresentationName();
-
- /**
- * Provide a localized, human readable description of the undoable
- * form of this edit, e.g. for use as an Undo menu item. Typically
- * derived from getDescription();
- */
- public String getUndoPresentationName();
-
- /**
- * Provide a localized, human readable description of the redoable
- * form of this edit, e.g. for use as a Redo menu item. Typically
- * derived from getPresentationName();
- */
- public String getRedoPresentationName();
- }