Menüeinträge zur Laufzeit verändern

rcp_user

Grünschnabel
Liebe RCP Experten,

ich habe folgendes Problem: Ich möchte ein Pulldown Menü von einer ActionDelegate Klasse (diese implementiert das Interface IWorkbenchWindowPulldownDelegate2) aus dynamisch verändern, so dass bei Auswahl des Pulldown-Menüs im Hauptmenü zustandsabhängig verschiedene Menüeinträge angezeit werden können.

Ich komme dabei einfach nicht auf einen grünen Zweig. Die Methode public Menu getMenu(Menu parent) aus dem Interface IWorkbenchWindowPulldownDelegate2 wird leider nur einmal, bei der ersten Auswahl des Pulldown Menüs, aufgerufen.

Es muss doch eine einfache Lösung zur dynamischen Erzeugung von Pulldownmenüs existieren! Wie gesagt, ich benutzte Actionsets mit Actions und Delegates und keine Commands.

Ich bin für alle Ratschläge und Lösungsvorschläge sehr Dankbar...
 
Kommt darauf an, aufgrund von was Einträge sichtbar resp. nicht sichtbar/verfügbar sein sollen. Wen sie von der aktiven View abhängen, dann geht das mit actionSetPartAssociations:

XML:
<extension point="org.eclipse.ui.actionSetPartAssociations">
 <actionSetPartAssociation targetID="DeineActionSetID">
   <part id="DeineViewID"/>
 </actionSetPartAssociation>
</extension>

Eine andere Möglichkeit ist, dass jede deiner Actions einen Listener bei deinem Model registriert und seine Verfügbarkeit selber updatet.
Falls dich z.B. Selections interessieren, gäbe es noch die Methode, dass du einen Listener (z.B. beim ISelectionService) registrierst der dann in seiner selectionChanged ()-methode via
Java:
IWorkbenchPage.showActionSet(DeineID)
IWorkbenchPage.hideActionSet(DeineID)
die Sichtbarkeit updatet.

Eine Patentlösung gibt es nicht im Allgemeinen, ich denke ist ziemlich davon abhängig, was deine Bedingungen sind.

.bile
 
Zuletzt bearbeitet von einem Moderator:
Zurück