3.x中的Eclipse Kepler依赖注入

时间:2013-07-25 08:44:08

标签: dependency-injection eclipse-plugin e4 eclipse-kepler

我在Eclipse 3.7中有一个带有ViewsPerspective的工作插件 现在我尝试将其移至Eclipse Kepler 4.3,因此我遵循Tutorial from Jonas Helming
我的所有视图都基于另一个插件中的TemplateView。此TemplateView已转换为e4样式POJO视图 我的插件扩展了这个TemplateView并添加了包装类(如教程中所述)。

我以e3样式运行我的应用程序(意味着TemplateView正在扩展ViewPart)一切正常,Perspective被添加。 但是,当我将其更改为e4样式(意味着TemplateView正在扩展POJO并且我在我的plugin.xml中使用包装器时)eclipse不再向Perspective发送消息}及其Views

我的e3 View并不是很有趣,因为它主要使用我的自定义api(这里只会混淆并且它正常工作 - 因为它始于e3)< / p>

这是e4 Wrapper类:

import org.eclipse.e4.tools.compat.parts.DIViewPart;
import lumo.views.contact.e3.PojoDetailView;

public class E4DetailView extends DIViewPart<PojoDetailView> {
    public E4DetailView() {
        super(PojoDetailView.class);
    }
}

这个问题是part of this question,但没有欺骗

1 个答案:

答案 0 :(得分:0)

解决方案: 您必须使用@Inject Annotation的构造函数并将Composite parent作为参数,然后创建内容。像这样:

@Inject
public PojoDetailView(Composite parent) {
  // either put creation code here or call the 3e styled function
  createPartControl(parent);
}

我的错误是我在Annotation上有一个简单的构造函数和一个@PostConstruct createPartControl(Composite parent)(这应该在DI之后执行,但显然没有)