Если возможностей стандартного окна диалога недостаточно для реализации модуля, с помощью класса Dialog можно создать собственное окно диалога. В предыдущих разделах было показано, каким образом утилита readme добавляет действие "Открыть браузер Readme" в набор действий. Этот набор действий доступен на панели инструментов рабочей среды, а также в меню Окно->Редактор файлов Readme.
Теперь можно рассмотреть реализацию этого действия в классе утилиты readme WindowActionDelegate.
public void run(IAction action) { SectionsDialog dialog = new SectionsDialog(window.getShell(), ReadmeModelFactory.getInstance().getSections(selection)); dialog.open(); }
Делегат действия окна, предусмотренный для набора действий, получает список разделов файла readme в соответствии с элементами, выбранными на панели навигатора ресурсов (файл .readme). Этот список и оболочка окна рабочей среды передаются классу SectionsDialog.
В результате выбора пользователем одного из действий открывается окно диалога SectionsDialog.
Класс SectionsDialog реализован в утилите readme путем наследования класса Dialog, входящего в состав пакета org.eclipse.jface.dialogs.
Класс Dialog предоставляет базовую поддержку для создания окна оболочки, общих кнопок, а также запуска окна диалога. Производные классы отвечают непосредственно за обработку содержимого окна диалога:
SectionsDialog создает список SWT для отображения списка разделов. Для заполнения списка применяется программа просмотра JFace. (Программы просмотра JFace рассматриваются в разделе Программы просмотра). Обратите внимание, что окно диалога не обязательно должно создавать кнопки, поскольку за это отвечает базовый класс.
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")); ... }
Сложность окна диалога зависит от предъявляемых к нему требований. В процессе реализации окна диалога основное внимание уделяется созданию управляющих элементов SWT, необходимых для представления областей содержимого, а также обработки поддерживаемых событий. Действия, выполняемые окном диалога в ответ на нажатие пользователем кнопки, определяются в соответствии с состоянием различных управляющих элементов (или программ просмотра), входящих в состав этого окна диалога.