Alkalmazás párbeszédablakok

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 nem valósítja meg az okButtonPressed metódust. A Párbeszédablak osztálytól örökli a "do-nothing" megvalósítást. Ez nem jellemző. A párbeszédablak általában feldolgozást hajt végre a párbeszédablak-gomb megnyomására válaszul.

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.

Előugró párbeszédablakok

Előfordulhat, hogy valamilyen információt meg akar jeleníteni egy párbeszédablakban, de egy szabályos párbeszédablak megnyitásánál "egyszerűbben". Egy párbeszédablak szolgálhat például arra, hogy könnyen elutasítható átmeneti információkat biztosítson, anélkül, hogy a felhasználó figyelmét elvonná a munkájáról. Ebben az esetben, a párbeszédablak megvalósításához a PopupDialog osztály használható. Egy ilyen PopupDialog kinézete különbözik a szabályos párbeszédablaktól. Nincsenek gombok az ablak alsó részén, nincs a szokásos ablakcímsor; a keretek, a sorköz és a betűtípusok kisebbek és tömörebbek.

Noha a PopupDialog másképp néz ki, mint egy szabályos párbeszédablak, a tartalmát meghatározó bedolgozó alosztályának a kódja majdnem teljesen ugyanaz. Továbbra is a createDialogArea módszert valósítja meg az SWT vezérlők létrehozásához a párbeszédablak számára. A fő különbség az alkalmazáskódban, hogy a párbeszédablak létrehozója sokkal több paraméterrel bír, mint egy szabályos párbeszédablak osztály. Például a SectionsDialog könnyen átalakítható PopupDialog párbeszédablakká a párbeszédablak szülőosztályának megváltoztatásával és a párbeszédablak beállításával a konstruktorban:

   public class SectionsDialog extends PopupDialog {
      protected IAdaptable input;

      /**
      * Creates a new SectionsDialog.
      */
      public SectionsDialog(Shell parentShell, IAdaptable input) {
        super(parentShell, SWT.DEFAULT, false, // nem kap fókuszt, ha meg van nyitva
        	false, // nem tárolja a határokat
        	false, // nem jeleníti meg az átméretezi menüt
        	false, // nem jelenít meg menüpontot a határok tárolásához
        	null, //  nincs cím
        	null); // nincs információs szöveg
        this.input = input;
      }
      ...