JFaceのUndoManager

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);