在 Eclipse RCP 4.2 中获取参数化命令的参数

Rem*_*nig 3 eclipse-rcp

在 Eclipse 3.7 中,我们可以这样做:

public class HelloName extends AbstractHandler {

    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {
        String name = event
                .getParameter("de.vogella.rcp.commands.parameterfirst.commandParameter1");
        MessageDialog.openInformation(HandlerUtil.getActiveShell(event),
                "Hello", "Hello " + name);
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

在 Eclipse 4.2 中,我创建了这个处理程序,我希望将 findPart() 的部件 ID 作为参数提供,但是我可以从哪里获取参数?

public class FocusHandler {

    @Execute
    public void execute(EPartService partService) {
        MPart part = partService.findPart("nl.rh.parts.inbox");
        partService.activate(part, true);
    }
}
Run Code Online (Sandbox Code Playgroud)

Rem*_*nig 5

我找到了我自己问题的答案。关键是在依赖注入中使用 @Named 注释。

@Execute
public void execute(EPartService partService, @Optional @Named("nl.rh.focusCommand.part") String partName) {
    MPart part = partService.findPart(partName);
    partService.activate(part, true);
}
Run Code Online (Sandbox Code Playgroud)

@Named 注释必须给出命令参数的 id。