代码之家  ›  专栏  ›  技术社区  ›  Itay Maman

Eclipse插件:标记的自定义图标

  •  5
  • Itay Maman  · 技术社区  · 14 年前

    我要为标记指定自定义图标。遗憾的是,我选择的图标没有显示。

    以下是plugin.xml文件(项目ID“x”)的相关部分:

    <extension
          id="xmlProblem"
          name="XML Problem"
          point="org.eclipse.core.resources.markers">
       <super type="org.eclipse.core.resources.problemmarker"/>
       <persistent
             value="true">
       </persistent>
    </extension>
    
    <extension
          point="org.eclipse.ui.ide.markerImageProviders">
       <imageprovider
             markertype="x.xmlProblem"
             icon="icons/marker.png"
             id="xmlProblemImageProvider">
       </imageprovider>
    </extension>
    

    我还尝试指定一个类(实现 IMarkerImageProvider )而不是一个图标,但是 getImagePath() 无法调用类的方法。

    关于如何使自定义标记图标工作有什么想法吗?

    绝望地,你的。

    -伊泰

    更新

    VONC的解决方案是非常正确的,除了你必须 指定 org.eclipse.core.resources.problemmarker 作为标记的超类型。只有我用的时候它才起作用 org.eclipse.core.resources.textmarker 作为 只有 超类型。

    1 回复  |  直到 14 年前
        1
  •  4
  •   Itay Maman    14 年前

    bug 260909 “markerimageproviders扩展点不工作”(读取后找到) this thread )

    托德·克雷西2009-01-21 07:32:38东部时间

    我们从未推动过这个API的开发,因为它具有一些不灵活的特性,使得它通常不可消费——它是在早期编写的,以便为我们使用的3个严重性启用第一个标记视图,因此,MarkerSupport没有使用它,因为它不是API。

    我们有一个内部扩展点(通常不这样做),这让人困惑 但是移除它可能会在没有警告的情况下破坏某人。

    [ Itay编辑]

    根据VONC的指示,我最终成功地使这件事得以实现。 这是我的相关片段 plugin.xml (假设插件名称为 a.b.c )

      <extension point="org.eclipse.core.resources.markers"   
            id="myMarker">
         <super type="org.eclipse.core.resources.textmarker"/>         
         <persistent value="true"/>
      </extension>
    
      <extension point="org.eclipse.ui.editors.annotationTypes">
         <type
            super="org.eclipse.ui.workbench.texteditor.warning"
            markerType="a.b.c.myMarker"
            name="a.b.c.myAnnotation"
            markerSeverity="1"/>
      </extension>
    
      <extension point="org.eclipse.ui.editors.markerAnnotationSpecification">
         <specification
            annotationType="a.b.c.myAnnotation"
            icon="icons/marker.png"
            verticalRulerPreferenceKey="myMarkerIndicationInVerticalRuler"
            verticalRulerPreferenceValue="true"/>
      </extension>
    

    陷阱

    • 标记的超级类型必须设置为 org.eclipse.core.resources.textmarker . 任何其他值都将阻止使用自定义图标。
    • 在代码中创建标记时,请确保其严重性与 markerSeverity 属性 org.eclipse.ui.editors.annotationTypes 延伸点。 1 表示警告等。
    • 确保在build.properties文件(或插件编辑器的“build”选项卡)中指定了icons文件夹。
    • 上面的声明将只指定一个自定义图标。如果要自定义其他属性(概述标尺上的指示颜色等),请遵循以下示例: here 此解决方案的基础。