Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding a filter to the Project Explorer in Eclipse

I want to add a new filter to the Project Explorer, to hide from the user some projects that are created automatically in an Eclipse RCP Application.

So far I've found two extension points:

org.eclipse.ui.ide.resourceFilters

Allows me to filter Navigation

org.eclipse.jdt.ui.javaElementFilters

Allows me to filter the Java Viewers

I expect there is a similar extension point for the Project Explorer, but so far I haven't had any luck getting it.

I tried importing org.eclipse.ui.navigator and org.eclipse.ui.navigator.resources but I could not find any interesting looking extension point either

I am using Eclipse 3.3.2 as the basis for this RCP Application

Thanks!

like image 854
Mario Ortegón Avatar asked Mar 07 '10 12:03

Mario Ortegón


2 Answers

There you go:

<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>

Don't forget to import org.eclipse.ui.navigator package

like image 198
JareQ Avatar answered Sep 27 '22 01:09

JareQ


I found the right set of extension points. It is more of a pain that I expected, because the Project Explorer is a specialization of the common navigator.

This is a two-step process:

  • extend org.eclipse.ui.navigator.navigatorContent

    • Add a common filter to this extension point.
    • Set a name and id to the filter
    • Implement the filter viewer with the desired logic
  • extend org.eclipse.ui.navigator.viewer

    • Add a viewerContentBinding
    • Set the content id to org.eclipse.ui.navigator.ProjectExplorer
    • Add two includes
    • In the first include add a patter that matches the id of the common filter
    • In the second include add the id org.eclipse.ui.navigator.resourceContent

And then, the filter is associated to the common Project Explorer

like image 28
Mario Ortegón Avatar answered Sep 24 '22 01:09

Mario Ortegón