Undo、Redoは簡単に実装できます。まず以下のような感じでUndoManagerとTextViewerを関連付けします。
import org.eclipse.jface.text.*; ... TextViewer viewer = new TextViewer(); // 99回までアンドゥ可能 DefaultUndoManager undoMgr = new DefaultUndoManager(99); // UndoManagerとTextViewerを接続する viewer.setUndoManager(undoMgr); undoMgr.connect(viewer);
TextViewerにVerifyListenerを登録し、状態をスナップショットとして記録したいタイミングでUndoManagerに通知します。
class TextVerifyListener implements VerifyListener{ public void verifyText(VerifyEvent evt){ // UndoManagerにテキストの変更を通知 undoMgr.endCompoundChange(); } }
アンドゥ、リドゥする場合は以下のようにします。
viewer.doOperation(viewer.UNDO); viewer.doOperation(viewer.REDO);