我已經實現了我的操作類,並且它擴展了org.eclipse.core.commands.operations.AbstractOperation,因此它實現了方法execute(),redo ()和undo()。起初,我只能調用execute()方法,但我永遠無法在我的Eclipse undo redo按鈕上看到undo或redo命令。如何在我的RCP應用程序中使用我自己的IUndoContext實現IUndoableOperation
然後我在我的RCP應用程序(org.eclipse.ui.examples.undo)中安裝了一個插件示例,魔術開始發生。
使用示例插件附帶的視圖「撤消歷史視圖」,我可以看到我的自定義撤消和重做項目被添加到堆棧中進行撤消和重做。此外,當「撤消歷史視圖」處於活動狀態時,我的自定義撤銷重做操作將顯示在Eclipse撤消重做按鈕中。所以,它工作,但有一個問題。
當我選擇我的視圖部件時,項目從Eclipse中消失undo redo按鈕。我的假設是我沒有正確使用IUndoContext。
以下是我對該操作的執行情況。我的InventoryLabelOperation類擴展了org.eclipse.core.commands.operations.AbstractOperation。 activePart字段是我的View部件的一個實例,我希望能夠正確使用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);
有沒有人看到我在這裏失蹤?