Eclipse 3. Платформа RCP
Eclipse 3. Платформа RCP
Rich-Client Platform (RCP) — это одна из новых технологий, которая появилась в последней версии Eclipse 3. Ранее в Eclipse IDE поддерживалась разработка плагинов только для расширения непосредственно среды разработки Eclipse. Идеология плагинов целиком пронизывает методику построения Eclipse IDE. По сути, есть модуль загрузчика, а вся остальная функциональность, включая ядро системы, реализована посредством плагинов. Это позволяет гибко собирать набор требуемых для работы модулей. Удобство построения приложений при помощи данной технологии привело разработчиков к решению создать возможность построения таких приложений без использования всего базового набора Eclipse (eclipse-platform-3.0). В реальных прикладных приложениях нет необходимости включать, например поддержку работы с редакторами или проектами. Набор требуемой функциональности сильно зависит от разрабатываемого приложения. Проект RCP был создан именно для обеспечения возможности создания приложений с использованием мощной универсальной оболочки при минимальном количестве требуемых плагинов. Лицензия Eclipse позволяет использовать созданные приложения в коммерческих целях. При этом мы получаем действительно мощный, мультиплатформенный и качественный инструмент с единым стильным интерфейсом. А огромная команда свободных разработчиков Eclipse гарантирует оперативное устранение багов и постоянное совершенствование данного продукта.
Создадим простейшее приложение с использованием технологии RCP. Создаем новый проект File > New > Project. Далее выбираем мастер проектов Plug-in Project и нажимаем кнопку Next (см. рис. 1).
В появившемся диалоге ввода имени проекта (см. рис. 2) вводим by.bs.rcp.app1. Это наименование главного пакета, в котором будет создаваться наш проект.
ПРИМЕЧАНИЕ. Не включайте галочку поддержки нового формата файла манифеста плагина Create an OSGi bundle manifest for the plug-in.
В следующем окне мастера (см. рис. 3) включим галочку Generate the Java class …
На последующее предложение переключиться в перспективу разработки плагинов дадим утвердительный ответ. Мастер проектов создаст новый проект и откроет редактор метафайла плагина plugin.xml. Данный файл содержит все настройки плагина. В идеале всю функциональность плагина желательно наращивать при помощи мастеров редактора данного файла, хотя это не исключает ручную правку XML-кода и генерацию классов другими способами. Переключимся в закладку Dependencies (см. рис. 4)
Нажмем кнопку Add и из списка пакетов добавим пакет org.eclipse.core.runtime.compatibility.
Рис. 1. Выбор мастера проекта
Рис. 2. Ввод имени проекта
Рис. 3. Параметры генерации плагина
Рис. 4. Настройка зависимостей
Рис. 5. Контекстное меню добавления расширения
Рис. 6. Свойства приложения
Непосредственно функциональность плагина описывается в закладке Extensions. Для начала создадим подключение (extension) к точке расширения (extension point), обеспечивающее возможность автономного запуска (stand alone) плагина как отдельного приложения. Для этого вызовем мастер расширений нажатием кнопки Add или из контекстного меню списка расширений закладки Extensions (см. рис. 5).
В списке мастера расширений выберем точку расширения org.eclipse.core.runtime.applications и нажмем кнопку Finish. В панели свойств расширения введем имя идентификатора приложения HelloRcpApp (см. рис. 6).
Установив указатель мыши на org.eclipse.core.runtime.applications, вызовем контекстное меню New > application. Мастером будет добавлена новая ветка дерева расширений application. Установив указатель мыши на application, вызовем контекстное меню New > run. Мастер предложит сгенерировать новый класс приложения by.bs.rcp.app1.Platform-Runnable (см. рис. 7).
Для вызова мастера нажмем линк class*. Мастер создания класса показан на рис. 8.
После создания класса он будет открыт в редакторе java-кода. Вернемся к редактору расширений. Для функционирования RCP-приложений нужно создать хотя бы одну перспективу. Для этого в редакторе расширений добавим расширение org.eclipse.ui.perspectives в контекстном меню, которого выберем New > perspective. После чего в панели свойств зададим идентификатор и имя перспективы (см. рис. 9), а так же сгенерируем новый класс нажатием линка class* (см. рис. 10).
Оставим сгенерированный код перспективы без изменений.
Для формирования начального внешнего вида приложения нужно создать класс-наследник WorkbenchAdvisor. Для этого в каталоге src дерева проекта выберем мышкой пакет by.bs.rcp.app1 и в контекстном меню New > Class вызовем мастер класса. В мастере класса (см. рис. 11) выберем суперкласс org.eclipse.ui.application.WorkbenchAdvisor. Для этого можно воспользоваться мастером поиска класса по имени, который вызывается кнопкой Browse. Далее вводим имя класса HelloAppWorkbenchAdvisor и нажимаем кнопку Finish.
Рис. 7. Предложение генерации класса приложения
Рис. 8. Мастер создания класса
Рис. 9. Свойства расширения перспективы
Рис. 10. Мастер создания класса перспективы
Рис. 11. Мастер создания класса
Рис. 12. Мастер перегрузки/реализации методов суперкласса
В созданном классе подправим метод получения идентификатора перспективы на:
public String getInitialWindowPerspectiveId() {
return "by.bs.rcp.app1.HelloPerspective Factory";
}
Для формирования начальных параметров загрузки приложения нужно "Перегрузить" метод preWindow Open(IWorkbenchWindow) суперкласса. Для этого из меню вызовем мастер Source > Override > Implement Methods (см. рис.12).
public void preWindowOpen(
IWorkbenchWindowConfigurer configurer) {
super.preWindowOpen(configurer);
configurer.setInitialSize(new Point(400, 300));
configurer.setShowCoolBar(false);
configurer.setShowStatusLine(false);
configurer.setTitle("Hello, RCP");
}
Настало время корректировки класса HelloRcpApplication, введем следующий код:
package by.bs.rcp.app1;
import org.eclipse.core.runtime.IPlatform Runnable;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.application.Workbench Advisor;
public class HelloRcpApplication implements IPlatformRunnable {
public Object run(Object args) {
WorkbenchAdvisor workbenchAdvisor
= new HelloAppWorkbenchAdvisor();
Display display = PlatformUI.createDisplay();
try {
int returnCode =
PlatformUI.createAndRunWorkbench(display,
workbenchAdvisor);
if (returnCode == PlatformUI.RETURN_ RESTART) {
return IPlatformRunnable.EXIT_RESTART;
} else {
return IPlatformRunnable.EXIT_OK;
}
} finally {
display.dispose();
}
}
}
Рис. 13. Настройка параметров компиляции проекта
Рис. 14. Создание нового профиля отладки
Рис. 15. Настройка параметров отладки
Рис. 16. Выбор требуемых плагинов
Для корректной работы RCP-приложений требуется режим компиляции кода версии не ниже 1.4. Для этого выделим проект мышкой и вызовем в контекстном меню диалог корректировки свойств Properties. В закладке Java Compiler > Use Project Settings > Compilance and Classfiles установим значение Compilance Level в 1.4 (см рис. 13).
Теперь можно отлаживать созданное приложение. Выбираем в меню Run > Debug. Создаем новый профиль отладки выбором элемента Run-time Workbench и нажатием кнопки New (см. рис. 14).
В следующей панели настройки параметров отладки (см. рис. 15) введем имя профиля и выберем метод запуска приложения Run an application. В выпадающем списке выберем созданное приложение by.bs.app1.HelloRcpApp.
Выберем закладку Plugins и в списке доступных режимов выберем Choose plug-ins and fragments to launch from the list. Далее нужно отменить выбор всех внешних плагинов, отключив галочку напротив ветки External Plugins, и выбрать только необходимые, нажав кнопку Add Required Plug-ins (см. рис 16). Нажмем кнопки Apply и Debug для старта отладки. Результирующее приложение показано на рис.17.
После отладки созданный плагин можно запускать как обычный плагин Eclipse или как автономное приложение. Для этого создадим профиль развертывания.
Экспортируем проект File > Export > Deployable Plugins and fragments. В появившемся диалоге настройки параметров (см. рис.18) отмечаем экспортируемый проект галочкой. В выпадающем списке Deploy as указываем a directory structure и выбираем директорию, в которую будет производиться экспорт проекта.
К сожалению, на данный момент еще не реализован мастер экспорта дополнительных модулей, которые необходимы для запуска RCP-приложений. Эту операцию придется делать вручную. Из каталога установки Eclipse нужно скопировать в корневой каталог экспорта проекта файл startup.jar и создать там же следующий командный файл запуска приложения app1.bat:
start javaw -cp startup.jar org.eclipse.core. launcher.Main -application by.bs.rcp.app1.HelloRcp App
В каталог plugins нужно скопировать все требуемые плагины, которые были выбраны при создании конфигурации отладки. Пример структуры каталогов показан на рис. 19.
Рис. 17. Пример работы созданного приложения
Рис. 18. Параметры экспорта проекта
Рис. 19. Структура каталогов проекта
Дополнительную информацию по Eclipse и RCP-проектам можно найти на сайте http://www.eclipse.org .
Сергей Бердачук, Berdachuk@tut.by
http://berdachuk.at.tut.by
Rich-Client Platform (RCP) — это одна из новых технологий, которая появилась в последней версии Eclipse 3. Ранее в Eclipse IDE поддерживалась разработка плагинов только для расширения непосредственно среды разработки Eclipse. Идеология плагинов целиком пронизывает методику построения Eclipse IDE. По сути, есть модуль загрузчика, а вся остальная функциональность, включая ядро системы, реализована посредством плагинов. Это позволяет гибко собирать набор требуемых для работы модулей. Удобство построения приложений при помощи данной технологии привело разработчиков к решению создать возможность построения таких приложений без использования всего базового набора Eclipse (eclipse-platform-3.0). В реальных прикладных приложениях нет необходимости включать, например поддержку работы с редакторами или проектами. Набор требуемой функциональности сильно зависит от разрабатываемого приложения. Проект RCP был создан именно для обеспечения возможности создания приложений с использованием мощной универсальной оболочки при минимальном количестве требуемых плагинов. Лицензия Eclipse позволяет использовать созданные приложения в коммерческих целях. При этом мы получаем действительно мощный, мультиплатформенный и качественный инструмент с единым стильным интерфейсом. А огромная команда свободных разработчиков Eclipse гарантирует оперативное устранение багов и постоянное совершенствование данного продукта.
Создадим простейшее приложение с использованием технологии RCP. Создаем новый проект File > New > Project. Далее выбираем мастер проектов Plug-in Project и нажимаем кнопку Next (см. рис. 1).
В появившемся диалоге ввода имени проекта (см. рис. 2) вводим by.bs.rcp.app1. Это наименование главного пакета, в котором будет создаваться наш проект.
ПРИМЕЧАНИЕ. Не включайте галочку поддержки нового формата файла манифеста плагина Create an OSGi bundle manifest for the plug-in.
В следующем окне мастера (см. рис. 3) включим галочку Generate the Java class …
На последующее предложение переключиться в перспективу разработки плагинов дадим утвердительный ответ. Мастер проектов создаст новый проект и откроет редактор метафайла плагина plugin.xml. Данный файл содержит все настройки плагина. В идеале всю функциональность плагина желательно наращивать при помощи мастеров редактора данного файла, хотя это не исключает ручную правку XML-кода и генерацию классов другими способами. Переключимся в закладку Dependencies (см. рис. 4)
Нажмем кнопку Add и из списка пакетов добавим пакет org.eclipse.core.runtime.compatibility.
Рис. 1. Выбор мастера проекта
Рис. 2. Ввод имени проекта
Рис. 3. Параметры генерации плагина
Рис. 4. Настройка зависимостей
Рис. 5. Контекстное меню добавления расширения
Рис. 6. Свойства приложения
Непосредственно функциональность плагина описывается в закладке Extensions. Для начала создадим подключение (extension) к точке расширения (extension point), обеспечивающее возможность автономного запуска (stand alone) плагина как отдельного приложения. Для этого вызовем мастер расширений нажатием кнопки Add или из контекстного меню списка расширений закладки Extensions (см. рис. 5).
В списке мастера расширений выберем точку расширения org.eclipse.core.runtime.applications и нажмем кнопку Finish. В панели свойств расширения введем имя идентификатора приложения HelloRcpApp (см. рис. 6).
Установив указатель мыши на org.eclipse.core.runtime.applications, вызовем контекстное меню New > application. Мастером будет добавлена новая ветка дерева расширений application. Установив указатель мыши на application, вызовем контекстное меню New > run. Мастер предложит сгенерировать новый класс приложения by.bs.rcp.app1.Platform-Runnable (см. рис. 7).
Для вызова мастера нажмем линк class*. Мастер создания класса показан на рис. 8.
После создания класса он будет открыт в редакторе java-кода. Вернемся к редактору расширений. Для функционирования RCP-приложений нужно создать хотя бы одну перспективу. Для этого в редакторе расширений добавим расширение org.eclipse.ui.perspectives в контекстном меню, которого выберем New > perspective. После чего в панели свойств зададим идентификатор и имя перспективы (см. рис. 9), а так же сгенерируем новый класс нажатием линка class* (см. рис. 10).
Оставим сгенерированный код перспективы без изменений.
Для формирования начального внешнего вида приложения нужно создать класс-наследник WorkbenchAdvisor. Для этого в каталоге src дерева проекта выберем мышкой пакет by.bs.rcp.app1 и в контекстном меню New > Class вызовем мастер класса. В мастере класса (см. рис. 11) выберем суперкласс org.eclipse.ui.application.WorkbenchAdvisor. Для этого можно воспользоваться мастером поиска класса по имени, который вызывается кнопкой Browse. Далее вводим имя класса HelloAppWorkbenchAdvisor и нажимаем кнопку Finish.
Рис. 7. Предложение генерации класса приложения
Рис. 8. Мастер создания класса
Рис. 9. Свойства расширения перспективы
Рис. 10. Мастер создания класса перспективы
Рис. 11. Мастер создания класса
Рис. 12. Мастер перегрузки/реализации методов суперкласса
В созданном классе подправим метод получения идентификатора перспективы на:
public String getInitialWindowPerspectiveId() {
return "by.bs.rcp.app1.HelloPerspective Factory";
}
Для формирования начальных параметров загрузки приложения нужно "Перегрузить" метод preWindow Open(IWorkbenchWindow) суперкласса. Для этого из меню вызовем мастер Source > Override > Implement Methods (см. рис.12).
public void preWindowOpen(
IWorkbenchWindowConfigurer configurer) {
super.preWindowOpen(configurer);
configurer.setInitialSize(new Point(400, 300));
configurer.setShowCoolBar(false);
configurer.setShowStatusLine(false);
configurer.setTitle("Hello, RCP");
}
Настало время корректировки класса HelloRcpApplication, введем следующий код:
package by.bs.rcp.app1;
import org.eclipse.core.runtime.IPlatform Runnable;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.application.Workbench Advisor;
public class HelloRcpApplication implements IPlatformRunnable {
public Object run(Object args) {
WorkbenchAdvisor workbenchAdvisor
= new HelloAppWorkbenchAdvisor();
Display display = PlatformUI.createDisplay();
try {
int returnCode =
PlatformUI.createAndRunWorkbench(display,
workbenchAdvisor);
if (returnCode == PlatformUI.RETURN_ RESTART) {
return IPlatformRunnable.EXIT_RESTART;
} else {
return IPlatformRunnable.EXIT_OK;
}
} finally {
display.dispose();
}
}
}
Рис. 13. Настройка параметров компиляции проекта
Рис. 14. Создание нового профиля отладки
Рис. 15. Настройка параметров отладки
Рис. 16. Выбор требуемых плагинов
Для корректной работы RCP-приложений требуется режим компиляции кода версии не ниже 1.4. Для этого выделим проект мышкой и вызовем в контекстном меню диалог корректировки свойств Properties. В закладке Java Compiler > Use Project Settings > Compilance and Classfiles установим значение Compilance Level в 1.4 (см рис. 13).
Теперь можно отлаживать созданное приложение. Выбираем в меню Run > Debug. Создаем новый профиль отладки выбором элемента Run-time Workbench и нажатием кнопки New (см. рис. 14).
В следующей панели настройки параметров отладки (см. рис. 15) введем имя профиля и выберем метод запуска приложения Run an application. В выпадающем списке выберем созданное приложение by.bs.app1.HelloRcpApp.
Выберем закладку Plugins и в списке доступных режимов выберем Choose plug-ins and fragments to launch from the list. Далее нужно отменить выбор всех внешних плагинов, отключив галочку напротив ветки External Plugins, и выбрать только необходимые, нажав кнопку Add Required Plug-ins (см. рис 16). Нажмем кнопки Apply и Debug для старта отладки. Результирующее приложение показано на рис.17.
После отладки созданный плагин можно запускать как обычный плагин Eclipse или как автономное приложение. Для этого создадим профиль развертывания.
Экспортируем проект File > Export > Deployable Plugins and fragments. В появившемся диалоге настройки параметров (см. рис.18) отмечаем экспортируемый проект галочкой. В выпадающем списке Deploy as указываем a directory structure и выбираем директорию, в которую будет производиться экспорт проекта.
К сожалению, на данный момент еще не реализован мастер экспорта дополнительных модулей, которые необходимы для запуска RCP-приложений. Эту операцию придется делать вручную. Из каталога установки Eclipse нужно скопировать в корневой каталог экспорта проекта файл startup.jar и создать там же следующий командный файл запуска приложения app1.bat:
start javaw -cp startup.jar org.eclipse.core. launcher.Main -application by.bs.rcp.app1.HelloRcp App
В каталог plugins нужно скопировать все требуемые плагины, которые были выбраны при создании конфигурации отладки. Пример структуры каталогов показан на рис. 19.
Рис. 17. Пример работы созданного приложения
Рис. 18. Параметры экспорта проекта
Рис. 19. Структура каталогов проекта
Дополнительную информацию по Eclipse и RCP-проектам можно найти на сайте http://www.eclipse.org .
Сергей Бердачук, Berdachuk@tut.by
http://berdachuk.at.tut.by
Компьютерная газета. Статья была опубликована в номере 33 за 2004 год в рубрике программирование :: разное