﻿<?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-荒野困兽(老脸归来)-随笔分类-GEF</title><link>http://www.blogjava.net/reloadcn/category/2696.html</link><description>我是一只关在玻璃瓶中的苍蝇，虽然前途一片光明，可我找不到出路</description><language>zh-cn</language><lastBuildDate>Thu, 08 Nov 2007 15:53:44 GMT</lastBuildDate><pubDate>Thu, 08 Nov 2007 15:53:44 GMT</pubDate><ttl>60</ttl><item><title>扩展WTP2.0图形化Web编辑器——转换器</title><link>http://www.blogjava.net/reloadcn/archive/2007/11/08/webeditor1.html</link><dc:creator>Dart</dc:creator><author>Dart</author><pubDate>Thu, 08 Nov 2007 15:35:00 GMT</pubDate><guid>http://www.blogjava.net/reloadcn/archive/2007/11/08/webeditor1.html</guid><wfw:comment>http://www.blogjava.net/reloadcn/comments/158688.html</wfw:comment><comments>http://www.blogjava.net/reloadcn/archive/2007/11/08/webeditor1.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/reloadcn/comments/commentRss/158688.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/reloadcn/services/trackbacks/158688.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文讲讲解如何通过扩展wtp2.0的web editor来实现图形化便签的编辑&nbsp;&nbsp;<a href='http://www.blogjava.net/reloadcn/archive/2007/11/08/webeditor1.html'>阅读全文</a><img src ="http://www.blogjava.net/reloadcn/aggbug/158688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/reloadcn/" target="_blank">Dart</a> 2007-11-08 23:35 <a href="http://www.blogjava.net/reloadcn/archive/2007/11/08/webeditor1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Connection，Property</title><link>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef5.html</link><dc:creator>Dart</dc:creator><author>Dart</author><pubDate>Mon, 09 Oct 2006 11:03:00 GMT</pubDate><guid>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef5.html</guid><wfw:comment>http://www.blogjava.net/reloadcn/comments/74149.html</wfw:comment><comments>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef5.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/reloadcn/comments/commentRss/74149.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/reloadcn/services/trackbacks/74149.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 图形和图形之间的连线是怎么实现的?模型的属性又是怎么显示在属性页上的？这一章会通过我们的Database creator例子一一解答&nbsp;&nbsp;<a href='http://www.blogjava.net/reloadcn/archive/2006/10/09/gef5.html'>阅读全文</a><img src ="http://www.blogjava.net/reloadcn/aggbug/74149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/reloadcn/" target="_blank">Dart</a> 2006-10-09 19:03 <a href="http://www.blogjava.net/reloadcn/archive/2006/10/09/gef5.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库字段的显示以及增加</title><link>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef4.html</link><dc:creator>Dart</dc:creator><author>Dart</author><pubDate>Mon, 09 Oct 2006 11:02:00 GMT</pubDate><guid>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef4.html</guid><wfw:comment>http://www.blogjava.net/reloadcn/comments/74148.html</wfw:comment><comments>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef4.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/reloadcn/comments/commentRss/74148.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/reloadcn/services/trackbacks/74148.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在这一章，我说一下如何去利用布局，以及其他一些关于EditPolicy的用法和Palette的实现。&nbsp;&nbsp;<a href='http://www.blogjava.net/reloadcn/archive/2006/10/09/gef4.html'>阅读全文</a><img src ="http://www.blogjava.net/reloadcn/aggbug/74148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/reloadcn/" target="_blank">Dart</a> 2006-10-09 19:02 <a href="http://www.blogjava.net/reloadcn/archive/2006/10/09/gef4.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>能够拖动的矩形</title><link>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef3.html</link><dc:creator>Dart</dc:creator><author>Dart</author><pubDate>Mon, 09 Oct 2006 10:59:00 GMT</pubDate><guid>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef3.html</guid><wfw:comment>http://www.blogjava.net/reloadcn/comments/74147.html</wfw:comment><comments>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef3.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/reloadcn/comments/commentRss/74147.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/reloadcn/services/trackbacks/74147.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这章我将说一下如何去实现一个数据表在编辑器上显示，并且能够进行位置和尺寸的改变。我们将涉及到的内容有：Figure，EditPolicy,Command。&nbsp;&nbsp;<a href='http://www.blogjava.net/reloadcn/archive/2006/10/09/gef3.html'>阅读全文</a><img src ="http://www.blogjava.net/reloadcn/aggbug/74147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/reloadcn/" target="_blank">Dart</a> 2006-10-09 18:59 <a href="http://www.blogjava.net/reloadcn/archive/2006/10/09/gef3.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库编辑器雏形</title><link>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef2.html</link><dc:creator>Dart</dc:creator><author>Dart</author><pubDate>Mon, 09 Oct 2006 10:57:00 GMT</pubDate><guid>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef2.html</guid><wfw:comment>http://www.blogjava.net/reloadcn/comments/74145.html</wfw:comment><comments>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef2.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/reloadcn/comments/commentRss/74145.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/reloadcn/services/trackbacks/74145.html</trackback:ping><description><![CDATA[
		<p>
				<a href="/reloadcn/archive/2005/08/12/9875.html%20">
				</a> </p>
		<p>
				<a href="/reloadcn/archive/2005/08/12/9875.html%20">上一章</a>讲了一下GEF的大概，这章我讲通过实现一个数据库编辑器来进一步说一下GEF。<a href="/Files/reloadcn/gefexample.zip">实例代码下载<br /></a><br /><strong>1.需求分析以及建模</strong></p>
		<p>数据库编辑器，无非就是利用图形化的方式，来实现对数据库表的管理。比如，我从画板上托一个表格到编辑器上，然后给他加上列，最后通过模型导出对应的SQL语句，连接数据库生成对应的表。就这么简单。</p>
		<p>让我们再分析一下。一个建立一个数据库表需要什么？首先我们要给这个表取个名字，然后给它添加上一些列，而对于列呢，也要有名字，还要有类型，还要说明它是否能为空等等。打住！就这样得了，我们这里只研究GEF，具体的需求还是以后再说吧。下面我们建立这个模型：</p>
		<p align="center">
				<a href="http://album.sina.com.cn/pic/5414465b0200041d" target="_blank">
						<img title="http://album.sina.com.cn/pic/5414465b0200041d" style="WIDTH: 191px; HEIGHT: 99px" alt="http://album.sina.com.cn/pic/5414465b0200041d" src="http://album.sina.com.cn/pic/5414465b0200041d" border="1" />
				</a>
		</p>
		<p>让我们看看这几个类：DBBase为基类，具有一个List对象，这个List是放置其子节点的地方，因为在数据库中，Schema和表是一对多的关系，可以说是Schema包含了某一个表；表和列也一样，表包含了列，所以我们就先将他们的子对象放置到他们的基类中。parent表示该类的父对象。</p>
		<p>Schema表示数据库本身；Table表示表；Column表示列，这几个类直接继承DBBase，而且没有复写基类的任何方法。</p>
		<p>先就这样吧，这几个类目前来看还少很多的属性和操作，在以后的开发中我会一一补上。</p>
		<p>
				<strong>2.EditPart</strong>
		</p>
		<p>在上一章我们以及说过了，模型是需要通过编辑单元进行维护的，而且编辑单元和模型是一一对应的关系。而这些对应关系又是通过什么来映射的呢，就是通过一个叫做EditPartFactory的接口类。我们在写GEF程序的时候，这个类是必须的，只有它才能把我们的模型和编辑单元联系起来。这个接口只有一个方法：createEditPart，这个方法需要我们返回一个EditPart,给了我们两个参数，其中对我们来说最有用的参数就是model，因为它就是传入的模型，我们就需要通过这个模型来生成对应的EditPart</p>
		<p>看看这几个EditPart：</p>
		<p align="center">
				<a href="http://album.sina.com.cn/pic/5414465b0200041e" target="_blank">
						<img title="http://album.sina.com.cn/pic/5414465b0200041e" style="WIDTH: 247px; HEIGHT: 118px" alt="http://album.sina.com.cn/pic/5414465b0200041e" src="http://album.sina.com.cn/pic/5414465b0200041e" border="1" />
				</a>
		</p>
		<p>DBEditPartBase : 其他几个EditPart的基类。虽然没有写什么，但是在以后的后续开发中将起到很大的作用。</p>
		<p>SchemaEditPart:Schema模型对应的EditPart</p>
		<p>TableEditPart:Table模型对应的EditPart</p>
		<p>ColumnEditPart:Column模型对应的EditPart</p>
		<p>OK,下面开始让我们的模型实现出来</p>
		<p>
				<strong>3.准备工作1——创建我们的Editor</strong>
		</p>
		<p>编辑器嘛，肯定需要扩展editor扩展点咯（不明白的去看看Eclipse插件开发基础。什么？你不知道什么是Eclipse插件开发？ ……），看看我们扩展点怎么写的：<br /><font face="courier new,courier,monospace"><strong>  </strong></font></p>
		<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: rgb(230,230,230) 0% 50%; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">
				<div>
						<font face="courier new,courier,monospace">
								<strong>
										<span style="COLOR: rgb(0,0,255)">&lt;</span>
										<span style="COLOR: rgb(128,0,0)">extension<br />        </span>
										<span style="COLOR: rgb(255,0,0)">id</span>
										<span style="COLOR: rgb(0,0,255)">="dbeditor"</span>
										<span style="COLOR: rgb(255,0,0)">
												<br />         point</span>
										<span style="COLOR: rgb(0,0,255)">="org.eclipse.ui.editors"</span>
										<span style="COLOR: rgb(0,0,255)">&gt;</span>
										<span style="COLOR: rgb(0,0,0)">
												<br />     </span>
										<span style="COLOR: rgb(0,0,255)">&lt;</span>
										<span style="COLOR: rgb(128,0,0)">editor<br />           </span>
										<span style="COLOR: rgb(255,0,0)">class</span>
										<span style="COLOR: rgb(0,0,255)">="gef.example.databasecreator.ui.DbEditor"</span>
										<span style="COLOR: rgb(255,0,0)">
												<br />            icon</span>
										<span style="COLOR: rgb(0,0,255)">="icons/sample.gif"</span>
										<span style="COLOR: rgb(255,0,0)">
												<br />            default</span>
										<span style="COLOR: rgb(0,0,255)">="false"</span>
										<span style="COLOR: rgb(255,0,0)">
												<br />            name</span>
										<span style="COLOR: rgb(0,0,255)">="DBEditor"</span>
										<span style="COLOR: rgb(255,0,0)">
												<br />            id</span>
										<span style="COLOR: rgb(0,0,255)">="gef.example.databasecreator.editor2"</span>
										<span style="COLOR: rgb(255,0,0)">
												<br />            extensions</span>
										<span style="COLOR: rgb(0,0,255)">="dbtest"</span>
										<span style="COLOR: rgb(0,0,255)">/&gt;</span>
										<span style="COLOR: rgb(0,0,0)">
												<br />  </span>
										<span style="COLOR: rgb(0,0,255)">&lt;/</span>
										<span style="COLOR: rgb(128,0,0)">extension</span>
										<span style="COLOR: rgb(0,0,255)">&gt;</span>
								</strong>
						</font>
				</div>
		</div>
		<p>
				<font face="Courier New">我们的扩展点对应的启动类是gef.example.databasecreator.ui.DbEditor，这个类是继承了 GraphicalEditorWithPalette，GraphicalEditorWithPalette是一个带有画板的、GEF提供的编辑器。我们生成了我们的编辑器类后，需要在里面写上一些必要的代码。</font>
		</p>
		<p>
				<font face="Courier New">首先是在DbEditor的构造函数中，我们需要把EditDomian给它加上，这是必须的，没有EditDomain一些都“空了吹”（家乡话，呵呵），我在第一章讲提到过EditDomain，大家可以看看我以前的文章，里面有对它的简短介绍。 <br /></font>
		</p>
		<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: rgb(230,230,230) 0% 50%; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">
				<div>
						<font face="Courier New">
								<span style="COLOR: rgb(0,0,255)">public</span>
								<span style="COLOR: rgb(0,0,0)"> DbEditor()</span>
								<span id="Codehighlighter1_17_65_Closed_Text" style="BORDER-RIGHT: rgb(128,128,128) 1px solid; BORDER-TOP: rgb(128,128,128) 1px solid; DISPLAY: none; BORDER-LEFT: rgb(128,128,128) 1px solid; BORDER-BOTTOM: rgb(128,128,128) 1px solid; BACKGROUND-COLOR: rgb(255,255,255)">
										<img src="http://www.blogjava.net/images/dot.gif" />
								</span>
						</font>
						<span id="Codehighlighter1_17_65_Open_Text">
								<span style="COLOR: rgb(0,0,0)">{<br />  </span>
								<span style="COLOR: rgb(0,0,255)">this</span>
								<span style="COLOR: rgb(0,0,0)">.setEditDomain(</span>
								<span style="COLOR: rgb(0,0,255)">new</span>
								<span style="COLOR: rgb(0,0,0)"> DefaultEditDomain);<br />}</span>
						</span>
				</div>
		</div>
		<p>
				<font face="Courier New">
						<br />
				</font>
		</p>
		<font face="Courier New">然后我们需要在getPaletteRoot方法中给它返回一个PaletteRoot，没有这个东西，我们的编辑器将无法启动，因为画板指针为空，无法进行构建我们的控件（我会在后面的文章简要说一下，Palette和Viewer的关系）。我们只要返回一个PaletteRoot就够了，不需要往它身上加工具按钮什么的。<br /></font>
		<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: rgb(230,230,230) 0% 50%; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">
				<div>
						<font face="Courier New">
								<img id="Codehighlighter1_39_73_Closed_Image" style="DISPLAY: none" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" name="Codehighlighter1_39_73_Closed_Image" />
						</font>
						<span style="COLOR: rgb(0,0,255)">public</span>
						<span style="COLOR: rgb(0,0,0)">  PaletteRoot createPaletteRoot()</span>
						<span id="Codehighlighter1_39_73_Closed_Text" style="BORDER-RIGHT: rgb(128,128,128) 1px solid; BORDER-TOP: rgb(128,128,128) 1px solid; DISPLAY: none; BORDER-LEFT: rgb(128,128,128) 1px solid; BORDER-BOTTOM: rgb(128,128,128) 1px solid; BACKGROUND-COLOR: rgb(255,255,255)">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_39_73_Open_Text">
								<span style="COLOR: rgb(0,0,0)">{<br />     </span>
								<span style="COLOR: rgb(0,0,255)">return</span>
								<span style="COLOR: rgb(0,0,0)"> </span>
								<span style="COLOR: rgb(0,0,255)">new</span>
								<span style="COLOR: rgb(0,0,0)"> PaletteRoot();<br />}</span>
						</span>
				</div>
		</div>
		<p> </p>
		<font face="Courier New">再看看configureGraphicalViewer方法。这个方法是复写基类的，在这里面，我们要对我们的Viewer进行一些设置：指定根编辑单元和设置我们的EditPartFactory。根编辑单元属于一个比较特殊的编辑单元，它不属于我们的模型对应的编辑单元。</font>
		<p>
				<font face="Courier New">特别强调，在复写configureGraphicalViewer方法的时候，需要调用一下父类原来的方法，因为在父类方法中，创建了Viewer，并进行了一些设置，如果不复写的话，那就要自己动手写了。</font>
		</p>
		<p>
				<font face="Courier New">我们再把我们的EditPartFactory注册到Viewer中，不然它傻，找不到对应的EditPart ：）</font>
		</p>
		<p> </p>
		<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: rgb(230,230,230) 0% 50%; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">
				<div>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New"> </font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="Courier New">protected</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New"> </font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="Courier New">void</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New"> configureGraphicalViewer() {<br />        </font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New">//</font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New"> 这里需要调用基类的方法</font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New">
										<br />
								</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New">        super.configureGraphicalViewer();<br />        GraphicalViewer viewer </font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New">=</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New"> </font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="Courier New">this</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New">.getGraphicalViewer();<br />        <br />        </font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New">//</font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New"> 设置根EditPart</font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New">
										<br />
								</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New">        viewer.setRootEditPart(</font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="Courier New">new</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New"> FreeformGraphicalRootEditPart());<br />        <br />        </font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New">//</font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New"> 设置工厂</font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New">
										<br />
								</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New">        viewer.setEditPartFactory(</font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="Courier New">new</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New"> DBEditPartFactory());<br />    }</font>
						</span>
				</div>
		</div>
		<p> </p>
		<p align="justify">
				<font face="courier new,courier,monospace"> </font>
				<font face="Courier New">OK，最后一步：把我们的模型告诉给Viewer。在initializeGraphicalViewer方法中，我们生成了一个Schema对象，并把它通过Viewer的setContent方法注册进去。</font>
		</p>
		<p align="justify"> </p>
		<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: rgb(230,230,230) 0% 50%; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">
				<div>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New"> </font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="Courier New">protected</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New"> </font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="Courier New">void</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New"> initializeGraphicalViewer() {<br />        </font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New">//</font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New"> TODO Auto-generated method stub</font>
						</span>
						<span style="COLOR: rgb(0,128,0)">
								<font face="Courier New">
										<br />
								</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New">        Schema schema </font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New">=</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New"> </font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="Courier New">new</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New"> Schema();<br />        </font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="Courier New">this</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="Courier New">.getGraphicalViewer().setContents(schema);<br />    }</font>
						</span>
				</div>
		</div>
		<p align="justify"> </p>
		<p>
				<font face="Courier New">启动一下吧！什么？无法创建编辑器……</font>
		</p>
		<p>
				<strong>4.准备工作2——创建一个Schema对应的Figure</strong>
		</p>
		<p>刚才不能创建编辑器的原因如下：</p>
		<p>当GEF发现我们设置的内容是一个Schema的时候，它就去找到对应的EditPart，这里是SchemaEditPart,然后调它的createFigure方法，获得一个图形进行显示。但是我们返回了一个NULL，所以编辑器就会创建不起来。</p>
		<p>我们给它写一个简单的Figure吧</p>
		<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: rgb(230,230,230) 0% 50%; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid; moz-background-clip: initial; moz-background-origin: initial; moz-background-inline-policy: initial">
				<div>
						<span style="COLOR: rgb(0,0,0)">
								<font face="courier new,courier,monospace">    </font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="courier new,courier,monospace">protected</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="courier new,courier,monospace"> IFigure createFigure() {<br />        </font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="courier new,courier,monospace">return</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="courier new,courier,monospace"> </font>
						</span>
						<span style="COLOR: rgb(0,0,255)">
								<font face="courier new,courier,monospace">new</font>
						</span>
						<span style="COLOR: rgb(0,0,0)">
								<font face="courier new,courier,monospace"> FreeformLayer();<br />    }</font>
						</span>
				</div>
		</div>
		<p> </p>
		<p>
				<font face="Courier New">这里给了一个FreeformLayer，这个Figure一般都作为一个根图形存在，可以根据子Figure的大小数量，以及Editor本身的大小来调节自身的大小。</font>
		</p>
		<p>
				<font face="Courier New">好了，让我们再启动一次！成功，看看吧</font>
		</p>
		<p align="center">
				<a href="http://album.sina.com.cn/pic/5414465b0200041f" target="_blank">
						<img title="http://album.sina.com.cn/pic/5414465b0200041f" style="WIDTH: 487px; HEIGHT: 296px" alt="http://album.sina.com.cn/pic/5414465b0200041f" src="http://album.sina.com.cn/pic/5414465b0200041f" border="1" />
				</a>
		</p>
		<p>
				<font face="Courier New">5.结束语</font>
		</p>
		<p>
				<font face="Courier New">什么都没有啊，不要着急，下一章我们再让它显示出图形！</font>
		</p>
		<br />
		<div>
		</div>
