EMF介绍系列(五、定制应用程序界面) - 编程入门网
行程序,看到的将是三列,但内容仍然是相同的。表格里显示的内容是由生成 的XXXItemProvider类决定的,例如对于一个 Category对象在表格或树控件里怎样展示是由 CategoryItemProvider来负责,你可以把它看作是JFace里的 ContentProvider加上 LabelProvider,这些XXXItemProvider都被放在.edit项目里了。EMF生成的 CategoryItemProvider没有实现ITableItemLabelProvider接口,所以缺省情况下不能支持表 格的展示(能够显示,但每列的内容相同),所以我们要对代码进行一些修改,在 CategoryItemProvider实现的接口列表里增加 ITableItemLabelProvider,并实现它的两个 方法,修改后的代码如下:
EMF介绍系列(五、定制应用程序界面)(4)时间:2011-04-30 博客园 bjzhanghao现在只差一步就完成了,如果你注意看过ShopEditor的createPages()方法里定义 TableViewer的代码,会发现这个 TableViewer的ContentProvider和LabelProvider都是一个 AdapterFactoryContentProvider对象,这个对象会把TableViewer对getText()、 getElements ()的请求转发到XXXItemProvider上;转发之前它要得到这个XXXItemProvider ,这是通过 ShopItemProviderAdapterFactory的adapt()方法实现的,而 ShopItemProviderAdapterFactory维护了一个supportTypes列表,只有注册到这个列表中的 类型才能被adapt。这里出现了不少新内容,可能不那么容易理解,没有关系,因为在以后的 帖子里会专门介绍到它们,现在只要记住需要把我们新实现的接口类型注册到 ShopItemProviderAdapterFactory的supportTypes里即可,具体的方法是修改它的构造方法 ,如下所示:
现在,表格里显示的Category对象已经按我们的要求列出其他信息了,如图4 所示,Description列是空白因为Category没有这个属性。我们还应该修改 ProductItemProvider以展示产品的详细信息,方法和修改Category是类似的,而且增加 supportTypes的步骤不须要重复做,所以更加简单了,不妨就留作练习。 图4 经过定制的表格 经过上面的这些定制,我们就实现了应用程序从EMF缺省界面到资源管理器风格界面的转 换,虽然文字比较多,但掌握以后这个过程是相当快速的, |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |