Uživatelské rozhraní API JDT poskytuje třídy, které umožňují zobrazovat model Java nebo jeho součásti ve standardním prohlížeči JFace. Příslušné funkce zajišťují především tyto metody:
Poskytovatelé obsahu a štítku pro prohlížeče JFace jsou podrobně popsány v Prohlížeče JFace.
Rozumíte-li základním mechanizmům platformy, je pro vás sestavení poskytovatelů obsahu a štítku Java velmi snadné:... TreeViewer viewer= new TreeViewer(parent); // Poskytnout členy kompilační jednotky nebo souboru třídy, nikoli však prvky pracovní kopie ITreeContentProvider contentProvider= new StandardJavaElementContentProvider(true, false); viewer.setContentProvider(contentProvider); // Další příznaky jsou definovány ve třídě JavaElementLabelProvider ILabelProvider labelProvider= new JavaElementLabelProvider( JavaElementLabelProvider.SHOW_DEFAULT | JavaElementLabelProvider.SHOW_QUALIFIED | JavaElementLabelProvider.SHOW_ROOT); viewer.setLabelProvider(labelProvider); // Použití modelu Java tak, aby vstup prohlížečů představoval projekty Java na první úrovni. viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot())); ...
Výše uvedený příklad používá model Java (IJavaModel) jako vstupní prvek prohlížeče. StandardJavaElementContentProvider podporuje jako vstupní prvky rovněž IJavaProject, IPackageFragmentRoot, IPackageFragment a IFolder:
JavaElementImageDescriptor lze použít k vytvoření obrázku s použitím povinného deskriptoru základního obrázku a sady příznaků, které určují javovské ozdoby (např. static, final, synchronized,...) k překrytí obrázku.
... DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator()); viewer.setLabelProvider(decorator); ...
Stejným způsobem lze použít OverrideIndicatorLabelDecorator k dekoraci normálního poskytovatele štítku za účelem zobrazení indikátorů implementace a potlačení metod.
Změnám modelu nenaslouchá OverrideIndicatorLabelDecorator ani ProblemsLabelDecorator. Proto prohlížeč při změně modelu Java nebo modelu značkovače prostředků neaktualizuje své zobrazení. Důvodem přesunu odpovědnosti za aktualizaci těchto tříd na klienta je skutečnost, že dosud neexistuje obecná implementace, která by plnila veškeré výkonové požadavky. Použití prohlížení rozdílových dat modelu Java a obnovení prohlížeče pro jednotlivé dekorátory nebo poskytovatele štítků vyvolává řadu prohlížení rozdílových dat a nadbytečné aktualizace prohlížeče.
Co tedy musí klient provést, chce-li aktualizovat své prohlížeče?
ProblemTreeViewer.handleLabelProviderChanged.
Z důvodů uvedených pro dekorátory štítků StandardJavaElementContentProvider nenaslouchá změnám modelu. Potřebuje-li prohlížeč aktualizovat své zobrazení dle změn modelu Java, měl by klient přidat do JavaCore příslušný listener. Pokud změna popisovaná rozdílovými daty zneplatňuje strukturu prvků zobrazených v prohlížeči, klient by měl aktualizovat prohlížeč s použitím standardního rozhraní API JFace (viz metody obnovení prohlížeče StructuredViewer a přidávání a odebírání metod objektů TableViewer a AbstractTreeViewer).
Do prohlížeče JFace lze připojit JavaElementSorter za účelem třídění prvků Java podle stylu třídění Java UI.