Když je standardní dialogové okno pro váš modul plug-in příliš jednoduché, můžete sestavit své vlastní dialogové okno pomocí třídy Dialog. V předchozích tématech jsme viděli, jak nástroj README přispěl do akční sady akcí "Otevřít prohlížeč README". Tato akční sada se zobrazuje v panelu nástrojů pracovní plochy a v nabídce Okno->Editor souborů README.
Nyní jsme připraveni se podívat na implementaci této akce ve třídě WindowActionDelegate v nástroji README.
public void run(IAction action) { SectionsDialog dialog = new SectionsDialog(window.getShell(), ReadmeModelFactory.getInstance().getSections(selection)); dialog.open(); }
Delegát akce okna pro akční sadu používá aktuální výběr v zobrazení navigátoru prostředků (soubor .readme) k získání seznamu oddílů v souboru README. Tento seznam a nadstavba okna pracovní plochy se předají objektu SectionsDialog.
Když uživatel akci vybere, otevře se SectionsDialog.
SectionsDialog se v nástroji README implementuje vytvořením podtřídy třídy Dialog z balíčku org.eclipse.jface.dialogs.
Třída Dialog poskytuje základní podporu pro sestavení dialogového okna nadstavby, vytvoření běžných tlačítek a spuštění dialogového okna. Podtřídy zodpovídají za práci s vlastním obsahem dialogového okna:
SectionsDialog vytvoří seznam SWT pro zobrazení seznamu oddílů. K naplnění seznamu používá prohlížeč modulu JFace. (Na prohlížeče modulu JFace se podíváme v tématu Prohlížeče.) Všimněte si, že naše dialogové okno nemusí vytvářet žádná tlačítka, protože to udělá naše supertřída.
protected Control createDialogArea(Composite parent) { Composite composite = (Composite)super.createDialogArea(parent); List list = new List(composite, SWT.BORDER); ... ListViewer viewer = new ListViewer(list); ... return composite; }
protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText(MessageUtil.getString("Oddíly README")); ... }
Dialogová okna mohou být tak jednoduchá nebo tak složitá, jak je třeba. Když implementujete dialogové okno, většina kódu okna se týká vytváření obslužných prvků SWT, které reprezentují oblast jeho obsahu, a obsluhy případných událostí, které jsou potřebné po dobu zobrazení dialogu. Jakmile jednou uživatel stiskne tlačítko, dialogové okno se může dotázat na stav různých obslužných prvků (nebo prohlížečů), ze kterých se skládá, aby zjistilo, co se má provést.