【问题标题】:Hiding folders that start with dot in Project Explorer in RCP Project在 RCP 项目的项目资源管理器中隐藏以点开头的文件夹
【发布时间】:2018-03-27 22:45:47
【问题描述】:

在我的 RCP 项目中,我想以编程方式隐藏 Project Explorer 中以点开头的文件夹(当用户浏览打开文件时)。

我已使用以下扩展来实现此目的,但遗憾的是它不起作用。有人可以帮忙吗?谢谢。

<extension point="org.eclipse.ui.navigator.navigatorContent">
    <commonFilter
        description="Hides .* resources"
        id="com.xyz.commonFilter.hidePj"
        name=".* resources"
        activeByDefault="true">
        <filterExpression>
            <and>
                <adapt type="org.eclipse.core.resources.IResource">
                    <test property="org.eclipse.core.resources.name" value=".*"/>
                </adapt>
            </and>
        </filterExpression>
    </commonFilter>
</extension>

<extension point="org.eclipse.ui.navigator.viewer">
    <viewerContentBinding
          viewerId="org.eclipse.ui.navigator.ProjectExplorer">
          <includes>
           <contentExtension pattern="com.xyz.commonFilter.hidePj"/> 
          </includes>
    </viewerContentBinding>
</extension>

注意:我使用的是 eclipse Ganymede。

【问题讨论】:

  • 那是哪个操作系统?
  • 什么“文件资源管理器”?你所展示的是'Project Explorer' - 你正在使用什么?
  • Windows 操作系统。是的@greg-449,它是项目资源管理器。很抱歉造成混乱。
  • 我编辑了这个问题。你能看看吗?
  • Project Explorer中点击右上角的箭头可以选择Customize View,在那里可以选择.* resources隐藏以点开头的资源;这是你要找的吗?

标签: java eclipse eclipse-rcp


【解决方案1】:

更改通用的IResource 类型:

<adapt type="org.eclipse.core.resources.IResource">

并使用最具体的IFolder 类型:

<adapt type="org.eclipse.core.resources.IFolder">

相关源码如下,使用向导(Ganymede)创建的标准Eclipse插件项目,我只是改了idname属性:

plugin.xml:

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>

  <extension point="org.eclipse.ui.navigator.navigatorContent">
    <commonFilter
        id="com.stackoverflow.commonFilter.hideFolders"
        name=".* folders"
        description="Hides .* folders"
        activeByDefault="true">
      <filterExpression>
        <and>
            <adapt type="org.eclipse.core.resources.IFolder">
              <test property="org.eclipse.core.resources.name" value=".*"/>
            </adapt>
        </and>
      </filterExpression>
    </commonFilter>
  </extension>

  <extension point="org.eclipse.ui.navigator.viewer">
    <viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer">
      <includes>
        <contentExtension pattern="com.stackoverflow.commonFilter.hideFolders" /> 
      </includes>
    </viewerContentBinding>
  </extension>

</plugin>

清单.MF:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Filter_dot Plug-in
Bundle-SymbolicName: filter_dot;singleton:=true
Bundle-Version: 1.0.0
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Require-Bundle: org.eclipse.ui.navigator,org.eclipse.core.resources

build.properties:

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               plugin.xml

在下图中,“项目资源管理器”显示一个“.test”文件夹,如果启用了过滤器,使用“右上角的箭头 > 自定义视图...”选项,则该文件夹被隐藏。

【讨论】:

  • 它仍然不适用于此修复程序。当我在编辑器上浏览打开文件时,以点开头的文件夹仍然可见。我需要在某处定义任何类吗?
  • @TravelingSalesman 我已经用完整的源代码更新了答案。过滤器对我来说工作正常。
  • 感谢您的工作,但在 visibleInUI="false" 行上,我收到警告:非法属性。
  • 对了,我用的是eclipse Ganymede。
  • @TravelingSalesman Ganymede? 10年前的发布?这是一个相关信息,必须是问题的一部分。否则假定为最新的 Eclipse 版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多