【发布时间】:2011-10-19 00:11:41
【问题描述】:
我正在为 Eclipse 制作一个插件,并且我想在用户按下与插件关联的撤消按钮时利用内置的 Eclipse“撤消”操作 (org.eclipse.core.commands.operations) -在。
理想情况下,它只会重现您按 CTRL+Z 时发生的情况,但我没有模拟按键工作。
我试过这些代码sn-ps:
在工作台中执行的撤消:
IWorkbenchOperationSupport operationSupport = PlatformUI.getWorkbench().getOperationSupport();
IUndoContext context = operationSupport.getUndoContext();
IOperationHistory operationHistory = operationSupport.getOperationHistory();
IStatus status = operationHistory.undo(context, null, null);
在工作区中执行的撤消:
IWorkbenchOperationSupport operationSupport = PlatformUI.getWorkbench().getOperationSupport();
IUndoContext context= (IUndoContext)ResourcesPlugin.getWorkspace().getAdapter(IUndoContext.class);
IOperationHistory operationHistory = operationSupport.getOperationHistory();
IStatus status = operationHistory.undo(context, null, null);
类似地,我正在寻找的是这个,但它不起作用:
对编辑器/文档执行撤消:
IWorkbenchOperationSupport operationSupport = PlatformUI.getWorkbench().getOperationSupport();
IEditorPart currentEditor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
IUndoContext context = (IUndoContext) currentEditor.getAdapter(IUndoContext.class);
IOperationHistory operationHistory = operationSupport.getOperationHistory();
IStatus status = operationHistory.undo(context, null, null);
【问题讨论】:
-
我也在处理这个问题。我使用这个更新站点 (download.eclipse.org/eclipse/updates/4.2) 找到了这个示例功能 (org.eclipse.sdk.examples.feature),它有一个很好的实现工作得很好。我只需要弄清楚如何让我的视图部分参与 IUndoContext,以便撤消和重做操作显示在 Eclipse 撤消和重做菜单项中。奇怪的是,我的撤消重做操作仅在示例视图部分处于活动状态时才能正常工作,而不是在我的视图部分处于活动状态时。我想我还没有完全理解 IUndoContext。
-
尝试使用“安装新软件”对话框安装 Eclipse SDK 示例时,请使用过滤器框并键入“示例”,但请务必取消选中“按类别分组项目”,否则您将看不到任何结果。
-
要使这种方法发挥作用,您应该在编辑器中执行所有更改,方法是向操作堆栈添加可撤消的命令。