﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-xiaoxiaoleemin</title><link>http://www.blogjava.net/xiaoxiaoleemin/</link><description>天道酬勤，小小加油</description><language>zh-cn</language><lastBuildDate>Wed, 08 Oct 2008 01:16:16 GMT</lastBuildDate><pubDate>Wed, 08 Oct 2008 01:16:16 GMT</pubDate><ttl>60</ttl><item><title>修改GMF属性视图</title><link>http://www.blogjava.net/xiaoxiaoleemin/archive/2008/04/03/190589.html</link><dc:creator>xiaoxiaoleemin</dc:creator><author>xiaoxiaoleemin</author><pubDate>Thu, 03 Apr 2008 04:53:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoxiaoleemin/archive/2008/04/03/190589.html</guid><wfw:comment>http://www.blogjava.net/xiaoxiaoleemin/comments/190589.html</wfw:comment><comments>http://www.blogjava.net/xiaoxiaoleemin/archive/2008/04/03/190589.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoxiaoleemin/comments/commentRss/190589.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoxiaoleemin/services/trackbacks/190589.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; <img height="422" alt="" src="http://www.blogjava.net/images/blogjava_net/xiaoxiaoleemin/PropertyViewBeforeModification.JPG" width="662" border="0" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上图中紫色的椭圆结点在ecore模型中代表Method，在属性视图中可见它的一些属性。如果要使TimeProperty属性值为"NONE"时，TimeUnit和Value值分别变为"NONE"和0.0，应该如下修改MethodItemProvider类中的notifyChanged()方法(紫色的代码是添加的，其他均为GMF生成的）：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_54_894_Open_Image" onclick="this.style.display='none'; Codehighlighter1_54_894_Open_Text.style.display='none'; Codehighlighter1_54_894_Closed_Image.style.display='inline'; Codehighlighter1_54_894_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_54_894_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_54_894_Closed_Text.style.display='none'; Codehighlighter1_54_894_Open_Image.style.display='inline'; Codehighlighter1_54_894_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;notifyChanged(Notification&nbsp;notification)&nbsp;</span><span id="Codehighlighter1_54_894_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_54_894_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;updateChildren(notification);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_140_854_Open_Image" onclick="this.style.display='none'; Codehighlighter1_140_854_Open_Text.style.display='none'; Codehighlighter1_140_854_Closed_Image.style.display='inline'; Codehighlighter1_140_854_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_140_854_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_140_854_Closed_Text.style.display='none'; Codehighlighter1_140_854_Open_Image.style.display='inline'; Codehighlighter1_140_854_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">switch</span><span style="color: #000000">&nbsp;(notification.getFeatureID(Method.</span><span style="color: #0000ff">class</span><span style="color: #000000">))&nbsp;</span><span id="Codehighlighter1_140_854_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_140_854_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;EventPackage.METHOD__PROPERTY_NAME:<br />
<img id="Codehighlighter1_189_494_Open_Image" onclick="this.style.display='none'; Codehighlighter1_189_494_Open_Text.style.display='none'; Codehighlighter1_189_494_Closed_Image.style.display='inline'; Codehighlighter1_189_494_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_189_494_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_189_494_Closed_Text.style.display='none'; Codehighlighter1_189_494_Open_Image.style.display='inline'; Codehighlighter1_189_494_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_189_494_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">如果该项设置为NONE,那么TimeUnit和Value项应该分别设置为NONE和0.0</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800080">Method&nbsp;owner&nbsp;=&nbsp;(Method)notification.getNotifier();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TimeProperty&nbsp;newValue&nbsp;=&nbsp;(TimeProperty)notification.getNewValue();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(newValue.equals(TimeProperty.NONE))<br />
<img id="Codehighlighter1_414_489_Open_Image" onclick="this.style.display='none'; Codehighlighter1_414_489_Open_Text.style.display='none'; Codehighlighter1_414_489_Closed_Image.style.display='inline'; Codehighlighter1_414_489_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_414_489_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_414_489_Closed_Text.style.display='none'; Codehighlighter1_414_489_Open_Image.style.display='inline'; Codehighlighter1_414_489_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span id="Codehighlighter1_414_489_Open_Text">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner.setTimeUnit(TimeUnit.NONE);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;owner.setValue(0.0);<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span></span><span id="Codehighlighter1_414_489_Open_Text">&nbsp;</span></span></span><span id="Codehighlighter1_414_489_Open_Text"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;EventPackage.METHOD__VALUE:<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;EventPackage.METHOD__TIME_UNIT:<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;EventPackage.METHOD__CLASS_NAME:<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;EventPackage.METHOD__METHOD_NAME:<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;EventPackage.METHOD__PARAMETERS:<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">case</span><span style="color: #000000">&nbsp;EventPackage.METHOD__RETURN_TYPE:<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fireNotifyChanged(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ViewerNotification(notification,&nbsp;notification.getNotifier(),&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">super</span><span style="color: #000000">.notifyChanged(notification);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
&nbsp; MethodItemProvider类位于genmodel生成的edit项目中，它相当于Property View的ContentProvider。<br />
<br />
&nbsp;&nbsp;&nbsp; 
<img src ="http://www.blogjava.net/xiaoxiaoleemin/aggbug/190589.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoxiaoleemin/" target="_blank">xiaoxiaoleemin</a> 2008-04-03 12:53 <a href="http://www.blogjava.net/xiaoxiaoleemin/archive/2008/04/03/190589.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GMF编辑器中图元的前景色，字体，线条宽度的定制方法</title><link>http://www.blogjava.net/xiaoxiaoleemin/archive/2008/04/01/190221.html</link><dc:creator>xiaoxiaoleemin</dc:creator><author>xiaoxiaoleemin</author><pubDate>Tue, 01 Apr 2008 15:05:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoxiaoleemin/archive/2008/04/01/190221.html</guid><wfw:comment>http://www.blogjava.net/xiaoxiaoleemin/comments/190221.html</wfw:comment><comments>http://www.blogjava.net/xiaoxiaoleemin/archive/2008/04/01/190221.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoxiaoleemin/comments/commentRss/190221.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoxiaoleemin/services/trackbacks/190221.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:    要让编辑器生动起来，GMF框架提供了更简单的方法，有些特性甚至不用修改代码只通过设置一下gmfgraph中某些元素的属性就可以实现。这一点，比GEF简单的多。&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoxiaoleemin/archive/2008/04/01/190221.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoxiaoleemin/aggbug/190221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoxiaoleemin/" target="_blank">xiaoxiaoleemin</a> 2008-04-01 23:05 <a href="http://www.blogjava.net/xiaoxiaoleemin/archive/2008/04/01/190221.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用JDOM读写xml文件</title><link>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/09/116242.html</link><dc:creator>xiaoxiaoleemin</dc:creator><author>xiaoxiaoleemin</author><pubDate>Wed, 09 May 2007 10:16:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/09/116242.html</guid><wfw:comment>http://www.blogjava.net/xiaoxiaoleemin/comments/116242.html</wfw:comment><comments>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/09/116242.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoxiaoleemin/comments/commentRss/116242.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoxiaoleemin/services/trackbacks/116242.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  在Java中用JDOM才操作xml文件很方便，需要的代码量也比其它XML解析器要少的多。下面用一个简单的例子来说明JDOM读写xml的最基本的步骤。&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/09/116242.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoxiaoleemin/aggbug/116242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoxiaoleemin/" target="_blank">xiaoxiaoleemin</a> 2007-05-09 18:16 <a href="http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/09/116242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GMF:基于Type的连接 </title><link>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/07/115703.html</link><dc:creator>xiaoxiaoleemin</dc:creator><author>xiaoxiaoleemin</author><pubDate>Mon, 07 May 2007 06:42:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/07/115703.html</guid><wfw:comment>http://www.blogjava.net/xiaoxiaoleemin/comments/115703.html</wfw:comment><comments>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/07/115703.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoxiaoleemin/comments/commentRss/115703.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoxiaoleemin/services/trackbacks/115703.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这里介绍基于Type的连接的建立方法，仍然用上一篇基于Reference的连接中用到的例子School，有老师类和学生类，同时老师能够指导多名学生。这种指导关系在GMF编辑器中用连接来表示，基于Type的连接就是在ecore模型中为该连接创建一个类TeacherToStudent，ecore模型对应的ecore_diagram图形如下所示：<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/07/115703.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoxiaoleemin/aggbug/115703.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoxiaoleemin/" target="_blank">xiaoxiaoleemin</a> 2007-05-07 14:42 <a href="http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/07/115703.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EMF建模常见问题</title><link>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/07/115626.html</link><dc:creator>xiaoxiaoleemin</dc:creator><author>xiaoxiaoleemin</author><pubDate>Mon, 07 May 2007 06:10:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/07/115626.html</guid><wfw:comment>http://www.blogjava.net/xiaoxiaoleemin/comments/115626.html</wfw:comment><comments>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/07/115626.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoxiaoleemin/comments/commentRss/115626.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoxiaoleemin/services/trackbacks/115626.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 我习惯于直接用ECore Editor建立ecore模型，如果装了GMF插件的话，在ecore文件上点击鼠标右键，通过菜单&#8220;Initialize ecore-diagram diagram file&#8221;可以生成类似类图的表示，这样可以从整体上看模型。而且在建模的过程中可以随时"Validate"以检查当前存在的错误。以下是一些常见的问题：<br>&nbsp;&nbsp;&nbsp; 1.Ecore Editor中根元素的直接子元素属性页中有&#8220;Ns Prefix"和"Ns URI"两项需要设置，前者可以设置为模型的名字，后者随便设置一个URI地址，如"http://"+模型名字。如果这两项不设置，那么当修改了ecore模型后，从genmodel上&#8220;Reload" ecore模型时出错。<br>&nbsp;&nbsp;&nbsp; 2.某个EReference如果多重性为"0...*",则在属性页中把lower bound设置为0，upper bound设置为-1。<br>&nbsp;&nbsp;&nbsp; 3.genmodel根元素的第一层子元素的属性页中，"All"类别中&#8220;prefix&#8221;属性值是指EMF生成的代码中Factory和Package等类的前缀，可以指定为模型名字，首字母大写以符合类名的习惯；&#8220;base package&#8221;属性值是生成的各个包的前缀，假设指定为&#8220;com.example"。然后有&#8220;Ecore&#8221;类别，其中的各个属性值是从ecore模型中读过来的，不可修改，其中&#8220;Package&#8221;类别下的"Name"属性值是包名的一部分（假设指定为model），接在前面的base package值之后，那么生成的Model 部分代码分别有三个包：com.example.model; com.example.model.impl; com.example.model.util.&nbsp;<br>&nbsp;&nbsp;&nbsp;btw：在有的GMF 版本中，如果包名存在首字母大写的单词，那么生成代码的时候会出错。<br><br>
<img src ="http://www.blogjava.net/xiaoxiaoleemin/aggbug/115626.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoxiaoleemin/" target="_blank">xiaoxiaoleemin</a> 2007-05-07 14:10 <a href="http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/07/115626.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GMF：基于Reference的连接</title><link>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115632.html</link><dc:creator>xiaoxiaoleemin</dc:creator><author>xiaoxiaoleemin</author><pubDate>Sun, 06 May 2007 15:15:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115632.html</guid><wfw:comment>http://www.blogjava.net/xiaoxiaoleemin/comments/115632.html</wfw:comment><comments>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115632.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoxiaoleemin/comments/commentRss/115632.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoxiaoleemin/services/trackbacks/115632.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: GMF中的Link有两个，分别是基于Type的和基于Reference的。对于前者，在ecore模型中有一个类对应这个连接，创建一个连接即创建了该类的一个实例，试想，如果一个模型比较复杂，有很多连接时，这种方法要在模型中要为连接建立很多与业务无关的类，使得模型非常复杂；对于后者，没有必要为每个连接在ecore中建立一个类，而是设置该连接对应的Reference即可。下面用一个school的模型来说明基于Reference的连接的建立方法，这个模型非常简单，如下图&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115632.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoxiaoleemin/aggbug/115632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoxiaoleemin/" target="_blank">xiaoxiaoleemin</a> 2007-05-06 23:15 <a href="http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GMF的安装依赖的插件</title><link>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115620.html</link><dc:creator>xiaoxiaoleemin</dc:creator><author>xiaoxiaoleemin</author><pubDate>Sun, 06 May 2007 13:08:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115620.html</guid><wfw:comment>http://www.blogjava.net/xiaoxiaoleemin/comments/115620.html</wfw:comment><comments>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115620.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoxiaoleemin/comments/commentRss/115620.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoxiaoleemin/services/trackbacks/115620.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: GMF是Eclipse的一个插件，如同其它插件一样，它首先需要安装在相应版本的Eclipse上。另外，它还需要其它几个插件&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115620.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoxiaoleemin/aggbug/115620.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoxiaoleemin/" target="_blank">xiaoxiaoleemin</a> 2007-05-06 21:08 <a href="http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115620.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何显示Outline视图</title><link>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115596.html</link><dc:creator>xiaoxiaoleemin</dc:creator><author>xiaoxiaoleemin</author><pubDate>Sun, 06 May 2007 10:03:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115596.html</guid><wfw:comment>http://www.blogjava.net/xiaoxiaoleemin/comments/115596.html</wfw:comment><comments>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115596.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoxiaoleemin/comments/commentRss/115596.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoxiaoleemin/services/trackbacks/115596.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 上个帖子介绍了如何显示PropertySheet视图，这里继续介绍如何显示Outline视图，还是只关心与显示大纲视图相关的代码：<br>public class MySchoolEditor extends EditorPart implements ISelectionListener {<br>    ...<br>    protected IContentOutlinePage contentOutlinePage;&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115596.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoxiaoleemin/aggbug/115596.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoxiaoleemin/" target="_blank">xiaoxiaoleemin</a> 2007-05-06 18:03 <a href="http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115596.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何显示PropertySheet视图</title><link>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115517.html</link><dc:creator>xiaoxiaoleemin</dc:creator><author>xiaoxiaoleemin</author><pubDate>Sun, 06 May 2007 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115517.html</guid><wfw:comment>http://www.blogjava.net/xiaoxiaoleemin/comments/115517.html</wfw:comment><comments>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115517.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoxiaoleemin/comments/commentRss/115517.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoxiaoleemin/services/trackbacks/115517.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:      前面的几篇是读了《EMF：A Developer's Guide》一书前三章的读书笔记，我觉得这三章的内容是最重要的，介绍了EMF Framework的一些设计、结构以及实现的问题。但是这些只是一些原理性的东西，要熟练掌握EMF的方法是在项目中应用它，我们可以从修改EMF生成的代码入手。EMF生成的编辑器是MultiPageEditor，比较复杂，我们可以参考它自己写一个普通的Editor，在这个过程中可以熟悉哪些代码是用于实现哪些功能的。&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115517.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoxiaoleemin/aggbug/115517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoxiaoleemin/" target="_blank">xiaoxiaoleemin</a> 2007-05-06 17:24 <a href="http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/06/115517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《EMF：A Developer's Guide》读书笔记第三章 ：Model Editing with EMF.Edit（下）</title><link>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/05/115439.html</link><dc:creator>xiaoxiaoleemin</dc:creator><author>xiaoxiaoleemin</author><pubDate>Sat, 05 May 2007 12:44:00 GMT</pubDate><guid>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/05/115439.html</guid><wfw:comment>http://www.blogjava.net/xiaoxiaoleemin/comments/115439.html</wfw:comment><comments>http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/05/115439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaoxiaoleemin/comments/commentRss/115439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaoxiaoleemin/services/trackbacks/115439.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:    上一部分中，我们看到了如何通过content和label provider来显示EMF模型，这一部分介绍如何修改、编辑EMF模型。EMF.Edit支持基于Command的模型编辑方式，可以自动的undo和redo。EMF.Edit的Command Framework可以分为两部分，第一部分是common command framework，其中定义了一些基本的命令接口，实现了例如basic command stack,compound command等，虽然这些命令主要用于EMF.Edit,但是实际上可以独立于EMF.Edit使用；第二部分是EMF.Edit 命令，是指一些专门编辑EObject的命令。&nbsp;&nbsp;<a href='http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/05/115439.html'>阅读全文</a><img src ="http://www.blogjava.net/xiaoxiaoleemin/aggbug/115439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaoxiaoleemin/" target="_blank">xiaoxiaoleemin</a> 2007-05-05 20:44 <a href="http://www.blogjava.net/xiaoxiaoleemin/archive/2007/05/05/115439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>