objectContribution mit Commands

code404

Aktives Mitglied
Hallo zusammen,

weiß jemand wie ich eine objectContribution auf eine Fileart (z.B. *.xml - Files) erzeuge ohne eine Action zu implementieren.
Oder anderes gesagt eine objektContribution die ein Command ausführt.
Bis jetzt bin ich immerhin schon so weit:
Java:
<extension
      point="org.eclipse.ui.menus">
   <menuContribution
         locationURI="popup:org.eclipse.ui.popup.any">
      <menu
            label="Menue">
         <command
               commandId="ID.To.Command"
               label="Label"
               style="push">
            <visibleWhen
                  checkEnabled="false">
               <with
                     variable="activeMenuSelection">
                  <iterate
                        ifEmpty="false">
                     <adapt
                           type="org.eclipse.core.resources.IFile">
                     </adapt>
                  </iterate>
               </with>
            </visibleWhen>
         </command>
      </menu>
   </menuContribution>
</extension>

Wie schaffe ich es jetzt bloß zu testen ob das File auf *.xml endet?

Besten Dank
 

code404

Aktives Mitglied
Mhh das hab ich mir schon gedacht.
Mit den Actions ist das ja in einem ExtensionPoint gemacht, das man aber mit dem Command-Framework so ein kladderadatsch machen muss?
Na gut hier für die Nachwelt meine Lösung:
Poperty Tester:
Java:
import org.eclipse.core.expressions.PropertyTester;
import org.eclipse.core.resources.IFile;

public class FileExtensionTester extends PropertyTester
{
	@Override
	public boolean test(Object receiver, String property, Object[] args,
			Object expectedValue) {
		if(!(receiver instanceof IFile))
			return false;
		IFile file = (IFile)receiver;
		return file.getFileExtension().equals(expectedValue);
	}
}

Die dazugehörige Extension:
Java:
<extension
      point="org.eclipse.core.expressions.propertyTesters">
   <propertyTester
         class=FileExtensionTester"
         id="fileextensiontesterID"
         namespace="fileextension"
         properties="type"
         type="org.eclipse.core.resources.IFile">
   </propertyTester
</extension>

Und dann noch der Händler

Java:
<extension
      point="org.eclipse.ui.menus">
   <menuContribution
         locationURI="popup:org.eclipse.ui.popup.any">
      <menu
            label="Menue">
         <command
               commandId="ID.To.Command"
               label="Label"
               style="push">
            <visibleWhen
                  checkEnabled="false">
               <with
                     variable="activeMenuSelection">
                  <iterate
                        ifEmpty="false">
                     <test
                           forcePluginActivation="true"
                           property="fileextension.type"
                           value="xml">
                     </test>
                  </iterate>
               </with>
            </visibleWhen>
         </command>
      </menu>
 

Wildcard

Top Contributor
Das hättest du dir sparen können :)
Dieses Property gibt es schon (siehe Link den ich oben gepostet habe), du hättest also keinen eigenen Tester gebraucht.
 

Ähnliche Java Themen


Oben