2017-03-14 2 views
0

Die Plug-in org.eclipse.ui.navigator.resources deklariert ein commonFilter Element mit der ID org.eclipse.ui.navigator.resources.filters.startsWithDotorg.eclipse.ui.navigator.navigatorContent zu verlängern:Eclipse-PDE :: Test Eigenschaften

<commonFilter 
     id="org.eclipse.ui.navigator.resources.filters.startsWithDot" 
     name="%filters.startsWithDot.name" 
     description="%filters.startsWithDot.description" 
     activeByDefault="true" 
     > 
    <filterExpression> 
     <and> 
      <adapt type="org.eclipse.core.resources.IResource"> 
       <test property="org.eclipse.core.resources.name" value=".*"/> 
      </adapt> 
     </and> 
    </filterExpression> 
    </commonFilter> 

Das Element <test> hat die Eigenschaft org.eclipse.core.resources.name. Ich habe die Ansicht Plug-in Registry durchforstet, um herauszufinden, was diese Eigenschaft bedeutet (und warum sie nicht einfach name heißt), aber alles, was ich finden konnte, sind weitere Eigenschaftenzuweisungen.

Kann mir jemand erklären, was org.eclipse.core.resources.name bedeutet, warum es nicht reicht, nur name als eine Eigenschaft zu verwenden, und welche Klasse verarbeitet diesen Wert tatsächlich?

Antwort

1

Der Wert, der im Attribut testproperty angegeben ist, ist ein Wert, der unter Verwendung des Erweiterungspunkts org.eclipse.core.expressions.propertyTesters definiert wird.

In diesem speziellen Fall die Erklärung im org.eclipse.core.resources Plugin ist:

<extension 
    point="org.eclipse.core.expressions.propertyTesters"> 
    <propertyTester 
     id="org.eclipse.core.resources.resourcePropertyTester" 
     class="org.eclipse.core.internal.propertytester.ResourcePropertyTester" 
     namespace="org.eclipse.core.resources" 
     properties="name,path,extension,readOnly,projectNature,persistentProperty,projectPersistentProperty,sessionProperty,projectSessionProperty" 
     type="org.eclipse.core.resources.IResource"/> 

, die eine Reihe von Tests definiert umfassen den Namen Test.

Wenn Sie eine Eigenschaft Tester verweisen müssen Sie immer den vollständigen Namen einschließlich der Namensraum angeben - so muss es org.eclipse.core.resources.name und nicht nur name sein, org.eclipse.core.resources ist der Namespace in der Erweiterungspunkt erklärt. Dies liegt daran, dass mehrere Eigenschaftentester für name definiert sein können. Jeder Tester verfügt jedoch über einen eindeutigen Namespace, sodass der vollständige Name ebenfalls eindeutig ist.

org.eclipse.core.resources.name testet den Ressourcennamen anhand eines Musters. Jeder Name beginnt mit. in diesem Fall.

+0

Brilliant. Danke danke danke. –

Verwandte Themen