在 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)包中。
您会在这个 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/