Eclipse RCP 4 - параметры метода обработчика

В настоящее время я смотрю на новую платформу Eclipse RCP и у меня есть вопросы по поводу обработчиков. В RCP 3.x a класс-обработчик должен был реализовывать интерфейс, поэтому методы были заданы. В RCP 4 классу обработчика не требуется реализовывать интерфейс. Вместо этого вы аннотируете методы. Например, если у вас есть ExitHandler как в учебнике Vogellas у вас есть @Execute аннотаций. Как видите, есть IWorkbench параметр передан.

package com.example.e4.rcp.todo.handler;

import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.workbench.IWorkbench;

public class ExitHandler {
  @Execute
  public void execute(IWorkbench workbench) {
    workbench.close();
  }
} 

Теперь у меня вопрос: как узнать, какие параметры передаются при использовании определенных аннотаций? Как я узнаю в этом конкретном случае, что я получаю IWorkbench объект, а не объект Window или что-то? На самом деле я могу аннотировать метод без параметра, и он все равно будет выполнен.

Где-нибудь есть документация? Инструменты Eclipse e4, похоже, тоже меня там не поддерживают...

1 ответ

Решение

Аннотация @Execute не определяет тип для внедрения, объявление метода делает.

В качестве аннотации поведения, @Execute отмечает метод, который должен быть вызван при выполнении обработчика. Тип объекта, который нужно внедрить, определяется аргументами метода. Чтобы добавить другой тип объекта, измените аргумент метода, например

@Execute
public void execute(MWindow window) {
    // method body
}

ввести MWindow из активного контекста.

@Execute аннотация содержит @Inject аннотации, поэтому, когда событие инициируется, и обработчик будет выполняться, происходит следующее:

  1. каркас ищет метод, отмеченный @Execute аннотирование
  2. в контексте E4 ищется объект типа аргумента метода (например, IWorkbench)
  3. объект вводится и метод выполняется

Если только @Optional устанавливается аннотация, генерируется исключение, если в контексте не найдено ни одного объекта.

Для дальнейшего чтения и более подробных объяснений см. Учебное пособие по Eclipse 4 (e4), Часть 4 - Основы внедрения зависимостей и Учебное пособие по Eclipse 4 (e4), Часть 6: Аннотации поведения.

Обзор аннотаций Eclipse 4 можно найти в Eclipse 4 Wiki.

Другие вопросы по тегам