Package 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
Modifier and Type
Class
Description
`static interface`
`UndoHistory.HistoryListener`
Interface to be implemented by components interested in UndoHistory

## Constructor Summary

Constructors
Constructor
Description
`UndoHistory()`

## Method Summary

Modifier and Type
Method
Description
`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 Details

### UndoHistory

public UndoHistory()

## Method Details

### 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