八进制

少年壮志无烟抽

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  240 随笔 :: 0 文章 :: 3330 评论 :: 14 引用

EMF

eclipse.org/emf
摘要: 缺省条件下,EMF不会为每个对象维护一个唯一的id,这在一些情况下不太方便,例如要在web环境下编辑一个EMF模型实例,通常需要在URL里传递对象的id以便确定目标。其实EMF的XMIResource维护了一个id与对象的映射表,并且会为每个新创建的对象自动赋值。阅读全文
posted @ 2008-07-24 21:32 八进制 阅读(4484) | 评论 (2) 编辑

摘要: 假设在ecore模型里定义了两个类:产品(Product)和制造商(Manufacturer),Product通过名为manufacturer的多对一引用与Manufacturer建立关系。在应用程序里,有一些表格(TableViewer)需要在显示产品信息的同时,还要显示制造商相关信息,如制造商名称。缺省条件下,因为这些表格里每一行是一个Product实例,表格的文字更新由 AdapterFactoryLabelProvider通过ProductItemProvider实现,所以在制造商名称被改变的时候产品表格无法得到更新。阅读全文
posted @ 2007-09-03 23:31 八进制 阅读(5214) | 评论 (4) 编辑

摘要: 以前在Eclipse 3.2里做的一个EMF应用程序,到3.3里发现一些TreeViewer里标签显示的格式不对,例如原来显示“Condition true”的,在3.3下可能显示“1”。调试了一下发现这些TreeViewer在为每个节点获得标签时,若相应的XXXItemProvider实现了ITableItemLableProvider时,会调用 getColumnText()而不是getText()来得到文本内容。阅读全文
posted @ 2007-08-21 22:29 八进制 阅读(4772) | 评论 (0) 编辑

摘要: 一旦熟练使用EMF后,有新项目我总是习惯于先使用工具构造出数据模型,然后让EMF帮我生成java代码。当模型需要修改时,也是用工具修改模型本身,然后让EMF把改动更新到java代码,从而保证模型与代码的同步。最近的一个基于struts的Web项目里我试验了脱离Eclipse运行环境使用 EMF,发现比想象中的要更容易,以下是一些经验总结。阅读全文
posted @ 2007-05-07 14:16 八进制 阅读(6210) | 评论 (7) 编辑

摘要: 在程序里得到EMF项目的.edit里图标的方法阅读全文
posted @ 2007-04-09 21:14 八进制 阅读(3121) | 评论 (0) 编辑

摘要: 在viewer里过滤掉一些不需要的元素的一个方法阅读全文
posted @ 2007-04-09 19:04 八进制 阅读(2998) | 评论 (0) 编辑

摘要: 覆盖EMF生成的XXXEditor.java的getPropertySheetPage()方法阅读全文
posted @ 2007-03-30 23:37 八进制 阅读(2274) | 评论 (0) 编辑

摘要: EReference的containment属性如果为true,表示目标EClass是被源EClass包含的,这是一种十分强的关系,例如汽车和车轮的关系。在ecore里,不允许包含关系形成圈,也就是说如果A包含B,B就不能再直接或间接的包含A;另外,如果作为容器的对象结束了自己的生命周期,被它包含的对象也将结束自己的生命周期。阅读全文
posted @ 2006-11-20 21:36 八进制 阅读(3165) | 评论 (0) 编辑

摘要: 在ecore模型里可以详细的定义各种类型、属性和方法,但对于像“每个类别里至少有两种产品”这样的限制就无能为力了。为此,EMF提供了一套验证框架(Validator Framework)用于解决这个问题,在ecore文件里特定的方法可以被识别为验证方法并生成用于验证的代码。阅读全文
posted @ 2006-08-09 20:32 八进制 阅读(3798) | 评论 (2) 编辑

摘要: 毕业设计的内容是Web应用程序的代码生成器,因为接触emf有一段时间了,我觉得用emf完全可以很方便的实现这个程序。这是更全面了解emf特别是 codegen部分的一个好机会。这个帖子将记录这个过程的点滴,所以会比较琐碎,也许这些文字能被用在毕业论文里(不希望论文里都是google来的东西)。我发现cnblogs的帖子被修改后在rss里会重新出现,所以订阅我的blog的读者可能要经常被“骚扰”了:P阅读全文
posted @ 2006-03-24 14:22 八进制 阅读(3971) | 评论 (19) 编辑

摘要: Omondo EclipseUML分为Studio版和Free版两种,我只用过Free版,对于创建EMF类图来说感觉已经够用了。不过和Eclipse的版本比起来,EclipseUML的升级比较缓慢,目前为止最新的版本还是2005年9月27日放出的,这就造成在新版本Eclipse里EclipseUML可能无法正常运行。阅读全文
posted @ 2006-03-08 16:01 八进制 阅读(14709) | 评论 (35) 编辑

