Cодержание
- Введение
- Требуется установка, чтобы начать
- Создать новый Java Workspace
- Установка RAP Target
- Создать пустой Eclipse RAP e4 Project
- Конфигурация для запуска приложения
- Структура пустого приложения Eclipse e4 RAP
- Конфигурировать добавленные Bundle
- Handler и Command
- Объявление Menus
- Создать Toolbar
- Part
Руководство Eclipse RAP для начинающих - приложение e4 Workbench
View more Tutorials:
- Введение
- Требуется установка, чтобы начать
- Создать новый Java Workspace
- Установка RAP Target
- Создать пустой Eclipse RAP e4 Project
- Конфигурация для запуска приложения
- Структура пустого приложения Eclipse e4 RAP
- Конфигурировать добавленные Bundle
- Handler и Command
- Объявление Menus
- Создать Toolbar
- Part

This document is based on:
-
Eclipse 4.5 (MARS)
-
Eclipse RAP e4
You need the latest version of Eclipse. There currently is Eclipse 4.5 (Codes MARS).
In my opinion you to download package: "Eclipse IDE for Java EE Developers". The only different package quantities Plugin, for the purpose of different programming. During the programming process can install the plugin for other purposes.

Установить Plugin WindowBuilder, это Plugin 1, который позволяет создавать интерфейс приложения SWT через перетаскивания удобным способом. Смотрите инструкции установки по ссылке:
Вы можете просмотреть руководство установки e4 Tools Developer Resources по ссылке:
- TODO Link!
Вы можете посмотреть инструкцию по ссылке:
Для программирования приложения RAP е4 вы должны создать новый Java Workspace:
- File/Switch Workspace/Other..

Введите:
- F:\ECLIPSE_TUTORIAL\RAP_E4

Для программирования приложения RAP e4 вам необходимо установить среду RAP (RAP Target Platform). Включая минимально две библиотеки:
- RAP Target Components
- RAP e4 Target Components
Создайте project RAPTarget и создайте файл Targetdefine. Вы можете посмотреть инструкцию по ссылке:
Полученные результаты:

В этом документе я буду покажу вам как создавать приложение RAP e4 с самого начала (Не делая по готовому шаблону), так что я буду создавать пустое приложение RAP e4.
In Eclipse select:
- File/New/Other...

Введите:
- Project Name: RAPe4Tutorial

- Check selected on (1)
- On the (2) select "No" to create Eclipse RAP Project (Running on Web), otherwise it will create RCP Project (Running on the Desktop).

Выбрать " RAP e4 application"

Введите
- Application window title: Hello RAP E4
- Java package name: org.o7planning.tutorial.rape4

Проект создан:

Запустите приложение:
Щелкните правой кнопкой мыши в проект RAPe4Tutorial, выбрать:
- Run As/Eclipse Application

Eclipse браузер может не отображать приложение RAP e4

Вам нужно скопировать ссылку для запуска на Firefox или Chrome

Вы можете конфигурировать порт (port) и браузер по умолчанию для запуска приложения RAP е4:
Щелкните правой кнопкой мыши в проект RAPe4Tutorial выберите:
- Run As/Run Configurations...

Использование порта 7777 и браузер по умолчанию операционной системы:


Нажимаете кнопку Apply и запустить приложение:

Результаты:

Пустое приложение Eclipse RAP e4 было создано через Eclipse, посмотрим на ее структуру. Открыть файл Application.e4xmi:


Измененить название приложения в "Eclipse E4 RAP Application", как в иллюстрации ниже.

И повторно запустить приложение:

Для того, чтобы создать приложение RAP e4 с несколькими функциями, вам нужно декларировать использование некоторых других Bundle:
Открыть файл MANIFEST.MF

Добавить Bundle
- org.eclipse.e4.ui.model.workbench
- org.eclipse.e4.ui.services
- org.eclipse.e4.ui.workbench

Bundle могут быть взаимозависимы, например bundle А зависит от B, C. И B зависит от E, F. При добавлении bundle A в свое приложение, Eclipse нужно перерасчитать необходимые Bundle для упаковки в продукт для работы.
Таким образом, после того, как вы заявляете использование дополнительных Bundle, вам необходимо переконфигурировать приложение.
Таким образом, после того, как вы заявляете использование дополнительных Bundle, вам необходимо переконфигурировать приложение.
Right-click the Project and select:
- Run As/Run Configurations

- 1.Нажимаете кнопку Add Required Bundles чтобы eclipse перерасчитал зависимые bundle
- 2. Нажимаете кнопку Validate Bundles чтобы гарантировать, что ваш проект не будет иметь проблем



RAP Framework построил много готовых Command, например 3 команды с ID ниже:
- org.eclipse.ui.file.exit
- Close the workbench
- org.eclipse.ui.file.save
- Save the active editor.
- org.eclipse.ui.help.aboutAction
- Displays the About dialog.
You can see a list of built-in command of the RAP framework at:
Создайте новую quiteCommand команду, вызванную для выхода из приложения, которая была построена в RAP Framework.


