abe*_*t80 3 eclipse eclipse-rcp
我是Eclipse RCP的初学者,我正在尝试为自己构建一个应用程序.我对如何实际处理模型对象感到困惑.我能找到的所有例子都没有解决我遇到的问题,所以我怀疑我的方法是错误的.
假设我需要使用包含经过身份验证的用户信息的类初始化应用程序.我用我的WorkbenchWindowAdvisor(错误的地方?)来执行一些初始化(例如身份验证)来决定要显示的视图.完成后,将显示一个视图.现在,该视图还需要访问我之前检索/生成的用户信息.
问题是,该视图应该如何获取该数据?视图连接在一起plugin.xml.我没有看到任何方法可以将数据提供给视图.所以我认为视图必须以某种方式检索它.但是从它中检索它的适当位置是什么?我想过将静态变量放在IApplication实现中,但这感觉不对.任何建议或指示非常感谢.谢谢.
你在这里面临的问题是我认为不与RCP有关.它更像是一个建筑问题.您的观点与业务逻辑相关!解决方案可以通过两种(常见的)设计模式完成:
您可以在网上找到有关此内容的大量信息.我将使用MVP为您的特定问题指出一个可能的解决方案.
您将需要创建多个项目.一个当然是RCP插件,我们称之为rcp.view.现在你创建了另一个,它没有做出贡献(只有org.eclipse.core.runtime开始),并将其命名为rcp.presenter.为简化起见,此插件也将成为现在的模型.
下一步:
码:
public void load()
{
User user = view.showLoginDialog(); // returns a user with the provided name/pw
user.login(); // login to system/database
if(user.isAdministrator())
view.showAdministratorViews(user);
else
view.showStandardViews(user);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,视图仅创建对演示者的引用,演示者负责所有业务逻辑,演示者告诉视图要显示的内容.因此,在您的Perspective中,您实现了这些接口函数,并且在每个接口函数中,您都可以以不同的方式设置Perspective.
对于每个View,它以相同的方式运行,您将需要一个视图的演示者来执行操作并告诉视图(使用界面)显示什么和传递最终数据.视图并不关心逻辑.这在使用JFace-Databindings时非常有用(然后只将绑定数据传递给视图).例如,WorkbenchWindowAdisor将只创建应用程序中所需的所有内容.其他视图,透视图,然后可以启用/禁用菜单等,具体取决于他们获得的数据(例如,您可能希望启用特殊的adminMenu是管理员).
我知道这是一个非常繁重的方法,但Eclipse RCP是为大型(名称为富)应用而设计的.所以你应该花一些时间在正确的架构上.我的第一个RCP应用程序就像你描述的那样......我从来不知道在哪里存储东西以及如何处理所有引用.在我的工作中,我学到了MVP(我还在学习).理解这个概念需要一段时间,但它值得.
您可能想看看我在这个问题上的第二篇文章,以了解如何构建插件.
| 归档时间: |
|
| 查看次数: |
3010 次 |
| 最近记录: |