有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Eclipse插件中编写撤销操作脚本?

我正在为Eclipse制作一个插件,每当用户按下与插件相关联的撤销按钮时,我希望利用内置的Eclipse“撤销”操作(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);

在工作区中执行的撤消:

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

共 (2) 个答案

  1. # 2 楼答案

    如果编辑器上有一个查看器(例如TextViewer、SourceViewer、ProjectionViewer),则可以添加一个撤销操作,调用查看器上的撤销操作,例如

    Action undoAction = new Action()
    {
      @Override
      public void run()
      {
        getViewer().doOperation( ITextOperationTarget.UNDO );
      }
    };