﻿<?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-随笔分类-GMF </title><link>http://www.blogjava.net/xiaoxiaoleemin/category/20297.html</link><description>天道酬勤，小小加油</description><language>zh-cn</language><lastBuildDate>Fri, 04 Apr 2008 16:53:14 GMT</lastBuildDate><pubDate>Fri, 04 Apr 2008 16:53:14 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>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>2</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></channel></rss>