【问题标题】:Adding a filter to the Project Explorer in Eclipse在 Eclipse 的 Project Explorer 中添加过滤器
【发布时间】:2012-09-04 20:28:03
【问题描述】:

我想向 Project Explorer 添加一个新过滤器,以向用户隐藏一些在 Eclipse RCP 应用程序中自动创建的项目。

到目前为止,我已经找到了两个扩展点:

org.eclipse.ui.ide.resourceFilters

允许我过滤导航

org.eclipse.jdt.ui.javaElementFilters

允许我过滤 Java 查看器

我希望 Project Explorer 有一个类似的扩展点,但到目前为止我还没有得到它。

我尝试导入 org.eclipse.ui.navigator 和 org.eclipse.ui.navigator.resources 但我也找不到任何有趣的扩展点

我使用 Eclipse 3.3.2 作为此 RCP 应用程序的基础

谢谢!

【问题讨论】:

    标签: java eclipse eclipse-rcp


    【解决方案1】:

    你去吧:

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

    别忘了导入org.eclipse.ui.navigator包

    【讨论】:

    • 对我来说非常完美,很高兴您不需要创建单个类。谢谢!
    【解决方案2】:

    我找到了一组正确的扩展点。这比我预期的更痛苦,因为 Project Explorer 是通用导航器的专业化。

    这是一个两步过程:

    • 扩展 org.eclipse.ui.navigator.navigatorContent

      • 向这个扩展点添加一个通用过滤器。
      • 为过滤器设置名称和 ID
      • 使用所需的逻辑实现过滤器查看器
    • 扩展 org.eclipse.ui.navigator.viewer

      • 添加查看器内容绑定
      • 将内容ID设置为org.eclipse.ui.navigator.ProjectExplorer
      • 添加两个包含
      • 在第一个 include 中添加与通用过滤器的 id 匹配的模式
      • 在第二个包括添加 id org.eclipse.ui.navigator.resourceContent

    然后,过滤器与通用项目资源管理器相关联

    【讨论】:

    • @Mario:很有趣;谢谢你的回答,虽然你可以详细一点;)。 +1
    【解决方案3】:
    Project Explorer 视图的

    过滤器...?

    这方面存在一些长期存在的错误:

    这可能需要一些特定的开发(如this thread 中的建议)

    您可以通过创建一个扩展 ViewFilter 的类并将您的类与项目资源管理器相关联来实现此目的。

    (注意:FilterViewer 是broken in Eclipse3.3.1,这里有些使用3.3.2 是个好主意)

    【讨论】:

    • 这条评论给出了提示。实际上,它是通过扩展 ViewFilter 来完成的。棘手的部分是获得正确的扩展点组合以将其注册到项目浏览器。
    猜你喜欢
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2011-07-18
    相关资源
    最近更新 更多