有 Java 编程相关的问题?

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

eclipse如何在多页编辑器中加载的Java编辑器中启用“标记事件”?

我正在使用一个多页编辑器,在多页编辑器的不同选项卡中加载和打开多个文件(例如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编辑器嵌入到多页编辑器中时,才会出现此问题


共 (1) 个答案

  1. # 1 楼答案

    该功能内置于组织中。日食jdt。内部的用户界面。javaeditor。org的JavaEditor。日食jdt。用户界面 正如你所见,这是一个内部类。然而,你可以忽略它并将其子类化

    组织。日食jdt。内部的用户界面。javaeditor。ToggleMarkOccurrencesAction适用于所有打开的JavaEditor(尝试使用标准CompilationUnitEditor打开同一个类两次,您将看到两个“标记出现”标记)

    这是因为一个中心属性PreferenceConstants。编辑器标记在JavaPlugin的首选项存储中设置

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