7

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!

Mario Ortegón
  • 18,670
  • 17
  • 71
  • 81

3 Answers3

11

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

JareQ
  • 111
  • 1
  • 2
8

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

Mario Ortegón
  • 18,670
  • 17
  • 71
  • 81
  • @Mario: very interesting; thank you for the answer, although you could detailed it a little bit more;). +1 – VonC Mar 09 '10 at 20:36
2

Filters... for the Project Explorer view?

There are some long standing bugs on that:

That may requiere some specific development (as suggested in this thread)

you could probably accomplish this by creating a class that extends ViewFilter and associating your class with the project explorer.

(Note: FilterViewer were broken in Eclipse3.3.1, some using 3.3.2 here is a good idea)

VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250
  • This comment gave a hint. Indeed, it is done by extending ViewFilter. The tricky part was getting the right extension point combination to register it to the project explorer. – Mario Ortegón Mar 09 '10 at 20:03