Lors de l'écriture des plugins Eclipse, quelle est la bonne façon de vérifier si un IEditorPart est un éditeur Java?
-
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.
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.