﻿<?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-xdingding</title><link>http://www.blogjava.net/xdingding/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 14:27:50 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 14:27:50 GMT</pubDate><ttl>60</ttl><item><title>关于 NUnit 异步消息测试问题</title><link>http://www.blogjava.net/xdingding/archive/2006/08/08/62461.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Tue, 08 Aug 2006 14:57:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2006/08/08/62461.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/62461.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2006/08/08/62461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/62461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/62461.html</trackback:ping><description><![CDATA[唉真是有意思，以前在博客园总写些Java文章，现在搬过来又总写.net 。不过两者有很多借鉴<br />以下就是我借鉴一个java的mail<br /> <br /><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><span lang="ZH-CN" style="FONT-FAMILY: SimSun">最近在写一个使用</span><span lang="EN-US" style="FONT-FAMILY: Verdana">XMPP</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">协议</span><span lang="EN-US" style="FONT-FAMILY: Verdana">(gtalk</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">和</span><span lang="EN-US" style="FONT-FAMILY: Verdana">jabber</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">使用的</span><span lang="EN-US" style="FONT-FAMILY: Verdana">) </span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">即时通讯的客户端，在</span><span lang="EN-US" style="FONT-FAMILY: Verdana">.net</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">下使用了一个</span><span lang="EN-US" style="FONT-FAMILY: Verdana">Open Source</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">库</span><span lang="EN-US" style="FONT-FAMILY: Verdana">ags. </span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">这个库是基于</span><span lang="EN-US" style="FONT-FAMILY: Verdana">Windows Socket</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">异步方式来做底层架构的。这就存在</span><span lang="EN-US" style="FONT-FAMILY: Verdana">NUnit</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">的使用问题，</span></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><span lang="ZH-CN" style="FONT-FAMILY: SimSun">如果按照一般</span><span lang="EN-US" style="FONT-FAMILY: Verdana">Unit</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">使用过程，在客户端发出请求后，因为异步原因，会不等接收数据的</span><span lang="EN-US" style="FONT-FAMILY: Verdana">delegate</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">事件被调起，</span><span lang="EN-US" style="FONT-FAMILY: Verdana">Test</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">函数就会提前退出。</span></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><span lang="ZH-CN" style="FONT-FAMILY: SimSun">为此到网上海</span><span lang="EN-US" style="FONT-FAMILY: Verdana">google</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">了一番，均无此法，后来搜到一封网上的英文</span><span lang="EN-US" style="FONT-FAMILY: Verdana">mail</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">，</span><span lang="EN-US" style="FONT-FAMILY: Verdana">mail</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">里写了几行好像测试异步访问</span><span lang="EN-US" style="FONT-FAMILY: Verdana">Web</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">服务器的测试程序，没头没尾看不出究竟干什么的（他们是讨论一个</span><span lang="EN-US" style="FONT-FAMILY: Verdana">feature</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">问题），但里面几行给了我很大提示，其中有一行</span></p><p style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; MARGIN: 0in; mso-outline-level: 1"><span lang="EN-US" style="FONT-FAMILY: Verdana"><span style="mso-spacerun: yes"> </span></span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">if (!reset.WaitOne(timeout, true))</span></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><span lang="ZH-CN" style="FONT-FAMILY: SimSun">这似乎就是我要寻找的提示，嗯用线程同步信号不错，估计可以解决，经过</span><span lang="EN-US" style="FONT-FAMILY: Verdana">2</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">个小时反复试验终于出炉啦</span><span lang="EN-US" style="FONT-FAMILY: Verdana">,</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">呵呵</span><span lang="EN-US" style="FONT-FAMILY: Verdana">!</span></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">大体程序如下：</p><p style="FONT-WEIGHT: bold; FONT-SIZE: 16pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">static ManualResetEvent reset;</p><p style="FONT-WEIGHT: bold; FONT-SIZE: 16pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">private const int timeout = 3000;</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">[TestFixtureSetUp]</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">public void FixtureSetUp()</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">{</p><p style="FONT-WEIGHT: bold; FONT-SIZE: 16pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">reset = new ManualResetEvent(false);</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">}</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">[TestFixtureTearDown]</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">public void FixtureTearDown()</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">{</p><p style="FONT-WEIGHT: bold; FONT-SIZE: 16pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">reset.Close();</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">}</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">[Test]</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">public void TestConnect()</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">{</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">。。。。。</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">msgControl.Connect(connectInfo);</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">Assert.AreNotEqual("", msgControl.Status);</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">msgControl.RecvStringEvent += new RecvStringCallback(msgControl_RecvStringEvent);</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-WEIGHT: bold; FONT-SIZE: 16pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">reset.Reset();</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">// note for some reason r.AsyncWaitHandle.Wait won't work as expected</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">// if (!r.AsyncWaitHandle.WaitOne (timeout, true))</p><p style="FONT-WEIGHT: bold; FONT-SIZE: 16pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">if (!reset.WaitOne(timeout, true))</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">{</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">if (recvTimes == 0)</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">{</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1.5in; FONT-FAMILY: SimSun; mso-outline-level: 4">Assert.Ignore("Timeout");</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">}</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">else</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">{</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1.5in; FONT-FAMILY: SimSun; mso-outline-level: 4">Assert.AreEqual(8, recvTimes, "not recv 8 times");</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">}</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">}</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">Assert.IsNotNull(message, message);</p><p lang="EN-US" style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana; mso-outline-level: 2">}</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">private int recvTimes = 0;</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">void msgControl_RecvStringEvent(string msgText)</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">{</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">recvTimes++;</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">message = msgText;</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">if (recvTimes &gt; 9)</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">{</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1.5in; FONT-FAMILY: SimSun; mso-outline-level: 4">recvTimes = 0;</p><p style="FONT-WEIGHT: bold; FONT-SIZE: 16pt; MARGIN: 0in 0in 0in 1.5in; FONT-FAMILY: SimSun; mso-outline-level: 4">reset.Set();</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun; mso-outline-level: 3">}</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">}</p><p style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">希望能对编写异步通讯的人有所帮助</p><img src ="http://www.blogjava.net/xdingding/aggbug/62461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2006-08-08 22:57 <a href="http://www.blogjava.net/xdingding/archive/2006/08/08/62461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于沙龙的想法</title><link>http://www.blogjava.net/xdingding/archive/2006/07/29/60795.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Sat, 29 Jul 2006 15:51:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2006/07/29/60795.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/60795.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2006/07/29/60795.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/60795.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/60795.html</trackback:ping><description><![CDATA[大家先多在此发贴，多多对技术关注！<br /><br />我们合肥的整体软件学术气氛不浓，大家缺乏交流。<br /><br />希望借此联系大家，等版面有些活跃时，我们组织举行非正式的技术沙龙活动，到时大家多多支持哦！<img src ="http://www.blogjava.net/xdingding/aggbug/60795.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2006-07-29 23:51 <a href="http://www.blogjava.net/xdingding/archive/2006/07/29/60795.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>今天安装了一个 bug 跟踪系统，好用好装，推荐！</title><link>http://www.blogjava.net/xdingding/archive/2006/07/26/60169.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Wed, 26 Jul 2006 06:32:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2006/07/26/60169.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/60169.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2006/07/26/60169.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/60169.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/60169.html</trackback:ping><description><![CDATA[  <br /><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">mantis 的网站 <a href="http://www.mantisbt.org/">http://www.mantisbt.org/</a><br /><br />今天安装了一个bug 跟踪系统， mantis。非常清爽，主要有以下好处：</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><span lang="EN-US" style="FONT-FAMILY: Verdana">1</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">、用</span><span lang="EN-US" style="FONT-FAMILY: Verdana">php</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">写的系统，安装方便，不用像</span><span lang="EN-US" style="FONT-FAMILY: Verdana"> bugzilla </span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">那样安装那么多</span><span lang="EN-US" style="FONT-FAMILY: Verdana">perl</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">支持；</span></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><span lang="EN-US" style="FONT-FAMILY: Verdana">2</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">、系统相对简单轻磅，使用简单；</span></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><span lang="EN-US" style="FONT-FAMILY: Verdana">3</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">、出色的多语支持，对于对日开发等公司非常合适；</span></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">安装：</p><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><span lang="ZH-CN" style="FONT-FAMILY: SimSun">本人在安装了其他免费的</span><span lang="EN-US" style="FONT-FAMILY: Verdana">php</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">系统后，安装</span><span lang="EN-US" style="FONT-FAMILY: Verdana">mantis</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">直接在页面，敲入路径立刻成功。就是后来注册用户时，它要把密码通过</span><span lang="EN-US" style="FONT-FAMILY: Verdana">mail</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">发到个人，需要在</span><span lang="EN-US" style="FONT-FAMILY: Verdana">config</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">中配置</span><span lang="EN-US" style="FONT-FAMILY: Verdana">smtp mail </span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">（</span><span lang="EN-US" style="FONT-FAMILY: Verdana">mantis</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">使用的是</span><span lang="EN-US" style="FONT-FAMILY: Verdana">phpmailer</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">）。配置完后一切</span><span lang="EN-US" style="FONT-FAMILY: Verdana">OK</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">。</span></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">以下是使用的图片：<br /></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"><br />登陆界面：<br /><img height="517" alt="mantis1.JPG" src="http://www.blogjava.net/images/blogjava_net/xdingding/mantis1.JPG" width="625" border="0" /><br /><br />其中视图界面：<br /><img height="459" alt="mantis2.JPG" src="http://www.blogjava.net/images/blogjava_net/xdingding/mantis2.JPG" width="840" border="0" /><br /></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"><font size="4"><strong>如图，它的多语支持非常出色：</strong></font></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><font size="4"><strong><span lang="EN-US" style="FONT-FAMILY: Verdana">1</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">、可以使用</span><span lang="EN-US" style="FONT-FAMILY: Verdana">utf-8</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">为内码，这样可以多种语言并存；</span></strong></font></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><font size="4"><strong><span lang="EN-US" style="FONT-FAMILY: Verdana">2</span><span lang="ZH-CN" style="FONT-FAMILY: SimSun">、每个用户可以自定义界面语言；</span></strong></font></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"><img height="780" alt="mantis3.JPG" src="http://www.blogjava.net/images/blogjava_net/xdingding/mantis3.JPG" width="927" border="0" /></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><span lang="ZH-CN" style="FONT-FAMILY: SimSun">这是设置语言地方</span><span lang="EN-US" style="FONT-FAMILY: Verdana">;</span></p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p><p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">这是修改后日文界面：<br /><img height="586" alt="mantis4.JPG" src="http://www.blogjava.net/images/blogjava_net/xdingding/mantis4.JPG" width="932" border="0" /></p><img src ="http://www.blogjava.net/xdingding/aggbug/60169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2006-07-26 14:32 <a href="http://www.blogjava.net/xdingding/archive/2006/07/26/60169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java语言初级学习曲线</title><link>http://www.blogjava.net/xdingding/archive/2006/07/25/60061.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Tue, 25 Jul 2006 13:14:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2006/07/25/60061.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/60061.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2006/07/25/60061.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/60061.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/60061.html</trackback:ping><description><![CDATA[
		<h2>*问:开始接触Java,先要了解那些概念?</h2>
		<dl>
				<dd>
						<dl>
								<dd>答: 
