T.M. SoftStudio

feci quod potui, faciant meliora potentes

Купить полную версию книги "Среда разработки Eclipse 4: Руководство разработчика"

Создание RCP-приложений

Создание Eclipse 4 RCP-приложения

Создание Handler-обработчика и определение команд

Откроем среду Eclipse с установленным плагином Eclipse 4 core tools.

В меню File выберем мастер New | Other | Eclipse 4 | Eclipse 4 Application Project, нажмем кнопку Next, введем имя проекта, нажмем кнопку Next | Next, отметим флажок Create sample content и нажмем кнопку Finish.

Во вкладке Form редактора файла Application.e4xmi модели приложения нажмем правой кнопкой мышки на узле Application | Handlers и выберем команду Add child | Handler.

В свойствах элемента модели нажмем ссылку Class URI и откроем мастер создания класса обработчика (рис. 7.19).

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

Введем имя пакета и имя класса, отметим флажок Can-Execute Method и нажмем кнопку Finish.

В результате будет создан класс с двумя методами, промаркированными аннотациями org.eclipse.e4.core.di.annotations.Execute и org.eclipse.e4.core.di.annotations.CanExecute.

Аннотация @Execute маркирует метод, вызываемый средой выполнения при выборе UI-компонента, с которым данный обработчик связан.

Аннотация @CanExecute маркирует метод, вызываемый средой выполнения для проверки работоспособности соответствующего UI-компонента. Если метод возвращает false, тогда среда выполнения деактивирует UI-компонент.

Дополним код Handler-класса, обеспечив в Execute-методе отображение диалогового окна сообщения пользователю:

package E4RCP.handlers;

import javax.inject.Named;

import org.eclipse.e4.core.di.annotations.Execute;

import org.eclipse.e4.core.di.annotations.CanExecute;

import org.eclipse.e4.ui.services.IServiceConstants;

import org.eclipse.swt.SWT;

import org.eclipse.swt.widgets.MessageBox;

import org.eclipse.swt.widgets.Shell;

public class NewHandler {

@Execute

public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell) {

//TODO Your code goes here

MessageBox dialog = new MessageBox(shell, SWT.OK| SWT.CANCEL);

dialog.setText("My info");

dialog.setMessage("This is message for you");

dialog.open();

}

@CanExecute

public boolean canExecute() {

//TODO Your code goes here

return true;

}}

Во вкладке Form редактора файла Application.e4xmi модели приложения нажмем правой кнопкой мышки на узле Application | Windows | Trimmed Window | Main Menu и выберем команду Add child | Menu.

В поле Label введем заголовок меню и, нажав правой кнопкой мышки на узле нового меню, выберем команду Add child | DirectMenuItem.

В свойствах элемента DirectMenuItem в поле Label введем имя элемента меню. В поле Class URI нажмем кнопку Find, в поле Class Name введем звездочку и выберем созданный Handler-класс, нажмем кнопку OK (рис. 7.20).

Рис. 7.20. Связывание элемента меню с обработчиком

Теперь при запуске приложения и выборе нового элемента меню будет появляться диалоговое окно сообщения пользователю.

Во вкладке Form редактора файла Application.e4xmi модели приложения нажмем правой кнопкой мышки на узле Application | Commands и выберем команду Add child | Command.

В свойствах нового элемента в поле Name введем имя команды.

Нажмем правой кнопкой мышки на узле меню и выберем команду Add child | HandledMenuItem.

В свойствах элемента HandledMenuItem в поле Label введем имя элемента меню, в поле Command нажмем кнопку Find и выберем созданную команду.

Откроем свойства Handler-обработчика и в поле Command нажмем кнопку Find и выберем созданную команду.

Теперь Handler-обработчик будет связан с командой, с которой также будет связан элемент меню, при выборе которого будет появляться диалоговое окно сообщения пользователю.

Созданный Handler-обработчик имеет область применения приложения.

Создадим Handler-обработчик, который будет иметь область применения окна приложения.

Для этого во вкладке Form редактора файла Application.e4xmi модели приложения нажмем правой кнопкой мышки на узле Application | Windows | Trimmed Window | Handlers и выберем команду Add child | Handler.

В свойствах элемента обработчика нажмем ссылку Class URI и откроем мастер создания класса обработчика.

Введем имя пакета и имя класса и нажмем кнопку Finish.

Откроем свойства Handler-обработчика и в поле Command нажмем кнопку Find и выберем ранее созданную команду.

Теперь у нас есть два Handler-обработчика, связанных с одной командой, с которой связан один элемент меню окна приложения.

Однако при запуске приложения и выборе элемента меню, среда выполнения запустит тот Handler-обработчик, который будет ближе к элементу меню, т.е. Handler-обработчик, имеющий область применения окна приложения.

Текст сообщения диалогового окна можно передать обработчику элемента меню в качестве параметра элемента меню и параметра команды.

Для этого во вкладке Form редактора файла Application.e4xmi модели приложения раскроем узел HandledMenuItem и нажмем правой кнопкой мышки на узле Parameters и выберем команду Add child | Parameter. В поле Name введем имя параметра message, а в поле Value введем значение параметра Hello.

Нажмем правой кнопкой мышки на узле команды и выберем команду Add child | Command Parameter. В поле Id введем имя параметра message, в поле Name введем имя параметра parameter_command.

Дополним код класса обработчика элемента меню:

package E4RCP.handlers;

import javax.inject.Named;

import org.eclipse.e4.core.di.annotations.Execute;

import org.eclipse.e4.ui.services.IServiceConstants;

import org.eclipse.swt.SWT;

import org.eclipse.swt.widgets.MessageBox;

import org.eclipse.swt.widgets.Shell;

public class AnotherHandler {

@Execute

public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell, @Named("message") String message) {

//TODO Your code goes here

MessageBox dialog = new MessageBox(shell, SWT.OK| SWT.CANCEL);

dialog.setText("My info");

dialog.setMessage(message);

dialog.open();

}}

Теперь при выборе элемента меню приложения в диалоговом окне будет отображаться значение параметра.


Создание Eclipse 4 RCP-приложения. Создание Window-окна