JDT UI -sovellusohjelmaliittymässä on luokkia, joiden avulla voi esittää Java-mallin tai sen osia tavallisessa JFace-katseluohjelmassa. Tämän toiminnon tuottavat ensisijaisesti
JFace-katseluohjelmien sisällön ja otsikoiden toimittajat on kuvattu tarkemmin ohjeaiheessa JFace-katseluohjelmat.
Jos ymmärrät käyttöjärjestelmän perustoimintatavan, Javan sisällön ja otsikoiden toimittajien yhdistäminen on melko helppoa: ...
TreeViewer viewer= new TreeViewer(parent);
// Toimittaa käännösyksikön tai luokkatiedoston jäsenet, mutta ei työskentelykopion elementtejä
ITreeContentProvider contentProvider= new StandardJavaElementContentProvider(true, false);
viewer.setContentProvider(contentProvider);
// Luokassa JavaElementLabelProvider kuvattuja määritteitä on enemmän
ILabelProvider labelProvider= new JavaElementLabelProvider(
JavaElementLabelProvider.SHOW_DEFAULT |
JavaElementLabelProvider.SHOW_QUALIFIED |
JavaElementLabelProvider.SHOW_ROOT);
viewer.setLabelProvider(labelProvider);
// Esittää ensimmäisen tason Java-projektit käyttämällä Java-mallia katseluohjelmien syötteenä.
viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
...
Edellä kuvatussa esimerkissä katseluohjelman syöte-elementtinä käytetään Java-mallia (IJavaModel). StandardJavaElementContentProvider tukee syöte-elementteinä myös rajapintoja IJavaProject, IPackageFragmentRoot, IPackageFragment ja IFolder:
JavaElementImageDescriptor-luokan avulla voi luoda kuvan, joka perustuu sattumanvaraiseen peruskuvan kuvaajaan ja joukkoon määritteitä, jotka määrittävät, mitä Java-kohtaisia koristeluja (esim. staattinen, lopullinen, synkronoitu...) asetetaan kuvan päälle.
...
DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator());
viewer.setLabelProvider(decorator);
...
Samalla tavalla OverrideIndicatorLabelDecorator-luokan avulla voidaan koristella tavallinen otsikon toimittaja näyttämään metodien toteutus- ja ohitusilmaisimet.
OverrideIndicatorLabelDecorator ja ProblemsLabelDecorator eivät kumpikaan kuuntele mallin muutoksia. Niinpä katseluohjelma ei päivitä esitystään, jos Java- tai resurssimerkintämalli muuttuu. Syy päivityksen työntämiseen työasemaan näiden luokkien osalta on, ettei toistaiseksi ole yleistä toteutusta, joka täyttäisi kaikki toimintahuolet. Java-mallin deltatarkastuksen käsittely ja katseluohjelman verestys jokaisessa nimiön koristelutoiminnossa tai toimittajassa johtaisi useaan deltatarkastukseen ja tarpeettomiin katseluohjelman päivityksiin.
Mitä työaseman pitää sitten tehdä katseluohjelmien päivitystä varten?
ProblemTreeViewer.handleLabelProviderChanged.StandardJavaElementContentProviderei kuuntele mallin muutoksia samoista syistä, jotka on esitetty nimiön koristelutoimintojen suhteen. Jos katseluohjelman pitää päivittää esityksensä Java-mallin muutosten mukaisesti, työaseman on lisättävä vastaava kuuntelutoiminto JavaCore-ydinosaan. Jos deltan kuvaama muutos mitätöi katseluohjelmassa esitettyjen elementtien rakenteen, työaseman tulee päivittää katseluohjelma tavallisen JFace-sovellusohjelmaliittymän avulla (lisätietoja on StructuredViewer-päivitysmetodien ja TableViewer- ja AbstractTreeViewer-lisäysmetodien ja -poistometodien kohdalla).
Java-elementit voi lajitella Java-käyttöliittymän lajittelutyylin mukaan kytkemällä JavaElementSorter-luokan JFace-katseluohjelmaan.