L'API de l'interface utilisateur du JDT fournit plusieurs classes permettant de présenter le modèle Java ou des parties du modèle dans un afficheur JFace standard. Cette fonctionnalité est fournie principalement par :
...En plus du modèle Java, la classe
IJavaProject jProject= ...;
TreeViewer viewer= new TreeViewer(parent);
// Fournit les membres d'une unité de compilation ou d'un fichier de classe, mais aucun élément de copie de travail
ITreeContentProvider contentProvider= new StandardJavaElementContentProvider(true, false);
viewer.setContentProvider(contentProvider);
// Aucun indicateur n'est défini dans la classe JavaElementLabelProvider
ILabelProvider labelProvider= new JavaElementLabelProvider(
JavaElementLabelProvider.SHOW_DEFAULT |
JavaElementLabelProvider.SHOW_QUALIFIED |
JavaElementLabelProvider.SHOW_ROOT);
viewer.setLabelProvider(labelProvider);
// Utilisation du modèle Java, les afficheurs présentant les projets Java au premier niveau.
viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
...
StandardJavaElementContentProvider
prend en charge les types d'élément d'entrée suivants : IJavaProject
,
IPackageFragmentRoot
, IPackageFragment
et IFolder
....De même, l'élément OverrideIndicatorLabelDecorator permet de décorer un fournisseur de libellé normal afin d'afficher les indicateurs d'implémentation et de remplacement pour les méthodes.
DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator());
viewer.setLabelProvider(decorator);
...
OverrideIndicatorLabelDecorator
, ni l'élément
ProblemsLabelDecorator
ne tient compte des modifications apportées au modèle. Par conséquent, l'afficheur ne met pas à jour sa présentation si le modèle Java ou le modèle de marqueur de ressource change.
La raison pour laquelle il est judicieux de mettre à jour le client pour ces classes est qu'il n'existe pas encore d'implémentation générique répondant à tous les problèmes de performance.
L'exécution de l'inspection delta du modèle Java et du rafraîchissement des afficheurs dans chaque décorateur de libellé ou dans chaque fournisseur entraînerait de nombreuses inspections delta et des mises à jour d'afficheurs inutiles.
OverrideIndicatorLabelDecorator
: le client doit tenir compte des modifications apportées au modèle Java (voir JavaCore.addElementChangedListener
) et décide si la ou les modifications décrites par le delta
invalide l'indicateur de remplacement des éléments présentés dans l'afficheur.
Si tel est le cas, la classe inspectant le delta déclenche le retraçage des éléments Java correspondants avec l'API de l'afficheur JFace standard (voir la section sur la mise à jour des méthodes dans StructuredViewer).ProblemsLabelDecorator
: Le client doit tenir compte des modifications indiquées par le décorateur via l'élément ProblemsLabelChangedEvent
(voir aussi
ProblemsLabelDecorator.addListener). Etant donné que le modèle de marqueur se base sur les ressources, le programme d'écoute doit faire correspondre les notifications de ressources à son modèle de données sous-jacent.
Pour consulter un exemple illustrant cette opération pour des afficheurs présentant des éléments Java, reportez-vous aux classes internes ProblemTreeViewer.handleLabelProviderChanged.