javax.swing.undo
public class StateEdit extends AbstractUndoableEdit
The following example shows how to use this class.
Foo foo; // class Foo implements StateEditable
StateEdit edit;
edit = new StateEdit(foo, "Name Change");
foo.setName("Jane Doe");
edit.end();
undoManager.addEdit(edit);
If Foo
’s implementation of StateEditable
considers the name as part of the editable state,
the user can now choose “Undo Name Change” or
“Redo Name Change” from the respective menu. No
further undo support is needed from the application.
The following explains what happens in the example.
StateEdit
is created, the associated
StateEditable
gets asked to store its state into a hash
table, preState
.end()
method of the StateEdit
. The end()
method
does two things.
postState
.StateEdit
now removes
any entries from preState
and postState
that have
the same key, and whose values are equal. Equality is determined
by invoking the equals
method inherited from
Object
.StateEdit
,
the edited object is asked to restore its state from the preState
table. Similarly,
when the user chooses to redo the StateEdit
,
the edited object gets asked to restore its state from the postState
.Modifier and Type | Field and Description |
---|---|
protected StateEditable |
object
The object which is being edited by this
StateEdit . |
protected Hashtable<Object,Object> |
postState
The state of
object at the time when end()
was called. |
protected Hashtable<Object,Object> |
preState
The state of
object at the time of constructing
this StateEdit . |
protected static String |
RCSID
The ID of the Java source file in Sun’s Revision Control
System (RCS).
|
protected String |
undoRedoName
A human-readable name for this edit action.
|
RedoName, UndoName
Constructor and Description |
---|
StateEdit(StateEditable obj)
Constructs a
StateEdit , specifying the object whose
state is being edited. |
StateEdit(StateEditable obj,
String name)
Constructs a
StateEdit , specifying the object whose
state is being edited. |
Modifier and Type | Method and Description |
---|---|
void |
end()
Informs this
StateEdit that all edits are finished. |
String |
getPresentationName()
Returns a human-readable, localized name that describes this
editing action and can be displayed to the user.
|
protected void |
init(StateEditable obj,
String name)
Initializes this
StateEdit . |
void |
redo()
Redoes this edit operation.
|
protected void |
removeRedundantState()
Removes all redundant entries from the pre- and post-edit state
hash tables.
|
void |
undo()
Undoes this edit operation.
|
addEdit, canRedo, canUndo, die, getRedoPresentationName, getUndoPresentationName, isSignificant, replaceEdit, toString
protected static final String RCSID
protected StateEditable object
StateEdit
.protected Hashtable<Object,Object> preState
object
at the time of constructing
this StateEdit
.protected Hashtable<Object,Object> postState
object
at the time when end()
was called.protected String undoRedoName
public StateEdit(StateEditable obj)
StateEdit
, specifying the object whose
state is being edited.obj
- the object whose state is being edited by this
StateEdit
.public StateEdit(StateEditable obj, String name)
StateEdit
, specifying the object whose
state is being edited.obj
- the object whose state is being edited by this
StateEdit
.name
- the human-readable name of the editing action.protected void init(StateEditable obj, String name)
StateEdit
. The edited object will
be asked to store its current state into preState
.obj
- the object being edited.name
- the human-readable name of the editing action.public void end()
public void undo()
preState
.undo
in interface UndoableEdit
undo
in class AbstractUndoableEdit
CannotUndoException
- if AbstractUndoableEdit.canUndo()
returns
false
, for example because this action has already
been undone.AbstractUndoableEdit.canUndo()
,
AbstractUndoableEdit.redo()
public void redo()
postState
.redo
in interface UndoableEdit
redo
in class AbstractUndoableEdit
CannotRedoException
- if AbstractUndoableEdit.canRedo()
returns
false
, for example because this action has not yet
been undone.AbstractUndoableEdit.canRedo()
,
AbstractUndoableEdit.undo()
public String getPresentationName()
getPresentationName
in interface UndoableEdit
getPresentationName
in class AbstractUndoableEdit
null
if no presentation
name is available.protected void removeRedundantState()