Dynamic popup menu only shows up when I add a static item first [message #324185] |
Fri, 18 January 2008 11:08  |
Eclipse User |
|
|
|
Originally posted by: automatic.javalobby.org
Hello,
In the code snippet below if I remove the menuDynamic.add(new Action("fake"){}) then the dynamic menu will not show up. Does this make any sense? in all other examples I´ve seen about dynamic menus like http://wiki.eclipse.org/FAQ_How_do_I_make_menus_with_dynamic _contents%3F they never put static fake items to make it work.
public void addPopupMenuContribution() {
IMenuService menuService = (IMenuService) PlatformUI.getWorkbench()
.getService(IMenuService.class);
AbstractContributionFactory viewMenuAddition = new AbstractContributionFactory(
"popup:org.eclipse.ui.popup.any?after=additions", null) {
public void createContributionItems(
final IServiceLocator serviceLocator,
IContributionRoot additions) {
IContributionItem item = new CompoundContributionItem(
"org.eclipse.compare.rubenmenu.container") {
protected IContributionItem[] getContributionItems() {
List toReturn = new ArrayList();
final MenuManager menuDynamic = new MenuManager("Menu Dynamic",null);
menuDynamic.add(new Action("fake"){}); //if I remove this the popup menu will not show
menuDynamic.setRemoveAllWhenShown(true);
IMenuListener menuDynamicListener = new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
menuDynamic.add(new Action("Dynamic action 1"){});
menuDynamic.add(new Action("Dynamic action 2"){});
}
};
menuDynamic.addMenuListener(menuDynamicListener);
toReturn.add(menuDynamic);
return (IContributionItem[]) toReturn
.toArray(new IContributionItem[toReturn.size()]);
}
};
additions.addContributionItem(item, null);
}
};
menuService.addContributionFactory(viewMenuAddition);
}
}
|
|
|
|
Powered by
FUDForum. Page generated in 0.03974 seconds