﻿<?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-athenaer-文章分类-ETL</title><link>http://www.blogjava.net/athenaer/category/46350.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 06 Oct 2010 12:53:37 GMT</lastBuildDate><pubDate>Wed, 06 Oct 2010 12:53:37 GMT</pubDate><ttl>60</ttl><item><title>GEF中的property view的使用</title><link>http://www.blogjava.net/athenaer/articles/332327.html</link><dc:creator>月貘苏</dc:creator><author>月貘苏</author><pubDate>Fri, 17 Sep 2010 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/athenaer/articles/332327.html</guid><wfw:comment>http://www.blogjava.net/athenaer/comments/332327.html</wfw:comment><comments>http://www.blogjava.net/athenaer/articles/332327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athenaer/comments/commentRss/332327.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athenaer/services/trackbacks/332327.html</trackback:ping><description><![CDATA[<div class="postText"><span style="font-family: 宋体">GEF作为一个图形框架，对于其中图形元素的属性的设定是非常重要的，这是因为每一个图形元素的背后都是一个模型，而这些模型可以包含很多业务数据，如果我们最终选定GEF作为我们应用的解决方案的话，我们可以利用property view来实现对这些业务数据属性的设定；</span> 这就是我们这里即将讨论的问题。<br />
Eclipse中property view一共有两种，普通的property view，也就是key/value类型的property view和tabbed property view，后者将viewer分成了若干个tab page；利用tab page将不同的属性分组；从我使用的经验来看，我比较倾向于前者，因为前者可以解决绝大部分的问题，即便是我们希望编辑一个非常复杂的属性，也可以自定义属性编辑器来完成。比如我们常用的SWT Designer就是使用了第一种方式，当然我们不能否认后一种方式由于可以在property viewer中自定义布局及控件，界面比较炫，但是由于需要三个扩展点的配合，操作起来还是比较麻烦的；不过这里我不是要讨论两者的优劣，而是要讨论如何使用这两个东西，因此还是书归正传吧。 <br />
org.eclipse.ui.views.properties.tabbed，这是绝不能少的。只有这样，属性页面才能显示出来；<br />
首先要想使用eclipse的property view，必须在相应的RCP程序或者Plugin程序中配置Dependencies，如果是第一种，需要增加org.eclipse.ui.views，如果是后一种，需要增加<br />
<br />
其次，如果应用为RCP，那么可以在视图文件中以&#8220;org.eclipse.ui.views.PropertySheet&#8221;为id值，增加一个view，这个id就是Eclipse默认的属性页id；如果你记不住，那么用IPageLayout.ID_PROP_SHEET好了；当然这一步并不是必须的，你可以在自己的WorkbenchWindowAdvisor中配置setShowFastViewBars(true)；这样程序运行时就可以通过fast view bar来动态打开这个view了，怎么做随你；我的建议是两者都要，以防用户将属性页关闭了，无法打开；（题外话是可以建一个Command/Action来打开属性页，但是我觉得没有必要）；<br />
<br />
经过以上两步，我们的准备工作就完成了，下面就是如何在我们的Editor点选了某一个图形元素时，属性页能够被通知。事实上这里说的图形元素是不确切的，而应该是这个图形元素对应的模型元素；让我们把眼光放得更宽广一点，事实上并不仅仅局限于GEF，任何实现了IPropertySource接口的模型元素都可以被属性页显示出来；<br />
模型元素实现IPropertySource后需要实现以下方法，具体含义就不说了：<br />
&#183;public Object getEditableValue();<br />
&#183;public IPropertyDescriptor[] getPropertyDescriptors();<br />
&#183;public Object getPropertyValue(Object id);<br />
&#183;public boolean isPropertySet(Object id);<br />
&#183;public void resetPropertyValue(Object id);<br />
&#183;public void setPropertyValue(Object id, Object value);<br />
其中最最重要的是第1、2和6个方法；尤其是第二个方法尤为重要。在定义PropertyDescriptor时，Eclipse已经提供了两个主要的属性描述类TextPropertyDescriptor和ComboBoxPropertyDescriptor，分别对应文本框和组合下拉框，但是如果是比较复杂的属性，例如像字体、颜色这样的属性，相应的属性描述类就要自己定义了，这时需要继承PropertyDescriptor类定义自己的属性描述类，而在定义这个类的过程中，必须指定相应的CellEditor，也就是属性编辑器类，我的建议是对于非常复杂的属性，比如属性中包含了很多不同类型的子属性，这些子属性的个数会发生变化等等，那么可以定义一个DialogCellEditor的子类，以对话框的形式显示所有的子属性，并在对话框中对有子属性进行显示、操作。也就是说：<br />
MyPropertyDescriptor（继承PropertyDescriptor）---&gt;MyCellEditor（继承CellEditor）---&gt;MyDialog（继承Dialog）---&gt;子属性显示、操作；<br />
<br />
经过这些操作对于第一种property view已经足够了，在GEF应用中当你选择了某一个图形时，其属性就能显示出来了。但是对于后者来说，这还远远不够，因为它比较吊！<br />
<br />
对于tabbed property view来说，以上的步骤是不能缺的，除此而外还需要配置org.eclipse.ui.views.properties.tabbed.propertyContributor、org.eclipse.ui.views.properties.tabbed.propertyTabs和org.eclipse.ui.views.properties.tabbed.propertySections三个扩展点；第一个扩展点的最主要作用是通知属性页究竟是workbench part为属性页提供属性，说白了（我的理解，就是所有我们想最终选择的那些元素放在了哪个workbench part上），因此相应的contributorId往往是editor的id；这里需要超级注意的是对于GEF应用来说，必须要配置<font color="#ff0000">typeMapper</font>，也就是定义实现ITypeMapper的类，如下：<br />
<span style="color: #ff0000">public Class mapType(Object object) {<br />
&nbsp;&nbsp;Class type = object.getClass();<br />
&nbsp;&nbsp;if(object instanceof EditPart) {<br />
&nbsp;&nbsp;&nbsp;type = ((EditPart)object).getModel().getClass();<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;return type;<br />
&nbsp;}<br />
没有这一步，毛也显示不出来；其实我们可以通过以上代码看出，这个转换就是将控制器转换为模型；此外相应的editor必须继承<code>ITabbedPropertySheetPageContributor接口，提供getContributorId()方法，也就是返回editor的ID；而且还要重载getAdapter方法提供如下实现：<br />
</code></span>public Object getAdapter(Class adapter) {<br />
&nbsp;&nbsp;if(adapter == IPropertySheetPage.class) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;return new TabbedPropertySheetPage(this);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return super.getAdapter(adapter);<br />
}<br />
<br />
当完成了以上所有步骤之后，分页的属性页就显示出来了。具体的Section的定义就不说了，其实不过是定义public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage)这个函数罢了；它和其他的createControl没什么区别，只是我们可以利用getWidgetFactory()来构造界面元素，其他的没有什么新鲜的；<br />
<br />
以上就是属性页在GEF中的应用。 </div>
 <img src ="http://www.blogjava.net/athenaer/aggbug/332327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athenaer/" target="_blank">月貘苏</a> 2010-09-17 17:24 <a href="http://www.blogjava.net/athenaer/articles/332327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dengues入门研究之一：GEF建立一个Editer插件</title><link>http://www.blogjava.net/athenaer/articles/332326.html</link><dc:creator>月貘苏</dc:creator><author>月貘苏</author><pubDate>Fri, 17 Sep 2010 09:23:00 GMT</pubDate><guid>http://www.blogjava.net/athenaer/articles/332326.html</guid><wfw:comment>http://www.blogjava.net/athenaer/comments/332326.html</wfw:comment><comments>http://www.blogjava.net/athenaer/articles/332326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athenaer/comments/commentRss/332326.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athenaer/services/trackbacks/332326.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="font-size: 12px; line-height: 18px; font-family: Arial, sans-serif, Helvetica, Tahoma; text-align: left">当用户希望通过属性视图编辑模型属性时，模型要实现IPropertySource接口，该接口的方法解释如下：<br />
