T.M. SoftStudio

feci quod potui, faciant meliora potentes

Купить полную версию книги "Среда разработки Eclipse 4: Руководство разработчика"

Создание приложений на основе платформы Riena

Создание Riena RCP приложения

После установки набора Riena Toolbox в меню File среды Eclipse выберем команду New | Other | Plug-in Development | Plug-in Project и нажмем кнопку Next, введем имя проекта и нажмем кнопку Next, выберем переключатель Yes раздела Rich Client Application и нажмем кнопку Next – откроется страница Templates мастера создания проекта с шаблонами Riena-приложений (рис. 11.2).

Рис. 11.2. Страница Templates мастера создания проекта с шаблонами Riena-приложений

Выберем шаблон Riena Hello World и нажмем кнопку Finish. В результате будет сгенерирована основа Riena-приложения.

Запустить Riena-приложение из среды Eclipse можно, нажав правой кнопкой мышки в окне Package Explorer на узел проекта и в контекстном меню выбрав команду Run As | Run Configurations. В разделе Eclipse Application откроем конфигурацию SWT ExampleApplication E4 из проекта установки RienaSetup.

Откроем вкладку Plug-ins и отметим флажок проекта на основе шаблона Riena Hello World, нажмем кнопки Add Required Plug-ins, Apply и Run (рис. 11.3).

Рис. 11.3. Запуск Riena-приложения

В результате откроется окно Riena-приложения (рис. 11.4).

Рис. 11.4. Окно Riena-приложения «Hello World»

Рассмотрим отличие Riena-приложения «Hello World» от RCP-приложения «Hello».

Во вкладке Dependences PDE-редактора Riena-приложения добавляется зависимость от плагина org.eclipse.riena.client, обеспечивающего связь с платформой Riena.

Во вкладке Extensions PDE-редактора Riena-приложения добавляются расширения плагинов org.eclipse.ui.views и org.eclipse.riena.navigation.assemblies2.

Расширение org.eclipse.riena.navigation.assemblies2 описывает GUI-интерфейс приложения как дерево компонентов (рис. 11.5).

Рис. 11.5. Дерево компонентов GUI-интерфейса Riena-приложения

Корневым узлом Riena Navigation-дерева GUI-интерфейса является узел приложения, экземпляр которого создается в главном классе Application приложения – точке входа в приложение (папка src Riena-проекта).

В отличие от RCP-приложений главный класс Riena-приложения расширяет класс org.eclipse.riena.navigation.ui.swt.application.SwtApplication с переопределением его метода createModel(), а не реализует интерфейс org.eclipse.equinox.app.IApplication – как главный класс RCP-приложения.

Метод createModel() создает экземпляр узла приложения org.eclipse.riena.navigation.model.ApplicationNode, конструктор которого своим параметром определяет заголовок окна приложения.

Идентификатор узла приложения совпадает с идентификатором расширения org.eclipse.core.runtime.applications, в котором указывается главный класс приложения (вкладка plugin.xml PDE-редактора Riena-приложения).

Элемент assembly не имеет визуального представления и служит контейнером для компонентов Navigation-дерева, определяющим их сборку. Элемент assembly описывается тэгом <assembly2> расширения org.eclipse.riena.navigation.assemblies2. Атрибут startOrder тэга <assembly2> определяет порядок добавления assembly-контейнера в Navigation-дерево. Атрибут parentNodeId указывает идентификатор узла приложения как корневого контейнера для assembly-контейнеров.

Элемент subApplication (тэг <subApplication> расширения org.eclipse.riena.navigation.assemblies2) представляет отдельную часть Riena-приложения, визуально реализованную в виде вкладки окна приложения. В данном случае это вкладка с именем HelloWorldSubapplication (см. рис. 11.4). Каждое субприложение имеет Riena-перспективу, представленную классом org.eclipse.riena.navigation.ui.swt.views.SubApplicationView и идентификатор которой указывается атрибутом perspectiveId тэга <subApplication>. Riena-перспектива описывается тэгом <perspective> расширения org.eclipse.ui.perspectives.

Субприложение Riena-приложения содержит модули, сгруппированные в группы модулей. Группа модулей описывается тэгом <moduleGroup>, а модуль – тэгом <module> расширения org.eclipse.riena.navigation.assemblies2. Визуально модули представлены узлами левой части окна Riena-приложения, имеющими кнопку закрытия. Заголовок модуля определяется атрибутом name тэга <module>.

Модуль субприложения Riena-приложения содержит субмодули, которые в левой части окна Riena-приложения визуально представлены дочерними элементами узла модуля, а в правой части окна – представлением View (рис. 11.6).

Рис. 11.6. Модули и субмодули субприложения Riena-приложения

Субмодуль описывается тэгом <subModule> расширения org.eclipse.riena.navigation.assemblies2. Заголовок субмодуля определяется атрибутом name тэга <subModule>. Атрибут viewId тэга <subModule> указывает идентификатор расширения org.eclipse.ui.views, в котором с помощью атрибута class тэга <view> определяется класс приложения, расширяющий класс org.eclipse.riena.navigation.ui.swt.views.SubModuleView и отвечающий за отображение View-представления с компонентами GUI-интерфейса. В данном случае это класс HelloWorldSubModuleView папки src Riena-проекта.

Субмодули Riena-платформы реализуют архитектуру Model-View-Controller (MVC) – SubModuleView-класс приложения отвечает за визуальное представление данных, а сами данные связываются с SubModuleView-классом с помощью контроллера, определяемого атрибутом controller тэга <subModule> и представленного классом, расширяющим класс org.eclipse.riena.navigation.ui.controllers.SubModuleController. В данном случае это класс HelloWorldSubModuleController папки src Riena-проекта.

Widget-компоненты View-представления субмодуля представляются в контроллере как Ridget-компоненты, которые и связываются с моделью данных с помощью метода bindToModel().

Widget-компоненты конвертируются в Ridget-компоненты с помощью метода getRidget(), который в качестве аргумента принимает имя конвертируемого Widget-компонента.

Для экспорта Riena RCP проекта в готовое для развертывания Riena-приложение создадим конфигурационный Product-файл.

Для этого в окне Project Explorer среды Eclipse нажмем правой кнопкой мышки на узле проекта и в контекстном меню выберем команду New | Other | Plug-in Development | Product Configuration.

Нажмем кнопку Next, в поле File name: введем имя файла, выберем переключатель Use a launch configuration, выберем конфигурацию SWT ExampleApplication E4 и нажмем кнопку Finish.

Во вкладке Dependences редактора Product-файла отметим флажок Include optional dependences when computing required plug-ins и нажмем кнопку Add Required Plug-ins.

Откроем представление Plug-ins среды Eclipse и найдем плагин org.eclipse.riena.e4.launcher. С помощью команды Import As | Binary Project импортируем плагин в Workspace-пространство.

Во вкладке Overview редактора Product-файла нажмем ссылку Eclipse Product export wizard и произведем экспорт Riena-проекта в готовое для развертывания Riena-приложение.


Создание клиент-сервисного Riena-приложения