快速业务通道

EMF介绍系列(五、定制应用程序界面) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
行程序,看到的将是三列,但内容仍然是相同的。表格里显示的内容是由生成 的XXXItemProvider类决定的,例如对于一个 Category对象在表格或树控件里怎样展示是由 CategoryItemProvider来负责,你可以把它看作是JFace里的 ContentProvider加上 LabelProvider,这些XXXItemProvider都被放在.edit项目里了。EMF生成的 CategoryItemProvider没有实现ITableItemLabelProvider接口,所以缺省情况下不能支持表 格的展示(能够显示,但每列的内容相同),所以我们要对代码进行一些修改,在 CategoryItemProvider实现的接口列表里增加 ITableItemLabelProvider,并实现它的两个 方法,修改后的代码如下:

public class CategoryItemProvider    extends ItemProviderAdapter    implements      IEditingDomainItemProvider,      IStructuredItemContentProvider,      ITreeItemContentProvider,      IItemLabelProvider,      IItemPropertySource,      ITableItemLabelProvider{    public Object getColumnImage(Object object, int columnIndex) {      return null;    }    public String getColumnText(Object object, int columnIndex) {      Category category=(Category)object;      switch (columnIndex) {      case 0:        return category.getName();      case 1:        return category.getChildren().size()+"";      case 2:        return "";//Categories don''t own descriptions      default:        return "";      }    } }

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里即可,具体的方法是修改它的构造方法 ,如下所示:

public ShopItemProviderAdapterFactory() {    supportedTypes.add(IEditingDomainItemProvider.class);    supportedTypes.add(IStructuredItemContentProvider.class);    supportedTypes.add(ITreeItemContentProvider.class);    supportedTypes.add(IItemLabelProvider.class);    supportedTypes.add(IItemPropertySource.class);    supportedTypes.add(ITableItemLabelProvider.class);//Added to support table }

现在,表格里显示的Category对象已经按我们的要求列出其他信息了,如图4 所示,Description列是空白因为Category没有这个属性。我们还应该修改 ProductItemProvider以展示产品的详细信息,方法和修改Category是类似的,而且增加 supportTypes的步骤不须要重复做,所以更加简单了,不妨就留作练习。

EMF介绍系列(五、定制应用程序界面) - 编程入门网

图4 经过定制的表格

经过上面的这些定制,我们就实现了应用程序从EMF缺省界面到资源管理器风格界面的转 换,虽然文字比较多,但掌握以后这个过程是相当快速的,

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号