我有一个第三方类(假设它是一些树状容器)。
如何正确实现 View 呢?我在 ViewPart
类中看不到类似 MVC 的方法。例如,Swing 中没有 setModel()
方法。
在 Hello World View 示例中,他们只是将一些硬编码文本设置为标签。在现实生活中,我应该在哪里保存数据?
更新
假设我有一个很好的 MVC 小部件,它带有 setModel()
方法并且名为 MyGreatWidget()
。
这不会删除问题。
我会写这个案例:
public void createPartControl(Composite parent) {
widget = new MyGreatWidget(parent);
widget.setModel(... // where to get data?
}
更新 2
换句话说:在 Eclipse 平台中是否有任何方便的地方来保存应用程序或 session 范围的数据?
更新 3
我的问题是在哪里保存已经在内存中的反序列化对象。
换句话说:RCP view 是否违反了模型- View - Controller 模式?
更新 4
让我们重新表述一下这个问题:createPartControl()
方法可以访问哪些区域?
1) 是参数Composite parent
2) 任何类的任何静态方法
3) 还有什么?
它可以访问应用程序实例吗?或工作台实例?可能是应用程序上下文?或者其他一些我可以放置它需要绘制的数据的实例?
最佳答案
我对你的问题的理解如下:
- 某种类型的用户交互会导致显示您的 View /编辑器。
- Eclipse 框架开始创建内容(例如,您指定的
createPartControl()
方法)。此时您应该初始化所有伟大的小部件和必要的控件(使它们在您的 UI 部分中可用)。您可以使它们成为 View 类的私有(private)实例或构建您自己的框架来跟踪控件,例如在某些 Map 中。此外,在此步骤中为查看者设置内容提供商。 - 创建 UI 后,您可以开始用数据填充小部件(从文件读取数据、向服务器发出请求等)。它可以在后台作业中执行,以获得更灵敏的 UI。请注意,数据加载机制(以及通知 UI 数据已加载的机制)因应用程序而异,因此您必须为此发明我们自己的轮子。 这是您创建模型的步骤。这取决于您,您将它保存在哪里(通常只需将它作为一个实例放在您的 View 中 ).另外,请记住,您不需要立即为组合框加载数据,因为您可以坚持使用延迟加载解决方案(使用 ComboViewer 和 ContentProvider)。
- 加载数据后,您可以通过调用相关方法(例如 Label 小部件的
setText()
等)用它填充小部件 - 就个人而言,我喜欢使用 JFace data binding mechanism用数据填充小部件并使模型保持最新,而不必每次都编写代码从小部件获取数据并将其写回模型,然后再保存模型。
编辑:顺便说一句,我认为没有必要为胖客户端应用程序引入 Controller 层,因为不需要控制 UI 的创建,因为正确 View 的创建是由您的代码严格定义的,这已经是展示了客户的机器。无需要求服务器返回 View (与 Web 应用程序不同),您只需要求它返回一些数据(模型)。
希望这能有所帮助。
关于java - 在哪里保存 Eclipse RCP 中 View 的数据(模型)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20940252/