八进制

少年壮志无烟抽

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

EMF

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Full EMF Archive