当前位置: 首页 > 知识库问答 >
问题:

Eclipse 4 RCP部件类最佳实践

湛联
2023-03-14

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

假设我正在为应用程序中定义的MPart设计一个Part类。e4xmi:

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创建用户界面,但我希望它没有任何行为代码,所以我构造了一个类来处理如下的交互:

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个答案

淳于昊然
2023-03-14

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

首先,只有应用模型引用的类才会得到依赖注入;因此,SomePartView将执行相应的后构造。然而,在应用程序模型之外没有与SomePartViewController的直接连接,因此您不会得到任何自动注入。

有一些方法可以实现这一点,例如,通过使用处理器扩展(如扩展应用程序模型中所述),或者通过在您的SomePartView上循环依赖项,并从中实例化行为类。

然而,如果我答对了你的问题,这将无法实现你将观点和行为区分开来的主要目的。

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

 类似资料:
  • 问题内容: 我知道内部类可以访问外部类中的所有内容(因为它是该类的成员),但是相反呢? 外部类是否可以访问内部类中的私有变量和方法? 我看过一些文章提到内部类应该是私有的,这样它们只能被外部类访问。这对内部类的可访问性有什么影响? 在涉及内部类时,处理访问级别的最佳实践是什么?我假设封装越多越好,但这是以牺牲可访问性为代价的吗? 问题答案: 有效的Java(第2版)第22项:“相对于非静态的较喜欢

  • 这里有些给使用和编写 Ansible playbook 的贴士. 你能在我们的 ansible-example repository.找到展示这些最佳实践的 playbook 样例.(注意: 这些示例用的也许不是最新版的中所有特性,但它们仍旧是极佳的参考.) Topics 最佳实践 接下来的章节将向你展示一种组织 playbook 内容方式. 你对 Ansible 的使用应该符合你的需求而不是我们

  • 处理后台任务与常规调用方法有很大的不同。本指南旨在帮助让您的后台任务平稳有效地运行。本文基于 这篇博客文章。 使任务参数小而简单 方法(任务)在调用之前会被序列化。使用 TypeConverter 类将参数转换为 JSON 字符串。如果您有复杂的实体和 / 或大对象; 包括数组,最好将它们放入数据库,然后只将其标识 (id) 传递给后台任务。 错误例子: public void Method(En

  • VR设计 VR设计不同于平面体验设计。作为一种新的媒介,有新的最佳实践需要遵循,特别是保持用户的舒适性和存在性。这在如下指南中已经写得很透彻了: Oculus VR最佳实践 Leap Motion VR最佳实践指南 一些值得注意的事情: 公共的金科玉律是永远不要意外地把相机控制权从用户手中剥夺。 单位(比如对于位置)应该考虑使用米(m)。这是因为WebVR API以米为单位返回姿势数据,进而传送给

  • 本章文档将阐述一些使用herosphp开发一些常用模块的一些比较好的实践。 未完待续。。。

  • 适当的使用vuex 能不用就不用。 能用就用。 不要为了使用而使用,一个小方法里面有5个设计模式。 不要过度使用CSS框架 因为CSS框架一般会大幅度增加文件体积。 例如 bootstrap, ele.me前端框架。 这个在低端安卓机上影响显著。 使用CDN来存放js, css, 和图片文件。 灵活使用第三方Vue 插件 例如: 轮播图, 表单验证等等。这些轮子都是现成的。 前端逻辑务必简单 能在