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

我如何启用";“标记事件”;在多页编辑器中加载的Java编辑器中?,java,eclipse,plugins,eclipse-plugin,Java,Eclipse,Plugins,Eclipse Plugin,我正在使用一个多页编辑器,它在多页编辑器的不同选项卡中加载和打开多个文件(例如java、html)。使用与文件类型关联的默认编辑器打开文件,这些默认编辑器作为选项卡嵌入到多页编辑器中 以下是我如何确定加载哪个编辑器(对于文件类型): 创建多选项卡编辑器时没有任何问题,并且在选项卡中加载了正确的编辑器 但是当加载到选项卡中时,“标记事件”功能在Java编辑器中不起作用 我验证了“标记引用”已启用。当我在java编辑器的“多页编辑器”选项卡中选择一个变量时,它不会突出显示该变量的其他引用。 但是,如

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

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

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

但是当加载到选项卡中时,“标记事件”功能在Java编辑器中不起作用

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

需要更改哪些内容,以便我可以使用嵌入在多选项卡编辑器中的java编辑器中的标记出现功能

我的理解是Mark occurrences是一个中心服务,因此我假设我缺少在编辑器中选择某个内容时更新此服务的部分。你知道需要做什么才能更新服务吗


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

此功能内置于org.eclipse.jdt.internal.ui.javaeditor.javaeditor中 正如您所看到的,它是一个内部类。但是,您可以忽略它并将其子类化 org.eclipse.jdt.internal.ui.javaeditor.toggleMarkOccurrencessaction将适用于所有打开的javaeditor(尝试使用标准CompilationUnitEditor打开同一类两次,您将看到两个“标记发生”标记)这是因为在JavaPlugin的PreferenceStore中设置了中心属性PreferenceConstants.EDITOR\u MARK\u引用。
为了显示ToggleMarkOccurrencesAction按钮,您需要提供一个IEditorActionBarContributor(查看org.eclipse.jdt.internal.ui.javaeditor.compileationUnitEditorActionContributor)

感谢您的回复。我已经得到了显示的按钮,但当我选择一个变量并单击按钮时,它不会标记该变量的其他引用。同样的功能在java编辑器中也可以正常工作。事实上,如果我在编辑器和java编辑器中打开同一个类,并在java编辑器中标记一个事件,它也会在编辑器中标记它。现在,我只需要能够从我的编辑器中进行标记……如果您的编辑器扩展了JavaEditor,它应该能够自动工作(我测试了它)。你应该看看JavaEditor#InstallOccurrencesFinder我尝试了你的所有建议,但都没有解决我的问题。我改写了我的问题以提供更多细节。只有将java编辑器嵌入到多页编辑器选项卡中时,才会出现此问题。
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");
}