В состав пакета 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(); }
Вообще, встраиваемый модуль ответственен за определение и интерпретацию параметров окна диалога. Однако, есть несколько специфических ключей параметров окна диалога, определенных внутри структуры диалога JFace, которые используются для запоминания последнего размера и положения окна диалога, чтобы оно при следующем вызове могло быть открыто в том же виде. Структура не будет работать с запросом и сохранять размер и положение окна диалога, но вы должны реализовать метод, который предоставляет экземпляр IDialogSettings, используемый для сохранения информации о границах окна диалога. Следующий фрагмент кода показывает, как SectionsDialog может использовать эту функцию.
protected IDialogSettings getDialogBoundsSettings() { return ReadmePlugin.getDefault().getDialogSettings(); }
После реализации этого метода размер и положение SectionsDialog будет сохраняться в предопределенных ключах параметров окна диалога встраиваемого модуля, вследствие чего оно будет открываться в своем предыдущем расположении.