====== Add data to dynamic menu entry ======
If a dynamic menu contribution is used you can attach additional data (transient data map) to each menu item so that the handler can later work with that data.
MCommand command = getCommandInstance(USER_ACTION_COMMAND_ID);
for (UserAction userAction : userActions) {
MHandledMenuItem dynamicItem = modelService.createModelElement(MHandledMenuItem.class);
dynamicItem.setLabel(userAction.getName());
dynamicItem.setCommand(command);
dynamicItem.getTransientData().put("name", userAction.getName());
dynamicItem.getTransientData().put("command", userAction.getCommand());
items.add(dynamicItem);
}
The handler can then retrieve the data by getting the menu item injected.
@Execute
public void execute(@Optional MMenuItem menuItem) {
String userActionName = menuItem.getTransientData().getOrDefault("name", "").toString();
String userActionCommand = menuItem.getTransientData().getOrDefault("command", "").toString();
}
{{tag>devel eclipse e4 java}}