Eclipse CNF 视图制作

CNF 视图制作

 

概述:本文首先定了org.eclipse.ui.navigator.navigatorContent,然后绑定navigatorContent到相应的org.eclipse.ui.navigator.viewer上,最后,叙述了org.eclipse.ui.navigator.linkHelper的用途。

 

org.eclipse.ui.navigatorCNF的源代码。

CNF 的用途:可以快速的开发导航器视图。

可以参考Eclipse的插件org.eclipse.ui.navigator.resources,来学习CNF的用法。

可以参考Eclipse的插件org.eclipse.ui.tests.navigator,来学习CNF的用法。

该工程在Eclipse CVS 库中。

 

在本文中,我们以org.eclipse.ui.tests.navigator,来讲解CNF框架。

CNF 共提供三个扩展点:

1 navigatorContent :导航内容扩展点,主要为视图提供显示内容。

2 viewer : 主要是把定义好的navigatorContent 绑定到相应的视图上。

3 linkHelper : 提供编辑器和视图一种对应关系。

大体记住什么用途即可,下面我们详细介绍:

1 org.eclipse.ui.navigator.navigatorContent

定义导航器的内容,

该图为org.eclipse.ui.tests.navigator插件的扩展页。我们将详述navigatorContent和它内部的扩展。

<navigatorContent

        id="org.eclipse.ui.tests.navigator.testContent"

        name="%test.navigator.extension" 

        contentProvider="org.eclipse.ui.tests.navigator.extension.TestContentProvider"      

        labelProvider="org.eclipse.ui.tests.navigator.extension.TestLabelProvider"

        activeByDefault="true"

        priority="higher">

id navigatorContent的唯一标识,当viewer绑定navigatorContent用到。

contentProvider :内容提供者,父类为JFace的内容提供者类。

labelProvider :标签提供者,父类为JFace的标签提供者类。

详细的可以参见Eclipse的帮助文档,在这里不加以详述。

接下来我们来说说navigatorContent内部的扩展。

1.1 tringgerPoints

<triggerPoints>

              <adapt type="org.eclipse.core.resources.IProject"/>

</triggerPoints>

表示什么时候navigatorContent 可用,在本例中表示当遇到IProject对象或是可以适配到IProject的对象时,这个navigatorContent 将被激活。

1.2 possibleChildren

<possibleChildren>

            <or>

                <instance of value="org.eclipse.ui.tests.navigator.extension.TestExtensionTreeData"/>

                <instance of value="org.eclipse.core.resources.IFile" />

            </or>

        </possibleChildren>

    表示孩子可能是IFile,或TestExtensionTreeData(这个是该工程自定义类)。

1.3 actionProvider

<actionProvider

         class="org.eclipse.ui.tests.navigator.extension.TestNestedActionProvider"

         id="org.eclipse.ui.tests.navigator.extension.TestNestedActionProvider">

      </actionProvider>

   定义一些Action,在class属性指定的类中,你可以控制把这个Action添加到菜单中。

1.4 commonSorter

   <commonSorter

        class="org.eclipse.ui.tests.navigator.extension.TestDataSorter"

        id="org.eclipse.ui.tests.navigator.commonSorter">

        <parentExpression>

            <or>

               <adapt type="org.eclipse.core.resources.IProject"/>

               <instanceof value="org.eclipse.ui.tests.navigator.extension.TestExtensionTreeData"/>

            </or>

        </parentExpression>

   </commonSorter>

  定义视图的排序器,parentExpression 表示排序其内部的孩子。如本例中就排序IProject中的孩子和TestExtensionTreeData中的孩子。

1.5 override

可以重新定义一些以前被定义好了的Action等。用途:CNF是一个高重用,可扩展的框架。即,你可以很容易的扩展已经存在的Navigator View,用override就可以把已经定义好的Action在重新定义。(本例子中没有涉及到,请参见org.eclipse.ui.navigator.resources

1.6 commonWizard

可以绑定一些定义好的向导,他们将出现在上下文菜单,新建选项中。

(本例子中没有涉及到,请参见org.eclipse.ui.navigator.resources

注意:在navigatorContent 的同级上也可定义actionProvidercommonSorter等。

如图

navigatorContent 内部定义的actionProvider,当navigatorContent 绑定到Viewer上时,将自动的也绑架上。即Viewer自动有了这个actionProvider

navigatorContent 同级定义个actionProvider,则需要用户自行绑定到Viewer上,这种方法提高了actionProvider的重用性,即多个Viewer 可以使用同一个actionProvider扩展。

 

2 org.eclipse.ui.navigator.viewer

前一节将了如何定义一个navigatorContent,本小节讲述如何将其绑定到视图上。

该图为org.eclipse.ui.tests.navigator插件的扩展页。我们将详述这个扩展点。

2.1 viewer

<viewer

      popupMenuId="org.eclipse.ui.tests.navigator.TestView#PopupMenu"

      viewerId="org.eclipse.ui.tests.navigator.TestView">

popupMenuId :定义弹出菜单(即上下文菜单)的ID

viewerId :必须和要绑定到的视图的ID一致。

viewer内部,可以配置菜单和视图工具栏中出现的默认Action。这里就不再详述了。请自行参考本文提到的2个源码。

 

该图 为正常的CNF工具栏

 

 

 

该图 org.eclipse.ui.viewActions扩展点添加一个工具栏Action

 

 

该图 org.eclipse.ui.tests.navigator 的工具栏,在viewer内配置了选项,把默认的工具栏Action删除了。

2.2 viewerContentBinding

正是通过它,来绑定navigatorContent 的。

 

includes下,第一个就是绑定navigatorContent 的。

如图可见,还可以绑定一些filteraction

 

3 org.eclipse.ui.navigator.linkHelper

这个扩展点是定义编辑器和视图相互作用的。其功能就是图中工具栏的Action

 

具体在实现时,可以直接重用已经被Eclipse定义好的扩展。

1 org.eclipse.ui.navigator.resources.linkHelper  支持资源的连接。

2 org.eclipse.jdt.java.ui.javaLinkHelper  支持Java的连接。

它们的绑定也是在viewerContentBinding中绑定。

 

参考资料:

1 http://blog.sina.com.cn/s/blog_4b84d10901009mz7.html 收录CNF的资料集。

2 http://scribbledideas.blogspot.com/ 应该是框架的创始人,介绍框架的应用方法。

3http://www.eclipse.org/articles/Article-Decorators/decorators.html 一片关于标签提供者装饰的文章。

4http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/extension-points/org_eclipse_ui_navigator_viewer.html Eclipse在线帮助,里面讲述了如何配置视图。

5 http://www.blogjava.net/zhuxing/archive/2008/08/11/221265.html 不错的CNF中文文章。

 

Eclipse Project Explorer 视图是用CNF 框架制作的。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值