如何在Eclipse插件中编写撤消操作的脚本?

Maa*_*ten 8 java eclipse plugins undo

我正在为Eclipse创建一个插件,每当用户按下与插件关联的撤消按钮时,我都希望利用内置的Eclipse'Undo'操作(org.eclipse.core.commands.operations).

理想情况下,它只会重现按下CTRL + Z时发生的情况,但我没有模拟按键工作.

我试过这些代码片段:

在工作台中执行撤消:

IWorkbenchOperationSupport operationSupport = PlatformUI.getWorkbench().getOperationSupport();
IUndoContext context = operationSupport.getUndoContext();
IOperationHistory operationHistory = operationSupport.getOperationHistory();    
IStatus status = operationHistory.undo(context, null, null);
Run Code Online (Sandbox Code Playgroud)

撤消在工作区中执行:

IWorkbenchOperationSupport operationSupport = PlatformUI.getWorkbench().getOperationSupport();
IUndoContext context= (IUndoContext)ResourcesPlugin.getWorkspace().getAdapter(IUndoContext.class);
IOperationHistory operationHistory = operationSupport.getOperationHistory();
IStatus status = operationHistory.undo(context, null, null);
Run Code Online (Sandbox Code Playgroud)

类似地,我正在寻找的是这个,但它不起作用:

在编辑器/文档上执行撤消:

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);
Run Code Online (Sandbox Code Playgroud)

tho*_*ens 0

我不确定我是否理解正确,但我认为这可能适合您: http: //www.eclipsezone.com/eclipse/forums/t80577.html#92048329

虽然有点过时了,但是这个想法还是不错的。