Логин:   Пароль:






Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100
Rambler's Top100

Java: IDEEclipse 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).


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

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


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

ПРИМЕЧАНИЕ:
Не включайтегалочку поддержки нового формата файла манифеста плагина «Create an OSGi bundle manifest for the plug-in».

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


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

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


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

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

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


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

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


Рис. 6. Свойства приложения

Установив указатель мыши на org.eclipse.core.runtime.applications вызовем контекстное меню New1application. Мастером будет добавлена новая ветка дерева расширений application. Установив указатель мыши на application, вызовем контекстное меню New1run. Мастер предложит сгенерировать новый класс приложения by.bs.rcp.app1.PlatformRunnable (см. Рис. 7).


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

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


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

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


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


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

Оставим сгенерированный код перспективы без изменений.

Для формирования начального внешнего вида приложения нужно создать класс наследник WorkbenchAdvisor. Для этого в каталоге src дерева проекта выберем мышкой пакет by.bs.rcp.app1 и в контекстном меню New1Class вызовем мастер класса. В мастере класса (см. Рис. 11) выберем суперкласс org.eclipse.ui.application.WorkbenchAdvisor. Для этого можно воспользоваться мастером поиска класса по имени, который вызывается кнопкой «Browse». Далее вводим имя класса HelloAppWorkbenchAdvisor и нажимаем кнопку «Finish».


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

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

public String getInitialWindowPerspectiveId()
{

  return "by.bs.rcp.app1.HelloPerspectiveFactory";

}

Для формирования начальных параметров загрузки приложения нужно «Перегрузить» метод preWindowOpen(IWorkbenchWindow) суперкласса. Для этого из меню вызовем мастер Source1Override1Implement 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 by.bs.rcp.app1;

import org.eclipse.core.runtime.IPlatformRunnable;

import org.eclipse.swt.widgets.Display;

import org.eclipse.ui.PlatformUI;

import org.eclipse.ui.application.WorkbenchAdvisor;



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. Настройка параметров компиляции проекта

Теперь можно отлаживать созданное приложение. Выбираем в меню Run1Debug, после чего создаем новый профиль отладки выбором элемента Run-time Workbench и нажатием кнопки «New» (см. Рис. 14).


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

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


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

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


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


Рис. 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 by.bs.rcp.app1.HelloRcpApp

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


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

Дополнительную информацию по Eclipse и RCP проектам можно найти на сайте http://www.eclipse.org/



Автор: Сергей Бердачук
http://www.berdaflex.com
08.2004



Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 11

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/books/show2b.php on line 30
Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 91

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/news/worldnews.php on line 95