Die JDT-Benutzerschnittstellen-API bietet verschiedene Klassen zur vollständigen oder teilweisen Darstellung des Java-Modells in einer Standard-JFace-Anzeigefunktion. Diese Funktionalität besteht primär aus:
...Neben dem Java-Modell unterstützt die Klasse
IJavaProject jProject= ...;
TreeViewer viewer= new TreeViewer(parent);
// Provide members of a compilation unit or class file, but no working copy elements
ITreeContentProvider contentProvider= new StandardJavaElementContentProvider(true, false);
viewer.setContentProvider(contentProvider);
// There are more flags defined in class JavaElementLabelProvider
ILabelProvider labelProvider= new JavaElementLabelProvider(
JavaElementLabelProvider.SHOW_DEFAULT |
JavaElementLabelProvider.SHOW_QUALIFIED |
JavaElementLabelProvider.SHOW_ROOT);
viewer.setLabelProvider(labelProvider);
// Using the Java model as the viewers input present Java projects on the first level.
viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
...
StandardJavaElementContentProvider
die folgenden Typen von Eingabeelementen: IJavaProject
,
IPackageFragmentRoot
, IPackageFragment
und IFolder
....Der OverrideIndicatorLabelDecorator kann auf die gleiche Weise verwendet werden, um einen normalen Bezeichnungsprovider so zu dekorieren, dass die Indikatoren für Implementierung und Überschreibung für die Methoden angezeigt werden.
DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator());
viewer.setLabelProvider(decorator);
...
OverrideIndicatorLabelDecorator
noch der
ProblemsLabelDecorator
reagieren auf Änderungen des Modells. Somit aktualisiert die Anzeigefunktion ihre Darstellung nicht, wenn sich das Java- oder das Ressourcenmarkierungsmodell ändern. Für diese Klassen muss der Client die Aktualisierung
selbst ausführen, da noch keine generische Implementierung verfügbar ist, die alle
Ansprüche der Leistung erfüllt. Die Ausführung der Deltaprüfung für Java-Modelle und die Aktualisierung der Anzeigefunktion für alle Bezeichnungsdekoratoren oder -provider würde zu mehreren Deltaprüfungen und unnötigen Aktualisierungen der Anzeigefunktion führen. OverrideIndicatorLabelDecorator
: Der Client muss für Änderungen des
Java-Modells empfangsbereit sein (siehe JavaCore.addElementChangedListener
)
und entscheiden, ob die durch das Delta beschriebene(n) Änderung(en) den Indikator für
Überschreibungen von in der Anzeigefunktion dargestellten Elementen ungültig macht. Wenn
dies der Fall ist, sollte die das Delta untersuchende Klasse eine erneute Zeichnung der entsprechenden Java-Elemente unter Verwendung der API für die
Standard-JFace-Anzeigefunktion auslösen (siehe hierzu die Informationen zu den
Aktualisierungsmethoden für StructuredViewer). ProblemsLabelDecorator
: Der Client sollte für Änderungen empfangsbereit sein, auf die vom Dekorator durch ein
ProblemsLabelChangedEvent hingewiesen wird (siehe auch
ProblemsLabelDecorator.addListener). Da das Markierungsmodell auf Ressourcen basiert, muss die Listener-Funktion die Hinweise der Ressourcen deren zu Grunde liegendem Datenmodell zuordnen. Nähere Informationen hierzu finden Sie in einem Beispiel für
Java-Elemente darstellende Anzeigefunktionen bei den internen Klassen
ProblemTreeViewer.handleLabelProviderChanged.