BERDAFLEX Software Systems
Главная > Eclipse > Статьи > Eclipse 3. Платформа RCP

Eclipse 3. Платформа RCP

Сергей Бердачук, 2.0 2004 г.

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).

Рис. 1. Выбор мастера проекта


В появившемся диалоге ввода имени проекта (см. рис. 2) вводим com.berdaflex.rcp.app1. Это наименование главного пакета, в котором будет создаваться наш проект.

Рис. 2. Ввод имени проекта


Замечание

Не включайте галочку поддержки нового формата файла манифеста плагина Create an OSGi bundle manifest for the plug-in.

В следующем окне мастера (см. рис. 3) включим галочку Generate the Java class

Рис. 3. Параметры генерации плагина


На последующее предложение переключиться в перспективу разработки плагинов дадим утвердительный ответ. Мастер проектов создаст новый проект и откроет редактор метафайла плагина plugin.xml. Данный файл содержит все настройки плагина. В идеале всю функциональность плагина желательно наращивать при помощи мастеров редактора данного файла, хотя это не исключает ручную правку XML-кода и генерацию классов другими способами. Переключимся в закладку Dependencies (см. рис. 4)

Рис. 4. Настройка зависимостей


Нажмем кнопку "Add" и из списка пакетов добавим пакет org.eclipse.core.runtime.compatibility.

Непосредственно функциональность плагина описывается в закладке Extensions. Для начала создадим подключение (extension) к точке расширения (extension point), обеспечивающее возможность автономного запуска (stand alone) плагина как отдельного приложения. Для этого вызовем мастер расширений нажатием кнопки Add или из контекстного меню списка расширений закладки Extensions (см. рис. 5).

Рис. 5. Контекстное меню добавления расширения


В списке мастера расширений выберем точку расширения org.eclipse.core.runtime.applications и нажмем кнопку Finish. В панели свойств расширения введем имя идентификатора приложения HelloRcpApp (см. рис. 6).

Рис. 6. Свойства расширения


Установив указатель мыши на org.eclipse.core.runtime.applications, вызовем контекстное меню New > application. Мастером будет добавлена новая ветка дерева расширений application. Установив указатель мыши на application, вызовем контекстное меню New > Run. Мастер предложит сгенерировать новый класс приложения com.berdaflex.rcp.app1.Platform-Runnable (см. рис. 7).

Рис. 7. Предложение генерации класса приложения


Для вызова мастера нажмем линк class*. Мастер создания класса показан на рис. 8.

Рис. 8. Мастер создания класса приложения


После создания класса он будет открыт в редакторе java-кода. Вернемся к редактору расширений. Для функционирования RCP-приложений нужно создать хотя бы одну проекцию (перспективу). Для этого в редакторе расширений добавим расширение org.eclipse.ui.perspectives в контекстном меню, которого выберем New > Perspective. После чего в панели свойств зададим идентификатор и имя перспективы (см. рис. 9), а так же сгенерируем новый класс нажатием линка class* (см. рис. 10).

Рис. 9. Свойства расширения проекции

Рис. 10. Мастер создания класса перспективы


Оставим сгенерированный код проекции без изменений.
Для формирования начального внешнего вида приложения нужно создать класс-наследник WorkbenchAdvisor. Для этого в каталоге src дерева проекта выберем мышкой пакет com.berdaflex.rcp.app1 и в контекстном меню New > Class вызовем мастер класса. В мастере класса (см. рис. 11) выберем суперкласс org.eclipse.ui.application.WorkbenchAdvisor. Для этого можно воспользоваться мастером поиска класса по имени, который вызывается кнопкой Browse. Далее вводим имя класса HelloAppWorkbenchAdvisor и нажимаем кнопку "Finish".


Рис. 11. Мастер создания класса WorkbenchAdvisor


В созданном классе подправим метод получения идентификатора перспективы на:

public String getInitialWindowPerspectiveId() {
  return "com.berdaflex.rcp.app1.HelloPerspectiveFactory";
}

Для формирования начальных параметров загрузки приложения нужно "Перегрузить" метод preWindow Open(IWorkbenchWindow) суперкласса. Для этого из меню вызовем мастер Source > Override > Implement Methods (см. рис.12).

Рис. 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 com.berdaflex.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();
    }
  }
}

Для корректной работы RCP-приложений требуется режим компиляции кода версии не ниже 1.4. Для этого выделим проект мышкой и вызовем в контекстном меню диалог корректировки свойств Properties. В закладке Java Compiler > Use Project Settings > Compilance and Classfiles установим значение Compilance Level в 1.4 (см рис. 13).

Рис. 13. Настройка параметров компиляции проекта


Теперь можно отлаживать созданное приложение. Выбираем в меню Run > Debug. Создаем новый профиль отладки выбором элемента Run-time Workbench и нажатием кнопки "New" (см. рис. 14).

Рис. 14. Создание нового профиля отладки


В следующей панели настройки параметров отладки (см. рис. 15) введем имя профиля и выберем метод запуска приложения Run an application. В выпадающем списке выберем созданное приложение com.berdaflex.app1.HelloRcpApp.

Рис. 15. Настройка параметров отладки


Выберем закладку Plugins и в списке доступных режимов выберем Choose plug-ins and fragments to launch from the list. Далее нужно отменить выбор всех внешних плагинов, отключив галочку напротив ветки External Plugins, и выбрать только необходимые, нажав кнопку "Add Required Plug-ins" (см. рис 16). Нажмем кнопки Apply и Debug для старта отладки.

Рис. 16. Выбор требуемых плагинов


Результирующее приложение показано на рис.17.

Рис. 17. Пример работы созданного приложения


После отладки созданный плагин можно запускать как обычный плагин Eclipse или как автономное приложение. Для этого создадим профиль развертывания.

Экспортируем проект File > Export > Deployable Plugins and fragments. В появившемся диалоге настройки параметров (см. рис.18) отмечаем экспортируемый проект галочкой. В выпадающем списке Deploy as указываем a directory structure и выбираем директорию, в которую будет производиться экспорт проекта.

Рис. 18. Параметры экспорта проекта


К сожалению, на данный момент еще не реализован мастер экспорта дополнительных модулей, которые необходимы для запуска RCP-приложений. Эту операцию придется делать вручную. Из каталога установки Eclipse нужно скопировать в корневой каталог экспорта проекта файл startup.jar и создать там же следующий командный файл запуска приложения app1.bat:

start javaw -cp startup.jar org.eclipse.core. launcher.Main -application com.berdaflex.rcp.app1.HelloRcpApp

В каталог plugins нужно скопировать все требуемые плагины, которые были выбраны при создании конфигурации отладки. Пример структуры каталогов показан на рис. 19.

Рис. 19. Структура каталогов проекта


Рекомендуемые ресурсы:


Rambler's Top100 Рейтинг@Mail.ru