import { UndoManager, ArrayList, } from "../internal"; export class UndoManagerObserver { protected _onPerformRedoListeners: ArrayList; protected _onPerformUndoListeners: ArrayList; protected _onPerformCommandListeners: ArrayList; public addPerformRedoListener(listener: UndoManagerObserver.OnPerformRedoListener): void { if (this._onPerformRedoListeners == null) { this._onPerformRedoListeners = new ArrayList(); } this._onPerformRedoListeners.add(listener); } public addPerformUndoListener(listener: UndoManagerObserver.OnPerformUndoListener): void { if (this._onPerformUndoListeners == null) { this._onPerformUndoListeners = new ArrayList(); } this._onPerformUndoListeners.add(listener); } public addPerformCommandListener(listener: UndoManagerObserver.OnPerformCommandListener): void { if (this._onPerformCommandListeners == null) { this._onPerformCommandListeners = new ArrayList(); } this._onPerformCommandListeners.add(listener); } public removePerformRedoListener(listener: UndoManagerObserver.OnPerformRedoListener): void { if (this._onPerformRedoListeners == null) { return; } this._onPerformRedoListeners.remove(listener); } public removePerformUndoListener(listener: UndoManagerObserver.OnPerformUndoListener): void { if (this._onPerformUndoListeners == null) { return; } this._onPerformUndoListeners.remove(listener); } public removePerformCommandListener(listener: UndoManagerObserver.OnPerformCommandListener): void { if (this._onPerformCommandListeners == null) { return; } this._onPerformCommandListeners.remove(listener); } public dispatchPerformRedo(wrapped: UndoManager.Wrapped): void { let listeners = this._onPerformRedoListeners; if (listeners != null) { const sizeof = listeners.sizeof(); for (let i = 0; i < sizeof; i++) { const listener = listeners.get(i); listener.onPerformRedo(wrapped); } } } public dispatchPerformUndo(wrapped: UndoManager.Wrapped): void { let listeners = this._onPerformUndoListeners; if (listeners != null) { const sizeof = listeners.sizeof(); for (let i = 0; i < sizeof; i++) { const listener = listeners.get(i); listener.onPerformUndo(wrapped); } } } public dispatchPerformCommand(wrapped: UndoManager.Wrapped): void { let listeners = this._onPerformCommandListeners; if (listeners != null) { const sizeof = listeners.sizeof(); for (let i = 0; i < sizeof; i++) { const listener = listeners.get(i); listener.onPerformCommand(wrapped); } } } } export namespace UndoManagerObserver { export interface OnPerformRedoListener { onPerformRedo(wrapped: UndoManager.Wrapped): void } export interface OnPerformUndoListener { onPerformUndo(wrapped: UndoManager.Wrapped): void } export interface OnPerformCommandListener { onPerformCommand(wrapped: UndoManager.Wrapped): void } }