<img src ="http://www.blogjava.net/reloadcn/aggbug/74145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/reloadcn/" target="_blank">Dart</a> 2006-10-09 18:57 <a href="http://www.blogjava.net/reloadcn/archive/2006/10/09/gef2.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GEF简介</title><link>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef1.html</link><dc:creator>Dart</dc:creator><author>Dart</author><pubDate>Mon, 09 Oct 2006 10:55:00 GMT</pubDate><guid>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef1.html</guid><wfw:comment>http://www.blogjava.net/reloadcn/comments/74144.html</wfw:comment><comments>http://www.blogjava.net/reloadcn/archive/2006/10/09/gef1.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/reloadcn/comments/commentRss/74144.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/reloadcn/services/trackbacks/74144.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: GEF(Graphical Editing Framework )是Eclipse旗下的强有力的Tool Project，利用GEF可以轻松实现类似于Visual Editor的可视化图形编辑应用程序。&nbsp;&nbsp;<a href='http://www.blogjava.net/reloadcn/archive/2006/10/09/gef1.html'>阅读全文</a><img src ="http://www.blogjava.net/reloadcn/aggbug/74144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/reloadcn/" target="_blank">Dart</a> 2006-10-09 18:55 <a href="http://www.blogjava.net/reloadcn/archive/2006/10/09/gef1.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>