操作クラスを実装しました。これは org.eclipse.core.commands.operations.AbstractOperation を拡張するため、execute()、redo()、および undo() メソッドの実装が含まれています。最初は、execute() メソッドを呼び出すことしかできませんでしたが、Eclipse の取り消しまたはやり直しボタンで取り消しまたはやり直しコマンドが使用可能になることはありませんでした。
次に、RCP アプリケーション (org.eclipse.ui.examples.undo) にサンプル プラグインをインストールすると、魔法が起こり始めました。
サンプル プラグインに付属のビュー「元に戻す履歴ビュー」を使用すると、カスタムの元に戻す項目とやり直し項目が、元に戻す項目とやり直す項目のスタックに追加されていることがわかりました。さらに、「元に戻す履歴ビュー」がアクティブな場合、カスタムの元に戻すやり直しアクションが Eclipse の元に戻すやり直しボタンに表示されます。それで、それは機能していますが、問題があります。
ビュー パーツを選択すると、項目が Eclipse の元に戻すやり直しボタンから消えます。私の仮定は、IUndoContext を正しく使用していないということです。
操作の実行に関して私が持っているものは次のとおりです。私の InventoryLabelOperation クラスは、org.eclipse.core.commands.operations.AbstractOperation を拡張します。また、activePart フィールドは、IUndoContext で正しく再生したいビュー パーツのインスタンスですが、そうではありません。
InventoryLabelOperation operation = new InventoryLabelOperation(message + name);
IOperationHistory operationHistory = OperationHistoryFactory.getOperationHistory();
IWorkbench workbench = activePart.getSite().getWorkbenchWindow().getWorkbench();
IUndoContext undoContext = workbench.getOperationSupport().getUndoContext();
operation.addContext(undoContext);
operationHistory.execute(operation, new NullProgressMonitor(), null);
ここで私が見逃しているものを見ている人はいますか?