Ha a szabványos párbeszédablak túl egyszerű a bedolgozóhoz, akkor saját párbeszédablakot építhet össze a Párbeszédablak osztály segítségével. Korábban láthattuk, hogy a readme eszköz hogyan biztosít egy "Readme böngésző megnyitása" tevékenységet egy tevékenységkészletben. Ez a tevékenységkészlet megjelenik a munkaterület-eszköztárok és a Ablak->Readme fájlszerkesztő menüben.
Most már készen állunk a tevékenység megvalósításának megtekintésére a readme eszköz WindowActionDelegate elemében.
public void run(IAction action) { SectionsDialog dialog = new SectionsDialog(window.getShell(), ReadmeModelFactory.getInstance().getSections(selection)); dialog.open(); }
A jelenlegi ablaktevékenység-átruházása az aktuális kiválasztást használja az erőforrásnavigátor-nézetben (a .readme fájl) a readme fájl szakaszok listájának megjelenítéséhez. Ez a lista és a munkaterület ablak parancsértelmezője átadódik a SectionsDialog párbeszédablaknak.
Amikor a felhasználó kiválasztja a tevékenységet, a SectionsDialog megnyitásra kerül.
A SectionsDialog úgy kerül megvalósításra a readme eszköz bedolgozóban, hogy létrehozásra kerül egy alosztály a Párbeszédablak osztályhoz az org.eclipse.jface.dialogs csomagban.
A Párbeszédablak osztály alap támogatást biztosít a párbeszédablak parancsértelmező ablak létrehozásához, az általános párbeszédablak-gombok létrehozásához és a párbeszédablak elindításához. Az alosztályok felelősek a párbeszédablak tartalmának kezeléséért:
A SectionsDialog létrehoz egy SWT listát a szakaszok listájának megjelenítéséhez. A JFace megjelenítő segítségével tölti fel a listát. (Megtekintjük a JFace megjelenítőket a Megjelenítőkben.) Ne feledje el, hogy a párbeszédablakoknak nem kell létrehozniuk gombokat a párbeszédablakhoz, mivel ezt elvégzi a szülőosztály.
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("Readme Sections")); ... }
A párbeszédablakok olyan egyszerűek vagy összetettek lehetnek, amennyire szükséges. Párbeszédablak megvalósításakor a párbeszédablak-kód nagy részével foglalkozni kell az SWT vezérlők létrehozásakor, amelyek a tartalomterületet ábrázolják és kezelik a szükséges eseményeket, miközben a párbeszédablak fent van. Ha a felhasználó megnyomja a gombot, akkor a párbeszédablak le tudja kérdezni a különböző vezérlők (vagy megjelenítők) állapotát, amelyek a párbeszédablak számára megadják, hogy mit kell tenni.