Точно так же мы создаваем другие 2 Command:

Выполните команду save содержимое на Part (editor)
- ID: org.eclipse.ui.file.save
- Name: saveCommand
AboutCommand:
- ID: org.eclipse.ui.help.aboutAction
- Name: aboutCommand
Handler является классом обработки команд (command) из Menu или Toolbar. При нажатии на MenuItem или Toolltem означает выполнить команду, до того, как будет выполнена команда ,Handler будет выполнена раньше, вы можете отменить (cancel) Command, которая выполняется в Handler.
Handler это классы, которые при выполнении будет выполнять задания записанные в method аннотированные в @Execute.
Я буду создавать 3 класса Handler:
Handler это классы, которые при выполнении будет выполнять задания записанные в method аннотированные в @Execute.
Я буду создавать 3 класса Handler:
AboutHandler.java
package org.o7planning.tutorial.rape4.handler; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Shell; public class AboutHandler { @Execute public void execute(Shell shell) { MessageDialog.openInformation(shell, "About", "Eclipse e4 RAP Application"); } }
QuitHandler.java
package org.o7planning.tutorial.rcp.handler; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.workbench.IWorkbench; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Shell; public class QuitHandler { @Execute public void execute(IWorkbench workbench, Shell shell){ if (MessageDialog.openConfirm(shell, "Confirmation", "Do you want to exit?")) { workbench.close(); } } }
SaveHandler.java
package org.o7planning.tutorial.rcp.handler; import org.eclipse.e4.core.di.annotations.CanExecute; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.workbench.modeling.EPartService; public class SaveHandler { @CanExecute public boolean canExecute(EPartService partService) { if (partService != null) { return !partService.getDirtyParts().isEmpty(); } return false; } @Execute public void execute(EPartService partService) { partService.saveAll(false); } }
Объявить Handler с приложениями
Для объявления Handler с Application, вы должны объявить ID, Handler class и Command Handler.
Например, пользователь выйдет из приложение, нажав на menuItem Exit, этот menuItem связан с quiteCommand, QuiteHandler это класс обрабатывающий эту команду (как объявлено выше), класс QuiteHandler спросит пользователя, действительно ли пользователь хочет закрыть приложение, если да, то quiteCommand команда будет выполнена.
Например, пользователь выйдет из приложение, нажав на menuItem Exit, этот menuItem связан с quiteCommand, QuiteHandler это класс обрабатывающий эту команду (как объявлено выше), класс QuiteHandler спросит пользователя, действительно ли пользователь хочет закрыть приложение, если да, то quiteCommand команда будет выполнена.

Введите:
- ID: handler.quiteCommand

Индентично, объявите другие Handler
- handler.aboutCommand

- handler.saveCommand

Добавьте некоторые иконки в проект, используются как символ для MenuItem и ToolItem
- sample.png
- save_edit.png

Создать главное меню (Main menu) приложения

Введите ID главного меню, обязательно должно быть:
- menu:org.eclipse.ui.main.menu

Добавить 3 подменю:
- File, Function, Help


Объявление подменю для меню File
- Save
- Exit




Вы можете перезапустить ваше приложение:






Создайте Main Toolbar с ID:
- ID: toolbar:org.eclipse.ui.main.toolbar
Добавить 2 Toolitem: open и save



Перезапустите ваше приложение

SamplePart.java
/******************************************************************************* * Copyright (c) 2010 - 2013 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Lars Vogel <lars.Vogel@gmail.com> - Bug 419770 *******************************************************************************/ package org.o7planning.tutorial.rape4.part; import javax.annotation.PostConstruct; import javax.inject.Inject; import org.eclipse.e4.ui.di.Focus; import org.eclipse.e4.ui.di.Persist; import org.eclipse.e4.ui.model.application.ui.MDirtyable; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; public class SamplePart { private Text txtInput; private TableViewer tableViewer; @Inject private MDirtyable dirty; @PostConstruct public void createComposite(Composite parent) { parent.setLayout(new GridLayout(1, false)); txtInput = new Text(parent, SWT.BORDER); txtInput.setMessage("Enter text to mark part as dirty"); txtInput.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { dirty.setDirty(true); } }); txtInput.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); tableViewer = new TableViewer(parent); tableViewer.add("Sample item 1"); tableViewer.add("Sample item 2"); tableViewer.add("Sample item 3"); tableViewer.add("Sample item 4"); tableViewer.add("Sample item 5"); tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH)); } @Focus public void setFocus() { tableViewer.getTable().setFocus(); } @Persist public void save() { dirty.setDirty(false); } }
Добавить новый PerspectiveStack. Это стек (Stack) содержит перспективу (Perspective).

Добавить новую перспективу (Perspective)





Запустите приложение еще раз:

Из за изменений в Part, кнопка SAVE загорится.
