Eclipse插件-如何在命令处理程序的构造函数中注入IWorkbenchWindow



我想测试Eclipse插件的命令处理程序类。这就是为什么我想在这个处理程序类的构造函数中注入IWorkbenchWindow的实例,因为

PlatformUI.getWorkbench().getActiveWorkbenchWindow()

让我对PlatformUI产生了依赖。

然而,我试着做这个

@Inject
public FindAndReplaceHandler(IWorkbenchWindow workbenchWindow) {
    this.fWorkbenchWindow = workbenchWindow;

然后框架抛出NoSuchMethodException,抱怨FindAndReplaceHandler类没有无参数构造函数。

我的类FindAndReplaceHandler扩展了AbstractHandler并覆盖

void execute(ExecutionEvent event)

(所以我不使用注释@Execute和@CanExecute的现代方式)

我的Eclipse版本是:版本:Mars.2(4.5.2)。我创建了Eclipse插件项目,并将Eclipse版本设置为"3.5或更高版本"。然而,也许我需要安装e4工具并使用它们?如何安装它们?

任何我能解决这个问题的想法都将不胜感激。

@Inject风格的命令处理程序仅在编写纯e4风格的插件时使用(这些插件不使用IWorkbenchWindowPlatformUI)。

如果您想使用IWorkbenchWindow,那么您正在编写一个3.x兼容模式插件,并且不能对命令处理程序(以及大多数其他内容)使用注入。命令处理程序必须具有无参数构造函数。

最新更新