org.apache.jmeter.gui

## Class UndoHistory

- java.lang.Object
- - org.apache.jmeter.gui.UndoHistory

All Implemented Interfaces:
  Serializable, EventListener, TreeModelListener

    public class UndoHistory
    extends Object
    implements TreeModelListener, Serializable

This class serves storing Test Tree state and navigating through it to give the undo/redo ability for test plan changes

Since:
  2.12
See Also:
  Serialized Form

### Nested Class Summary

Nested Classes
`static interface` `UndoHistory.HistoryListener` Interface to be implemented by components interested in UndoHistory

### Constructor Summary

Constructors
Constructor and Description
`UndoHistory()`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`void` `add(JMeterTreeModel treeModel, String comment)` Add tree model copy to the history
`boolean` `canRedo()`
`boolean` `canUndo()`
`void` `clear()` Clears the undo history
`static boolean` `isEnabled()`
`void` `redo()`
`void` `registerHistoryListener(UndoHistory.HistoryListener listener)` Register HistoryListener
`void` `treeNodesChanged(TreeModelEvent tme)` Record the changes in the node as the undo step
`void` `treeNodesInserted(TreeModelEvent tme)` Record adding nodes as the undo step
`void` `treeNodesRemoved(TreeModelEvent tme)` Record deleting nodes as the undo step
`void` `treeStructureChanged(TreeModelEvent tme)` Record some other change
`void` `undo()`

### Methods inherited from class java.lang.Object

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

### Constructor Detail

#### UndoHistory

    public UndoHistory()

### Method Detail

#### clear

    public void clear()

Clears the undo history

#### add

    public void add(JMeterTreeModel treeModel,
                    String comment)

Add tree model copy to the history

This method relies on the rule that the record in history made AFTER change has been made to test plan

Parameters:
  `treeModel` - JMeterTreeModel
  `comment` - String

#### undo

    public void undo()

#### redo

    public void redo()

#### canRedo

    public boolean canRedo()

Returns:
  true if remaining items

#### canUndo

    public boolean canUndo()

Returns:
  true if not at first element

#### treeNodesChanged

    public void treeNodesChanged(TreeModelEvent tme)

Record the changes in the node as the undo step

Specified by:
  `treeNodesChanged` in interface `TreeModelListener`
Parameters:
  `tme` - `TreeModelEvent` with event details

#### treeNodesInserted

    public void treeNodesInserted(TreeModelEvent tme)

Record adding nodes as the undo step

Specified by:
  `treeNodesInserted` in interface `TreeModelListener`
Parameters:
  `tme` - `TreeModelEvent` with event details

#### treeNodesRemoved

    public void treeNodesRemoved(TreeModelEvent tme)

Record deleting nodes as the undo step

Specified by:
  `treeNodesRemoved` in interface `TreeModelListener`
Parameters:
  `tme` - `TreeModelEvent` with event details

#### treeStructureChanged

    public void treeStructureChanged(TreeModelEvent tme)

Record some other change

Specified by:
  `treeStructureChanged` in interface `TreeModelListener`
Parameters:
  `tme` - `TreeModelEvent` with event details

#### isEnabled

    public static boolean isEnabled()

Returns:
  true if history is enabled

#### registerHistoryListener

    public void registerHistoryListener(UndoHistory.HistoryListener listener)

Register HistoryListener

Parameters:
  `listener` - to add to our listeners