Параметры окна диалога

В состав пакета org.eclipse.jface.dialogs входит служебный класс DialogSettings, предназначенный для хранения и загрузки ключевых значений. С его помощью можно сохранять и загружать простые типы данных и строковые значения, связанные с ключевыми именами. Параметры загружаются из файла XML и сохраняются в нем.

Класс AbstractUIPlugin обеспечивает поддержку параметров окна диалога уровня модуля, которые хранятся в файле XML, расположенном в каталоге модуля. Если файл параметров окна диалога в каталоге модуля отсутствует, создается пустой объект DialogSettings. После завершения работы модуля все новые параметры сохраняются в файле XML и загружаются в ходе следующего запуска этого модуля.

К параметрам окна диалога можно обратиться из произвольного расположения исходного кода модуля. Следующий фрагмент исходного кода позволяет получить параметры окна диалога для утилиты readme.

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

Для сохранения и загрузки значений применяются методы получения и установки. Имена методов получения совпадают с именем типа соответствующего простого значения. Сохранять и загружать можно значения следующих типов: boolean, long, double, float, int, array и string. Следующий фрагмент исходного кода применяется для инициализации управляющих элементов окна диалога с помощью его параметров.

   protected Control createDialogArea(Composite parent) {
      IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();
      checkbox = new Button(parent,SWT.CHECK);
      checkbox.setText("Generate sample section titles");
      // инициализация переключателя в соответствии с параметрами окна диалога
      checkbox.setSelection(settings.getBoolean("GenSections"));
   }

Значение параметра можно сохранить позже, нажав кнопку ОК.

   protected void okPressed() {
      IDialogSettings settings = ReadmePlugin.getDefault().getDialogSettings();
      // сохранение значения переключателя
      settings.put("GenSections", checkbox.getSelection());
      super.okPressed();
   }