【问题标题】:Eclipse plugin development - customizing editor preferenceEclipse 插件开发 - 自定义编辑器首选项
【发布时间】:2020-07-18 02:48:47
【问题描述】:

我正在开发 eclipse 插件。在我的编辑器插件中右键单击并选择“首选项”时,它会在“常规”下显示两棵树“外观”和“编辑器”。我想从 Window-->preference 添加更多节点,它显示代码模板、内容辅助等等。我怎样才能做到这一点? 我尝试从 AbstractDecoratedTextEditor 覆盖 collectContextMenuPreferencePages 并尝试添加与代码模板相关的扩展,但它没有显示在首选项页面中。

    @Override
     protected String[] collectContextMenuPreferencePages() {
    return new String[] { "org.eclipse.ui.preferencePages.GeneralTextEditor", //$NON-NLS-1$
            "org.eclipse.ui.editors.preferencePages.Annotations", //$NON-NLS-1$
            "org.eclipse.ui.editors.preferencePages.QuickDiff", //$NON-NLS-1$
            "org.eclipse.ui.editors.preferencePages.Accessibility", //$NON-NLS-1$
            "org.eclipse.ui.editors.preferencePages.Spelling", //$NON-NLS-1$
            "org.eclipse.ui.editors.preferencePages.LinkedModePreferencePage", //$NON-NLS-1$
            "org.eclipse.ui.preferencePages.ColorsAndFonts", //$NON-NLS-1$
            "org.eclipse.ui.editors.templates",
    };
}

如何将窗口中存在的常规节点添加到编辑器首选项中?谢谢。

【问题讨论】:

  • @greg-449 感谢您的回复。我已经添加了 java 编辑器,但我无法优先查看 java 节点。

标签: java eclipse eclipse-plugin eclipse-rcp plugin.xml


【解决方案1】:

这是正确的覆盖方法。

这就是 Java 编辑器的作用:

@Override
protected String[] collectContextMenuPreferencePages() {
    String[] inheritedPages= super.collectContextMenuPreferencePages();
    int length= 10;
    String[] result= new String[inheritedPages.length + length];
    result[0]= "org.eclipse.jdt.ui.preferences.JavaEditorPreferencePage"; 
    result[1]= "org.eclipse.jdt.ui.preferences.JavaTemplatePreferencePage"; 
    result[2]= "org.eclipse.jdt.ui.preferences.CodeAssistPreferencePage"; 
    result[3]= "org.eclipse.jdt.ui.preferences.CodeAssistPreferenceAdvanced"; 
    result[4]= "org.eclipse.jdt.ui.preferences.JavaEditorHoverPreferencePage"; 
    result[5]= "org.eclipse.jdt.ui.preferences.JavaEditorColoringPreferencePage"; 
    result[6]= "org.eclipse.jdt.ui.preferences.FoldingPreferencePage"; 
    result[7]= "org.eclipse.jdt.ui.preferences.MarkOccurrencesPreferencePage";
    result[8]= "org.eclipse.jdt.ui.preferences.SmartTypingPreferencePage";
    result[9]= "org.eclipse.jdt.ui.preferences.SaveParticipantPreferencePage";
    System.arraycopy(inheritedPages, 0, result, length, inheritedPages.length);
    return result;
}

当然,所有这些 id 都必须以通常的方式使用 org.eclipse.ui.preferencePages 扩展点声明。

数组中的第一页是显示首选项时选择的页面。

【讨论】:

  • 添加这些后,我在编辑器的首选项页面中仍然只看到两个节点(外观和编辑器):(。我需要在 plugin.xml 中指定什么吗?
  • 没有。 ids(这些是页面 ids 而不是类)必须声明为偏好页面,但仅此而已
  • 在添加上述代码后,我仍然看到通用树节点下只有两个节点。我也尝试在插件中添加 jdt 依赖项,但是它不起作用:(
  • 那么你的方法被调用了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2014-12-11
  • 2011-11-06
  • 1970-01-01
  • 2010-12-18
相关资源
最近更新 更多