Common Navigator Framework 实践(四)文件过滤

本文档介绍了如何在Eclipse Common Navigator Framework (CNF) 中实现隐藏以.开头的文件和文件夹,通过配置commonFilter和viewerContentBinding实现过滤,并探讨了如何自定义导航视图菜单。同时,提出了如果不需要内置过滤菜单的解决方案,指出这将在后续的CNF实践中详细讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标

一般情况下,以 . 开头的文件或文件夹我们视为隐藏文件,然而现在导航工具栏中并没有隐藏,本节将实现如何隐藏这类文件,并指出如何隐藏其他特定的文件或文件夹。现导航中的文件如下:
在这里插入图片描述

分析

过滤文件,第一感觉需要在CNF 的ContentProvider 中过滤,使得,这种方法可行。但是 Eclipse 为CNF设计了一个资源过滤扩展点 org.eclipse.ui.navigator.navigatorContent/commonFilter,定义好的commonFilterviewerContentBinding 中引用即可。

实现

先看看Eclipse对以.开头的文件或文件夹配置的CommonFilter

      <!-- Expression Filters -->
      <commonFilter
            id="org.eclipse.ui.navigator.resources.filters.startsWithDot"
            name="%filters.startsWithDot.name"
            description="%filters.startsWithDot.description"
            activeByDefault="true"
            >
         <filterExpression>
         	<and>
	            <adapt type="org.eclipse.core.resources.IResource">
            		<test property="org.eclipse.core.resources.name" value=".*"/>
            	</adapt>
	        </and>
         </filterExpression>
      </commonFilter>

filterExpression解释,在Eclipse 中,文件与文件夹都实现了IResource 接口,因此它们都满足type="org.eclipse.core.resources.IResource",test的意思是,使用这些资源的属性(property)name来匹配,只要是满足正则表达式.*的及命中被过滤。

类似的可以定义一个过滤.txt的过滤器,其test表达式value值设为*.txt即可。

因为项目依赖了Eclipse的这些过滤器实现,因此可以直接使用。下面将它绑定到扩展点org.eclipse.ui.navigator.viewer下的标签viewerContentBinding中,修改后viewerContentBinding代码如下:

<viewerContentBinding viewerId="com.xzbd.views.MainNavigator">  
	<includes>
		<!-- 自定义导航内容 -->
		<contentExtension pattern="com.xzbd.epx.MainNavigatorContent" />
		<!-- 隐藏以 . 开头的文件或文件夹 -->
		<contentExtension pattern="org.eclipse.ui.navigator.resources.filters.startsWithDot" />
	</includes>
</viewerContentBinding>  
     

运行结果

在这里插入图片描述
需要注意的是,这种过滤器,在导航栏视图菜单中是可见的,并且可以手动修改配置是否过滤。菜单如下:
在这里插入图片描述
目的是实现了,但是却发现CNF提供的框架了默认有这个过滤 菜单,如何业务需要这种过滤那么刚好,但若业务不想要这种自带的视图菜单,那当如何去掉这些菜单呢?或者如何在导航视图中自定义自己的菜单?

该问题暂时保留,待到 Common Navigator Framework 实践(五)菜单及工具条定制

总结

文章分析并实现了CNF自定义导航过滤器,并提出了这种实现可能与业务需求不同的风险。

系列文章

CNF系列汇总
Common Navigator Framework 实践(一)自定义导航
Common Navigator Framework 实践(二)菜单扩展
Common Navigator Framework 实践(三)文件拖拽控制
Common Navigator Framework 实践(四)文件过滤
Common Navigator Framework 实践(五)菜单及工具条定制

资料

项目地址

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值