Lors de l'écriture des plugins Eclipse, quelle est la bonne façon de vérifier si un IEditorPart est un éditeur Java?

StackOverflow https://stackoverflow.com/questions/573804

  •  05-09-2019
  •  | 
  •  

Question

Je suis en train d'écrire des plugins Eclipse pour Java, et nous avons le problème suivant:

Étant donné un IEditorPart, je dois vérifier si elle est un éditeur java.

Je pourrais faire (IEditor instanceof JavaEditor), mais JavaEditor est un org.eclipse.jdt.internal.ui.javaeditor.JavaEditor, qui relève des classes "internes" du JDT.

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

Était-ce utile?

La solution

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 nécessaire que dans eclipse3.1.

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

JavaUI est le principal point d'accès à l'interface utilisateur Java Composants. Il vous permet de programmation les éditeurs ouverts sur les éléments Java, ouvrez une perspective de navigation Java ou Java et package ouvert et de type dialogues prompteurs.

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 est ici simple en effet comparaison de chaîne.

Quoi qu'il en soit, vous êtes sage d'éviter la comparaison avec des acteurs classe interne: il a été répertorié comme l'un des 10 erreurs les plus fréquentes dans le développement des plug-ins ;).

Autres conseils

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
}

Les rendements de la méthode null si l'entrée de l'éditeur est en fait pas un élément Java.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top