Первый шаг при задании модуля приложения расширенного клиента аналогичен определению уже изученных модулей. Единственное отличие в первой части кода состоит в том, что список необходимых модулей значительно меньше!
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.0"?> <plugin id="org.eclipse.ui.examples.rcp.browser" name="%pluginName" version="3.0.0" provider-name="%providerName"> <runtime> <library name="browser.jar"> </library> </runtime> <requires> <import plugin="org.eclipse.core.runtime"/> <import plugin="org.eclipse.ui"/> </requires>
До сих пор для добавления функции в рабочую среду платформы необходимо было объявить расширения, которые добавляют элементы в рабочую среду. До этого момента мы рассматривали только отдельные элементы файла plugin.xml. Для платформы расширенного клиента нет приложения, которое уже определено. Сам модуль расширенного клиента отвечает за создание класса, который выполняется при запуске платформы. Для этой цели используется расширение org.eclipse.core.runtime.applications.
<extension point="org.eclipse.core.runtime.applications" id="app" name="%appName"> <application> <run class="org.eclipse.ui.examples.rcp.browser.BrowserApp"> </run> </application> </extension>
В этом расширении указан класс, который выполняется при первом запуске платформы. Данный класс должен реализовывать интерфейс IPlatformRunnable, то есть он должен реализовать метод run. Метод run отвечает за создание окна SWT и запуск рабочей среды. Для выполнения этих задач класс PlatformUI содержит удобные методы.
public Object run(Object args) throws Exception { Display display = PlatformUI.createDisplay(); try { int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); // exit the application with an appropriate return code return code == PlatformUI.RETURN_RESTART ? EXIT_RESTART : EXIT_OK; } finally { if (display != null) display.dispose(); } }
Вызов метода createAndRunWorkbench не возвращает никакого значения, пока не будет закрыта рабочая среда. Цикл событий SWT и другие алгоритмы низкого уровня обрабатываются внутри этого метода. На данном этапе понимание основ выполнения приложения SWT не столь важно. Этот код можно скопировать в приложение расширенного клиента с минимальными изменениями. На самом деле, для добавления собственных функций используется WorkbenchAdvisor, который передается в качестве аргумента при создании рабочей среды. Рассмотрим это подробнее.