代码之家  ›  专栏  ›  技术社区  ›  Eugene Yokota

EclipseRCP:我应该在哪里保存我的模型对象,以及它们如何与视图对话?

  •  9
  • Eugene Yokota  · 技术社区  · 15 年前

    在EclipseRCP的工作方式中,我应该把模型对象放在哪里?当它们被加载或更改时,它们应该如何与视图对话?

    我正在尝试将现有应用程序移植到EclipseRCP。它可以被看作是一个类似于IDE的应用程序:我打开一个文件,其中包含指向源文件的链接。源文件显示在树视图中。我可以编辑源代码,并将源代码构建成一些输出…

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

    浏览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);
    }
    

    相关:

    2 回复  |  直到 15 年前
        1
  •  5
  •   Community Egal    7 年前

    我相信这是最好的通过听众实现的。

    您的数据(模型)位于私有包中,只有这些数据的接口在公共包中公开。

    alt text

    你可以在这个里面找到 wiki section 原则,但也 concrete examples here .


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

    MyPlugin.getDefault().getModel()
    

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

    如果模型在一个插件中,它可以为侦听器定义扩展点。视图可以扩展这些扩展点,然后在加载模型插件时自动注册这些扩展点。当视图从模型中收到第一条消息时,它们就可以查询模型中所需的信息。

    数据绑定的一个好例子可以在 this article .

        2
  •  2
  •   jamesh    15 年前

    我们倾向于使用 IEditorPart 保存模型的副本(从 IEditorInput )

    如果视图需要了解模型,那么使用iselection框架和focus将模型从编辑器移到视图中。