gpt4 book ai didi

java - Eclipse JDT中ActiveEditor的UndoContext

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:38 25 4
gpt4 key购买 nike

我正在 JDT 中构建一个操作,该操作扩展 Java 项目的类路径并向 Activity Java 文件添加导入语句。现在我无法让撤消操作正常工作。以下是执行该操作并将其放入撤消历史记录中的代码:

        ExtendClasspathOperation operation = new ExtendClasspathOperation(
"Update Classpath", document, this.context, this.className,
this.jarURI);
IOperationHistory operationHistory = OperationHistoryFactory
.getOperationHistory();
IUndoContext undoContext = PlatformUI.getWorkbench()
.getOperationSupport().getUndoContext();
operation.addContext(undoContext);
operationHistory.execute(operation, null, null);

只要当前 JavaEditor 没有聚焦,我就可以撤消“更新类路径”。一旦我聚焦它,我只能撤消“文本编辑”。现在的问题是,我必须使用什么 IUndoContext?我尝试过:

undoContext = (IUndoContext) this.context.getASTRoot().getJavaElement()
.getAdapter(IUndoContext.class);

(IUndoContext)PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage()
.getActiveEditor().getEditorInput().getAdapter(IUndoContext.class)

两者都返回 null。

那么如何获取当前Java编辑器的UndoContext呢?

最佳答案

Java 编辑器中的某些操作使用:

(IUndoContext)ResourcesPlugin.getWorkspace().getAdapter(IUndoContext.class);

但是,文本编辑器源查看器中还有另一个撤消上下文。我看不到从编辑器外部访问它的方法。

关于java - Eclipse JDT中ActiveEditor的UndoContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28120053/

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