快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
一个Resource,这个Resource(通过这 个URI)指向保存着模型信息的 XML文件My.shop。对于使用者来说,这个节点显示在这里没 有什么意义,用户看到的根节点应该是.shop文件里保存的Shop对象,见图2的对比。

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

图2 在大纲视图里隐藏最上层节点

那么该修改哪些代码来实现这个需求呢?我们想到 大纲视图里的内容是从ShopEditor的getAdapter()方法里得到的,通过查看 ShopEditor的 getAdapter()方法发现名为getContentOutlinePage()的方法负责产生大纲模型,在这个方法 里,变量contentOutlineViewer是对大纲视图里的树控件的包装对象,它的输入(Input)是 editingDomain.getResourceSet(),我们要把它的输入改成ResourceSet的第一个Resource, 修改后的代码如下:

public IContentOutlinePage getContentOutlinePage() {      //contentOutlineViewer.setInput (editingDomain.getResourceSet());   contentOutlineViewer.setInput (editingDomain.getResourceSet().getResources().get(0));    }

你可能会问,那么从Resource怎样得到Shop对象呢?很简单,(Shop) yourResource.getContents().get (0)即可,有兴趣的话你可以试试把大纲视图的输入设为 Shop对象会看到什么。最后说一次不要忘记修改@generated,以后不再提醒了。

三、 移除编辑器里多余的Tab页

EMF生成的Editor为我们提供了六个Tab页,其主要目的是 向我们演示如何以各种方式展示数据(例如在大纲视图里选择一个Category对象,通过 Parent页里可以很容易的看到前面说过的Category->Shop->Resource- >ResourceSet关系),在实际的应用里一般不会用到全部这些页,下面我们就只保留 Table页而移除其他五页,利用大纲和Table页的组合,实现类似Windows资源管理器的界面。

编辑器里的页面在createPages()方法里被添加,它虽然很长但EMF在这个方法里生成了不 少注释,每段代码的作用都很明显,只要把我们不需要的那五段注释掉即可。现在把程序运 行起来,打开一个模型文件,稍微调整一下布局把大纲视图放在编辑器的旁边,如图3所示, 有点资源管理器的样子了吧。

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

图3 和资源管理器类似的布局

EMF介绍系列(五、定制应用程序界面)(3)

时间:2011-04-30 博客园 bjzhanghao

但是很遗憾,现在的表格里只有两列,而且两列里显示的内容是相同的。按照资源管理器 的设计,当用户在大纲视图里选择一个对象时,表格中应该显示该对象的子对象详细信息的 列表,现在子对象列表已经有了(表格里每一行就是一个子对象),让我们做一些修改以显 示详细信息。

首先增加一个表格列,还是在ShopEditor的createPages()方法里修改,搜索一下 TableColumn很容易找到应该修改的位置。新的三列标题分别为“Name”、“Children”和“ Description”,其中Children列里显示子对象的数目。

public void createPages() {    TableColumn objectColumn = new TableColumn(table, SWT.NONE);    layout.addColumnData(new ColumnWeightData(3, 100, true));    objectColumn.setText("Name");    objectColumn.setResizable(true);    TableColumn childrenColumn = new TableColumn(table, SWT.NONE);    layout.addColumnData(new ColumnWeightData(2, 100, true));    childrenColumn.setText("Children");    childrenColumn.setResizable(true);    TableColumn descColumn = new TableColumn(table, SWT.NONE);    layout.addColumnData(new ColumnWeightData(2, 100, true));    descColumn.setText("Description");    descColumn.setResizable(true); }

如果现在运

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号