Rámec komponenty

Poskytnutím jednoduchého rozhraní API pro pohledy a editory, které nazýváme rovněž částmi, rámec komponenty umožňuje vnořování a skládání stávajících částí. Rozhraní API rámce komponenty umožňuje klientům vytvářet instance částí uvnitř libovolných kompozitních prvků SWT, zvyšuje robustnost a ověřování úniků paměti umožněním komunikace částí prostřednictvím lokálních rozhraní v rámci jejich webu místo přístupu ke globálním objektům, umožňuje klientům rozšiřovat sadu rozhraní, která jsou dostupná z webu, a poskytuje klientům infrastrukturu vytváření vlastních opětovně použitelných komponent s použitím téhož rozhraní API, které je dostupné pohledům a editorům. Rámec komponenty rovněž umožňuje skládání a rozkládání částí s použitím atomických operací a dále stávajícím částem umožňuje používat nová rozhraní webu.

Obrázek pohledu NameViewNew

Tento jednoduchý příklad poskytuje pohled, nastavuje jeho název, titulek, popis a obrázek a předvádí způsob zápisu editoru či pohledu s použitím rámce komponenty. Zobrazuje zdroj s použitím rozhraní API komponent. Nové části mohou přijímat argumenty prostřednictvím svých konstruktorů a nemusejí implementovat žádné určité rozhraní ani dědit z žádné určité základní třídy.

/**
 * Ukázkový pohled, který nastavuje svůj název, popis, obrázek a popis obsahu. Pohled
 * používá uživatelský obrázek dodaný jeho modulem plug-in.
 *
 * @od 3.1
 */
public class NameViewNew {
    /**
     * Konstruktor komponenty. Nespouštějte přímo.
     */
    public NameViewNew(Composite parent, INameable name, IPluginImages images) {
        name.setName("Name View (New)");
        name.setContentDescription("content description");
        name.setTooltip("This is a tooltip");
        name.setImage(images.getImage("icons/sample.gif"));
       
        // Vytvoří náhradní obsah pohledu
        Label content = new Label(parent, SWT.NONE);
        content.setText("Obsah pohledu vložte sem");
    }
}

Povšimněte si, že argumenty předané konstruktoru pohledu již zohledňují svůj kontext. Například rozhraní IPluginImages není zapotřebí sdělovat, ke kterému pohledu modul plug-in patří. Obdobně rozhraní odolávají únikům paměti. V tomto příkladu zajišťuje implementace INametable alokování a dealokování obrazu pohledu, takže samotný pohled metodu likvidace nemusí implementovat.

Poznamenejme, že rozhraní API pro pohledy a editory je zcela shodné. Rozhodneme-li se registrovat třídu NameViewNew bodem rozšíření org.eclipse.ui.editors, lze ji bez dalších úprav použít rovněž jako editor.