摘要: 今天用EclipseUML画类图遇到一个很郁闷的问题,为了保险起见我还是边画边保存的,画了一上午,有一次关闭了编辑器,再想打开时提示“Impossible to load the diagram xxx.ecd”。阅读全文
posted @ 2006-02-21 11:55 八进制 阅读(3304) | 评论 (15) 编辑

摘要: EMF除了生成模型部分的接口和实现类(不妨称作“核心模型”)以外,还生成一个名称以.Edit结尾的项目,包含一些与核心模型和编辑器关系都十分紧密的代码。这部分代码经过了精心设计,可重用的程度是相当的高。它们不仅在EMF生成的编辑器项目里大量被用到,我们自己在扩展编辑器的时候也应该充分利用。阅读全文
posted @ 2006-02-02 22:28 八进制 阅读(5081) | 评论 (11) 编辑

摘要: EMF生成的应用程序里,用户的发出的每一条命令都是可以撤销(Undo)的,例如修改了产品的价格,按一下撤销按钮就能恢复原来的价格,当然还可以通过重做(Redo)再回到新的价格。为了实现这个功能,应用程序里维护了一个用于存放命令的类似栈的数据结构(CommandStack),每一条执行过的命令都被存放在那里,需要撤销时取出最近一条命令进行撤销。这个数据结构是由EditingDomain对象负责维护的, EditingDomain相当于编辑模型时的环境。阅读全文
posted @ 2005-12-31 22:16 八进制 阅读(3921) | 评论 (0) 编辑

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

摘要: 在EMF里可以用XML Schema定义模型,然后转换为genmodel模型,但我这里在生成genmodel向导的第四步按Load后会产生一个NullPointerException如下,导致无法继续。阅读全文
posted @ 2005-12-01 14:18 八进制 阅读(2982) | 评论 (2) 编辑

摘要: 除了普通的类(接口)以外,在类图里可以定义一些特殊的元素,比较常见的是枚举类型、自定义类型,它们对于一个完整可用的模型也是必不可少的,这篇帖子主要介绍EMF里它们的使用方法。另外,由于EMF对Map的支持比较特别,所以在这里也简要介绍一下Map类型的定义方法。阅读全文
posted @ 2005-11-28 14:27 八进制 阅读(5435) | 评论 (10) 编辑

摘要: 借助EMF的帮助,不用亲自编写一行代码就可以生成一个完整的应用程序,你是不是对EMF有些感兴趣了?不过生成的应用程序看起来都像是从同一个模子里出来的,即一个多页编辑器,一个大纲视图和属性页,这当然无法满足所有人的需求。不用耽心,只要了解EMF的机制,按照我们的要求修改这个应用程序并不是一件很困难的事情。阅读全文
posted @ 2005-11-19 23:59 八进制 阅读(6860) | 评论 (6) 编辑

摘要: 还是从一个例子里看看EMF的使用方法和作用吧。假设我们的应用是一个网上商店,在系统里有这些对象:商店Shop、类别Category、商品Product,其中类别可以包含子类别。现在我们用EMF从头到尾生成一个可以管理类别和商品的应用程序。阅读全文
posted @ 2005-11-13 00:30 八进制 阅读(12625) | 评论 (67) 编辑

摘要: 接触Eclipse一段时间的朋友应该都听说过EMF这个名字,EMF是Eclipse Modeling Framework的缩写,它是Eclipse的一个重要的子项目,如果翻译成中文就是“Eclipse建模框架”。其实只从这个名字还真是难以确定它的作用是什么,我认为要完全掌握EMF应该对模型驱动开发(MDA)有一定的了解,而EMF可以看作是Eclipse上的MDA一个实现(代码生成是MDA 的重要组成部分之一),它能够生成在Eclipse上执行的代码。可惜我对MDA没有系统研究过,对EMF的应用大多是为了减少模型修改带来的影响,所以也希望EMF能带我进入MDA的世界。阅读全文
posted @ 2005-11-12 23:29 八进制 阅读(8523) | 评论 (6) 编辑

摘要: 用过EMF的人想必都对它的代码生成功能印象深刻吧,有没有想过这是怎样实现的呢?阅读全文
posted @ 2005-08-16 00:33 八进制 阅读(5526) | 评论 (13) 编辑

摘要: GEF的设计没有对模型部分做任何限制,也就是说,我们可以任意构造自己的模型,唯一须要保证的就是模型具有某种消息机制,以便在发生变化时能够通知GEF(通过EditPart)。在以前的几个例子里,我们都是利用java.beans包中的PropertyChangeSupport和PropertyChangeListener来实现消息机制的,这里将介绍一下如何让GEF利用EMF构造的模型(下载例子,可编辑.emfsubject文件,请对比之前功能相同的非EMF例子),假设你对EMF是什么已经有所了解。阅读全文
posted @ 2005-04-15 18:13 八进制 阅读(13870) | 评论 (40) 编辑