gpt4 book ai didi

java - 如何在多页编辑器中加载的 Java 编辑器中启用 "Mark Occurrences"?

转载 作者:行者123 更新时间:2023-12-02 05:10:10 25 4
gpt4 key购买 nike

我正在开发一个多页面编辑器,它可以在多页面编辑器的单独选项卡中加载打开多个文件(例如 java、html)。文件使用与文件类型关联的默认编辑器打开,这些默认编辑器作为选项卡嵌入到多页编辑器中。

以下是我如何确定要加载哪个编辑器(对于文件类型):

void createPage()  throws PartInitException 
{
// get editor registry
IEditorRegistry editorRegistry = Activator.getDefault().getWorkbench().getEditorRegistry();

// loop through mappings until the extension matches.
IEditorDescriptor editorDescriptor = editorRegistry.getDefaultEditor(((IFileEditorInput)getEditorInput()).getFile().getName());

// if no editor was found that is associated to the file extension
if (editorDescriptor == null)
{
IEditorRegistry registry = Activator.getDefault().getWorkbench().getEditorRegistry();
editorDescriptor = registry.findEditor(EditorsUI.DEFAULT_TEXT_EDITOR_ID);
}

IConfigurationElement configuration = ((EditorDescriptor) editorDescriptor).getConfigurationElement();

String className = configuration.getAttribute("class");


IEditorPart editor;
try
{
editor = (IEditorPart) WorkbenchPlugin.createExtension(configuration, "class");

} catch (CoreException e) {
throw new RuntimeException(e);
}

final int index = addPage(editor, getEditorInput());
setPageText(index, "TAB_NAME");
}

多选项卡编辑器的创建没有任何问题,并且正确的编辑器已加载到选项卡中。

但是,当加载到选项卡中时,“标记出现次数”功能在 Java 编辑器中不起作用。

我确认标记出现已打开。当我在多页编辑器选项卡的 java 编辑器中选择一个变量时,它不会突出显示该变量的其他出现位置。但是,如果我同时在多选项卡编辑器和单独的 java 编辑器中打开文件,并在单独的 java 编辑器中选择一个变量,它将突出显示单独的 java 编辑器以及嵌入的 java 编辑器中的其他事件在我的多页编辑器中。因此,该功能似乎已启用并加载,只是当在嵌入式编辑器中发生选择时,它不会执行标记出现功能。

需要更改哪些内容才能在嵌入多选项卡编辑器的 java 编辑器中使用标记出现次数功能?

我的理解是,Mark Occurences 是一项核心服务,因此我认为我缺少在编辑器中选择某些内容时更新此服务的部分。您知道需要做什么才能更新服务吗?

注意:只有当 java 编辑器嵌入到多页编辑器中时才会出现此问题。

最佳答案

此功能内置于 org.eclipse.jdt.ui 的 org.eclipse.jdt.internal.ui.javaeditor.JavaEditor 中如您所见,这是一个内部类。但是您可以忽略它并对其进行子类化。

org.eclipse.jdt.internal.ui.javaeditor.ToggleMarkOccurrencesAction 适用于所有打开的 JavaEditor(尝试使用标准 CompilationUnitEditor 打开同一个类两次,您将看到两个“标记出现”标记)。

这是因为在 JavaPlugin 的 PreferenceStore 中设置了一个中心属性 PreferenceConstants.EDITOR_MARK_OCCURRENCES。

为了显示 ToggleMarkOccurrencesAction 按钮,您需要提供一个 IEditorActionBarContributor(查看 org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditorActionContributor)

关于java - 如何在多页编辑器中加载的 Java 编辑器中启用 "Mark Occurrences"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3309965/

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