Eclipse 4 RCP Part类最佳实践

时间:2012-10-31 13:54:34

标签: java eclipse-rcp e4

我正在学习新的Eclipse 4 RCP平台,我遇到了一个有趣的问题。

假设我正在为我的Application.e4xmi中定义的MPart设计一个Part类:

public class SomePartView {
    private Text someText;
    private Button someButton;

    @PostConstruct
    public void createControls(Composite parent) {
        parent.setLayout(new GridLayout(3, false));
        someText = new Text(parent, SWT.BORDER);
        someButton = new Button(parent, SWT.NONE);
        someButton.setText("SomeButton");
    }

    @Focus
    private void setFocus(IEclipseContext context) {
        someText.setFocus();
    }

    // ... getters
}

我正在使用WindowBuilder来创建ui,但我希望它没有任何行为代码,所以我创建了一个类,我处理这样的交互:

public class SomePartViewController {

    @PostConstruct
    public void addBehavior(SomePartView view) {
        view.getSomeButton().addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                // do something
            }
        });    
    }
}

这是一个很好的做法还是我在这里重新发明轮子,e4已经有了解决方案吗?如果不是,我如何将这些类连接在一起?我想避免在Eclipse上下文之外创建实例。由于官方e4文档相当稀疏,如果有人可以链接我一本详尽的书籍或参考手册,我也可以找到答案。

1 个答案:

答案 0 :(得分:0)

我不确定我是否可以给你一个完整的答案,但我会尝试提出一些提示或评论。

首先,只有应用程序模型引用的类才会获得依赖注入;因此SomePartView将执行相应的@PostConstruct。但是,没有与应用程序模型的SomePartViewController直接连接,因此您不会进行任何自动注入。

有些方法可以实现这一点,例如:通过使用Extending the application model中描述的处理器扩展或循环访问SomePartView的依赖关系并从那里实例化行为类。

如果我的问题是正确的,那么这将无法实现分割视图和行为的主要目的。

也许XWT是您真正想要的技术。这里UI是以声明方式定义的,而事件处理程序仍然在Java类中实现。我想XWT的工作方式已经是一种最佳实践,因为它可以与创建用户界面的Android编程风格进行比较。