JDT-brugergrænsefladens API indeholder klasser, som du kan bruge til at præsentere Java-modellen eller dele deraf i en JFace-standardfremviser. Denne funktionalitet bygger primært på:
Udbydere af indhold og etiketter til JFace-fremvisere beskrives nærmere under JFace-fremvisere.
Hvis du forstår basisplatformens mekanismer, er det ganske ligetil at sætte Java-indhold og -etiketter sammen:... TreeViewer viewer= new TreeViewer(parent); // Angiv medlemmer i en kompileringsenhed eller klassefil, men ikke nogen arbejdskopielementer ITreeContentProvider contentProvider= new StandardJavaElementContentProvider(true, false); viewer.setContentProvider(contentProvider); // Der er flere flag defineret i klassen JavaElementLabelProvider ILabelProvider labelProvider= new JavaElementLabelProvider( JavaElementLabelProvider.SHOW_DEFAULT | JavaElementLabelProvider.SHOW_QUALIFIED | JavaElementLabelProvider.SHOW_ROOT); viewer.setLabelProvider(labelProvider); // Brug af Java-modellen som fremvisningsinput præsenterer Java-projekter på øverste niveau. viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot())); ...
Ovenstående eksempel bruger en Java-model (IJavaModel) som inputelement til fremvisningen. StandardJavaElementContentProvider understøtter også IJavaProject, IPackageFragmentRoot, IPackageFragment og IFolder som inputelementer:
JavaElementImageDescriptor kan bruges til at oprette et billede ud fra en vilkårlig beskrivelse af en basisbillededeskriptor og et sæt markeringer, som angiver, hvilken Java-specifik udsmykning (statisk, afsluttede, synkroniseret osv.) der skal anbringes oven på billedet.
... DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator()); viewer.setLabelProvider(decorator); ...
På samme måde kan OverrideIndicatorLabelDecorator bruges til at dekorere en almindelig etiketudbyder, så implementerings- og tilsidesættelsessindikatorerne for metoder vises.
Hverken OverrideIndicatorLabelDecorator eller ProblemsLabelDecorator lytter til modelændringer. Derfor opdaterer fremviseren ikke sin præsentation, hvis Java- eller ressourcemarkeringsmodellen ændres. Grunden til at skubbe opdateringen over på klienten i forbindelse med disse klasser er, at der endnu ikke er en generisk implementering, der tilfredsstiller alle krav til ydeevnen. Håndtering af Java-modellens deltaundersøgelse og opfriskning af fremviser hos hver etiketdekoratør eller -udbyder vil føre til flere deltaundersøgelser og unødvendige opdateringer af fremvisere.
Så hvad skal klienten gøre for at opdatere sine fremvisere?
ProblemTreeViewer.handleLabelProviderChanged.
Af samme årsager, som blev opregnet for etiketdekoratører, lytter StandardJavaElementContentProvider ikke til modelændringer. Hvis fremviseren har behov for at opdatere sin præsentation i overensstemmelse med ændringerne af Java-modellen, skal klienten tilføje en tilsvarende lytter til JavaCore. Hvis den ændring, der beskrives af deltaen, ugyldiggør strukturen for de elementer, der præsenteres i fremviseren, så skal klienten opdatere fremviseren ved at bruge standard-API'et for JFace (se opdateringsmetoder for StructuredViewer samt metoder til tilføjelse og fjernelse for TableViewer og AbstractTreeViewer).
JavaElementSorter kan sendes til en JFace.fremviser for at sortere Java-elementer i overensstemmelse med Java-brugergrænsefladens sorteringstype.