java - eclipse RCP : Where should I keep my model objects and how do they talk to the views?

标签 java eclipse eclipse-plugin eclipse-rcp

在 Eclipse RCP 的处理方式中,我应该在哪里保存我的模型对象?当它们被加载或改变时,它们应该如何与 View 对话?

我正在尝试将我现有的应用程序移植到 Eclipse RCP。它可以被视为类似 IDE 的应用程序:我打开一个文件,其中包含指向源文件的链接。源文件显示在 TreeView 中。我可以编辑源代码,并将源代码构建到一些输出中...

例如,当我处理 Open 命令时,我应该在哪里创建模型对象以便我的 View 可以看到它们?我宁愿避免使用单例管理器类,但这可能是最简单的方法。

我在浏览 JDT 的源代码时发现有趣的代码是 JavaCore、JavaModel、JavaModelManager。和 JavaProject。


IProject[] projects= ResourcesPlugin.getWorkspace().getRoot().getProjects();

public static IJavaProject create(IProject project) {
    if (project == null) {
        return null;
    }
    JavaModel javaModel = JavaModelManager.getJavaModelManager().getJavaModel();
    return javaModel.getJavaProject(project);
}

相关:

最佳答案

我相信这是通过 Listeners 实现的最好方法。

您的数据(模型)在私有(private)包中,只有这些数据的接口(interface)暴露在公共(public)包中。

alt text

您会在这个 wiki section 中找到原理,也是concrete examples here .


关于模型,类似 osgi 的方法是使用主机插件作为可访问对象。即:

MyPlugin.getDefault().getModel()

这将允许您设置/处置模型以及插件生命周期。

如果模型在一个插件中,它可以为监听器定义扩展点。 View 可以扩展这些扩展点,然后在加载模型插件时自动注册这些扩展点。一旦从模型中获得第一条消息, View 就可以查询模型以获取所需的信息。

可以在 this article 中找到一个很好的数据绑定(bind)示例.

关于java - eclipse RCP : Where should I keep my model objects and how do they talk to the views?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/277291/

相关文章:

java - jboss forge 与 spring roo 相比如何?

java - java读取txt文件中的分数

java - 是否有一种官方方法可以使用 AccountManager 帐户在 Android 上对 Google Data API 进行身份验证?

java - pom 编辑器中的 Eclipse Maven 错误 : org. apache.maven.plugin.jar.JarMojo 错误

java - 如何使用使用json对象获取数据并显示在listview中?

java - Eclipse 中的类限制

java - Android + Google App Engine 连接

java - mariadb 的字符串不正确,而 mysql 5.5 的字符串不正确

Android/Emma coverage.ec 输出无法导入 EclEmma

java - 将 Maven Artifact 部署到 <container>/shared/lib 进行 Eclipse 调试?