APIet for JDT-brukergrensesnitt har klasser som gjør det mulig for deg å presentere Java-modellen eller deler av den i et standard JFace-visningsprogram. Denne funksjonaliteten besørges først og fremst av
Innholds- og etikettleverandører for JFace-visningsprogrammer er beskrevet detaljert i JFace-visningsprogrammer.
Hvis du forstår den grunnleggende plattformmekanismen, er det ganske enkelt å sette sammen Java-innholdet og etikettleverandører:... TreeViewer viewer= new TreeViewer(parent); // Besørg medlemmer av en kompileringsenhet eller klassefil, men ingen arbeidskopielementer ITreeContentProvider contentProvider= new StandardJavaElementContentProvider(true, false); viewer.setContentProvider(contentProvider); // Det er flere flagg definert i klassen JavaElementLabelProvider ILabelProvider labelProvider= new JavaElementLabelProvider( JavaElementLabelProvider.SHOW_DEFAULT | JavaElementLabelProvider.SHOW_QUALIFIED | JavaElementLabelProvider.SHOW_ROOT); viewer.setLabelProvider(labelProvider); // Presenter Java-prosjekter på første nivå ved å bruke Java-modellen som visningsprogrammer. viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot())); ...
Eksempelet over bruker aJava-modellen (IJavaModel) som inndataelement for visningsprogrammet. StandardJavaElementContentProvider støtter også IJavaProject, IPackageFragmentRoot, IPackageFragment og IFolder som inndataelementer:
JavaElementImageDescriptor kan brukes til å opprette et bilde på grunnlag av en vilkårlig basebildedeskriptor og et sett med flagg for å spesifisere hvilke Java-spesifikke utsmykninger (f.eks. statisk, endelig, synkronisert...) som skal legges på bildet.
... DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator()); viewer.setLabelProvider(decorator); ...
På samme måte som OverrideIndicatorLabelDecorator kan brukes til å dekorere en normal etikettleverandør for å vise implementasjon og overstyre indikatorer for metoder.
Verken OverrideIndicatorLabelDecorator eller ProblemsLabelDecorator lytter på modellendringer. dermed oppdaterer ikke visningsprogrammet sin presentasjon hvis Javas eller ressursens merkemodell endres. Årsaken til at oppdateringen trykkes på klienten for disse klassene, er at det ennå ikke er en generisk implementasjon som oppfyller alle ytelseskrav. Håndtering av Java-modellens deltainspeksjon og visningsprogram som oppdateres i hver etikettdekoratør eller leverandør, ville føre til flere delta inspeksjoner og unødvendige oppdateringer av visningsprogram.
Så hva må klienten gjøre for å oppdatere sine visningsprogrammer?
ProblemTreeViewer.handleLabelProviderChanged.
Av samme grunner som er nevnt for etikettdekoratører, lytter ikke StandardJavaElementContentProvider etter modellendringer. Hvis visningsprogrammet må oppdatere sin presentasjon i samsvar med Java-modellendringer, må klienten legge til en tilsvarende lytter i JavaCore. Hvis endringen beskrevet av delta ugyldiggjør strukturen til elementene som presenteres i visningsprogrammet, bør klienten oppdatere visningsprogrammet med standard JFace-API (se forny metoder på StructuredViewer, og legg til og fjern metoder i TableViewer og AbstractTreeViewer).
JavaElementSorter kan plugges til et JFace-visningsprogram for å sortere Java-elementer i samsvar med sorteringsstilen for Java-grensesnittet.