Pracovní plocha poskytuje rozsáhlou množinu tříd a rozhraní pro sestavení složitých uživatelských rozhraní. Naštěstí jim všem nemusíte porozumět, chcete-li udělat něco jednoduchého. Začneme tím, že se podíváme na některé koncepty odkryté v uživatelském rozhraní pracovní plochy a jejich odpovídající struktury pod obálkami.
Termín Workbench jsme používali volně a mysleli jsme jím "okno, které se otevře, když spustíte platformu." Pojďme trochu hlouběji a podívejme se na některé vizuální komponenty, které vytváří pracovní plochu Workbench.
Pro zbytek této diskuze, když používáme termín pracovní plocha, budeme jím myslet okno pracovní plochy (IWorkbenchWindow). Okno pracovní plochy je horní okno v pracovní ploše. Je to rámec, ve kterém je panel nabídek, panel nástrojů, stavový řádek, panel zástupců a stránky. Obecně platí, že okno pracovní plochy nemusíte programovat. Stačí vám jen, když víte, že tam je.
Poznámka: Lze otevřít více oken pracovní plochy; každé okno pracovní plochy je však samostatným světem editorů a pohledů, takže se zaměříme jen na jediné okno pracovní plochy.
Z hlediska uživatele pracovní plocha obsahuje pohledy a editory. Pro implementaci okna pracovní plochy je použito několik dalších tříd.
Uvnitř okna pracovní plochy naleznete jednu stránku (IWorkbenchPage), která zase obsahuje části. Stránky jsou implementačním mechanizmem pro seskupování částí. Obvykle nepotřebujete programovat na stránku, ale uvidíte ji v kontextu programování a ladění programu.
Perspektivy poskytují další organizační vrstvu uvnitř stránky pracovní plochy. Perspektiva definuje příslušnou kolekci pohledů, jejich rozvržení a použitelné akce pro danou uživatelskou úlohu. Uživatelé mohou přepínat mezi perspektivami, jak se přesunují mezi úlohami. Z hlediska implementace aktivní perspektiva uživatele ovládá, které pohledy se zobrazí na stránce pracovní plochy a jejich umístění a velikost. Změna v perspektivě nemá na editory vliv.
S pohledy a editory se dostáváme za podrobnosti implementace do určité oblasti běžného programování modulů plug-in. Když přidáte vizuální komponentu do pracovní plochy, musíte rozhodnout, zda chcete implementovat pohled nebo editor. Jak to rozhodnete?
V jednom i druhém případě budete sestavovat váš pohled nebo editor podle běžného životního cyklu.
Během tohoto životního cyklu se z obsahující stránky pracovní plochy budou spouštět události, aby informovaly zainteresované strany o otevření, aktivaci, deaktivaci a zavření pohledů a editorů.
Zdá se to jednoduché? Může tomu tak být. V tom spočívá krása pohledů a editorů pracovní plochy. Jsou pouhými držiteli prvků a mohou být tak jednoduché nebo tak složité, jak potřebujete. V předchozím jsme viděli nejjednodušší pohledy, když jsme sestavovali pohled "Ahoj světe". Podívejme se teď na něj znovu, když už jsme více vysvětlili, co se vlastně děje.
package org.eclipse.examples.helloworld; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.SWT; import org.eclipse.ui.part.ViewPart; public class HelloWorldView extends ViewPart { Label label; public HelloWorldView() { } public void createPartControl(Composite parent) { label = new Label(parent, SWT.WRAP); label.setText("Hello World"); } public void setFocus() { // nastavení fokusu na náš prvek. Pro štítek to nemá // moc smysl, ale pro složitější množiny prvků byste // rozhodli, který z nich dostane fokus. } }
Všimněte si, že jsme nemuseli implementovat metodu dispose(), protože jsme neudělali nic jiného, než že jsme vytvořili popis v metodě createPartControl(parent). Kdybychom přidělili nějaké prostředky uživatelského rozhraní, jako například obrazy nebo písma, zde bychom je zlikvidovali. Protože jsme rozšířili třídu ViewPart, zdědíme "do nothing", což je implementace dispose().