2009-02-21 4 views
2

J'écris des plugins Eclipse pour Java, et j'ai le problème suivant:Lors de l'écriture de plugins Eclipse, comment vérifier si un IEditorPart est un éditeur Java?

Étant donné un IEditorPart, j'ai besoin de vérifier s'il s'agit d'un éditeur java.

que je pouvais faire (IEditor instanceof JavaEditor), mais JavaEditor est un org.eclipse.jdt.internal.ui.javaeditor.JavaEditor, qui tombe sous les classes "internes" du JDT.

Y a-t-il une façon plus intelligente et plus sûre de faire cela? Je ne suis pas sûr pourquoi il n'y a pas d'interface non-interne pour cela.

+0

Vérifiez pour quelle raison? – nitind

Répondre

4

Vous devez tester l'identifiant du IEditorPart:

private boolean isJavaEditor(IWorkbenchPartReference ref) { 
    if (ref == null) { 
     return false; } 

    String JavaDoc id= ref.getId(); 
    return JavaUI.ID_CF_EDITOR.equals(id) || JavaUI.ID_CU_EDITOR.equals(id); 
} 

Test de l'instance était only needed in eclipse3.1.

alt text http://blogs.zdnet.com/images/Burnette_DSCN0599.JPG

JavaUI est le principal point d'accès aux composants d'interface utilisateur Java. Il vous permet d'ouvrir par programmation des éditeurs sur des éléments Java, d'ouvrir une perspective de navigation Java ou Java et d'ouvrir des boîtes de dialogue de package et de prompteur.

JavaUI est le point d'accès central pour le plug-in Java UI (id "org.eclipse.jdt.ui ")

Vous pouvez voir ce genre de fonction d'utilité (" isJavaEditor()") utilisé par exemple dans ASTProvider.

Le mécanisme d'identification ici est en effet simple Comparaison de chaînes.

De toute façon, il est judicieux d'éviter la comparaison de cast avec la classe interne: il a été listé comme one of the 10 common errors in plugins development;).

+0

Cela semble fiable, mais je dois dire que c'est un mécanisme vraiment bizarre ... Comparaisons de chaînes? Je souhaite que le JDT expose plus de matériaux. – Uri

+0

Oui, pour autant que sachez, chaque mécanisme uid pour les plugins est basé sur String – VonC

0

Une stratégie pourrait consister à utiliser JavaUI.getEditorInputJavaElement(IEditorPart):

// given IEditorPart editor 
IJavaElement elt = JavaUI.getEditorInputJavaElement(editor.getEditorInput()); 
if (elt != null) { 
    // editor is a Java editor 
} 

La méthode renvoie null si l'entrée de l'éditeur est en fait pas un élément Java.

Questions connexes