2010-05-22 39 views
5

Deseo especificar un icono personalizado para un marcador. Tristemente, el icono que elegí no se muestra.Complemento Eclipse: icono personalizado para un marcador

He aquí las partes relevantes del archivo plugin.xml (el ID de proyecto "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> 

También probé la especificación de una clase (la implementación IMarkerImageProvider) en lugar de un icono, sino que getImagePath() método de la clase no se llama.

¿Alguna idea sobre cómo hacer que los iconos de marcador personalizados funcionen?

Desesperadamente, el suyo.

-Itay

actualización

solución de VonC es más o menos correcto, excepto que debe no especificar org.eclipse.core.resources.problemmarker como un supertipo de su marcador. Funcionó solo cuando usé org.eclipse.core.resources.textmarker como el solo supertipo.

+0

Gracias por estos comentarios. He incluido tu comentario en mi respuesta. No dude en editar esa respuesta si aún le falta un elemento para que funcione como lo hizo. – VonC

+0

Impresionante edición! Mucho más claro ahora. Gracias. – VonC

Respuesta

4

Ver bug 260909 "markerImageProviders punto de extensión no funciona" (que se encuentra después de leer this thread)

Tod Creasey 2009-01-21 07:32:38 EST

Nunca hemos tenido el empuje para hacer esta API porque tiene cierta inflexibilidad que la hace generalmente no consumible: se escribió desde el principio para habilitar las primeras vistas de marcador para las 3 severidades que usamos y como resultado no fue utilizada por el marcador Support porque no era API.

Es confuso que tengamos un punto de extensión interno (generalmente no lo hacemos con ) pero eliminarlo probablemente rompería a alguien sin previo aviso.

[EDIT Itay]

Después de punteros de VonC, que finalmente lograron hacer que esto funcione. Aquí son los fragmentos relevantes de mi plugin.xml (suponiendo que el nombre del plugin es 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> 

trampas

  • El tipo súper del marcador se debe establecer en org.eclipse.core.resources.textmarker. Cualquier otro valor evitará que se use su ícono personalizado.
  • Cuando crea un marcador en su código, asegúrese de que su gravedad coincida con el valor de gravedad especificado en el atributo markerSeverity en el punto de extensión org.eclipse.ui.editors.annotationTypes. 1 significa advertencia, etc.
  • Asegúrese de que la carpeta de iconos se especifica en el archivo de build.properties (o la pestaña "construir" en el editor de aplicaciones)
  • La declaración anterior sólo especificar un icono personalizado.Si desea personalizar otros atributos (color de indicación en la regla de resumen, etc.), siga el ejemplo de here en el que se basa esta solución.
+0

link to eclipse forum ya no funciona. pls help – eactor

+1

@eactor No puedo encontrar la dirección exacta, pero un hilo más reciente podría proporcionar una mejor ilustración: http://www.eclipse.org/forums/index.php?t=msg&th=160387/, aunque ten cuidado con https : //bugs.eclipse.org/bugs/show_bug.cgi? id = 260909 – VonC

+0

en el tipo de marcador en el segundo punto de extensión, ¿no debería ser la identificación del marcador definida en la primera extensión? ¿A qué plugin te refieres con a.b.c.MyMarker? – user847988

Cuestiones relacionadas