深入 Common Navigator Framework 之 Common Filters

4.1 概述

Common Filter负责进行节点过滤,类似JFace Viewer中的Sorter功能,比如
org.eclipse.jface.viewers.StructuredViewer.setSorter(ViewerSorter sorter)
CNF中也一样,不过它使用Common Filter对Sorter进行了封装,使得用户更容易自定义过滤器。具体效果见第一节中的部分。

 

4.2 扩展点

扩展点org.eclipse.ui.navigator.navigatorContent/commonFilter,定义的Common Filter在navigatorContent中通过viewerContentBinding引用。

具体声明为:


 
该扩展点中最重要的就是filterExtension,它将确定合适启用过滤器。在filterExtension中,可以使用PropertyTest,Instanceof等一切可以用于判断的表达式:

4.3 Eclipse实现


在这里讲解一下Eclipse中Non-JavaProject过滤器的实现。代码如下:

      <commonFilter
            id="org.eclipse.ui.examples.navigator.filters.hideNonJavaProjects"
            name="Hide non-Java Projects">
         <filterExpression>
            <not>
               <adapt
                     type="org.eclipse.core.resources.IProject">
                  <test
                        property="org.eclipse.core.resources.projectNature"
                        value="org.eclipse.jdt.core.javanature">
                  </test>
               </adapt>
            </not>
         </filterExpression>
      </commonFilter>

 


这里使用了Property Test,使用“org.eclipse.core.resources.projectNature”属性,这是Eclipse内置的一个属性,如果该属性不是“org.eclipse.jdt.core.javanature”时候,启用过滤器,过滤掉不是Java工程的工程。

 

4.4 说明

扩展点org.eclipse.ui.navigator.navigatorContent/commonFilter,定义的Common Filter在navigatorContent中通过viewerContentBinding引用。

你可能感兴趣的:(eclipse,cnf)