Ustawienia okna dialogowego

Pakiet org.eclipse.jface.dialogs udostępnia klasę narzędziową - DialogSettings - służącą do zapisywania i pobierania wpisywanych wartości. Tej klasy można używać do zapisywania i pobierania wartości podstawowych typów danych i wartości łańcuchowych powiązanych z nazwami kluczy. Ustawienia są ładowane i zapisywane przy użyciu pliku XML.

Klasa AbstractUIPlugin obsługuje ustawienia okna dialogowego całej wtyczki przechowywane w pliku XML w katalogu wtyczki. Jeśli w katalogu wtyczki nie zostanie znaleziony plik ustawień okna dialogowego, zostanie utworzony pusty obiekt klasy DialogSettings. Gdy wtyczka będzie zamykana, wszystkie ustawienia dodane do niego zostaną zapisane w pliku XML i pobrane przy ponownym jej uruchomieniu.

Dostęp do ustawień okna dialogowego jest możliwy z każdego miejsca kodu wtyczki. Poniższy fragment kodu pokazuje, w jaki sposób można pobrać ustawienia okna dialogowego dla narzędzia pliku readme.

      IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();

Wartości są zapisywane i pobierane przy użyciu metod get i put. Metody get są nazywane w zależności od podstawowego typu danych, do których uzyskują dostęp. Zapisywać i pobierać można wartości typu boolean, long, double, float, int, array i string. Poniższy fragment kodu pokazuje sposób zastosowania ustawień okna dialogowego do inicjowania wartości jego elementów sterujących.

   protected Control createDialogArea(Composite parent) {
      IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();
      checkbox = new Button(parent,SWT.CHECK);
      checkbox.setText("Generate sample section titles");
      // zainicjuj pole wyboru zgodnie z ustawieniami okna dialogowego
      checkbox.setSelection(settings.getBoolean("GenSections"));
   }

Wartość ustawienia może zostać zapisana dopiero po naciśnięciu przycisku OK.

   protected void okPressed() {
      IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();
      // zapisz wartość pola wyboru generowania sekcji
      settings.put("GenSections", checkbox.getSelection());
      super.okPressed();
   }

Ustawienia granic okna dialogowego

Zasadniczo za zdefiniowanie i interpretację ustawień okna dialogowego odpowiada wtyczka. W ramach środowiska okien dialogowych JFace definiuje się jednak także określone klucze ustawień okna dialogowego, które służą do zapamiętywania ostatniego rozmiaru i pozycji okna. Dzięki nim przy ponownym wywołaniu okna można przywrócić jego poprzedni rozmiar i pzycję. Realizacja zapytania oraz zapisywanie rozmiaru i pozycji okna dialogowego odbywają się w ramach środowiska, jednak konieczne jest dodatkowo zaimplementowanie metody dostarczającej instancję klasy IDialogSettings, która powinna być wykorzystywana do przechowywania informacji o granicach okna dialogowego. W poniższym fragmencie kodu wskazano, w jaki sposób klasa SectionsDialog może korzystać z tej opcji.

   protected IDialogSettings getDialogBoundsSettings() {
	   return ReadmePlugin.getDefault().getDialogSettings();
   }

Implementacja tej metody pozwala przechowywać informacje o rozmiarze i pozycji okna dialogowego realizowanego za pomocą klasy SectionsDialog w predefiniowanych kluczach w ustawieniach okna dialogowego wtyczki. W ten sposób okno można otwierać w poprzedniej pozycji.