&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><br />
package org.eclipse.ui.views.properties;<br />
<br />
public interface IPropertySource {<br />
<br />
&nbsp;&nbsp;&nbsp; public Object getEditableValue();//得到在属性页中能编辑的值，可以返回this表示当前模型<br />
<br />
&nbsp;&nbsp;&nbsp; public IPropertyDescriptor[] getPropertyDescriptors();//得到IPropertyDescriptor类型的数组，其中每一项为属性页中能编辑的项<br />
&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span><br />
&nbsp;&nbsp;&nbsp; public Object getPropertyValue(Object id);//通过id值得到某个属性，在添加每一项IPropertyDescriptor时都会指定id值<br />
<br />
&nbsp;&nbsp;&nbsp; public boolean isPropertySet(Object id);//表示特定属性id值是否改变<br />
<br />
&nbsp;&nbsp;&nbsp; public void resetPropertyValue(Object id);//通过id重置属性<br />
<br />
&nbsp;&nbsp;&nbsp; public void setPropertyValue(Object id, Object value);//通过id和值设置某一项属性的值<br />
}<br />
&nbsp;&nbsp;&nbsp; 如果模型和其它模型有关系（在视图上为连线），模型要维护这些关系，并适当的持久化，当模型的属性修改后，模型要触发相应的事件通知监听器。</span></span>
 <img src ="http://www.blogjava.net/athenaer/aggbug/332326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athenaer/" target="_blank">月貘苏</a> 2010-09-17 17:23 <a href="http://www.blogjava.net/athenaer/articles/332326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高效开发人员的五个特征</title><link>http://www.blogjava.net/athenaer/articles/332279.html</link><dc:creator>月貘苏</dc:creator><author>月貘苏</author><pubDate>Fri, 17 Sep 2010 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/athenaer/articles/332279.html</guid><wfw:comment>http://www.blogjava.net/athenaer/comments/332279.html</wfw:comment><comments>http://www.blogjava.net/athenaer/articles/332279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athenaer/comments/commentRss/332279.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athenaer/services/trackbacks/332279.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="font-size: 12px; line-height: 18px; font-family: Arial, sans-serif, Helvetica, Tahoma; text-align: left">
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"></p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">这篇文章，是从我的《高效开发人员的五个特征》一文中抽出的一个观点。从我自身的事业和习惯中，我考虑了很多方式怎么样才能有效地学习。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><span style="font-size: large"><strong style="font-weight: bold">1. 要看书</strong></span>。在成千上万的编程图书中，可能很大一部分根本毫无用处。但是仍然有很多图书对你的(编程)能力有很大的提升。我一直坚持，相比在网络上查找很多有用信息，在同类图书中查找要来得更容易更快捷。阅读技术图书可心更好地抓住核心内容。对于理论，架构和设计等方面来说，图书也一样很有帮助。只不过要找到高质量的、权威的信息，就不如网络上可供查找的范围广。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><span style="font-size: large"><strong style="font-weight: bold">2. 读代码</strong></span>。这也是我很喜欢的一种方式。如果我并没有几年的专业编程工作经验，在学习之初我并不会去读很多复杂的代码。如果我要是早些开始学习，我将是一个比现在更好的程序员。但是，开始时我会从一些开源项目里，去学习那些源代码(当然，这些代码不能与我的工作有关，也不是我自己写的)。要从自己会使用到的，或者自己感兴趣的程序开始这项工作。我是从 Paint.net 这个网站里开始学习的，而且已经积累了很多关于 .NET 的编程技术。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">读别人的代码可以为你提供更多不同的工作思路，这比你完全凭自己思考得到的工作方式要多。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><span style="font-size: large"><strong style="font-weight: bold">3. 写代码</strong></span>。谨记，要写大量的代码。从根本上来讲，最好的学习方法就是实践。如果不写代码，你根本不能把(某种语言中)内在的东西学习透彻。学习之初，可以从一些技术指南和图书中照搬一些尽量简单的程序。当然，这种照搬是要自己完全手工输入，而不是复制和粘贴，这两种之间的效果差别是很大的。这种方法的主旨就在于，使知识内在化，并思考其用法，而不是盲目照抄。学习过程中，要时常查找新的 API 调用方法，这其实是简单的事情。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">最重要的是，要写一个你自己的程序，不管它是一个简单的游戏，或者是一个参与开源项目的程序，还是一个公为你自己使用的简单插件。用不同的方式来写程序，尽量尝试使用新的技术，新的技巧，新的设计方式。一定要让现在的项目比以往的项目更好。想要成一个优秀的开发者，这一点是核心。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><span style="font-size: large"><strong style="font-weight: bold">4. 与其他开发者交流</strong></span>。像 Apple，微软，Google 等大公司一样的新闻描述的一样，(与其他开发者交流)可以让你解决一些复杂的问题。虽然这并不能让你感觉到自己已经成一个团队或是社区的成员，但是这种方法可以让你接触到更多不同的想法。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">不同类型的项目要求不同的设计方法，代码技术，开发流程和设计思想。如果你工作在一个小团队里，你不必与太多的人接触，只要在用户群会议中找到一些人(来讨论)即可。如果这样还不行的话，参与到在线论坛中与其他人讨论(这时你需要更努力地寻找高质量的讨论内容)。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><span style="font-size: large"><strong style="font-weight: bold">5. 教会别人</strong></span>。相对于仅仅读代码之类的工作，教其他人学习可以让你更深入地学习某个技术，这种方法有着非凡的效果。教会别人某个技术，同样也会让你更专注于这种技术，并且可以比别人更深层次地理解它。同样你也会面对一些问题。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&#8220;如果你不能向一个六岁的儿童解析清楚一个概念，那么其实是你并没有完全理解它。&#8221;Albert Einstein说。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">教学场景可以是无穷无尽的：与工作搭档一对一交流，休息碰面，非正式周会，学习茶会，教室，讨论发表会，等等。每周在相同理念开发者之间举办一次30分钟的非正式会议怎么样？每周，让几个人来就他们想要更深入了解话题，向大家传授这些技术知识，并且展开讨论。如果你知道你将要向团队成员们传授正学学习的知识，你是不是更想要了解这项技术的每个细节呢？</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><span style="font-size: large"><strong style="font-weight: bold">6. 收听网络电台</strong></span>。如果你有空闲的时间，可以订阅网络电台节目。我现在最喜欢的编程节目就是 .Net Rocks。这个节目还会做一些视频节目，叫做 dnrTV 。这样会让你即时捕捉到最新最好的技术。一个人是不能学习到所有知识的，而网络电台刚是一个学习了解广泛知识的途径。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><span style="font-size: large"><strong style="font-weight: bold">7. 阅读博客</strong></span>。博客远远比阅读者要多，但是其中有一些却是极其优秀的。我这里不并不是要推荐博客，因为网络上已经有了足够多的博客。这是与真正在开发你所喜欢和使用的软件的开者联系的好方法。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><span style="font-size: large"><strong style="font-weight: bold">8. 学习新的语言</strong></span>。即使你已经在 C(++,#) / JAVA 等语言上有很好的造诣，仍然有很多其他可以解决问题的编程语言。学习新的语言，是对你已有思维方式的挑战。这不仅仅是另一种语言，更是对思维的重新架构。的确，所有的语言最后都会被编译成汇编程序，但是这并不意味着高级语言毫无价值。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><span style="font-size: large"><strong style="font-weight: bold">9. 学习不正确的方式</strong></span>。除了要学习应该怎么做，还要学习不应该怎么做。经常阅读 Dailywtf.com ，学习你并不知道的经验与教训。学习适当的面向对象设计方式，代码写作方式，和必须要写的代码等，是很好的方式，但是如果不细心的话也容易养成不良习惯。学习认识不正确的思路是负责项目开发至关重要的一环。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">维基百科对很多觉的不正确方式有十分透彻的分类。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><span style="font-size: large"><strong style="font-weight: bold">10. 要谦虚</strong></span>。</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">学习，意味着：</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">&nbsp;</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">用更好的知识代替不完美的知识</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">增长你所不知道的知识</p>
<p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">只有承认自己有所不足，才能有学习的动力。归根到底，就是谦虚，不对吗？如果你开始认为你已经掌握了所有需要的知识，那么你就危险了。真正的学习是如饥似渴地追逐知识并使其内在化，这需要很大的努力。我们都知道这一点，但是要必须时常不断地提醒自己</p>
</span></span>
 <img src ="http://www.blogjava.net/athenaer/aggbug/332279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athenaer/" target="_blank">月貘苏</a> 2010-09-17 11:16 <a href="http://www.blogjava.net/athenaer/articles/332279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse扩展点一</title><link>http://www.blogjava.net/athenaer/articles/332147.html</link><dc:creator>月貘苏</dc:creator><author>月貘苏</author><pubDate>Thu, 16 Sep 2010 02:48:00 GMT</pubDate><guid>http://www.blogjava.net/athenaer/articles/332147.html</guid><wfw:comment>http://www.blogjava.net/athenaer/comments/332147.html</wfw:comment><comments>http://www.blogjava.net/athenaer/articles/332147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/athenaer/comments/commentRss/332147.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/athenaer/services/trackbacks/332147.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="font-size: 12px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif">
<div class="post" style="border-right: rgb(204,204,204) 2px solid; padding-right: 0px; border-top: rgb(204,204,204) 1px solid; padding-left: 0px; margin-bottom: 28px; padding-bottom: 0px; border-left: rgb(204,204,204) 1px solid; padding-top: 0px; border-bottom: rgb(204,204,204) 2px solid">
<div class="postbody" style="padding-right: 4px; padding-left: 4px; font-size: 13px; margin-bottom: 14px; padding-bottom: 4px; padding-top: 4px">扩展点：<br />
org.eclipse.ui.ide.resourceFilters<br />
org.eclipse.jdt.ui.javaElementFilters<br />
<br />
org.eclipse.ui.ide.resourceFilters扩展点可以给<span style="background-color: #ffff00">Naivgator视图</span>的过滤器列表增加过滤项，要使用该扩展点需要在插件依赖项中追加<br />
对插件项目org.eclipse.ui.ide的依赖。<br />
<br />
扩展清单如下：<br />
<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 951px; word-break: break-all; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">extension<br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">point</span><span style="color: rgb(0,0,255)">="org.eclipse.ui.ide.resourceFilters"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">filter<br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">pattern</span><span style="color: rgb(0,0,255)">="*.classpath"</span><span style="color: rgb(255,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selected</span><span style="color: rgb(0,0,255)">="true"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">filter</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">extension</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span></div>
上述代码的作用就是给Navigator视图，增加过滤器，过滤后缀名为classpath的文件，该过滤项默认为选中状态。<br />
<br />
org.eclipse.jdt.ui.javaElementFilters扩展点可以给<span style="background-color: #ffff00">Java透视图中相应视图</span>的过滤器列表增加过滤项，要使用该扩展点需要在插件依赖项中追加<br />
对插件项目org.eclipse.jdt.ui的依赖。<br />
<br />
扩展清单如下：<br />
<br />
<div style="border-right: rgb(204,204,204) 1px solid; padding-right: 5px; border-top: rgb(204,204,204) 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: rgb(204,204,204) 1px solid; width: 951px; word-break: break-all; padding-top: 4px; border-bottom: rgb(204,204,204) 1px solid; background-color: rgb(238,238,238)"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">extension<br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">point</span><span style="color: rgb(0,0,255)">="org.eclipse.jdt.ui.javaElementFilters"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;</span><span style="color: rgb(128,0,0)">filter<br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(255,0,0)">description</span><span style="color: rgb(0,0,255)">="TestFilter&nbsp;Des"</span><span style="color: rgb(255,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enabled</span><span style="color: rgb(0,0,255)">="true"</span><span style="color: rgb(255,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id</span><span style="color: rgb(0,0,255)">="aaaa"</span><span style="color: rgb(255,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name</span><span style="color: rgb(0,0,255)">="TestFilter"</span><span style="color: rgb(255,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pattern</span><span style="color: rgb(0,0,255)">="*.properties"</span><span style="color: rgb(255,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetId</span><span style="color: rgb(0,0,255)">="org.eclipse.jdt.ui.PackageExplorer"</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">filter</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: rgb(0,0,255)">&lt;/</span><span style="color: rgb(128,0,0)">extension</span><span style="color: rgb(0,0,255)">&gt;</span><span style="color: rgb(0,0,0)"><br />
<img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /></span></div>
<br />
上述代码的作用就是给Package视图，增加过滤器，过滤点后缀名为properties的文件，该过滤项默认为选中状态。<br />
</div>
</div>
<div id="AjaxHolder_UpdatePanel1">
<div class="userData" id="CommentsPersistDiv"></div>
</span></span><br class="Apple-interchange-newline" />
</div>
<img src ="http://www.blogjava.net/athenaer/aggbug/332147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/athenaer/" target="_blank">月貘苏</a> 2010-09-16 10:48 <a href="http://www.blogjava.net/athenaer/articles/332147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>