</dd>
								<dd>学习Java环境,了解一下关键字(十分关键尽量深入): 
</dd>
								<dd>Java、JRE、JDK、J2ME、J2RE、J2EE、JVM 
</dd>
								<dd>JAVA_PATH、JAVA_HOME 
</dd>
								<dd>JAR 
</dd>
								<dd>Package、ClassPath 
</dd>
								<dd>ClassLoader 
</dd>
								<dd>Javac,Javaw 
</dd>
								<dd>Java Applet,JavaBean,EJB </dd>
						</dl>
				</dd>
		</dl>
		<a name=".2A.E9.97.AE:.E5.BC.80.E5.A7.8B.E8.BF.9B.E5.85.A5.E5.AD.A6.E4.B9.A0.E9.9C.80.E8.A6.81.E5.A6.82.E4.BD.95.E6.B8.90.E8.BF.9B.E6.8E.8C.E6.8F.A1Java.E5.9F.BA.E7.A1.80.3F">
		</a>
		<h2>*问:开始进入学习需要如何渐进掌握Java基础?</h2>
		<dl>
				<dd>
						<dl>
								<dd>答: 
<ol><li>学习Java基础语法 
</li><li>后了解Java面向对象语法及其特性，这期间要先对面向对象编程基础知识有所了解，重要的一点是要学会掌握Interface使用和其应用场景 
</li><li>学会理解Java出错输出的Call Stack 
</li><li>学会基本调试，log方法 
</li><li>理解学会Exception的用法 </li></ol></dd>
								<dd>还有就是要掌握Java的基础类库 </dd>
						</dl>
				</dd>
		</dl>
		<a name=".2A.E9.97.AE:.E6.B3.A8.E6.84.8F.E6.8E.8C.E6.8F.A1.E9.82.A3.E4.BA.9BJava.E7.9A.84.E5.9F.BA.E7.A1.80.E7.B1.BB.E5.BA.93.3F.E5.A6.82.E4.BD.95.E5.BF.AB.E9.80.9F.E6.8E.8C.E6.8F.A1.EF.BC.9F">
		</a>
		<h2>*问:注意掌握那些Java的基础类库?如何快速掌握？</h2>
		<p>
				<br />
		</p>
		<a name=".2A.E9.97.AE.EF.BC.9A.E6.8E.A8.E8.8D.90.E4.B8.A4.E6.9C.AC.E5.85.A5.E9.97.A8.E4.B9.A6.E7.B1.8D.E5.8F.AF.E5.90.A6.EF.BC.9F">
		</a>
		<h2>*问：推荐两本入门书籍可否？</h2>
		<ul>
				<li>
						<a title="SUN－JAVA2核心技术" href="http://220.178.25.18:8080/mambo/components/com_mambowiki/index.php?title=SUN%EF%BC%8DJAVA2%E6%A0%B8%E5%BF%83%E6%8A%80%E6%9C%AF">SUN－JAVA2核心技术 </a>
				</li>
				<li>蔡学镛推荐的是Oreilly的<a class="new" title="《Exploring Java, 2nd Edition》" href="http://220.178.25.18:8080/mambo/components/com_mambowiki/index.php?title=%E3%80%8AExploring_Java%2C_2nd_Edition%E3%80%8B&amp;action=edit">《Exploring Java, 2nd Edition》</a></li>
				<li>
						<a title="《OReilly-Java.in.a.Nutshell,4th.Edition》" href="http://220.178.25.18:8080/mambo/components/com_mambowiki/index.php?title=%E3%80%8AOReilly-Java.in.a.Nutshell%2C4th.Edition%E3%80%8B">《OReilly-Java.in.a.Nutshell,4th.Edition》</a>
				</li>
		</ul>
