Руководство Eclipse RCP 4 для начинающих - e4 Workbench Application
1. Установка перед тем, как начать
Установить Plugin WindowBuilder, это плагин, который позволяет вам делать дизайн интерфейса приложения SWT с помощью перетаскивания, очень удобно. Смотрите инструкцию установки по сслыке:
Installing e4 Tools Developer Sources:
- Установите e4 Tools Developer Resources для Eclipse
2. Создать новый Java Workspace
Для программирования приложения RCP вам нужно создать новый Java Workspace
- File/Switch Workspace/Other..
Введите:
- F:\ECLIPSE_TUTORIAL\RCP
3. Создать пустой Eclipse 4 RCP Project
В этой статье я покажу вам, как построить RCP приложение с самого начала (Не следуя готовому шаблону), так что я создам пустое приложение Eclipse RCP.
На Eclipse выберите:
- File/New/Other...
- Нажмите выбрать в регионе (1)
- В регионе(2) выберите "Yes" чтобы Eclipse создал RCP Project (Работающий на Desktop), в противном случае он будет создавать RAP Project (работающий на Web).
Выберите "Eclipse 4 RCP Application"
Введите:
- Java package name: org.o7planning.tutorial.rcp
Проект создан:
Запустите приложение для теста:
Щелкните правой кнопкой мыши на EclipseRCPTutorial.product выберите Run As / Eclipse, Application
4. Структура пустого приложения Eclipse 4 RCP
Пусток приложениеEclipse 4 RCP создано с помощью Eclipse, посмотрите его структуру. Откройте файл Application.e4xmi:
Измените название приложения на "Eclipse RCP Application E4", как показано ниже.
И повторно запустите приложение:
5. Handler и Command
RCP Framework имете много готовых команд, например 4 команды со следующими ID:
- org.eclipse.ui.file.exit
- Команда Выход из приложения
- org.eclipse.ui.file.open
- Команда открыть файл.
- org.eclipse.ui.file.save
- Команда save editor
- org.eclipse.ui.help.aboutAction
- Команда открыть окно About
Вы можете просмотреть список command разработанные в RCP Framework по ссылке:
Создание новой команды с названием quiteCommand, вызывает команду выхода из приложения построенная наготове в RCP Framework.
Индентично мы создаем 3 другие Command:
Команда вызова editor открытия файла выбрана.
- ID: org.eclipse.ui.file.open
- Name: openCommand
Выполните команду save (сохранить) содержимое на Editor
- ID: org.eclipse.ui.file.save
- Name: saveCommand
AboutCommand:
- ID: org.eclipse.ui.help.aboutAction
- Name: aboutCommand
Handler является классом обработки команд (command) из меню или Toolbar. При нажатии на MenuItem или Toolltem означает выполнить команду, до того, как будет выполнена команда, Handler будет выполнена раньше, вы можете отменить (cancel) выполнение команды в Handler.
Handler это классы, которые при выполнении будут выполнять задания записанные в методе аннотированные с помощью @Execute.
Я создам 4 класса Handler:
Handler это классы, которые при выполнении будут выполнять задания записанные в методе аннотированные с помощью @Execute.
Я создам 4 класса Handler:
AboutHandler.java
package org.o7planning.tutorial.rcp.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 4 RCP Application");
}
}
OpenHandler.java
package org.o7planning.tutorial.rcp.handler;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
public class OpenHandler {
@Execute
public void execute(Shell shell){
FileDialog dialog = new FileDialog(shell);
dialog.open();
}
}
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 c приложением
Чтобы объявить Handler с Application вы должны объявить ID, Handler class и Command.
Например, пользователь закрывает приложение нажимая на click menuItem Exit, этот menuItem, связанный с quiteCommand, QuiteHandler является классом обрабатывающий для этой команды (как заявлено выше), класс QuiteHandler спросит пользователя действительно ли хочет закрыть приложение, если да, будет выполняться команда quiteCommand.
Например, пользователь закрывает приложение нажимая на click menuItem Exit, этот menuItem, связанный с quiteCommand, QuiteHandler является классом обрабатывающий для этой команды (как заявлено выше), класс QuiteHandler спросит пользователя действительно ли хочет закрыть приложение, если да, будет выполняться команда quiteCommand.
Объявление других Handler индентично.
6. Обхявить Menus
Создавать главное меню (Main menu) приложения
Введите ID главного меню, обязательно должен быть: menu: org.eclipse.ui.main.menu
Добавьте 3 подменю:
- File, Function, Help
Объявить подменю для меню File.
- Open
- Save
- Exit
Вы можете перезапустить ваше приложение:
7. Создать Toolbar
Создание Main Toolbar с ID:
- ID: toolbar:org.eclipse.ui.main.toolbar
Добавить 2 Toolitem: open и save
Перезапустите ваше приложение:
8. Part
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.rcp.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)
Перезапустите приложение:
Изменения на Рart могут сделать кнопку SAVE светящейся.
No ADS
Технология Eclipse
- Установите Tycho для Eclipse
- Руководство Java OSGi для начинающих
- Создайте проект Java OSGi с Maven и Tycho
- Установите WindowBuilder для Eclipse
- Какую платформу я должен выбрать для разработки приложений Java Desktop?
- Программирование приложения Java Desktop с использованием SWT
- Руководство Eclipse JFace
- Установить Eclipse RAP Target Platform
- Установите RAP e4 Tooling для Eclipse
- Создать Eclipse RAP Widget из ClientScripting-based widget
- Руководство Eclipse RCP 4 для начинающих - e4 Workbench Application
- Установите RAP Tools для Eclipse
- Руководство Eclipse RAP для начинающих - приложение e4 Workbench
Show More