2013-07-15 2 views
3

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

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, похоже, не поддерживают меня там ...

ответ

3

Аннотация @Execute не определяет тип, который нужно ввести, это объявление метода.

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

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

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

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

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

Если не задана аннотация @Optional, исключение вызывается, если объект не найден в контексте.

Для дальнейшего ознакомления и более подробных разъяснений см. Eclipse 4 (e4) Tutorial Part 4- Dependency Injection Basics и Eclipse 4 (e4) Tutorial Part 6: Behavior Annotations.

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

+0

Я вижу. Я не понял, что @Execute включает инъекцию. Благодаря! – Morrandir

Смежные вопросы