javax.swing.undo
public class StateEdit extends AbstractUndoableEdit
The following example shows how to use this class.
Foo foo; // class Foo implements {@link StateEditable} StateEdit edit; edit = new StateEdit(foo, "Name Change"); foo.setName("Jane Doe"); edit.end(); undoManager.addEdit(edit);
If Foo
’s implementation of {@link
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
{@link StateEditable} gets asked to store its state into a hash
table, {@link #preState}.StateEdit
. The end()
method
does two things.
StateEdit
now removes
any entries from {@link #preState} and {@link #postState} that have
the same key, and whose values are equal. Equality is determined
by invoking the equals
method inherited from
{@link java.lang.Object}.StateEdit
,
the edited object is asked to {@linkplain StateEditable#restoreState
restore its state} from the {@link #preState} table. Similarly,
when the user chooses to redo the StateEdit
,
the edited object gets asked to restore its state from the {@link
#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 {@link #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 {@link #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 {@link
#postState}, and any redundant entries will get removed from
{@link #preState} and {@link #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 {@link #preState}.
Parameters: obj the object being edited. name the human-readable name of the editing action.
Throws: CannotRedoException if {@link #canRedo()} returns
false
, for example because this action has not yet
been undone.
Throws: CannotUndoException if {@link #canUndo()} returns
false
, for example because this action has already
been undone.