2010-03-07 22 views
6

Desidero aggiungere un nuovo filtro a Esplora progetti, per nascondere all'utente alcuni progetti che vengono creati automaticamente in un'applicazione Eclipse RCP.Aggiunta di un filtro a Esplora progetti in Eclipse

Finora ho trovato due punti di estensione:

org.eclipse.ui.ide.resourceFilters

mi permette di filtrare Navigazione

org.eclipse.jdt.ui .javaElementFilters

mi permette di filtrare i Viewers Java

Mi aspetto che ci sia un punto di estensione simile per Project Explorer, ma finora non ho avuto fortuna a ottenerlo.

ho provato ad importare org.eclipse.ui.navigator e org.eclipse.ui.navigator.resources, ma non sono riuscito a trovare qualche interessante punto di estensione cercando sia

Sto usando Eclipse 3.3.2 come base per questa applicazione RCP

Grazie!

risposta

7

ho trovato il giusto set di punti di estensione. È più un dolore che mi aspettavo, perché Project Explorer è una specializzazione del navigatore comune.

Questo è un processo in due fasi:

  • estendono org.eclipse.ui.navigator.navigatorContent

    • Aggiungere un filtro comune a questo punto di estensione.
    • impostare un nome e id al filtro
    • Implementare lo spettatore filtro con la logica desiderata
  • estendono org.eclipse.ui.navigator.viewer

    • Aggiungi un viewerContentBinding
    • Imposta l'id del contenuto su org.eclipse.ui.navigator.ProjectExplorer
    • Aggiungi due include
    • Nel primo comprendono aggiungere un picchiettio che corrisponde al id del filtro comune
    • Nella seconda includere aggiungere l'org.eclipse.ui.navigator.resourceContent id

E poi, il filtro è associato al comune progetti

+0

@ Mario: molto interessante; grazie per la risposta, sebbene tu possa dettagliarlo un po 'di più;). +1 – VonC

2

Filtri ... per il progetto Explorer?

Ci sono alcuni bug di vecchia data su quella:

Questo può Requiere po 'di sviluppo specifico (come suggerito in this thread)

si potrebbe probabilmente realizzare questo da crea ting una classe che estende ViewFilter e associa la classe con l'explorer di progetto.

(Nota: FilterViewer erano broken in Eclipse3.3.1, alcuni utilizzano 3.3.2 qui è una buona idea)

+0

Questo commento ha dato un suggerimento. Infatti, è fatto estendendo ViewFilter. La parte difficile è stata ottenere la giusta combinazione di punti di estensione per registrarla al project explorer. –

8

ci si va:

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

non dimenticare di importare org.ec pacchetto lipse.ui.navigator

+0

Ha funzionato perfettamente per me e bello che non è necessario creare una singola classe. Grazie! –

Problemi correlati