2010-05-22 45 views
5

我想爲標記指定自定義圖標。可悲的是,我選擇的圖標沒有顯示。Eclipse插件:標記的自定義圖標

這裏的plugin.xml文件中的相關部分(項目編號「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()方法該類不會被調用。

有關如何使自定義標記圖標有效的任何想法?

絕望,你的。

-Itay

更新

VonC的解決方案是非常正確的,除了你必須指定org.eclipse.core.resources.problemmarker作爲標記的超類型。它只有當我使用org.eclipse.core.resources.textmarker作爲只有超類型。

+0

感謝您的反饋。我已將您的評論納入我的回答。不要猶豫,編輯這個答案,如果它仍然錯過了一個元素使它像你一樣工作。 – VonC 2010-05-23 09:03:39

+0

真棒編輯!現在更清楚了。謝謝。 – VonC 2010-05-23 21:02:17

回答

4

bug 260909 「markerImageProviders擴展點不起作用」

託德克雷西2009-01-21 7時32分38秒EST(讀this thread後發現)

我們從未有過的推製作此API是因爲它具有一些不靈活性,因此它通常不會消耗 - 它很早就寫入,爲我們使用的3個嚴重級啓用第一個標記視圖,因此不被API使用,因爲它不是API。

令人困惑的是,我們有一個內部擴展點(我們通常不會做 ),但刪除它可能會在沒有警告的情況下破壞某人。

[由伊泰編輯]

上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屬性擴展點中指定的嚴重性值相匹配。 1意味着警告等
  • 確保圖標文件夾在你的build.properties文件中指定(或插件編輯器中的「生成」選項卡)
  • 聲明以上纔會指定一個自定義圖標。如果要定製其他屬性(總覽標尺上的指示顏色等),請遵循此解決方案所基於的here中的示例。
+0

鏈接到eclipse論壇不再工作。請幫助 – eactor 2012-06-19 07:45:21

+1

@ector我無法找到確切的地址,但更近的線程可能會提供更好的示例:http://www.eclipse.org/forums/index.php?t=msg&th=160387/,但請注意https ://bugs.eclipse.org/bugs/show_bug.cgi?id = 260909 – VonC 2012-06-19 10:25:33

+0

標記類型在第二個擴展點,它不應該是在第一個擴展中定義的標記ID? a.b.c.MyMarker指的是什麼插件? – user847988 2012-11-06 12:38:40