Search in sources :

Example 1 with IMenu

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;
}
Also used : IMenu(org.metaborg.core.menu.IMenu) ActionFacet(org.metaborg.spoofax.core.action.ActionFacet) IMenuItem(org.metaborg.core.menu.IMenuItem)

Example 2 with IMenu

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);
}
Also used : IMenu(org.metaborg.core.menu.IMenu) ITransformGoal(org.metaborg.core.action.ITransformGoal) TransformActionFlags(org.metaborg.core.action.TransformActionFlags) IStrategoAppl(org.spoofax.interpreter.terms.IStrategoAppl) ITransformAction(org.metaborg.core.action.ITransformAction) Nullable(javax.annotation.Nullable)

Aggregations

IMenu (org.metaborg.core.menu.IMenu)2 Nullable (javax.annotation.Nullable)1 ITransformAction (org.metaborg.core.action.ITransformAction)1 ITransformGoal (org.metaborg.core.action.ITransformGoal)1 TransformActionFlags (org.metaborg.core.action.TransformActionFlags)1 IMenuItem (org.metaborg.core.menu.IMenuItem)1 ActionFacet (org.metaborg.spoofax.core.action.ActionFacet)1 IStrategoAppl (org.spoofax.interpreter.terms.IStrategoAppl)1