2011-02-10 18 views
5

Sto sviluppando un plug-in di eclissi che associa un determinato editor a un'estensione di file specifica, ad esempio ".abc".Sviluppo plugin Eclipse, associando diversi editor alla stessa estensione file

Il problema è che voglio associare i file .abc a quell'editor solo per i miei progetti con la mia stessa natura. Come ora, aprirà sempre file .abc con quell'editor indipendentemente dal progetto.

Come posso aprire il mio editor per i file ".abc" solo se sono in progetti con la mia stessa natura?

risposta

8

È necessario definire un content-type utilizzando il punto di estensione org.eclipse.core.contenttype. Quindi devi associare il tuo editor con il particolare tipo di contenuto (e non l'estensione del file).

Successivamente, è necessario associare la natura del progetto al tipo di contenuto appena definito.

Potrebbe anche essere necessario creare un secondo tipo di contenuto che deve essere utilizzato per i file quando si trova all'esterno di un progetto con la natura specifica.

Ecco un esempio che abbiamo usato in Groovy-Eclipse in modo che i file * .groovy sarebbero aperti con un editor di groove per impostazione predefinita in progetti groove, ma da un editor di testo al di fuori dei progetti di groove:

<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> 

Qui, definiamo groovySource per progetti groovy e groovyText per progetti non groovy. Si noti inoltre che la priorità dei tipi di contenuto è diversa.

E poi, altrove, associamo lo GroovyEditor con il tipo di contenuto groovySource.

+0

Grazie, ottima risposta. – FabianB

Problemi correlati