<img src ="http://www.blogjava.net/xdingding/aggbug/60061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2006-07-25 21:14 <a href="http://www.blogjava.net/xdingding/archive/2006/07/25/60061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分析调试 MediaWiki 中源码问题</title><link>http://www.blogjava.net/xdingding/archive/2006/07/25/60046.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Tue, 25 Jul 2006 11:52:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2006/07/25/60046.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/60046.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2006/07/25/60046.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/60046.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/60046.html</trackback:ping><description><![CDATA[目前正在组建公司内部CMS站点，本人用 曼波 构筑了公司的信息系统。<br />其中、包含了 BBS 和 Wiki Wiki使用MediaWiki在曼波上的组件融合到网站上。因为需要在主页发布Wiki中最新的文章链接<br />因此、需要查看Wiki的代码，同时、安装的MediaWiki中有Bug，其中知识链接发生错误。为了调试，我大量使用print语句看是那里的语句发生了左右，最后、发现是其有一个对链接格式的配置出错。当然、出错何处并不重要，重要的是，我中间的 print 语句发生中断，网页上知识点的链接 没有反应我新的 print 语句，而我全文检索代码也未发行还有什么其他的地方 输出知识点的链接地址 ，后来我反复阅读代码，<strong><font style="BACKGROUND-COLOR: #9acd32">发现MediaWiki在生成知识页面的时候，采用了Cache技术，MediaWiki的页面当其内部内容不发生变化时，使用的是原Cache内的内容。<br /></font></strong>后来在配置文件中找到使用此Cache的配置，关闭后，立刻发现我写的 print内容。<br /><br />因为不知大家是否关心此技术。如果、大家回复要求，我就整理发布一下MediaWiki的大体构架。<img src ="http://www.blogjava.net/xdingding/aggbug/60046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2006-07-25 19:52 <a href="http://www.blogjava.net/xdingding/archive/2006/07/25/60046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>希望大家不仅是加入</title><link>http://www.blogjava.net/xdingding/archive/2006/07/25/60043.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Tue, 25 Jul 2006 11:33:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2006/07/25/60043.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/60043.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2006/07/25/60043.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/60043.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/60043.html</trackback:ping><description><![CDATA[很多人加入了我们 <a title="合肥技术沙龙" href="http://hefei.blogjava.net/" target="_blank">合肥技术沙龙</a>  ,过了这么长时间确没有人写文章。<br />其实、抽空些技术Blog不仅可以增加大家交流中的乐趣，<br />而且对大家的技术也是一种很好的提高，把自己所指<br />所感重新组织发表，简明明了让别人快速看懂不容易，<br />是一种知识的再提高升华过程。投稿哇！投稿哇！<img src ="http://www.blogjava.net/xdingding/aggbug/60043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2006-07-25 19:33 <a href="http://www.blogjava.net/xdingding/archive/2006/07/25/60043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开始回来了</title><link>http://www.blogjava.net/xdingding/archive/2006/07/25/60042.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Tue, 25 Jul 2006 11:27:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2006/07/25/60042.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/60042.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2006/07/25/60042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/60042.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/60042.html</trackback:ping><description><![CDATA[因工作的变换,沉浸了半年,终于有时间开始发阿拉的Blog拉.<br /><img src ="http://www.blogjava.net/xdingding/aggbug/60042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2006-07-25 19:27 <a href="http://www.blogjava.net/xdingding/archive/2006/07/25/60042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>特此庆祝今日合肥技术沙龙 blog在此成立</title><link>http://www.blogjava.net/xdingding/archive/2006/06/23/54660.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Fri, 23 Jun 2006 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2006/06/23/54660.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/54660.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2006/06/23/54660.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/54660.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/54660.html</trackback:ping><description><![CDATA[
		<p>欢迎大家踊跃加入，发表文章</p>
		<p>               古语有云 ：大家好，才是真的好 <img height="19" src="http://www.blogjava.net/Emoticons/shades_smile.gif" width="19" border="0" /></p>
