# RCP - dynamische actions in menu extention programmieren



## CJChico (16. Jul 2009)

Hi,

gibt es eine Möglichkeit dynamische Actions für ein Menü in der Menübar einer RCP-Anwendung zu erstellen?

Ich habe ein Extensionpoint als ActionSet definiert und da ein Menü hinzugefügt. Nun möchte ich über den code, also nicht über die plugin.xml action zu dem Menü hinzufügen. Wie ich mir den Extensionpoint und das menü hole weiß ich aber mir fehlt die Verbindung zwischen meinen Actions und dem Menü.


----------



## Gonzo17 (16. Jul 2009)

Für den Fall, dass menuBar dein Menü ist und auch ein Objekt der Klasse MenuManager:


```
MenuManager testMenu= new MenuManager("&Test");
menuBar.add(testMenu);
testMenu.add(defaultAction);
testMenu.add(anotherAction);
```


----------



## CJChico (16. Jul 2009)

Nein das ist es leider nicht.

Wie gesagt das menu habe ich als ExtensionPoint definiert, so das es in der MenuBar der RCP-Anwendung verfügbar ist und das was ich suche ist, wie ich an das Menü dran komme oder wie ich meine Actions an das Menu hinzufügen kann.

Vielleicht gibt es aber auch eine andere Lösung und man kann ein MenuManager direkt an die MenuBar hängen. Falls das irgentwie geht wäre mir das Weg auch recht.


----------



## Gonzo17 (16. Jul 2009)

CJChico hat gesagt.:


> Wie ich mir den Extensionpoint und das menü hole weiß ich aber mir fehlt die Verbindung zwischen meinen Actions und dem Menü.





CJChico hat gesagt.:


> ... und das was ich suche ist, wie ich an das Menü dran komme oder wie ich meine Actions an das Menu hinzufügen kann.



Hast du jetzt das Menü oder nicht? ???:L

Wenn nicht, dann kannst du es mal so versuchen: 


```
MenuManager menuManager = ((ApplicationWindow) getWindowConfigurer()
				.getWindow()).getMenuBarManager();
```

Und generell kannst du dir diesen Thread mal durchlesen: http://www.java-forum.org/plattform...or-dem-start-deaktivieren-menueanordnung.html

Da hab ich nämlich was mit meinem Menü gemacht. Vielleicht hilft dir das.


----------



## CJChico (16. Jul 2009)

Danke ich musste zwar bisschen Tricksen um an dem WindowConfigurer zu kommen aber jetzt klappt es, danke.


```
MenuManager menuManager = ((ApplicationWindow)Plugin.getWindowConfigurer()
        .getWindow()).getMenuBarManager();
    for(IContributionItem item : menuManager.getItems()) {
      if(item instanceof ActionSetContributionItem &&
          ((ActionSetContributionItem)item).getId().equals("menuID") && 
          ((ActionSetContributionItem)item).getInnerItem() instanceof MenuManager) {
        MenuManager menu = (MenuManager)((ActionSetContributionItem)item).getInnerItem();
        ConfigurationPackageAction action = new ConfigurationPackageAction();
        action.setText("Test");
        menu.add(action);
        break;
      }
    }
```


----------

