Для настройки специального поведения рабочей среды применяется прежде всего "советник" WorkbenchAdvisor. Модуль расширенного клиента должен расширять этот абстрактный класс для создания конфигурации рабочей среды, соответствующей применяемому приложению. Для этой цели используется класс BrowserAdvisor.
... int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); ...
Советник рабочей среды переопределяет методы, применяемые для настройки макета и комплектов рабочей среды, например, элементов панели действий или начальной страницы.
Методы, предоставляемые советником рабочей среды, позволяют приложению в любой момент времени встроиться в рабочую среду и влиять на ее поведение. Приведенный ниже список методов, которые могут быть переопределены, можно найти в Javadoc для WorkbenchAdvisor.
initialize
- вызывается первым; до создания окон; применяется для регистрацииpreStartup
- вызывается вторым; после инициализации, но до открытия первого окна; применяется для временного отключения объектов во время запуска или восстановленияpostStartup
- вызывается третьим; после открытия первого окна; применяется для повторной активации объектов, временно отключенных на предыдущем шагеpostRestore
- вызывается после восстановления рабочей среды и ее окон из ранее сохраненного состояния; применяется для коррекции восстановленной рабочей средыpreWindowOpen
- вызывается при открытии каждого окна;
применяется для настройки элементов окна, за исключением панелей действий fillActionBars
- вызывается после preWindowOpen
для настройки панелей действий окнаpostWindowRestore
- вызывается после восстановления окна из ранее сохраненного состояния; применяется для коррекции восстановленного окнаpostWindowCreate
- вызывается после создания окна из первоначального или восстановленного состояния; применяется для коррекции окнаopenIntro
- вызывается непосредственно перед открытием окна для создания компонента начальной страницы, если он задан.
postWindowOpen
- вызывается после открытия окна; применяется для подключения получателей запросов и т.д.preWindowShellClose
- вызывается, когда пользователь закрывает оболочку окна; применяется для предварительного просмотра закрытия окнаeventLoopException
- вызывается для обработки сбоя цикла событий; применяется для уведомления пользователя о возникновении исключительной ситуацииeventLoopIdle
- вызывается, если очередь событий для обработки пуста; применяется для выполнения других действий или ожидания новых событий в очередиpreShutdown
- вызывается сразу после завершения цикла событий, но до закрытия окон; позволяет приложению запретить выход postShutdown
- вызывается последним; после завершения цикла событий и закрытия всех окон; применяется для отмены регистрации объектов, зарегистрированных во время инициализацииКак видно из списка, приложение расширенного клиента имеет широкие возможности для управления рабочей средой. В приведенном примере основная функция BrowserAdvisor состоит в настройке панелей действий элементов меню, необходимых в браузере. Для этой цели используется метод fillActionBars:
public void fillActionBars(IWorkbenchWindow window, IActionBarConfigurer configurer, int flags) { ... BrowserActionBuilder builder = new BrowserActionBuilder(window); getWorkbenchConfigurer().getWindowConfigurer(window).setData(BUILDER_KEY, builder); builder.fillActionBars(configurer, flags); }
Этот метод настраивает использование в рабочей среде специального компоновщика действий. Компоновщик действий применяется для заполнения панелей действий рабочей среды. Более подробное описание действий можно найти в разделе Определение действий. Сейчас мы рассматриваем вопросы настройки рабочей среды.
Обратите внимание на использование метода getWorkbenchConfigurer(). В процедурах настройки окон методы IWorkbenchConfigurer и IWorkbenchWindowConfigurer используются вместе с WorkbenchAdvisor. Эти классы позволяют переопределять многие аспекты создания рабочей среды на различных уровнях. Например, метод IWorkbenchWindowConfigurer определяет протокол, который предусматривает особые параметры настройки управляющих элементов в окне рабочей среды, например, панели действий, строки состояния, панели проекции и.т.д. Данный протокол позволяет настраивать и заполнять эти элементы. Метод IWorkbenchConfigurer работает на более высоком уровне, позволяя сохранять данные конкретного приложения в рабочей среде. WorkbenchAdvisor обеспечивает доступ к этим функциям настройки в перечисленных выше методах. Методы более низкого уровня внутри WorkbenchAdvisor могут быть переопределены для полной замены поведения по умолчанию. Например, советник рабочей среды может переопределить метод, который создает управляющие элементы SWT окон, что позволит по-другому реализовать главное окно.
Итак, существует множество способов для настройки рабочей среды и несколько различных уровней для использования этих методов. Полное описание доступного протокола приведено в Javadoc для WorkbenchAdvisor, IWorkbenchConfigurer и IWorkbenchWindowConfigurer. Также см. полное описание различных реализаций BrowserAdvisor.