Module java.desktop
Package javax.swing.undo

# Class CompoundEdit

java.lang.Object
javax.swing.undo.AbstractUndoableEdit
javax.swing.undo.CompoundEdit

All Implemented Interfaces:
  `Serializable`, `UndoableEdit`

Direct Known Subclasses:
  `AbstractDocument.DefaultDocumentEvent`, `UndoManager`

public class CompoundEdit extends AbstractUndoableEdit
A concrete subclass of AbstractUndoableEdit, used to assemble little UndoableEdits into great big ones.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected Vector<UndoableEdit>`
`edits`
The collection of `UndoableEdit`s undone/redone en masse by this `CompoundEdit`.

### Fields declared in class javax.swing.undo.AbstractUndoableEdit

`RedoName, UndoName`

## Constructor Summary

Constructors
Constructor
Description
`CompoundEdit()`
Constructs a `CompoundEdit`.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`addEdit(UndoableEdit anEdit)`
If this edit is `inProgress`, accepts `anEdit` and returns true.
`boolean`
`canRedo()`
Returns false if `isInProgress` or if super returns false.
`boolean`
`canUndo()`
Returns false if `isInProgress` or if super returns false.
`void`
`die()`
Sends `die` to each subedit, in the reverse of the order that they were added.
`void`
`end()`
Sets `inProgress` to false.
`String`
`getPresentationName()`
Returns `getPresentationName` from the last `UndoableEdit` added to `edits`.
`String`
`getRedoPresentationName()`
Returns `getRedoPresentationName` from the last `UndoableEdit` added to `edits`.
`String`
`getUndoPresentationName()`
Returns `getUndoPresentationName` from the last `UndoableEdit` added to `edits`.
`boolean`
`isInProgress()`
Returns true if this edit is in progress--that is, it has not received end.
`boolean`
`isSignificant()`
Returns true if any of the `UndoableEdit`s in `edits` do.
`protected UndoableEdit`
`lastEdit()`
Returns the last `UndoableEdit` in `edits`, or `null` if `edits` is empty.
`void`
`redo()`
Sends `redo` to all contained `UndoableEdit`s in the order in which they were added.
`String`
`toString()`
Returns a string that displays and identifies this object's properties.
`void`
`undo()`
Sends `undo` to all contained `UndoableEdits` in the reverse of the order in which they were added.

### Methods declared in class javax.swing.undo.AbstractUndoableEdit

`replaceEdit`

### Methods declared in class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### edits

protected Vector<UndoableEdit> edits
The collection of `UndoableEdit`s undone/redone en masse by this `CompoundEdit`.

## Constructor Details

### CompoundEdit

public CompoundEdit()
Constructs a `CompoundEdit`.

## Method Details

### undo

public void undo() throws CannotUndoException
Sends `undo` to all contained `UndoableEdits` in the reverse of the order in which they were added.

Specified by:
  `undo` in interface `UndoableEdit`
Overrides:
  `undo` in class `AbstractUndoableEdit`
Throws:
  `CannotUndoException` - if `canUndo` returns `false`
See Also:
  - `AbstractUndoableEdit.canUndo()`

### redo

public void redo() throws CannotRedoException
Sends `redo` to all contained `UndoableEdit`s in the order in which they were added.

Specified by:
  `redo` in interface `UndoableEdit`
Overrides:
  `redo` in class `AbstractUndoableEdit`
Throws:
  `CannotRedoException` - if `canRedo` returns `false`
See Also:
  - `AbstractUndoableEdit.canRedo()`

### lastEdit

protected UndoableEdit lastEdit()
Returns the last `UndoableEdit` in `edits`, or `null` if `edits` is empty.

Returns:
  the last `UndoableEdit` in `edits`, or `null` if `edits` is empty.

### die

public void die()
Sends `die` to each subedit, in the reverse of the order that they were added.

Specified by:
  `die` in interface `UndoableEdit`
Overrides:
  `die` in class `AbstractUndoableEdit`
See Also:
  - `die()`

### addEdit

public boolean addEdit(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`.

Specified by:
  `addEdit` in interface `UndoableEdit`
Overrides:
  `addEdit` in class `AbstractUndoableEdit`
Parameters:
  `anEdit` - the edit to be added
Returns:
  true if the edit is `inProgress`; otherwise returns false
See Also:
  - `UndoableEdit.addEdit(javax.swing.undo.UndoableEdit)`

### end

public void end()
Sets `inProgress` to false.

See Also:
  - `canUndo()`
  - `canRedo()`

### canUndo

public boolean canUndo()
Returns false if `isInProgress` or if super returns false.

Specified by:
  `canUndo` in interface `UndoableEdit`
Overrides:
  `canUndo` in class `AbstractUndoableEdit`
Returns:
  true if this edit is `alive` and `hasBeenDone` is `true`
See Also:
  - `isInProgress()`

### canRedo

public boolean canRedo()
Returns false if `isInProgress` or if super returns false.

Specified by:
  `canRedo` in interface `UndoableEdit`
Overrides:
  `canRedo` in class `AbstractUndoableEdit`
Returns:
  `true` if this edit is `alive` and `hasBeenDone` is `false`
See Also:
  - `isInProgress()`

### isInProgress

public boolean isInProgress()
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.

Returns:
  whether this edit is in progress
See Also:
  - `end()`

### isSignificant

public boolean isSignificant()
Returns true if any of the `UndoableEdit`s in `edits` do. Returns false if they all return false.

Specified by:
  `isSignificant` in interface `UndoableEdit`
Overrides:
  `isSignificant` in class `AbstractUndoableEdit`
Returns:
  true
See Also:
  - `UndoableEdit.isSignificant()`

### getPresentationName

public String getPresentationName()
Returns `getPresentationName` from the last `UndoableEdit` added to `edits`. If `edits` is empty, calls super.

Specified by:
  `getPresentationName` in interface `UndoableEdit`
Overrides:
  `getPresentationName` in class `AbstractUndoableEdit`
Returns:
  the empty string ""
See Also:
  - `AbstractUndoableEdit.getUndoPresentationName()`
  - `AbstractUndoableEdit.getRedoPresentationName()`

### getUndoPresentationName

public String getUndoPresentationName()
Returns `getUndoPresentationName` from the last `UndoableEdit` added to `edits`. If `edits` is empty, calls super.

Specified by:
  `getUndoPresentationName` in interface `UndoableEdit`
Overrides:
  `getUndoPresentationName` in class `AbstractUndoableEdit`
Returns:
  the value from the defaults table with key `AbstractUndoableEdit.undoText`, followed by a space, followed by `getPresentationName` unless `getPresentationName` is "" in which case, the defaults value is returned alone.
See Also:
  - `AbstractUndoableEdit.getPresentationName()`

### getRedoPresentationName

public String getRedoPresentationName()
Returns `getRedoPresentationName` from the last `UndoableEdit` added to `edits`. If `edits` is empty, calls super.

Specified by:
  `getRedoPresentationName` in interface `UndoableEdit`
Overrides:
  `getRedoPresentationName` in class `AbstractUndoableEdit`
Returns:
  the value from the defaults table with key `AbstractUndoableEdit.redoText`, followed by a space, followed by `getPresentationName` unless `getPresentationName` is "" in which case, the defaults value is returned alone.
See Also:
  - `AbstractUndoableEdit.getPresentationName()`

### toString

public String toString()
Returns a string that displays and identifies this object's properties.

Overrides:
  `toString` in class `AbstractUndoableEdit`
Returns:
  a String representation of this object