﻿<?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-Get busy living or get busy dying!-文章分类-ECLIPSE</title><link>http://www.blogjava.net/hackest/category/22120.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 01 Jul 2007 13:19:57 GMT</lastBuildDate><pubDate>Sun, 01 Jul 2007 13:19:57 GMT</pubDate><ttl>60</ttl><item><title>ECLIPSE 3.3 发布啦！有哪些新特性呢？</title><link>http://www.blogjava.net/hackest/articles/127257.html</link><dc:creator>一条辉</dc:creator><author>一条辉</author><pubDate>Sat, 30 Jun 2007 09:26:00 GMT</pubDate><guid>http://www.blogjava.net/hackest/articles/127257.html</guid><wfw:comment>http://www.blogjava.net/hackest/comments/127257.html</wfw:comment><comments>http://www.blogjava.net/hackest/articles/127257.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hackest/comments/commentRss/127257.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hackest/services/trackbacks/127257.html</trackback:ping><description><![CDATA[新特性之一：Viewer和Editor的最大化最小化效果变的很Cool；<br>&nbsp;&nbsp;&nbsp; 这个新特性，可能对开发人员来说并没有什么稀奇的，有这个和没有这个的区别不大。但是对于RCP的开发，这个是一个非常吸引客户眼球的地方，他们会瞪大眼睛看，然后自己把玩，最后要求为自己开发软件的其他软件都加入此功能。o(&#8745;_&#8745;)o...哈哈~~够他们忙活的了！<br>&nbsp;&nbsp;&nbsp; 新特性之二：当Editor最大化以后，其他的Viewer将以新的列表方式继续出现在界面上；<br>&nbsp;&nbsp;&nbsp; 这个功能，不好解释，看看抓图：<br><img alt="" src="http://www.blogjava.net/images/blogjava_net/leeguannan/eclipse33a.jpg" border=0><img alt="" src="http://www.blogjava.net/images/blogjava_net/leeguannan/eclipse33b.jpg" border=0><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很Cool吧，客户一定喜欢死了~<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新特性之三：对Forms加入了错误信息验证；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以前的版本中，Form使没有错误验证的，现在则加入了Forms的验证，看来Form的使用可以更快的深入人心了~<br><img alt="" src="http://www.blogjava.net/images/blogjava_net/leeguannan/forms-enhancements.png" border=0><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新特性之四：增强Porperties View的现实效果；<br><img alt="" src="http://www.blogjava.net/images/blogjava_net/leeguannan/tabbed-properties-view.png" border=0><br>&nbsp;&nbsp;&nbsp;&nbsp; 虽然我不喜欢在项目中使用PorpertiesView（配置起来太麻烦，不适合普通开发人员使用），但是还是感谢Eclipse的开发团队此次对PorpertiesView的增强。<br>&nbsp;&nbsp;&nbsp;&nbsp; 新特性之五：可控制的启动画面；<br>&nbsp;&nbsp;&nbsp;&nbsp; 在Eclipse3.3中提供了新的扩展点<font face="Courier New">org.eclipse.osgi.service.runnable.StartupMonitor，用于在启动时使用SWT的代码。<br>&nbsp;&nbsp;新特性之六：高级的Tooltips；<br>&nbsp;&nbsp;提供了新的扩展点：org.eclipse.jface.window.Tooltip用于创建更为高级的Tooltips；<br><img alt="" src="http://www.blogjava.net/images/blogjava_net/leeguannan/tooltip.png" border=0><br>&nbsp;&nbsp;新特性之七：SWT增加时间日期选择器；<br>&nbsp;&nbsp;:-)，这个可能是大家早都知道的秘密了~真想不通，时间和日期选择器早都应该提供了，为什么到现在才拿出来！<br><img alt="" src="http://www.blogjava.net/images/blogjava_net/leeguannan/datetime-time.png" border=0></font>
<p><img alt="" src="http://www.blogjava.net/images/blogjava_net/leeguannan/datetime-calendar.png" border=0><br>&nbsp;&nbsp;&nbsp; 新特性之八：新增加2种启动界面；<br>Interactive: A simulated log-in session&nbsp; 使用一个程序登陆界面启动<br>Browser: An embedded HTML browser&nbsp; 使用一个Html作为登陆界面<br>Extensible: A dynamic set of image contributions 使用一张图片作为启动界面<br>&nbsp;&nbsp;&nbsp; 在新的PDE中可以对一个product选择使用那一种启动界面启动，这个新功能的增加是非常有意义的，它使得RCP应用更加的人性化，不用再在系统启动中弹出对话框了，让客户更加放心的选择基于RCP的产品了~<br><br>评价：总体改动不是很大，就改了一些小BUG。不过对RCP及插件开发有一些新东东，比如SWT的时间控件，PROPERTIES及VIEWER的美化。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 确实，一个扩展性如此强大的IDE，只需要让用户自己定制化更方便更美观就行，剩下的交给用户吧，需要什么自己做：）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 希望ECLIIPSE 统一天下！嘿嘿！<br></p>
<img src ="http://www.blogjava.net/hackest/aggbug/127257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hackest/" target="_blank">一条辉</a> 2007-06-30 17:26 <a href="http://www.blogjava.net/hackest/articles/127257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECLIPSE的扩展</title><link>http://www.blogjava.net/hackest/articles/126676.html</link><dc:creator>一条辉</dc:creator><author>一条辉</author><pubDate>Wed, 27 Jun 2007 15:04:00 GMT</pubDate><guid>http://www.blogjava.net/hackest/articles/126676.html</guid><wfw:comment>http://www.blogjava.net/hackest/comments/126676.html</wfw:comment><comments>http://www.blogjava.net/hackest/articles/126676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hackest/comments/commentRss/126676.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hackest/services/trackbacks/126676.html</trackback:ping><description><![CDATA[ECLIPSE的扩展主要体现在EXTENTION-POINT和EXTENTION上。<br>比如扩展ECLIPSE的视图:<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">extension&nbsp;</span><span style="COLOR: #ff0000">point</span><span style="COLOR: #0000ff">="org.eclipse.ui.view"</span><span style="COLOR: #0000ff">/&gt;</span></div>
&nbsp;&nbsp;&nbsp;&nbsp; 扩展ECLIPSE的编辑器：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">extension&nbsp;</span><span style="COLOR: #ff0000">point</span><span style="COLOR: #0000ff">="org.eclipse.ui.editors"</span><span style="COLOR: #0000ff">&gt;</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;扩展ECLIPSE的透视图：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">extension&nbsp;</span><span style="COLOR: #ff0000">point</span><span style="COLOR: #0000ff">="org.eclipse.ui.perspective"</span><span style="COLOR: #0000ff">&gt;</span></div>
而这些扩展都是建立在已经有：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">extension-point</span><span style="COLOR: #0000ff">="org.eclipse.ui.*"</span><span style="COLOR: #0000ff">&gt;</span></div>
的基础上的。ECLIPSE会在加载extension-point时查找其相应的插件，当然要对应ID，从而实现扩展。<br>当然，也可以自己编写扩展点：<br>下面，我们要在net.softapp.worklist插件中定义workList扩展点。<br>&nbsp;1. 扩展点的定义文件按照Eclipse的存放方式，一般存放在schema目录下，我们把文件命名为<span style="COLOR: #ff0000">worklist.exsd</span>。内容如下，此内容由PDE生成：<br>&lt;?xml version='1.0' encoding='UTF-8'?&gt;<br>&lt;!-- Schema file written by PDE --&gt;<br>&lt;schema targetNamespace="mtn.esip.worklist"&gt;<br>&lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta.schema plugin="net.softapp.worklist" id="workList" name="workList"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--通过这个定义，我们可以看出，定义的扩展点的id是 net.softapp.worklist.workList,以后引用时要注意，同时注意大小写--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Enter description of this extension point.]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp; &lt;/annotation&gt;
<p>&nbsp;&nbsp; &lt;element name="extension"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;complexType&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;choice minOccurs="0" maxOccurs="unbounded"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element ref="category" minOccurs="0" maxOccurs="1"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element ref="worklist" minOccurs="0" maxOccurs="1"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/choice&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="point" type="string" use="required"&gt;&lt;!--定义point--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="id" type="string"&gt;&lt;!--定义id--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="name" type="string"&gt;&lt;!--定义name--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/complexType&gt;<br>&nbsp;&nbsp; &lt;/element&gt;<br>&nbsp;<br>&nbsp; &lt;!--定义category--&gt;<br>&nbsp;&nbsp; &lt;element name="category"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;complexType&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="name" type="string"&gt;&lt;!--定义category/name--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="id" type="string"&gt;&lt;!--定义category/id。引用category时，必须指出应用的id，而name给出了一个可供显示的直观的名字--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="parentCategory" type="string"&gt;&lt;!--定义父category，也就是说我们的category可以嵌套形成树状结构--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/complexType&gt;<br>&nbsp;&nbsp; &lt;/element&gt;
<p>&nbsp;&nbsp; &lt;!--定义worklist，注意大小写--&gt;//<span style="COLOR: #ff0000">必须的</span><br>&nbsp;&nbsp; &lt;element name="worklist"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;complexType&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="name" type="string"&gt;&lt;!--定义worklist/name，可供显示的直观的名字--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="icon" type="string"&gt;&lt;!--定义worklist/icon，可供显示的直观的图标--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="category" type="string"&gt;!--定义worklist/category，存放的category位置。如果引用嵌套形式的category,则采用 parent_id/child_id的形式 --&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="class" type="string"&gt;&lt;!--定义worklist/class，实现功能的类名称--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta.attribute kind="java"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;attribute name="id" type="string" use="required"&gt;&lt;!--定义worklist/id，唯一标志--&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/attribute&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/complexType&gt;<br>&nbsp;&nbsp; &lt;/element&gt;<br><br>&nbsp;&nbsp; &lt;!--<span style="COLOR: #ff0000">以下内容为PDE自动生成，与我们的编程无关</span>--&gt;<br>&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta.section type="since"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Enter the first release in which this extension point appears.]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp; &lt;/annotation&gt;
<p>&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta.section type="examples"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Enter extension point usage example here.]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp; &lt;/annotation&gt;
<p>&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta.section type="apiInfo"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Enter API information here.]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp; &lt;/annotation&gt;
<p>&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta.section type="implementation"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Enter information about supplied implementation of this extension point.]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp; &lt;/annotation&gt;
<p>&nbsp;&nbsp; &lt;annotation&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;meta.section type="copyright"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/appInfo&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;documentation&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/documentation&gt;<br>&nbsp;&nbsp; &lt;/annotation&gt;
<p>&lt;/schema&gt;<br>&nbsp; 这样我们就定义好了扩展的属性。<br>&nbsp; 然后在plugin.xml加入：<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;extension-point id="workList" name="workList" schema="<span style="COLOR: #ff0000">schema/workList.exsd</span>"/&gt;<br>&nbsp; 就定义好了！<br>2. 实现扩展<br>&nbsp; 定义完扩展之后，接下来要编写解析此扩展的相关代码。可喜的是，Eclipse为我们提供了大量的API可以调用，省下了若干代码的编写。另外我们还可以借鉴Eclipse实现的其他代码，通过模仿来编写我们自己的解析代码。本例参考了View的解析部分。同View，我们定义了WorkListDescriptor,WorkListRegistry,WorkListRegistryReader.其中WorkListDescriptor完成对上述定义的解析，WorkListRegistry存放了其他插件对workList扩展的相关信息，WorkListRegistryReader则从WorkListRegistry读取信息供我们使用。<br>&nbsp; 此处代码从略，具体请参考View实现部分的ViewDescriptor,ViewRegistry,ViewRegistryReader相关代码。<br>3. 编写界面部分<br>&nbsp;&nbsp; 在类里面编写代码就行。<br>可见，自己编写扩展点有点复杂，好要等进一步研究：）<br><br></p>
<img src ="http://www.blogjava.net/hackest/aggbug/126676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hackest/" target="_blank">一条辉</a> 2007-06-27 23:04 <a href="http://www.blogjava.net/hackest/articles/126676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>