2011-02-10 11 views
5

Estoy desarrollando un plugin de eclipse que asocia un determinado Editor a una extensión de archivo específica, digamos ".abc".Eclipse Plugin Development, asociando diferentes editores a la misma extensión de archivo

El problema es que quiero asociar archivos .abc a ese editor solo para mis propios proyectos con mi propia naturaleza. Como está ahora, siempre abrirá archivos .abc con ese editor sin importar en qué proyecto.

¿Cómo puedo abrir mi propio editor para archivos ".abc" solo si están en proyectos de mi propia naturaleza?

Respuesta

8

Debe definir un content-type utilizando el punto de extensión org.eclipse.core.contenttype. Luego necesita asociar su editor con el tipo de contenido particular (y no la extensión de archivo).

A continuación, debe asociar la naturaleza de su proyecto con el tipo de contenido que acaba de definir.

También es posible que necesite crear un segundo tipo de contenido que se debe utilizar para sus archivos cuando esté fuera de un proyecto de naturaleza específica.

Este es un ejemplo que hemos utilizado en Groovy-Eclipse para que los archivos * .groovy se abrirían con un editor maravilloso por defecto en proyectos maravillosos, pero por un editor de texto fuera de los proyectos maravillosos:

<extension point="org.eclipse.core.contenttype.contentTypes"> 
    <content-type 
     base-type="org.eclipse.jdt.core.javaSource" 
     file-extensions="groovy" 
     id="groovySource" 
     name="Groovy Source File (for Groovy projects)" 
     priority="high"/> 

    <content-type 
     base-type="org.eclipse.core.runtime.text" 
     file-extensions="groovy" 
     id="groovyText" 
     name="Groovy Text File (for non-Groovy projects)" 
     priority="low"/> 
</extension> 

<extension 
    id="groovyNature" 
    name="Groovy Nature" 
    point="org.eclipse.core.resources.natures"> 
    <runtime> 
    <run class="org.codehaus.jdt.groovy.model.GroovyNature"/> 
    </runtime> 
    <requires-nature id="org.eclipse.jdt.core.javanature"/> 
    <content-type 
     id="org.eclipse.jdt.groovy.core.groovySource"> 
    </content-type> 

Aquí, definimos groovySource para proyectos groovy y groovyText para proyectos no geniales. Tenga en cuenta también que la prioridad de los tipos de contenido es diferente.

Y luego, en otro lugar, asociamos el GroovyEditor con el tipo de contenido groovySource.

+0

Gracias, gran respuesta. – FabianB

Cuestiones relacionadas