package jetbrains.mps.lang.editor.menus.extras.runtime; /*Generated by MPS */ import jetbrains.mps.lang.editor.menus.MenuPart; import jetbrains.mps.openapi.editor.menus.transformation.TransformationMenuItem; import jetbrains.mps.openapi.editor.menus.transformation.TransformationMenuContext; import org.jetbrains.annotations.NotNull; import java.util.List; import java.util.Collection; import jetbrains.mps.openapi.intentions.IntentionExecutable; import jetbrains.mps.intentions.IntentionsManager; import java.util.ArrayList; import org.jetbrains.annotations.Nullable; import jetbrains.mps.openapi.editor.menus.transformation.ActionItemBase; public abstract class AbstractIntentionMenuPart implements MenuPart<TransformationMenuItem, TransformationMenuContext> { private final String myIntentionId; public AbstractIntentionMenuPart(String intentionId) { myIntentionId = intentionId; } @NotNull public List<TransformationMenuItem> createItems(TransformationMenuContext context) { Collection<IntentionExecutable> executables = IntentionsManager.getInstance().getIntentionsById(context.getNode(), context.getEditorContext(), myIntentionId); List<TransformationMenuItem> result = new ArrayList<TransformationMenuItem>(); for (IntentionExecutable executable : executables) { TransformationMenuItem item = createItem(context, executable); if (item != null) { result.add(item); } } return result; } @Nullable protected abstract TransformationMenuItem createItem(@NotNull TransformationMenuContext context, @NotNull IntentionExecutable executable); protected static class ItemBase extends ActionItemBase { protected final TransformationMenuContext _context; protected final IntentionExecutable myExecutable; protected ItemBase(TransformationMenuContext context, IntentionExecutable executable) { _context = context; myExecutable = executable; } @Nullable @Override public String getLabelText(@NotNull String pattern) { return myExecutable.getDescription(_context.getNode(), _context.getEditorContext()); } @Override public void execute(@NotNull String pattern) { myExecutable.execute(_context.getNode(), _context.getEditorContext()); } } }