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.StateEdit
. The end()
method
does two things.
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
java.lang.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.Field Summary | |
---|---|
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. |
Constructor Summary | |
---|---|
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.
|
Method Summary | |
---|---|
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. |
StateEdit
.object
at the time when end
was called.object
at the time of constructing
this StateEdit
.StateEdit
, specifying the object whose
state is being edited.
Parameters: obj the object whose state is being edited by this
StateEdit
.
StateEdit
, specifying the object whose
state is being edited.
Parameters: obj the object whose state is being edited by this
StateEdit
.
name the human-readable name of the editing action.
StateEdit
that all edits are finished.
The edited object will be asked to store its state into postState, and any redundant entries will get removed from
preState and postState.Returns: the name, or null
if no presentation
name is available.
StateEdit
. The edited object will
be asked to store its current state into preState.
Parameters: obj the object being edited. name the human-readable name of the editing action.
Throws: CannotRedoException if StateEdit returns
false
, for example because this action has not yet
been undone.
Throws: CannotUndoException if StateEdit returns
false
, for example because this action has already
been undone.