Viewer provides OccViewer.OccUndoRedoParams interface maintaining a stack of application states and implementing undo/redo functionality.
Each application state represents an object with onUndo
and onRedo
functions.
'onUndo'
- reverts changes to previous state, 'onRedo'
applies the changes.
Undo/Redo stack can represents list of commands where 'onUndo'
reverts changes made by command, and 'onRedo'
applies the command changes.
Also OccUndoRedo contains implementation of controller which tracks changes of graphical objects properties OccViewer.OccPropertyUndoableController.
Example of undo/redo usage:
import { OccPropertyUndoableController, OccUndoRedoController } from '/wasm32/OccUndoRedo.js';
// enable undo/redo
const anUndoRedo = new OccUndoRedoController(OccViewerModule);
// create property undo/redo tracker
const aPropertyUndoable = new OccPropertyUndoableController(anUndoRedo);
// add onSelectedObjectsChanged event listener
OccViewerModule.eventManager.addEventListener (UserEvents.onSelectedObjectsChanged, function ()
{
aPropertyUndoable.checkChanges();
})
// add onDisplayedObjectsChanged event listener
OccViewerModule.eventManager.addEventListener (UserEvents.onDisplayedObjectsChanged, function ()
{
aPropertyUndoable.checkChanges();
})
// function which do undo
onUndoFunction()=>{
anUndoRedo.undo();
}
// function which do redo
onRedoFunction()=>{
anUndoRedo.undo();
}