gpt4 book ai didi

java - 将 IUndoableOperation 添加到我的 EditorPart 时出现上下文问题

转载 作者:行者123 更新时间:2023-11-30 11:28:44 25 4
gpt4 key购买 nike

我正在按照 http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/guide/wrkAdv_undo.htm 中描述的示例进行操作

在我的 EditorPartinit() 方法中

    /**
* @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite,
* org.eclipse.ui.IEditorInput)
*/
@Override
public void init(IEditorSite site,IEditorInput input)
throws PartInitException {
...
IWorkbench workbench = getSite().getWorkbenchWindow().getWorkbench();
myUndoContext= workbench.getOperationSupport().getUndoContext();


UndoRedoActionGroup historyActionGroup = new UndoRedoActionGroup(site, myUndoContext, true);
historyActionGroup.fillActionBars(site.getActionBars());
}

...我将以下内容添加到我的 EditorPart

中的方法中
        IUndoableOperation operation = new MyOperation("My Action");
operation.addContext(myUndoContext);
try {
IStatus status = OperationHistoryFactory.getOperationHistory().execute(operation, null, null);
} catch (ExecutionException e) {
e.printStackTrace();
}

我能够添加撤消操作,但我注意到撤消操作被添加到我的自定义编辑器打开的所有文件中。当我对文件进行更改时,所有其他打开的文件都会将撤消操作添加到编辑菜单中。我怎样才能让它只适用于当前 Activity 的文件?

最佳答案

我认为问题出在这一行:

  myUndoContext= workbench.getOperationSupport().getUndoContext();

这为您提供了一个适用于整个工作台的撤消上下文。我认为您需要一个特定于您的编辑器的撤消上下文。 org.eclipse.core.commands.operations.ObjectUndoContext 看起来很合适。这可能就足够了

  myUndoContext = new ObjectUndoContext(this);

尽管 Eclipse 编辑器中的许多用途都使用和文档或撤消管理器作为对象。

关于java - 将 IUndoableOperation 添加到我的 EditorPart 时出现上下文问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18782657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com