Java elemek megjelenítése JFace megjelenítőben

A JDT UI API olyan osztályokat biztosít, amelyek lehetővé teszik a Java modell vagy a modell részeinek megjelenítését szabványos JFace megjelenítőben. Ezt a funkcionalitást elsősorban a következő osztályok biztosítják:

A JFace megjelenítők tartalom és címke szolgáltatóinak részletes leírása a JFace megjelenítő oldalon található.

Az alapvető platform mechanizmus ismeretében a Java tartalom és címke szolgáltatók összerakása meglehetősen egyszerű:
    ...
    TreeViewer viewer= new TreeViewer(parent);
    // Fordítási egység vagy osztályfájl tagokat biztosít, de munkamásolat elmeket nem
    ITreeContentProvider contentProvider= new StandardJavaElementContentProvider(true, false);
    viewer.setContentProvider(contentProvider);
    // Több jelző is meg van határozva a JavaElementLabelProvider osztályban
    ILabelProvider labelProvider= new JavaElementLabelProvider(
        JavaElementLabelProvider.SHOW_DEFAULT |
        JavaElementLabelProvider.SHOW_QUALIFIED |
        JavaElementLabelProvider.SHOW_ROOT);
    viewer.setLabelProvider(labelProvider);
    // A Java modell használata, amint a megjelenítő bemenete megjeleníti
a Java projekteket az első szinten.
    viewer.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
    ...

A fenti példa Java modellt (IJavaModel) használ megjelenítő bemeneti elemeként.  A StandardJavaElementContentProvider bemeneti elemként támogatja az IJavaProject, IPackageFragmentRoot, IPackageFragment, és IFolder objektumokat.

Átfedő képek Java információkkal

JavaElementImageDescriptor használatával képek hozhatók létre egy tetszőleges alapkép leíró alapján és jelzők halmazával, amelyek megadják, hogy melyik Java kiemelést (pl. statikus, végső, szinkronizált, ...) kell a képre helyezni.

Probléma és újradefiniáló díszítmények hozzáadása

Ha egy megjelenítőnek probléma feljegyzéseket is kell tartalmaznia, akkor a JFace DecoratingLabelProvider és a ProblemsLabelDecorator használható. Az alábbi részlet a probléma címke díszítmény használatát szemlélteti.
    ...
    DecoratingLabelProvider decorator= new DecoratingLabelProvider(labelProvider, new ProblemsLabelDecorator());
    viewer.setLabelProvider(decorator);
    ...

Ugyanígy a OverrideIndicatorLabelDecorator használható szokásos címke szolgáltató kiemelésére metódusok megvalósítási és újradefiniálási jelzéseik megjelenítéséhez.

Megjelenítés frissítése modell módosításkor

Az OverrideIndicatorLabelDecorator és a ProblemsLabelDecorator sem figyel a modell módosításokra. Ezért ha a Java vagy forrás jelző modell módosul, akkor a megjelenítő nem frissíti a megjelenítést. A frissítés azért lett ezeknél az osztályoknál az ügyfélnek átadva, mert még nincs általános megvalósítás, amely minden teljesítmény megfontolást kielégítene. A Java modell különbség vizsgálat kezelése és a megjelenítő frissítés minden címke díszítmény vagy szolgáltató esetében többszörös különbség vizsgálathoz és szükségtelen megjelenítő frissítésekhez vezetne.

Tehát, mit kell tennie az ügyfélnek a megjelenítő frissítéséhez?

A címke díszítményeknél felsorolt ugyanazon okok miatt a StandardJavaElementContentProvider sem figyeli a modell módosításokat. Ha a megjelenítőnek a Java modell módosítások szerint frissítenie kell megjelenítését, akkor az ügyfélnek hozzá kell adnia egy megfelelő figyelőt a JavaCore osztályhoz. Ha a különbség által leírt módosítások érvénytelenítik a megjelenítőben megjelenített elemek szerkezetét, akkor a szabványos JFace API használatával frissíteni kell a megjelenítőt (lásd a StructuredViewer frissítési metódusait, és a TableViewer és az AbstractTreeViewer hozzáadási és eltávolítási metódusait).

Megjelenítő rendezése

A JavaElementSorter a JFace megjelenítőhöz csatlakoztatható, hogy a Java UI rendező stílusa szerint rendezze a Java elemeket.