org.eclipse.ui.menus

Popření odpovědnosti: Bod rozšíření org.eclipse.ui.menus ve verzi Eclipse 3.2 je implementován pouze částečně. Aktuálně nepodporuje definice ani rozšíření nabídek nebo panelů nástrojů (pro ně byste měli používat stávající rozšíření pro příspěvky). Je to nicméně jediný mechanizmus, jehož prostřednictvím lze do pracovní plochy přispívat prvky widget 'obruby'. Tento oddíl vám ukáže, jak ho k tomuto účelu používat.

Prvek widget 'obruby' je obslužný prvek, který se usadí do umístění (nazývaného 'Oblast obruby') na vnější hranici okna pracovní plochy. Nejčastějším příkladem je generický 'stavový řádek', který téměř všechna grafická uživatelská rozhraní umísťují podél spodní části okna. Bod rozšíření org.eclipse.ui.menus umožňuje modulům plug-in přidávat pohledy do pracovní plochy. Moduly plug-in, které přidávají obrubu, ji musí registrovat ve svém souboru plugin.xml a poskytnout  o ní konfigurační informace, jako např. její implementační třídu, skupinu obrub (panel obrub), ve kterém se obruba nachází, a informace rozvržení, jako např. zda si obruba přeje během svého rozvržení v rámci oblasti obruby používat dostupný prostor 'navíc'.

Rozhraní obruby je definováno v IWorkbenchWidget, ale moduly plug-in mohou (ve skutečnosti jsou k tomu podněcovány) dávat místo implementace rozhraní od začátku přednost rozšíření třídy AbstractWorkbenchTrimWidget.

V příkladu nástroje README jsme přispěli poměrně naivní prvek widget obruby, který jednoduše zobrazí řetězec a indikaci toho, na které straně je obruba aktuálně umístěna v doku.

Podívejme se na definici bodu rozšíření použitou k přispění této části obruby:

První sekce rozšíření (definice 'skupiny') jednoduše definuje ID skupiny a definuje 'umístění' pro skupinu, jako by byla na začátku 'stavové' skupiny (tj. na začátku dolní oblasti obruby). Druhá sekce (definice 'prvku widget') určuje implementační 'třídu' prvku widget a definuje 'umístění' prvku widget, jako by byl umístěn v rámci předtím definované skupiny.

Uvědomte si, že v obou případech je 'typ' pruhu definován jako obruba (což je jediný aktuálně podporovaný typ).

Jakmile nainstalujete skutečný příklad readmetool, podívejte se na implementaci metodyfill v ReadmeTrimWidget. Ta se liší od jiných metod fill používaných k přidávání prvků widget do panelů nástrojů nebo nabídek tím, že obrubu lze přetáhnout z jedné oblasti do jiné a rovněž předává 'stranu', do které je obruba umísťována, což umožňuje implementátorovi přizpůsobit zobrazení prvku widget na základě jeho umístění změnou orientace atd. Aktuální implementace jednoduše mění zobrazený text tak, aby odrážel aktuální umístění. Rovněž si všimněte, jak je ošetřen životní cyklus 'dispose'/'fill'; budou probíhat opakovaná volání dispose a fill generovaná změnami pracovní plochy (tj. změny perspektivy nebo přetažení obruby na novou stranu).

Kód této ukázky neodráží jednu věc, a sice možnost správce rozšíření obruby spolehnout se na řádnou implementaci metody computeSize obslužného prvku prvku widget obruby. Prvek widget musí být schopen vypočítat a vrátit svou 'preferovanou' velikost, která se během implementace správy rozvržení používá například k určení potřebného prostoru pro určitou oblast obruby. Poznámky o způsobu správné implementace metody computeSize viz dokumentace SWT.