class ModeUpdater {
@Inject extension EModelService modelService
@Inject @Optional
def void didChangeMode(@UIEventTopic("appstate/mode") String newMode, MApplication app) {
var items = app.findElements(MHandledItem, EModelService.ANYWHERE) [
var item = it as MHandledItem
return item.command.elementId == "net.jeeeyul.eclipse.themes.test.e4app.changemode"
] as MHandledItem[]
items.forEach[
it.selected = it.parameters.findFirst[name == "mode"]?.value == newMode
]
}
}
@Execute
public void execute(EModelService modelService, MApplication app) {
List<MHandledMenuItem> items = modelService.findElements(app, MHandledMenuItem.class, EModelService.ANYWHERE,
new Selector() {
@Override
public boolean select(MApplicationElement element) {
return true;
}
});
for (MHandledItem each : items) {
System.out.println(each.getCommand().getCommandName());
}
}