use of org.metaborg.core.menu.IMenu in project spoofax by metaborg.
the class MenuService method menuItems.
@Override
public Iterable<IMenuItem> menuItems(ILanguageImpl language) {
final Iterable<ActionFacet> facets = language.facets(ActionFacet.class);
final List<IMenuItem> menuItems = Lists.newLinkedList();
for (ActionFacet facet : facets) {
Iterables.addAll(menuItems, facet.menuItems);
}
if (menuItems.size() == 1) {
final IMenuItem item = menuItems.get(0);
if (item instanceof IMenu) {
final IMenu menu = (IMenu) item;
return menu.items();
}
}
return menuItems;
}
use of org.metaborg.core.menu.IMenu in project spoofax by metaborg.
the class ActionFacetFromESV method create.
@Nullable
public static ActionFacet create(IStrategoAppl esv) {
final Iterable<IStrategoAppl> menuTerms = ESVReader.collectTerms(esv, "ToolbarMenu");
final Collection<IMenu> menus = Lists.newLinkedList();
final Multimap<ITransformGoal, ITransformAction> actions = HashMultimap.create();
final ImmutableList<String> nesting = ImmutableList.of();
for (IStrategoAppl menuTerm : menuTerms) {
final IMenu submenu = menu(menuTerm, new TransformActionFlags(), nesting, actions);
menus.add(submenu);
}
addCompileGoal(esv, actions);
if (menus.isEmpty() && actions.isEmpty()) {
return null;
}
return new ActionFacet(actions, menus);
}
Aggregations