快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

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

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

第三篇帖子介绍了定制一个EMF应用程序的基本方法,这一篇让我们来看看怎样定制应用 程序的使用界面。没有任何一个界面是万能的,所以定制工作不可避免,而大多数定制都是 通过修改代码来实现的。在实际应用中,同一个需求可能有多种修改方式可以实现,我认为 修改涉及的地方(类,方法)越少越有利于发挥EMF的优势,因此我们应该对EMF生成的代码 有一定的了解,这是发挥自己创造力的基础。

下面有几个常见的需求,通过对这些需求的实现,相信你会对EMF应用程序的开发过程有 一个更具体的认识。

一、简化模型创建向导

EMF帮我们生成的模型创建向导(菜单File->New->Other->Shop Model)分为两 步,第一步要用户输入文件名,对于商店的例子文件名是*.shop格式;第二步用户要选择以 哪个对象作为根节点,同时要指定XML文件的编码方式,商店例子里显然要以商店对象为根节 点,所以其实第二步可以省去,以免造成使用者的困扰。

生成的向导类是ShopModelWizard,比起增加一个步骤来,去掉一个步骤要简单得多。首 先找到addPages()方法,把最后四句关于initialObjectCreationPage最的语句都注释掉;

/** * The framework calls this to create the contents of the wizard. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public void addPages() {    //initialObjectCreationPage = new ShopModelWizardInitialObjectCreationPage("Whatever2");    //initialObjectCreationPage.setTitle(ShopEditorPlugin.INSTANCE.getString ("_UI_ShopModelWizard_label"));    //initialObjectCreationPage.setDescription (ShopEditorPlugin.INSTANCE.getString ("_UI_Wizard_initial_object_description"));    //addPage(initialObjectCreationPage); }

现在因为没有了这个向导页,原来由它提供的信息我们要改为在程序里提供,所以要修改 另外两个方法:第一,createInitialModel()方法本来是建立一个用户选择的对象作为根节 点的模型,我们把它改为直接建立一个Shop对象;

protected EObject createInitialModel() { //  EClass eClass = (EClass)shopPackage.getEClassifier (initialObjectCreationPage.getInitialObjectName()); //  EObject rootObject = shopFactory.create(eClass);    EObject rootObject=shopFactory.createShop();    return rootObject; }第二,在performFinish()方法里设置文件编码的地方,改为使用UTF-8编码,当 然你也可以规定使用其他编码,只是用户不能选择了:

public boolean performFinish() {    options.put(XMLResource.OPTION_ENCODING, "UTF- 8"/*initialObjectCreationPage.getEncoding()*/); }

因此,这个类里我们总共修改了三个方法,一定记得要把每个方法前的@generated标记删 除或修改。现在,用户只要简单的指定文件名后就可以Finish了,如图1所示。

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

图1 向导的最后一页

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

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

二、改造大纲视图的显示

对于EMF来说,在应用程序模型的根节点上还有两层,分别是Resource和ResourceSet,在 商店的例子里,Category的父节点是Shop,Shop的父节点是Resource(具体来说是 XMLResource),Resource的父节点是ResourceSet,它们之间都是多对一的关系。缺省情况 下,大纲视图里显示的是完整的ResourceSet树(根节点不显示),显示出的最上层节点是“ platform: /resource/Project3/My.shop”,它代表

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