Montag, 5. November 2012

Eclipse RCP - Command und bedingtes Anzeigen von Menüeinträgen

Problem: Die Applikation zeigt Menüs oder Contextmenüs (MenuContribution) an, die in Abhängigkeitei von der Selektion oder anderen Kriteren einen Menüeintrag (Command) Anzeigen soll. Die Commands sind deklarativ definiert.

Ein konkreteres Szenario könnte wie folgt aussehen:

Beim Rechtsklick auf ein Objekt in einem TreeViewer oder einen Tabelleneintrag im TableViewer soll ein Attribut aus dem jeweiligen Objekt abgefragt werden (test).

Lösung:

Diese Lösung ist nicht zu 100% deklarativ. Jedoch stellt diese einen kurzen und übersichtlichen Weg dar.

Schritt 1:
In der Handler Klasse muss die Methode isEnabled() überschrieben werden und immer dann true zurückliefern, wenn der Menüeintrag angezeigt werden soll. In allen Anderen Fällen muss diese Methode ein false zurückliefern.

Schritt 2:
In der Datei plugin.xml muss im Tag MenuContribution das Command wie folgt definiert sein:


 <command 
       commandid="com.blogger.javadingsda.beispielCommand" 
       label="Menüeintrag">
    <visiblewhen checkenabled="true"></visiblewhen>
 </command>



(... Fortsetzung mit einem ausführlichen Beispiel folgt)

Labels:

visibleWhen, property, test, expressions framework, command core expressions

Keine Kommentare:

Kommentar veröffentlichen