<img src ="http://www.blogjava.net/xdingding/aggbug/54660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2006-06-23 13:55 <a href="http://www.blogjava.net/xdingding/archive/2006/06/23/54660.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]GEF源码分析（六） GEF 的EditPart的职能分离 __ 跨国时尚媒体集团广告部门 的故事 二</title><link>http://www.blogjava.net/xdingding/archive/2005/12/08/22929.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Wed, 07 Dec 2005 16:41:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2005/12/08/22929.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/22929.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2005/12/08/22929.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/22929.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/22929.html</trackback:ping><description><![CDATA[&nbsp;<BR>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">GEF源码分析（六） GEF 的EditPart的职能分离 __ 跨国时尚媒体集团广告部门 的故事 二<BR><BR>GraphicalEditPart先生当天安排了部门及会议计划。经过</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部门紧张有奏的准备会议讨论的资料，第三天、按时</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">8:30</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">开会。<BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><BR>GraphicalEditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">先生还如往常，准时提前</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">5</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">分钟坐在会议室前边角上。他喜欢部门的小伙子们，虽然这些小伙子们做事情时常有些不周，但是他更欣赏他们的活力和富有创造激情。所以、每每开会时，他更愿坐在旁边听这些小伙子们的意见，“相比较当个威武的军队长官，我更意是一个严格又和蔼的优秀教练”</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GraphicalEditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">先生常常如此提醒自己不要越俎代庖。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部门干将小李主持会议，简短阐明会议主题和要求后，（为了提高会议效率会议每人最多</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">5</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">分钟发言，最后</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">20</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">分钟讨论时间，</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">5</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">分钟</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GraphicalEditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">先生做总结）。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">小王首先站起发言：“目前我们</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部门，虽然，主要任务有明确定义，但是内部的工作流程不明确，没有可依章程。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">...</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">”。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">“是呀，公司目前还没有我们部门的标准操作手册，很多问题都有很大随机性，工作的好坏过于依赖人员本身的工作能力，这十分不利于人员的内部流动以及新人员的补充”我们的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GraphicalEditPart"</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">教练</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">"</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">满意的点点头。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">小魏起来补充一下：“由于我们内部每个人的做事方法，都是各有一套绝活，流程不一致，经常导致在工作对上下层通知协作出现问题。在水平部门沟通时，也常常不流畅”。这是个大学刚毕业十分活泼的小姑娘。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">“为什么大家总是觉得女的职员不好，看多有灵气的一个小姑娘呀，又是个好苗子。”</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GraphicalEditPart"</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">教练</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">"</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">此时内心中的自我形象简直就是华佗再世，那感觉真有点飘飘然乎，</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GraphicalEditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">先生不由自主地晃了晃脑袋。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">接下来其它人纷纷发言：</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">“工作经验很难相互交流，积累与提高。很难在部门级对工作流程等进行优化，缺乏专业化。”</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">“我们经常要和</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Figure</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部门一起工作，跟踪操作执行。这很是浪费工作时间，尤其是当某个工作需要很长时间，或者中间经常需要和客户交流反馈一段时间，这样非常影响工作效率。”</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">“对于客户的问题很难快速根据现有的经验模式形成解决方案，虽然我们公司服务态度和广告质量高于其它公司，但是经常由于反应速度太慢，活被其它公司从中抢了去，销售部门常常抱怨我们部门速度太慢。”</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">“公司在相应客户需要操作过程中，很难针对客户某个需求重新调整。客户常常抱怨在制作过程中很难做些小的改动。”</P>
<P lang=EN-US style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana; mso-outline-level: 1">……</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">由于</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GraphicalEditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">先生管理小师的带领，</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部门的会议总是简短有效。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">1</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">个小时多几分钟大家都把问题简明扼要的表达出来。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">小李环顾下四周“最后，由</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GraphicalEditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部长总结一下今天的会议”。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">一直沉默的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GraphicalEditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">先生站了起来，十分精神，也环顾了一下四周，清了清嗓子。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">“首先、我要自我检讨一下，这一年多总是忙乱于紧急的小事情当中，很久没有收集大家的建议和反馈了，这十分不利于我们部门的发展。今天大家举出很多目前部门的问题，这些充分反映了大家对部门的业务熟悉程度，我相信，这是因为大家十分关注公司的未来，希望公司越办越好，而不是怨天尤人的牢骚，可能有些领导会觉的这是找毛病对领导不满，在我这里，我今天在一次明确表明，我十方鼓励大家，欢迎大家将一些意见反馈给我，希望大家不仅仅是简单反馈在工作中的直接困难，而且经过自己的思考提炼写成简洁的文书给我，最好发挥自我主动和创造性提出一些变革建议。这些东西将是我们部门及公司潜在的珍贵的财富，同时也是我们部门未来发展方向的一个重要部分。”</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">“今天的会议大家主要是针对我们部门的问题，希望会后大家再从公司整体考虑这些问题，以及未来扩充</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部门会带来什么问题，比如大家可以参考我们当初成立时遇到那些问题，这些问题将来如何避免或减少。”</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">“按计划，会后，小李，小孙，小丁，小黄还有我，将总结今天会议，同时、制定出未来部门组织变革的策略。在此期间，希望大家踊跃的将自己的想法创意于我们交流。”</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">“还有一件事情，今天要批评一下小丁同事，现在开会不迟到了，但是，不仅没发言、我看你从开会就一直看前天发的材料，为什么不提前准备，这是耽误大家每个人的时间，下不为例。今后、小李你在部门规章里加一条，部门开会前必须提前阅读理解会议材料，凡违反者，包括我在内一律站到会议室角落站着阅读完资料后，在回会议座位。我的话完了。”</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">小丁满脸通红，不由地低着头，双手捂住了腮帮，不敢喘气了，恨不得有个地缝钻进去。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">“今天会议结束。”小李宣布。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">会后根据小孙的会议记录，很快的小李几个人总结出以下的一个鱼骨图。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;<IMG src="http://www.cnblogs.com/images/cnblogs_com/xdingding/Gef-BlogWeb.gif" border=0></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"><BR>&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"><BR>&nbsp;<IMG src="http://www.cnblogs.com/images/cnblogs_com/xdingding/icon1.gif" border=0></P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; COLOR: black; FONT-FAMILY: SimSun; mso-outline-level: 1">什么是因果图？</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; COLOR: black; FONT-FAMILY: SimSun; mso-outline-level: 1">因果图的发明者 Kaoru Ishikawa 是一名管理专家，其最初的目的是改进车间的质量控制工作。正如以下示例所示，因果图还能表达其他环境中的因果关系。<BR><IMG src="http://www.cnblogs.com/images/cnblogs_com/xdingding/ZA010359992052.gif" border=0><BR>&nbsp; </P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; COLOR: black; FONT-FAMILY: SimSun; mso-outline-level: 1">由于因果图的形状很像鱼的骨架，所以它又称作鱼骨图。鱼的脊骨上几根最大的鱼骨表示主要的原因类别。<BR>例如，在本例中，主要的原因类别有盎格鲁人/朱特人、丹麦人、萨克逊人和诺曼底人，这些种族群体都想控制英格兰，从而导致了该战争的爆发。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; COLOR: black; FONT-FAMILY: SimSun; mso-outline-level: 1">主要类别中的较小鱼骨表示主要的原因。例如，在本例中，在萨克逊人这个类别方面，黑斯廷斯战争的主要原因在于公元 1051 年萨克逊王爱德华许诺将王位传给威廉一世。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; COLOR: black; FONT-FAMILY: SimSun; mso-outline-level: 1">您还可以在主要原因上添加次要原因。</P><IMG height=1 src="http://xdingding.cnblogs.com/aggbug/292516.html" width=1><BR><BR>
<DIV align=right>般若菩提 2005-12-07 14:14 </DIV><BR>文章来源:<A href="http://xdingding.cnblogs.com/archive/2005/12/07/292516.html">http://xdingding.cnblogs.com/archive/2005/12/07/292516.html</A><img src ="http://www.blogjava.net/xdingding/aggbug/22929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2005-12-08 00:41 <a href="http://www.blogjava.net/xdingding/archive/2005/12/08/22929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>准备搬家了</title><link>http://www.blogjava.net/xdingding/archive/2005/12/05/22556.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Mon, 05 Dec 2005 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2005/12/05/22556.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/22556.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2005/12/05/22556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/22556.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/22556.html</trackback:ping><description><![CDATA[<P>Java的魅力太大了，我还是被java吸引过来了, 欢迎大家到我原来的博客园看看 <A href="http://xdingding.cnblogs.co">http://xdingding.cnblogs.co</A>m<BR><BR></P><img src ="http://www.blogjava.net/xdingding/aggbug/22556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2005-12-05 14:09 <a href="http://www.blogjava.net/xdingding/archive/2005/12/05/22556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GEF源码分析（五） GEF 的EditPart的职能分离 __ 跨国时尚媒体集团广告部门 的故事</title><link>http://www.blogjava.net/xdingding/archive/2005/12/05/22555.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Mon, 05 Dec 2005 06:01:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2005/12/05/22555.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/22555.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2005/12/05/22555.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/22555.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/22555.html</trackback:ping><description><![CDATA[<BR><A class=titlelink id=Editor_Results_rprSelectionList__ctl2_Hyperlink1 href="http://xdingding.cnblogs.com/archive/2005/12/05/290704.html"><FONT color=#000000>GEF源码分析</FONT></A>（五） GEF 的EditPart的职能分离 __ 跨国时尚媒体集团广告部门 的故事<BR><BR><SPAN style="FONT-SIZE: 10pt">&nbsp; 
<P style="FONT-SIZE: 8pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"><SPAN style="FONT-SIZE: 10pt">接下来我们以一个故事的方式来解决第三篇遗留下来问题：</SPAN></P></SPAN><SPAN style="FONT-SIZE: 10pt"><BR></SPAN>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 11pt; MARGIN: 0in; COLOR: #333399; FONT-FAMILY: SimSun; mso-outline-level: 1">已存在一个三角图形EditPart，我们想重用它,但是我们还需要增加（或删去）边框可调整的特性，如何保证无需重新建立一个新的EditPart，或者做出丑陋的继承，当功能不断组合后，出现无数子EditPart类? </P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; MARGIN: 0in; COLOR: #333399; FONT-FAMILY: SimSun; mso-outline-level: 1">如何由框架自动完成Undo及Redo功能？</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun"><SPAN style="FONT-SIZE: 10pt">
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">话说在某个跨国时尚媒体集团中国区广告部门（这是一家主营平面广告的广告公司，听说董事长是个年仅办百的老头GraphicalEditor先生，来自赫赫有名的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">eclipse</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">基金财团），有目前主要有两个子部门</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart(</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">广告策划部</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">)</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">和</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Figuer(</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">平面设计部</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">)</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部长是一位中年充满信心和活力GraphicalEditPart先生。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Figuer</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部长是一位与部门名同名的广告主设计师美丽青春的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Figure</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">小姐。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部长GraphicalEditPart目前主要肩负着三项任何：</SPAN></P>
<UL style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1in; DIRECTION: ltr; unicode-bidi: embed" type=disc>
<LI style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">处理由其他部门中的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Model</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">人员送来各销售部门广告需求；</SPAN> 
<LI style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">做出具体的平面设计策划交给</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Figure</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">小姐，由</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Figure</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">小姐负责画出充满激情的平面广告；</SPAN> 
<LI style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; mso-outline-level: 2"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">读阅客户要求与反馈的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Request</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">文书，这些文书是由</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">（情报收集部门）收集客户的反馈及要求，经过专业的整理与分类而成（上篇我们以及探讨过了）</SPAN></LI></UL>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">由于公司扩大了业务，投入市场的产品种类比以往增加了三倍，</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部长工作变得异常繁忙有些快压垮了，感觉自己快成为整日驮着重物年迈的驴子，“是不是自己老了”GraphicalEditPart先生开始常常怀疑自己了。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">这天，</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部长收到总部一封信：</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">GraphicalEditPart先生：</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; mso-outline-level: 2"><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">首先我代表公司感谢您这些年勤奋出色的工作。我们公司在中国短短三年的营业额增长了四倍，同时</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中国部门在此期间获得了公司最有活力部门奖，这些成绩都与您的努力是分不开的。据我们了解，您在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部门这三年中，实施了几项富有创意的制度改革，如成立</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">情报收集部门，推广后大大提高了整个公司</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部门业务处理能力。为了进一步扩大业务，公司在未来的两年里将在世界各地尤其是中国增加</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">40%</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的区域广告部门，正如您所知道目前公司对于</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部门的组织规划以及责任制度还有很多不完善之处，这将十分不利于区域部门扩展的计划。故我委托您做出《未来广告部组织的规划》计划书，本月底将邀请您来总部参加组织规划与变革方案的评审会，届时将会对您的计划书进行评审。如通过评审，公司所有广告部将会按照您的计划书进行变革。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; mso-outline-level: 2"><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">祝愿世界明天的舞台，因我们而变得更加美好、充满激情与想象</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun; mso-outline-level: 2">&nbsp;</P>
<P lang=EN-US style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: Verdana; mso-outline-level: 3"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>CEO <SPAN style="FONT-STYLE: italic">GEF</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">“噢！太棒了，这封信来的真是及时，如果再继续如此的话，我要压垮了，只好另谋它职了。嗯，这回我要好好地写这个计划书。这样，身上担子总算有减轻的希望。有上司的赏识，我要一展宏图一番。”GraphicalEditPart不由自主拍了下桌子自言自语后，张开双臂，砰地一下仰靠在椅背上，深深地出了口气，双目轻合工作的压力似乎片刻间消失，顺手戴上了他那十分酷毙的太阳镜，小声打开旁边</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">CD</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">，噢，夏威夷之夜，感觉自己此时就在夏威夷带着墨镜躺在金黄、松软、温暖的沙滩，吹着口哨，热情似火的太阳穿过太阳镜，越过眼皮，将几缕模糊的光芒带入眼中（其实是他那高瓦的吊灯），海风习习（旁边的电风扇），在享受着这片刻宁静天堂感觉，激情创意不断涌出，啊，久违了的感觉。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">开干！迅速的打开他喜爱的脑图软件</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> -- Mindjet Manager</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">，记录下脑中的构思，画下如下计划要点</SPAN></SPAN></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">：</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"><BR><IMG src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/部门规划.gif" border=0></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">看来GraphicalEditPart先生要大干一场，欲知详情，请听下回分解<IMG src="http://xdingding.cnblogs.com/Emoticons/emsmiled.gif" align=absMiddle border=0></SPAN></P><img src ="http://www.blogjava.net/xdingding/aggbug/22555.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2005-12-05 14:01 <a href="http://www.blogjava.net/xdingding/archive/2005/12/05/22555.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GEF源码分析（四） GEF 消息转义 ___ Tool的作用</title><link>http://www.blogjava.net/xdingding/archive/2005/12/05/22553.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Mon, 05 Dec 2005 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2005/12/05/22553.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/22553.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2005/12/05/22553.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/22553.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/22553.html</trackback:ping><description><![CDATA[<BR>郁闷！同志们没有留言，不知是写的太差，何处需要改进，还是大家觉得对自己没有用处....&nbsp; <BR><BR>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF源码分析</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">（四）</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> GEF </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">消息转义</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> ___ Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的作用</SPAN></P>
<P style="FONT-SIZE: 8pt; MARGIN: 0in; FONT-FAMILY: SimSun"><BR></P>
<P style="FONT-SIZE: 8pt; MARGIN: 0in; FONT-FAMILY: SimSun"><FONT size=2>接着上一节：</FONT></P>
<P style="FONT-SIZE: 8pt; MARGIN: 0in; FONT-FAMILY: SimSun"><FONT size=2>我们先解决如下问题：</FONT></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun"><SPAN style="FONT-WEIGHT: bold; COLOR: rgb(51,51,153)">在界面操作过程中，我们希望面对的是边框调整事件，图形移动事件，或者是编辑文本事件，而不是原始的鼠标和键盘事件？</SPAN><SPAN style="COLOR: black"> </SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">术语定义：</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: SimSun">系统</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: SimSun">事件：</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: Verdana"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">一般由某些计算机人机交互硬件发出信号，并且经操作系统理解后产生的事件，例如：原始的鼠标的移动、点击和键盘的敲击事件等。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: SimSun">业务语义事件：</SPAN><SPAN lang=EN-US style="FONT-WEIGHT: bold; FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">由系统</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">事件和其它</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">业务语义事件触发，由</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">业务代码理解后产生的事件（操作系统不可理解，同时无任何领域的业务语义），如</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图形的尺寸调整，</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图形的点击，</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图形的移动。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">（其实不仅限于事件的转义，包括</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的改变，也需要由系统</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">语义转换到</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">业务语义来使用）</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P><IMG src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/Untitled-2.jpg" border=0> 
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">业务语义事件在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">控制中的优点是易于理解、维护和扩充，具体的主要有以下方面：</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">a.</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">减少系统</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">事件判断逻辑部分代码的重复。比如在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部分代码无需分步着大量逻辑重复的代码，当鼠标移动时去判断究竟是一个</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图形的尺寸改变，还是一个</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图形的移动，还是一组</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图形的移动，还是</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图形</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">DragAnd</SPAN><SPAN lang=EN-US style="FONT-FAMILY: SimSun">Drop</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的动作。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">b.Controller</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部分的代码语义明确。在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: SimSun">Controller</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">内部处理代码和接口中直接面对的是</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">业务语义，如图形的移动，图形的尺寸改变，这样、代码易于理解、调试等。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">b.Controller</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">部分代码无需为系统</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">事件保存状态。如</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图形的移动中，如果这些事件直接在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中处理，从开始</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">MouseDown,</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">到</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">MouseMove</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">，到</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">MouseUp</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">过程中，在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中要集中保留这样众多状态，极易造成</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">代码具体多头职责的症状，从而患上严重的精神分裂</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">:)</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">于是乎</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">FrameWork</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">有给出以下的解决方案：</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 8pt; MARGIN: 0in; FONT-FAMILY: SimSun"><IMG src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/Untitled-7.gif" border=0></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">A</SPAN></P>
<P style="FONT-SIZE: 8pt; MARGIN: 0in; COLOR: rgb(102,102,102); FONT-FAMILY: 宋体"><BR>&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun"><BR><BR>如上图</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">A</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">：</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">通过</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tools(</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">根</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">interface</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">是</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tool)</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">，当然在视图上的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Menu</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">和</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Toolbar</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">是通过</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Action</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">发出，这个是</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">eclipse</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Workbench</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">机制，在此就不讨论了。以下是</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的类继承树：</SPAN></P>
<P style="FONT-SIZE: 8pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P><IMG src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/Untitled-6.gif" border=0> 
<P style="FONT-SIZE: 8pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">B<BR></SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun"><BR><BR>从上图</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">B</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">可以看出</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">从</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">继承的这些类均处理一个或者一类</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">业务语义事件，其中需要保留中间状态的子类均以</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">XXXTracker</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">形式出现。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">首先这些</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的实现类通过</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的接口（上图右边），接收界面来的事件，然后调用内部</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">handleXXX</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">，这样通过内部函数getTargetRequest</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">()[</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">create</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Target</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">Request()</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">]</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">和getSourceRequest()</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">createSourceRequest()</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">]</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">，把系统</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">事件转换为</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">业务语义事件叫</SPAN><SPAN lang=EN-US style="COLOR: rgb(153,51,0); FONT-STYLE: italic; FONT-FAMILY: Verdana; TEXT-DECORATION: underline">Request</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">（如图</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">C</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">）。至此</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">会通过调用相关联的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的接口将</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">业务语义事件通知到</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中。于是在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller(EditPart)</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中仅仅需要理解处理</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Request</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">对象。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P><BR><IMG src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/Untitled-8.gif" border=0>&nbsp; 
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">C</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">下面以</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">ResizeTracker</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">代码为例：</SPAN></P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(153,51,0); FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">class ResizeTracker</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">protected Request createSourceRequest() {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">ChangeBoundsRequest request;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">request = new ChangeBoundsRequest(REQ_RESIZE);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">request.setResizeDirection(getResizeDirection());</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">return request;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">protected Command getCommand() {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">List editparts = getOperationSet();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">EditPart part;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">CompoundCommand command = new CompoundCommand();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">command.setDebugLabel("Resize Handle Tracker");//$NON-NLS-1$</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">for (int i = 0; i &lt; editparts.size(); i++) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun">part = (EditPart)editparts.get(i);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun">command.add(part.getCommand(getSourceRequest()));</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">return command.unwrap();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">protected void eraseTargetFeedback() {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">if (!getFlag(FLAG_TARGET_FEEDBACK))</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun">return;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">if (getTargetEditPart() != null)</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun">getTargetEditPart().eraseTargetFeedback(getSourceRequest());</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">setFlag(FLAG_TARGET_FEEDBACK, false);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">protected boolean handleButtonUp(int button) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">if (stateTransition(STATE_DRAG_IN_PROGRESS, STATE_TERMINAL)) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun">eraseSourceFeedback();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun">eraseTargetFeedback();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun">performDrag();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">return true;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">最后还有个问题是<BR></P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(51,51,153)"><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><IMG height=50 src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/Untitled-2.jpg" width=50 border=0><BR>Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">这些事件接口，如何从</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Viewer</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">传递过来的呢？</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">我画了一个简要的类图</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun"><IMG src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/gefCallToolsWeb.gif" border=0><BR>图</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">D</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun"><BR>参照上图，下面罗列重要代码：</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">大家主要以下两方面</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; COLOR: rgb(153,51,0); FONT-FAMILY: SimSun">一、创建这些关键事件处理链的过程（注意图上的粗体文字）；</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; COLOR: rgb(153,51,0)"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">二、消息从</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">SWT</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Canvas</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">实例传递到</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">过程（图</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中注释标签的顺序）；</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(153,51,0); FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">class GraphicalEditor</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">public void createPartControl(Composite parent) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">createGraphicalViewer(parent);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">protected void createGraphicalViewer(Composite parent) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">GraphicalViewer viewer = new ScrollingGraphicalViewer();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">viewer.createControl(parent);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">setGraphicalViewer(viewer);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">configureGraphicalViewer();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">hookGraphicalViewer();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">initializeGraphicalViewer();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">protected void setGraphicalViewer(GraphicalViewer viewer) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">getEditDomain().addViewer(viewer);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">this.graphicalViewer = viewer;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(153,51,0); FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">class EditDomain </P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">public void addViewer(EditPartViewer viewer) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">viewer.setEditDomain(this);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">if (!viewers.contains(viewer))</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun">viewers.add(viewer);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(153,51,0); FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">class GraphicalViewerImpl</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">public void setEditDomain(EditDomain domain) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">super.setEditDomain(domain);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">// Set the new event dispatcher, even if the new domain is null.<SPAN>&nbsp; </SPAN>This will dispose</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">// the old event dispatcher.</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">getLightweightSystem()</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">.setEventDispatcher(eventDispatcher = new DomainEventDispatcher(domain, this));</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">private final LightweightSystem lws = createLightweightSystem();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(153,51,0); FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">class ScrollingGraphicalViewer</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">public void setEditDomain(EditDomain domain) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">super.setEditDomain(domain);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">// Set the new event dispatcher, even if the new domain is null.<SPAN>&nbsp; </SPAN>This will dispose</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">// the old event dispatcher.</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">getLightweightSystem()</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">.setEventDispatcher(eventDispatcher = new DomainEventDispatcher(domain, this));</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(153,51,0); FONT-STYLE: italic; TEXT-DECORATION: underline"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">class </SPAN><SPAN lang=EN-US style="FONT-FAMILY: SimSun">Light</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">weightSystem</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">public void setEventDispatcher(EventDispatcher dispatcher) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">this.dispatcher = dispatcher;</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><SPAN>&nbsp; </SPAN>//</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">在此</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Shapes</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">例子中是</SPAN><SPAN lang=ZH-CN style="FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">DomainEventDispatcher</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">dispatcher.setRoot(root);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">dispatcher.setControl(canvas);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">protected void addListeners() {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">EventHandler handler = createEventHandler();</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">canvas.getAccessible().addAccessibleListener(handler);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">canvas.getAccessible().addAccessibleControlListener(handler);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">canvas.addMouseListener(handler);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">canvas.addMouseMoveListener(handler);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">canvas.addMouseTrackListener(handler);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">canvas.addKeyListener(handler);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">canvas.addTraverseListener(handler);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">canvas.addFocusListener(handler);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">canvas.addListener(SWT.MouseWheel, handler);</P>
<P lang=EN-US style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana">……</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">setEventDispatcher(getEventDispatcher());</P>
<P lang=EN-US style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(153,51,0); FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">class EventHandler </P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">implements MouseMoveListener, MouseListener, AccessibleControlListener, KeyListener,</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun">TraverseListener, FocusListener, AccessibleListener, MouseTrackListener,</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-FAMILY: SimSun">Listener</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">{</P>
<P lang=EN-US style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana">…</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">public void keyPressed(KeyEvent e) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><SPAN>&nbsp;</SPAN>//</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">在此</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Shapes</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">例子中是</SPAN><SPAN lang=ZH-CN style="FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">DomainEventDispatcher</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-STYLE: italic; TEXT-DECORATION: underline"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">getEventDispatcher().dispatchKeyPressed(e);</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">}</P>
<P lang=EN-US style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana">…</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">public void mouseDoubleClick(MouseEvent e) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">getEventDispatcher().dispatchMouseDoubleClicked(e);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">}</P>
<P lang=EN-US style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana">…</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">public void mouseMove(MouseEvent e) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">getEventDispatcher().dispatchMouseMoved(e);</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: SimSun">public void mouseUp(MouseEvent e) {</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 1in; FONT-STYLE: italic; FONT-FAMILY: SimSun; TEXT-DECORATION: underline">getEventDispatcher().dispatchMouseReleased(e);</P>
<P lang=EN-US style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana">}</P>
<P lang=EN-US style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in; FONT-FAMILY: Verdana">…</P>
<P lang=EN-US style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: Verdana">}</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">这样、在图</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">A</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Request</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">发送到</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">机制做了简要的探讨。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">学习了</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">产生</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Request</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的机制，可以帮助我们调试</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">，同时如果在大家自己的程序中需要有新的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">交互类型，也可以试着建立自己的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Tool</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">类产生新的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Request</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">，这样在自己的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">产生对应的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Command,</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">这样就可以处理实现新的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">交互类型。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">在下一篇我们探讨一下有关图</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">A</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">如何产生</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Command</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">，以及执行</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Command</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">问题。</SPAN></P><img src ="http://www.blogjava.net/xdingding/aggbug/22553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2005-12-05 13:58 <a href="http://www.blogjava.net/xdingding/archive/2005/12/05/22553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GEF源码分析（三） 模拟GEF设计思路，解剖GEF2 附图：包含GEF的Editor创建时序图 </title><link>http://www.blogjava.net/xdingding/archive/2005/12/05/22552.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Mon, 05 Dec 2005 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2005/12/05/22552.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/22552.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2005/12/05/22552.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/22552.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/22552.html</trackback:ping><description><![CDATA[<BR><BR>&nbsp; 
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun"><STRONG>包含GEF的Editor创建时序图</STRONG></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> <BR><BR></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">以</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">eclipse</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">网站上例子<A href="http://www.eclipse.org/articles/Article-GEF-diagram-editor/shape.html">A Shape Diagram Editor</A>为例</SPAN></P><BR><BR><IMG height=452 hspace=5 src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/gefc1.gif" width=590 align=bottom><BR><BR><BR><BR><BR><IMG height=325 hspace=0 src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/%E5%8C%85%E5%90%ABgef%E7%9A%84Editor%E7%9A%84createPartControl.gif" width=471><BR><BR><IMG height=253 hspace=0 src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/configGraphicalViewer.gif" width=750><BR><BR><IMG height=376 hspace=0 src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/initializeGraphicalViewer.gif" width=792>&nbsp;<img src ="http://www.blogjava.net/xdingding/aggbug/22552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2005-12-05 13:55 <a href="http://www.blogjava.net/xdingding/archive/2005/12/05/22552.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GEF源码分析（二） 模拟GEF设计思路，解剖GEF 1</title><link>http://www.blogjava.net/xdingding/archive/2005/12/05/22550.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Mon, 05 Dec 2005 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2005/12/05/22550.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/22550.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2005/12/05/22550.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/22550.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/22550.html</trackback:ping><description><![CDATA[&nbsp; 
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">学习笔记（二）</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">模拟</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">设计思路，解剖</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF 1</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">如同其他的一些</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">framework</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">一样，是一个复杂庞大（有点夸张<IMG src="http://xdingding.cnblogs.com/Emoticons/emwink.gif" align=absMiddle border=0>）的，当我们想使用驾驭它时，就必须全面的理解其整体构架及其运作过程。这需要我们的毅力和敏锐。旅途开始了</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">….</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun"><BR>&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">主要的任务是针对</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图形编辑操作，如下图。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P><IMG src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/Untitled-1.jpg" border=0> 
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">为了使</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">能够广泛的用于种类繁多</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">图形编辑领域，</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">就必须建立一个严格的易扩充</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">/</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">易组合</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">/</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">易重用的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">MVC</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">框架（当然这种分解细化功能对象的方法思想，我们可以用在其它的地方，其它领域、其他语言如</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">C#</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">上）。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P><IMG src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/Untitled-1.gif" border=0> 
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">那么如果设计</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">这个</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">严格的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">MVC</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">框架</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">(</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">对于</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Model</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">是严格的独立，它不依赖与</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">View</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">和</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller) </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">以及</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">此框架</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">如何</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">达到</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">易扩充</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">/</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">易组合</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">/</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">易重用</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的特性。下面我按照自己拙劣的思路，以麻雀之眼度</SPAN><SPAN lang=ZH-CN style="COLOR: black; FONT-FAMILY: SimSun">鸿雁之志啦<IMG src="http://xdingding.cnblogs.com/Emoticons/emembarrassed.gif" align=absMiddle border=0></SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">对于</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">MVC</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in"><SPAN lang=EN-US style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: Verdana">View</SPAN><SPAN lang=ZH-CN style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: SimSun">部分：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">理所当然要使用自家的东东</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Draw2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">。利用</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Draw2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Figuer</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">作为自己的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">View</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in"><SPAN lang=EN-US style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: Verdana">Model</SPAN><SPAN lang=ZH-CN style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: SimSun">部分：</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">往往内部包含了千差万别、不可预知的商业信息。因此、</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">框架应该尽量减少约束（在下面将详细说明约束）。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in 0in 0in 0.5in"><SPAN lang=EN-US style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: Verdana">Controller</SPAN><SPAN lang=ZH-CN style="FONT-WEIGHT: bold; COLOR: rgb(153,51,0); FONT-FAMILY: SimSun">部分：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart/Draw2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Figure/Model</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">这三个树状对象模型，在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中将建立了与其对应的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Draw2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Figure/Model</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">结点</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">建立一一关联的关系。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">这样产生的构架如下：</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P><IMG src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/Untitled-2.gif" border=0> 
<P style="FONT-SIZE: 8pt; MARGIN: 0in; COLOR: rgb(102,102,102); FONT-FAMILY: 宋体">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P><IMG src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/Untitled-2.jpg" border=0> 
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(153,51,0); FONT-FAMILY: SimSun">思考：</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(153,51,0)"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">为什么</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">要同</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">View</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">一样采用树状结构呢？</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(51,51,153)"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">当</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">以树状的形式存在，这样便于功能分解（这个道理有点像</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">在类设计中</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">复合优于继承</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">一般）</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(51,51,153)"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">这样每一结点的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller(</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">即</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EditPart) </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">仅需要处理</SPAN></P>
<UL style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1in; DIRECTION: ltr; unicode-bidi: embed" type=circle>
<LI style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; COLOR: rgb(51,51,153)"><SPAN style="FONT-FAMILY: SimSun">自身逻辑功能</SPAN> 
<LI style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; COLOR: rgb(51,51,153)"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">管理子</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller</SPAN> 
<LI style="MARGIN-TOP: 0px; FONT-SIZE: 10pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; COLOR: rgb(51,51,153)"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">必要时通知父</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Controller</SPAN></LI></UL>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; COLOR: rgb(51,51,153)"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">尤其当用户需要在图形界面编辑界面中，需要使用多种不同</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">UI</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">行为规则的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">2D</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">元素（例如不同的形状块，不同行为的连线等）组合来完成工作时（例如类似</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Visio</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">这样的界面），这种构架的优势就显露无疑。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">未完待续</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">….(</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">下面要探讨如何产生上述三个树状模型等</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">。</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">)</SPAN></P><img src ="http://www.blogjava.net/xdingding/aggbug/22550.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2005-12-05 13:53 <a href="http://www.blogjava.net/xdingding/archive/2005/12/05/22550.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GEF源码分析（一） eclipse的GEF相关项目说明</title><link>http://www.blogjava.net/xdingding/archive/2005/12/05/22549.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Mon, 05 Dec 2005 05:50:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2005/12/05/22549.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/22549.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2005/12/05/22549.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/22549.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/22549.html</trackback:ping><description><![CDATA[<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">学习笔记（一）</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> eclipse</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">相关项目说明</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">首先、感谢<A href="http://bjzhanghao.cnblogs.com/">八进制</A>的辛勤劳动和奉献。这几天开始对</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">发生兴趣，<A href="http://bjzhanghao.cnblogs.com/category/36197.html"><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">八进制的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">系列</SPAN></A></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">对我学这些的帮助很大入门很快。自己也就顺手把周末学习的东西记录下来。帮助后来学人。我会把这几天所学陆续写出希望大家支持。目前、正在为八进制例子发愁，我对</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">NodePart</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">增加了</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">ResizeEditPolicy</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">，但是不知为何鼠标拖动时有个灰色的区域在随着变化，但鼠标释放时，</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">NodeFigure</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的尺寸不发生变化，是否是因为在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">refreshVisuals</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">中固化了</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Size</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">，代码学习中</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">….</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">eclipse</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">相关项目说明。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">各项目的简介：</P>
<P style="MARGIN: 0in"><IMG height=222 hspace=5 src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/temp.jpg" width=350 align=bottom></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><EM><STRONG>Draw2D</STRONG></EM></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">：</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">建立了</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">2</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">维的图形库</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">(</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">树状图形部件</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">Figure)</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">，负责显示</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">2</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">维的图形展示。<BR></SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><BR><STRONG><EM>GEF</EM></STRONG></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">（</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: arial">Graphical Editing Framework</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">）</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">建立标准的</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">MVC</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">构架，代码利用</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">Draw2D</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">作为自己的</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">View</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">部分，主要代码实现复杂的树状</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">(</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">于</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">Model</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">分别对应</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">)<SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">的控制器。实现的框架具有很高的可复用等特性，例如：将图形部件功能分解为多个</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">EditPolicy</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">，这样使用者可以通过</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">installEditPolicy</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">接口来定制，以及扩充自己的某一功能特征。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><BR><STRONG><EM>EMF</EM></STRONG>:<SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">（</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: arial">Eclipse Modeling Framework</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">）</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">首先在一个轻量级项目以及项目初期开发，</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">Model</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">常常采用拥有</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">Property</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">的</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">Java</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">对象来简单明了表示【即</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: arial">Plain Old Java Objects (POJOs)</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">】。</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: arial">E</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">MF</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">定义了一套Ecore元模型，使得</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">Model</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">具有易于维护、易于扩充、易于数据交换等特性的</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">Model Framwork</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">。因此、在实际中大型的项目中往往会采用</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">Draw2D</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">＋</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">＋</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">EMF</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">的方式来实现整体的</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">MVC</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">模式。例如：</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">ROSE</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">的最新版本</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">IBM.Rational.Software.Architect就是采用了这种构架。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><BR><STRONG><EM>GMF</EM></STRONG></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">（</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: arial">Graphical Modeling Framework </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">）</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">使用了</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">和</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">EMF</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">，建立了两个之间的桥梁框架，同时实现了一些领域上的典范应用，如</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">UML</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">图，甘特图，脑图等。（项目正在进行中这些功能还未完备。可以用来参考以实现自己的一个标准的</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">GEF</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">＋</SPAN><SPAN lang=EN-US style="COLOR: navy; FONT-FAMILY: Verdana">EMF</SPAN><SPAN lang=ZH-CN style="COLOR: navy; FONT-FAMILY: SimSun">的应用）。</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">各项目依赖关系：</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="MARGIN: 0in"><IMG style="WIDTH: 218px; HEIGHT: 173px" height=159 src="http://xdingding.cnblogs.com/images/cnblogs_com/xdingding/temp2.JPG" width=218 border=0></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun">如上图：使用者可以有以下几种用法：</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">EMF: Model</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">管理层</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Draw2D: </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">二维图形展现</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Draw2D </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">＋</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> GEF: </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">二维图形的简单编辑模块</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Draw2D </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">＋</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> GEF </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">＋</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> EMF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">：</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">二维图形的编辑模块</SPAN></P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in"><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Draw2D </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">＋</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> GEF </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">＋</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> EMF </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">＋</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> GMF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">：基于</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">GMF</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">提供的图形编辑功能之上扩展<BR></SPAN></P><img src ="http://www.blogjava.net/xdingding/aggbug/22549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2005-12-05 13:50 <a href="http://www.blogjava.net/xdingding/archive/2005/12/05/22549.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]项目管理杂谈之打造软件团队</title><link>http://www.blogjava.net/xdingding/archive/2005/11/21/22559.html</link><dc:creator>般若菩提</dc:creator><author>般若菩提</author><pubDate>Mon, 21 Nov 2005 03:45:00 GMT</pubDate><guid>http://www.blogjava.net/xdingding/archive/2005/11/21/22559.html</guid><wfw:comment>http://www.blogjava.net/xdingding/comments/22559.html</wfw:comment><comments>http://www.blogjava.net/xdingding/archive/2005/11/21/22559.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xdingding/comments/commentRss/22559.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xdingding/services/trackbacks/22559.html</trackback:ping><description><![CDATA[<SPAN style="FONT-SIZE: 8pt">&nbsp;上个月写的PPT。放上来和大家讨论 ：）再挣点分</SPAN> 
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">打造软件团队</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">我们还是一个团队吗？</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">共同认可的明确的目标</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">合理的分工与协作</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">积极的参与</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">互相信任</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">良好的信息沟通</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">高度的凝聚力与民主气氛</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">学习是一种经常化的活动</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">项目团队的作用</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">（1）更有效地实现目标</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">（2）可满足成员心理需要</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">（3）使个人得到更快的进步</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">（4）较强的凝聚力</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">（5）提高决策的质量</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">打造软件团队</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">我们是怎样的团队？</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">不同条件下如何选择适应的团队文化？</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">球队团队文化更适于软件开发团队</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">团队分工交流中我们有那些方式与之不同？</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">打造软件团队</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">项目管理仅仅是项目经理的事情吗？为什么？</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">软件团队中项目经理应该如同带兵打仗军官班长？还是教练？</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">为什么？军官班长和教练在团队运作中有何不同之处？</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">何时需要特种分队的运作方式？</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">打造软件团队</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">项目管理－－驾驶、管理轮船</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">项目经理－－组团、掌舵、管家婆</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">打造软件团队</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">共同认知</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">合作才能成功</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">项目组成员形成团队不仅是项目成功的保证而且也能满足成员的需求</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">打造软件团队</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">激励团队</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">让大家主动投入</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">打造软件团队</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">从项目开始的第一天</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">从项目计划的制定就建立一个共同目标和激励&#8220;团队&#8221;活动</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">打造软件团队</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">认清自我、审视团队</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">量力而行</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">打造软件团队</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">合适的人在合适的位置为项目的基础</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">注意人员比例</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">因才用人善驱驰</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">打造软件团队</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">纵观全局、把握重点</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">找出项目中关键点和关键风险，形成简单有效解决方法</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">项目负责人处于夹缝位置</P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">对未来的目标有坚强的意志</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">建立平等气氛团队、形成团队精神</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">要权威，不要霸权</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">去除位置在上心理</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">任劳任怨、不强功名</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">为大家服务、打造轻松有效开发环境</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">认真负责，勇于承认错误，勇于承担责任。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">对上级尽量承担责任，内部处理具体问题</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">协调大家有效沟通。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">建立透明的监督检查机制。如特色监督小组、FDD进度板等。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">从小处建立团队规则。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">菩萨慈眉＋金刚怒目</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">合理公平分配任务</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">培训引导大家</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">合理安排任务</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">有效的时间管理</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">多多鼓励表扬</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">一切表扬在先，公证有效有限的批评。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">关怀大家个人生活，了解团员情感状态。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">不要加班。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">项目开发过程中，不断监视调整风险列表；</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">善于观察、保持警觉提前发现问题；</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">学会和各种官僚主义等打交道</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">关键时勇于对此质疑、有力抵制</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">勇于面对困难</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">关键时要有壮士断腕式果断，必要时砍去一些十分诱人但不是核心必须的功能点。</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">不能过分追求完美</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">开始和中间阶段要和大家轻松一下，鼓舞士气。（尽管可能有种种滞后压力和不良现状）</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">软件领域更是不断更新成长、没有长期避风港.</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">充满好奇、勇于探索</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">和大家不断共同自我学习培训、提高，相互学习</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">对于新的开发思想和方式，要在小范围实践</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&nbsp;</P>
<P style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">祝愿大家，通过长期共同努力。打造出一个有共同的认知，熟悉内部工作流程、沟通方式、思考讨论模式等高素质高效的团队</P><img src ="http://xdingding.cnblogs.com/aggbug/281178.html" width = "1" height = "1" /><br><br><div align=right>般若菩提 2005-11-21 11:45 </div><br>文章来源:<a href='http://xdingding.cnblogs.com/archive/2005/11/21/281178.html'>http://xdingding.cnblogs.com/archive/2005/11/21/281178.html</a><img src ="http://www.blogjava.net/xdingding/aggbug/22559.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xdingding/" target="_blank">般若菩提</a> 2005-11-21 11:45 <a href="http://www.blogjava.net/xdingding/archive/2005/11/21/22559.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>