package jetbrains.mps.baseLanguage.regexp.editor; /*Generated by MPS */ import jetbrains.mps.nodeEditor.menus.transformation.TransformationMenuBase; import java.util.Set; import jetbrains.mps.internal.collections.runtime.SetSequence; import java.util.HashSet; import jetbrains.mps.lang.editor.menus.transformation.MenuLocations; import org.jetbrains.annotations.NotNull; import java.util.List; import jetbrains.mps.lang.editor.menus.MenuPart; import jetbrains.mps.openapi.editor.menus.transformation.TransformationMenuItem; import jetbrains.mps.openapi.editor.menus.transformation.TransformationMenuContext; import java.util.ArrayList; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.lang.editor.menus.transformation.DefaultConceptMenusTransformationMenuPart; import jetbrains.mps.kernel.model.SModelUtil; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.lang.editor.menus.transformation.ConstraintsFilteringTransformationMenuPartDecorator; import jetbrains.mps.lang.editor.menus.GroupMenuPart; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import java.util.Arrays; import jetbrains.mps.lang.editor.menus.SingleItemMenuPart; import org.jetbrains.annotations.Nullable; import jetbrains.mps.openapi.editor.menus.transformation.ActionItemBase; import jetbrains.mps.nodeEditor.cellMenu.SideTransformCompletionActionItem; import jetbrains.mps.openapi.editor.menus.transformation.ConstraintsVerifiableActionItem; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.smodel.action.SNodeFactoryOperations; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; import java.util.regex.Pattern; import java.util.regex.Matcher; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.editor.runtime.selection.SelectionUtil; import jetbrains.mps.openapi.editor.selection.SelectionManager; import org.jetbrains.mps.openapi.language.SAbstractConcept; import jetbrains.mps.lang.editor.menus.ParameterizedMenuPart; import org.jetbrains.mps.openapi.language.SConcept; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SConceptOperations; import jetbrains.mps.lang.editor.menus.transformation.WrapSubstituteMenuTransformationMenuPart; import jetbrains.mps.openapi.editor.menus.substitute.SubstituteMenuLookup; import jetbrains.mps.openapi.editor.EditorContext; import jetbrains.mps.lang.editor.menus.substitute.DefaultSubstituteMenuLookup; import jetbrains.mps.smodel.language.LanguageRegistry; import jetbrains.mps.openapi.editor.menus.substitute.SubstituteMenuItem; import jetbrains.mps.editor.runtime.menus.SubstituteItemFacade; import jetbrains.mps.lang.editor.menus.transformation.SubstituteMenuItemAsActionItem; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.scope.Scope; import jetbrains.mps.smodel.constraints.ModelConstraints; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModelOperations; public class Regexp_TransformationMenu extends TransformationMenuBase { private final Set<String> myLocations = SetSequence.fromSetAndArray(new HashSet<String>(), MenuLocations.LEFT_SIDE_TRANSFORM, MenuLocations.RIGHT_SIDE_TRANSFORM, MenuLocations.RIGHT_SIDE_TRANSFORM); @Override public boolean isApplicableToLocation(@NotNull String location) { return SetSequence.fromSet(myLocations).contains(location); } @Override @NotNull protected List<MenuPart<TransformationMenuItem, TransformationMenuContext>> getParts(TransformationMenuContext _context) { List<MenuPart<TransformationMenuItem, TransformationMenuContext>> result = new ArrayList<MenuPart<TransformationMenuItem, TransformationMenuContext>>(); if (ListSequence.fromListAndArray(new ArrayList<String>(), MenuLocations.LEFT_SIDE_TRANSFORM, MenuLocations.RIGHT_SIDE_TRANSFORM).contains(_context.getMenuLocation())) { result.add(new DefaultConceptMenusTransformationMenuPart(SModelUtil.getDirectSuperConcepts(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174a06efdL, "jetbrains.mps.baseLanguage.regexp.structure.Regexp")))); } if (ListSequence.fromListAndArray(new ArrayList<String>(), MenuLocations.RIGHT_SIDE_TRANSFORM).contains(_context.getMenuLocation())) { result.add(new Regexp_TransformationMenu.TMP_Group_luzgqn_a1()); result.add(new Regexp_TransformationMenu.TMP_WrapSM_luzgqn_b1()); result.add(new ConstraintsFilteringTransformationMenuPartDecorator(new Regexp_TransformationMenu.TMP_Action_luzgqn_c1(), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x111752101b0L, "jetbrains.mps.baseLanguage.regexp.structure.ParensRegexp"))); result.add(new Regexp_TransformationMenu.TMP_Param_luzgqn_d1()); result.add(new ConstraintsFilteringTransformationMenuPartDecorator(new Regexp_TransformationMenu.TMP_Param_luzgqn_e1(), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118e0a1c55L, "jetbrains.mps.baseLanguage.regexp.structure.MatchVariableReferenceRegexp"))); result.add(new ConstraintsFilteringTransformationMenuPartDecorator(new Regexp_TransformationMenu.TMP_Param_luzgqn_f1(), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11178fa2a18L, "jetbrains.mps.baseLanguage.regexp.structure.PredefinedSymbolClassRegexp"))); result.add(new ConstraintsFilteringTransformationMenuPartDecorator(new Regexp_TransformationMenu.TMP_Param_luzgqn_g1(), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1117f58ea2aL, "jetbrains.mps.baseLanguage.regexp.structure.RegexpDeclarationReferenceRegexp"))); } return result; } public class TMP_Group_luzgqn_a1 extends GroupMenuPart<TransformationMenuItem, TransformationMenuContext> { @Override protected boolean isApplicable(TransformationMenuContext _context) { return !(SNodeOperations.isInstanceOf(_context.getNode(), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c678adL, "jetbrains.mps.baseLanguage.regexp.structure.UnaryRegexp"))); } @Override protected List<MenuPart<TransformationMenuItem, TransformationMenuContext>> getParts() { return Arrays.<MenuPart<TransformationMenuItem, TransformationMenuContext>>asList(new ConstraintsFilteringTransformationMenuPartDecorator(new Regexp_TransformationMenu.TMP_Group_luzgqn_a1.TMP_Action_luzgqn_a0b(), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dbeda57L, "jetbrains.mps.baseLanguage.regexp.structure.NTimesRegexp")), new ConstraintsFilteringTransformationMenuPartDecorator(new Regexp_TransformationMenu.TMP_Group_luzgqn_a1.TMP_Action_luzgqn_b0b(), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dc30ee2L, "jetbrains.mps.baseLanguage.regexp.structure.AtLeastNTimesRegexp")), new ConstraintsFilteringTransformationMenuPartDecorator(new Regexp_TransformationMenu.TMP_Group_luzgqn_a1.TMP_Action_luzgqn_c0b(), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dc58c6eL, "jetbrains.mps.baseLanguage.regexp.structure.FromNToMTimesRegexp")), new ConstraintsFilteringTransformationMenuPartDecorator(new Regexp_TransformationMenu.TMP_Group_luzgqn_a1.TMP_Param_luzgqn_d0b(), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c678adL, "jetbrains.mps.baseLanguage.regexp.structure.UnaryRegexp"))); } private class TMP_Action_luzgqn_a0b extends SingleItemMenuPart<TransformationMenuItem, TransformationMenuContext> { @Nullable protected TransformationMenuItem createItem(TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Group_luzgqn_a1.TMP_Action_luzgqn_a0b.Item(context); } private class Item extends ActionItemBase implements SideTransformCompletionActionItem, ConstraintsVerifiableActionItem { private final TransformationMenuContext _context; private Item(TransformationMenuContext context) { _context = context; } @Nullable @Override public String getLabelText(String pattern) { if (!(REGEXP_luzgqn_a0a0a0e2d5.matcher(pattern).matches())) { return "{n}"; } String s = pattern; if (!(s.endsWith("}"))) { s += "}"; } return s; } @Override public void execute(@NotNull String pattern) { SNode node = SNodeFactoryOperations.createNewNode(SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dbeda57L, "jetbrains.mps.baseLanguage.regexp.structure.NTimesRegexp")), null); SNodeOperations.replaceWithAnother(_context.getNode(), node); SLinkOperations.setTarget(node, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c678adL, 0x11174c6961aL, "regexp"), _context.getNode()); { Pattern _pattern_0 = REGEXP_luzgqn_a0a0d0g2d5; Matcher _matcher_0 = _pattern_0.matcher(pattern); if (_matcher_0.find()) { SPropertyOperations.set(node, MetaAdapterFactory.getProperty(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dbeda57L, 0x1118dbf202dL, "n"), "" + (Integer.parseInt(_matcher_0.group(1)))); } } SelectionUtil.selectLabelCellAnSetCaret(_context.getEditorContext(), node, SelectionManager.FIRST_ERROR_CELL + "|" + SelectionManager.FOCUS_POLICY_CELL + "|" + SelectionManager.FIRST_EDITABLE_CELL + "|" + SelectionManager.FIRST_CELL, -1); } @Nullable @Override public SAbstractConcept getOutputConcept() { return MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dbeda57L, "jetbrains.mps.baseLanguage.regexp.structure.NTimesRegexp"); } } } private class TMP_Action_luzgqn_b0b extends SingleItemMenuPart<TransformationMenuItem, TransformationMenuContext> { @Nullable protected TransformationMenuItem createItem(TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Group_luzgqn_a1.TMP_Action_luzgqn_b0b.Item(context); } private class Item extends ActionItemBase implements SideTransformCompletionActionItem, ConstraintsVerifiableActionItem { private final TransformationMenuContext _context; private Item(TransformationMenuContext context) { _context = context; } @Nullable @Override public String getLabelText(String pattern) { if (!(REGEXP_luzgqn_a0a0a0e2e5.matcher(pattern).matches())) { return "{n,}"; } String s = pattern; if (!(s.endsWith(",}"))) { s += (s.endsWith(",") ? "}" : ",}"); } return s; } @Override public void execute(@NotNull String pattern) { SNode node = SNodeFactoryOperations.createNewNode(SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dc30ee2L, "jetbrains.mps.baseLanguage.regexp.structure.AtLeastNTimesRegexp")), null); SNodeOperations.replaceWithAnother(_context.getNode(), node); SLinkOperations.setTarget(node, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c678adL, 0x11174c6961aL, "regexp"), _context.getNode()); { Pattern _pattern_0 = REGEXP_luzgqn_a0a0d0g2e5; Matcher _matcher_0 = _pattern_0.matcher(pattern); if (_matcher_0.find()) { SPropertyOperations.set(node, MetaAdapterFactory.getProperty(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dc30ee2L, 0x1118dc39835L, "n"), "" + (Integer.parseInt(_matcher_0.group(1)))); } } SelectionUtil.selectLabelCellAnSetCaret(_context.getEditorContext(), node, SelectionManager.FIRST_ERROR_CELL + "|" + SelectionManager.FOCUS_POLICY_CELL + "|" + SelectionManager.FIRST_EDITABLE_CELL + "|" + SelectionManager.FIRST_CELL, -1); } @Nullable @Override public SAbstractConcept getOutputConcept() { return MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dc30ee2L, "jetbrains.mps.baseLanguage.regexp.structure.AtLeastNTimesRegexp"); } } } private class TMP_Action_luzgqn_c0b extends SingleItemMenuPart<TransformationMenuItem, TransformationMenuContext> { @Nullable protected TransformationMenuItem createItem(TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Group_luzgqn_a1.TMP_Action_luzgqn_c0b.Item(context); } private class Item extends ActionItemBase implements SideTransformCompletionActionItem, ConstraintsVerifiableActionItem { private final TransformationMenuContext _context; private Item(TransformationMenuContext context) { _context = context; } @Nullable @Override public String getLabelText(String pattern) { if (!(REGEXP_luzgqn_a0a0a0e2f5.matcher(pattern).matches())) { return "{n,m}"; } String left = "n"; String right = "m"; { Pattern _pattern_0 = REGEXP_luzgqn_a0a0d0e2f5; Matcher _matcher_0 = _pattern_0.matcher(pattern); if (_matcher_0.find()) { right = _matcher_0.group(1); } } { Pattern _pattern_0 = REGEXP_luzgqn_a0a0e0e2f5; Matcher _matcher_0 = _pattern_0.matcher(pattern); if (_matcher_0.find()) { left = _matcher_0.group(1); } } return "{" + left + "," + right + "}"; } @Override public void execute(@NotNull String pattern) { SNode node = SNodeFactoryOperations.createNewNode(SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dc58c6eL, "jetbrains.mps.baseLanguage.regexp.structure.FromNToMTimesRegexp")), null); SNodeOperations.replaceWithAnother(_context.getNode(), node); SLinkOperations.setTarget(node, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c678adL, 0x11174c6961aL, "regexp"), _context.getNode()); { Pattern _pattern_0 = REGEXP_luzgqn_a0a0d0g2f5; Matcher _matcher_0 = _pattern_0.matcher(pattern); if (_matcher_0.find()) { SPropertyOperations.set(node, MetaAdapterFactory.getProperty(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dc58c6eL, 0x1118dc5ca73L, "m"), "" + (Integer.parseInt(_matcher_0.group(1)))); } } { Pattern _pattern_0 = REGEXP_luzgqn_a0a0e0g2f5; Matcher _matcher_0 = _pattern_0.matcher(pattern); if (_matcher_0.find()) { SPropertyOperations.set(node, MetaAdapterFactory.getProperty(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dc58c6eL, 0x1118dc5bf75L, "n"), "" + (Integer.parseInt(_matcher_0.group(1)))); } } SelectionUtil.selectLabelCellAnSetCaret(_context.getEditorContext(), node, SelectionManager.FIRST_ERROR_CELL + "|" + SelectionManager.FOCUS_POLICY_CELL + "|" + SelectionManager.FIRST_EDITABLE_CELL + "|" + SelectionManager.FIRST_CELL, -1); } @Nullable @Override public SAbstractConcept getOutputConcept() { return MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118dc58c6eL, "jetbrains.mps.baseLanguage.regexp.structure.FromNToMTimesRegexp"); } } } private class TMP_Param_luzgqn_d0b extends ParameterizedMenuPart<SConcept, TransformationMenuItem, TransformationMenuContext> { @NotNull @Override protected List<TransformationMenuItem> createItems(SConcept parameter, TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Group_luzgqn_a1.TMP_Param_luzgqn_d0b.TMP_Action_luzgqn_a3a1(parameter).createItems(context); } @Nullable @Override protected Iterable<? extends SConcept> getParameters(TransformationMenuContext _context) { return ListSequence.fromListAndArray(new ArrayList<SConcept>(), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174a16ffaL, "jetbrains.mps.baseLanguage.regexp.structure.StarRegexp"), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174a15de8L, "jetbrains.mps.baseLanguage.regexp.structure.PlusRegexp"), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11178c4e1e0L, "jetbrains.mps.baseLanguage.regexp.structure.QuestionRegexp"), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1117f38e076L, "jetbrains.mps.baseLanguage.regexp.structure.LazyPlusRegexp"), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1117f394b67L, "jetbrains.mps.baseLanguage.regexp.structure.LazyQuestionRegexp"), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1117f383367L, "jetbrains.mps.baseLanguage.regexp.structure.LazyStarRegexp")); } private class TMP_Action_luzgqn_a3a1 extends SingleItemMenuPart<TransformationMenuItem, TransformationMenuContext> { private final SConcept myParameterObject; public TMP_Action_luzgqn_a3a1(SConcept parameterObject) { myParameterObject = parameterObject; } @Nullable protected TransformationMenuItem createItem(TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Group_luzgqn_a1.TMP_Param_luzgqn_d0b.TMP_Action_luzgqn_a3a1.Item(context); } private class Item extends ActionItemBase implements SideTransformCompletionActionItem, ConstraintsVerifiableActionItem { private final TransformationMenuContext _context; private Item(TransformationMenuContext context) { _context = context; } @Nullable @Override public String getLabelText(String pattern) { return SConceptOperations.conceptAlias(myParameterObject); } @Override public void execute(@NotNull String pattern) { SNode newRegexp = SNodeFactoryOperations.createNewNode(SNodeFactoryOperations.asInstanceConcept(myParameterObject), null); SNodeOperations.replaceWithAnother(_context.getNode(), newRegexp); SLinkOperations.setTarget(newRegexp, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c678adL, 0x11174c6961aL, "regexp"), _context.getNode()); SelectionUtil.selectLabelCellAnSetCaret(_context.getEditorContext(), newRegexp, SelectionManager.FIRST_ERROR_CELL + "|" + SelectionManager.FOCUS_POLICY_CELL + "|" + SelectionManager.FIRST_EDITABLE_CELL + "|" + SelectionManager.FIRST_CELL, -1); } @Nullable @Override public SAbstractConcept getOutputConcept() { return MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c678adL, "jetbrains.mps.baseLanguage.regexp.structure.UnaryRegexp"); } } } } } public class TMP_WrapSM_luzgqn_b1 extends WrapSubstituteMenuTransformationMenuPart { @Nullable @Override protected SubstituteMenuLookup getSubstituteMenuLookup(TransformationMenuContext _context) { final EditorContext editorContext = _context.getEditorContext(); return new DefaultSubstituteMenuLookup(LanguageRegistry.getInstance(editorContext.getRepository()), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, "jetbrains.mps.baseLanguage.regexp.structure.BinaryRegexp")); } @Override protected TransformationMenuItem createTransformationItem(final SNode targetNode, final SubstituteMenuItem item, final TransformationMenuContext _context) { final SubstituteItemFacade wrappedItem = new SubstituteItemFacade(item); return new SubstituteMenuItemAsActionItem(item) { @Override public void execute(@NotNull String pattern) { SNode createdNode = item.createNode(pattern); SNodeOperations.replaceWithAnother(_context.getNode(), createdNode); SLinkOperations.setTarget(createdNode, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, 0x11174c59241L, "left"), _context.getNode()); SelectionUtil.selectLabelCellAnSetCaret(_context.getEditorContext(), createdNode, SelectionManager.FIRST_ERROR_CELL + "|" + SelectionManager.FOCUS_POLICY_CELL + "|" + SelectionManager.FIRST_EDITABLE_CELL + "|" + SelectionManager.FIRST_CELL, -1); } }; } } private class TMP_Action_luzgqn_c1 extends SingleItemMenuPart<TransformationMenuItem, TransformationMenuContext> { @Nullable protected TransformationMenuItem createItem(TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Action_luzgqn_c1.Item(context); } private class Item extends ActionItemBase implements SideTransformCompletionActionItem, ConstraintsVerifiableActionItem { private final TransformationMenuContext _context; private Item(TransformationMenuContext context) { _context = context; } @Nullable @Override public String getLabelText(String pattern) { return ")"; } @Override public void execute(@NotNull String pattern) { SNode pr = SNodeFactoryOperations.replaceWithNewChild(_context.getNode(), SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x111752101b0L, "jetbrains.mps.baseLanguage.regexp.structure.ParensRegexp"))); SLinkOperations.setTarget(pr, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x111752101b0L, 0x1117521177bL, "expr"), _context.getNode()); SelectionUtil.selectLabelCellAnSetCaret(_context.getEditorContext(), pr, SelectionManager.FIRST_ERROR_CELL + "|" + SelectionManager.FOCUS_POLICY_CELL + "|" + SelectionManager.FIRST_EDITABLE_CELL + "|" + SelectionManager.FIRST_CELL, -1); } @Nullable @Override public SAbstractConcept getOutputConcept() { return MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x111752101b0L, "jetbrains.mps.baseLanguage.regexp.structure.ParensRegexp"); } } } private class TMP_Param_luzgqn_d1 extends ParameterizedMenuPart<SConcept, TransformationMenuItem, TransformationMenuContext> { @NotNull @Override protected List<TransformationMenuItem> createItems(SConcept parameter, TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Param_luzgqn_d1.TMP_Action_luzgqn_a3b(parameter).createItems(context); } @Nullable @Override protected Iterable<? extends SConcept> getParameters(TransformationMenuContext _context) { final List<SAbstractConcept> excludeList = ListSequence.fromListAndArray(new ArrayList<SAbstractConcept>(), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, "jetbrains.mps.baseLanguage.regexp.structure.BinaryRegexp"), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c678adL, "jetbrains.mps.baseLanguage.regexp.structure.UnaryRegexp"), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11178fa2a18L, "jetbrains.mps.baseLanguage.regexp.structure.PredefinedSymbolClassRegexp"), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1117f58ea2aL, "jetbrains.mps.baseLanguage.regexp.structure.RegexpDeclarationReferenceRegexp"), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118e0a1c55L, "jetbrains.mps.baseLanguage.regexp.structure.MatchVariableReferenceRegexp")); List<SConcept> regexps = SConceptOperations.getAllSubConcepts2(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174a06efdL, "jetbrains.mps.baseLanguage.regexp.structure.Regexp"), _context.getModel()); return ListSequence.fromList(regexps).where(new IWhereFilter<SConcept>() { public boolean accept(SConcept it) { for (SAbstractConcept exclude : ListSequence.fromList(excludeList)) { if (SConceptOperations.isSubConceptOf(SNodeOperations.asSConcept(it), SNodeOperations.asSConcept(exclude))) { return false; } } return true; } }).toListSequence(); } private class TMP_Action_luzgqn_a3b extends SingleItemMenuPart<TransformationMenuItem, TransformationMenuContext> { private final SConcept myParameterObject; public TMP_Action_luzgqn_a3b(SConcept parameterObject) { myParameterObject = parameterObject; } @Nullable protected TransformationMenuItem createItem(TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Param_luzgqn_d1.TMP_Action_luzgqn_a3b.Item(context); } private class Item extends ActionItemBase implements SideTransformCompletionActionItem { private final TransformationMenuContext _context; private Item(TransformationMenuContext context) { _context = context; } @Nullable @Override public String getLabelText(String pattern) { return (!(isEmptyString(SConceptOperations.conceptAlias(myParameterObject))) ? SConceptOperations.conceptAlias(myParameterObject) : myParameterObject.getName()); } @Override public void execute(@NotNull String pattern) { SNode newRegexp = SNodeFactoryOperations.createNewNode(SNodeFactoryOperations.asInstanceConcept(myParameterObject), null); SNode result = SNodeFactoryOperations.createNewNode(SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174bc30e7L, "jetbrains.mps.baseLanguage.regexp.structure.SeqRegexp")), null); SNodeOperations.replaceWithAnother(_context.getNode(), result); SLinkOperations.setTarget(result, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, 0x11174c59241L, "left"), _context.getNode()); SLinkOperations.setTarget(result, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, 0x11174c5a26fL, "right"), newRegexp); SelectionUtil.selectLabelCellAnSetCaret(_context.getEditorContext(), newRegexp, SelectionManager.FIRST_ERROR_CELL + "|" + SelectionManager.FOCUS_POLICY_CELL + "|" + SelectionManager.FIRST_EDITABLE_CELL + "|" + SelectionManager.FIRST_CELL, -1); } } } } private class TMP_Param_luzgqn_e1 extends ParameterizedMenuPart<SNode, TransformationMenuItem, TransformationMenuContext> { @NotNull @Override protected List<TransformationMenuItem> createItems(SNode parameter, TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Param_luzgqn_e1.TMP_Action_luzgqn_a4b(parameter).createItems(context); } @Nullable @Override protected Iterable<? extends SNode> getParameters(TransformationMenuContext _context) { Scope refScope = ModelConstraints.getSmartReferenceDescriptor(_context.getNode(), null, 0, MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118e0a1c55L, "jetbrains.mps.baseLanguage.regexp.structure.MatchVariableReferenceRegexp")).getScope(); return (List<SNode>) refScope.getAvailableElements(null); } private class TMP_Action_luzgqn_a4b extends SingleItemMenuPart<TransformationMenuItem, TransformationMenuContext> { private final SNode myParameterObject; public TMP_Action_luzgqn_a4b(SNode parameterObject) { myParameterObject = parameterObject; } @Nullable protected TransformationMenuItem createItem(TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Param_luzgqn_e1.TMP_Action_luzgqn_a4b.Item(context); } private class Item extends ActionItemBase implements SideTransformCompletionActionItem, ConstraintsVerifiableActionItem { private final TransformationMenuContext _context; private Item(TransformationMenuContext context) { _context = context; } @Nullable @Override public String getLabelText(String pattern) { return "\\(" + SPropertyOperations.getString(myParameterObject, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")) + ")"; } @Override public void execute(@NotNull String pattern) { SNode seq = SNodeFactoryOperations.createNewNode(_context.getModel(), SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174bc30e7L, "jetbrains.mps.baseLanguage.regexp.structure.SeqRegexp")), null); SNode ref = SNodeFactoryOperations.createNewNode(_context.getModel(), SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118e0a1c55L, "jetbrains.mps.baseLanguage.regexp.structure.MatchVariableReferenceRegexp")), null); SLinkOperations.setTarget(ref, MetaAdapterFactory.getReferenceLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118e0a1c55L, 0x1118e0a5335L, "match"), myParameterObject); SNodeOperations.replaceWithAnother(_context.getNode(), seq); SLinkOperations.setTarget(seq, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, 0x11174c59241L, "left"), _context.getNode()); SLinkOperations.setTarget(seq, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, 0x11174c5a26fL, "right"), ref); SelectionUtil.selectLabelCellAnSetCaret(_context.getEditorContext(), ref, SelectionManager.FIRST_ERROR_CELL + "|" + SelectionManager.FOCUS_POLICY_CELL + "|" + SelectionManager.FIRST_EDITABLE_CELL + "|" + SelectionManager.FIRST_CELL, -1); } @Nullable @Override public SAbstractConcept getOutputConcept() { return MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1118e0a1c55L, "jetbrains.mps.baseLanguage.regexp.structure.MatchVariableReferenceRegexp"); } @Override public String getShortDescriptionText(@NotNull String pattern) { return ""; } } } } private class TMP_Param_luzgqn_f1 extends ParameterizedMenuPart<SNode, TransformationMenuItem, TransformationMenuContext> { @NotNull @Override protected List<TransformationMenuItem> createItems(SNode parameter, TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Param_luzgqn_f1.TMP_Action_luzgqn_a5b(parameter).createItems(context); } @Nullable @Override protected Iterable<? extends SNode> getParameters(TransformationMenuContext _context) { return SModelOperations.nodesIncludingImported(SNodeOperations.getModel(_context.getNode()), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11178e59fd0L, "jetbrains.mps.baseLanguage.regexp.structure.PredefinedSymbolClassDeclaration")); } private class TMP_Action_luzgqn_a5b extends SingleItemMenuPart<TransformationMenuItem, TransformationMenuContext> { private final SNode myParameterObject; public TMP_Action_luzgqn_a5b(SNode parameterObject) { myParameterObject = parameterObject; } @Nullable protected TransformationMenuItem createItem(TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Param_luzgqn_f1.TMP_Action_luzgqn_a5b.Item(context); } private class Item extends ActionItemBase implements SideTransformCompletionActionItem, ConstraintsVerifiableActionItem { private final TransformationMenuContext _context; private Item(TransformationMenuContext context) { _context = context; } @Nullable @Override public String getLabelText(String pattern) { return SPropertyOperations.getString(myParameterObject, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")); } @Override public void execute(@NotNull String pattern) { SNode res = SNodeFactoryOperations.createNewNode(_context.getModel(), SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174bc30e7L, "jetbrains.mps.baseLanguage.regexp.structure.SeqRegexp")), null); SNodeOperations.replaceWithAnother(_context.getNode(), res); SLinkOperations.setTarget(res, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, 0x11174c59241L, "left"), _context.getNode()); SNode ref = SNodeFactoryOperations.createNewNode(_context.getModel(), SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11178fa2a18L, "jetbrains.mps.baseLanguage.regexp.structure.PredefinedSymbolClassRegexp")), null); SLinkOperations.setTarget(ref, MetaAdapterFactory.getReferenceLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11178fa2a18L, 0x11178fbdc7dL, "symbolClass"), myParameterObject); SLinkOperations.setTarget(res, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, 0x11174c5a26fL, "right"), ref); SelectionUtil.selectLabelCellAnSetCaret(_context.getEditorContext(), ref, SelectionManager.FIRST_ERROR_CELL + "|" + SelectionManager.FOCUS_POLICY_CELL + "|" + SelectionManager.FIRST_EDITABLE_CELL + "|" + SelectionManager.FIRST_CELL, -1); } @Nullable @Override public SAbstractConcept getOutputConcept() { return MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11178fa2a18L, "jetbrains.mps.baseLanguage.regexp.structure.PredefinedSymbolClassRegexp"); } @Override public String getShortDescriptionText(@NotNull String pattern) { return SPropertyOperations.getString(myParameterObject, MetaAdapterFactory.getProperty(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11178e59fd0L, 0x11178e7fa54L, "description")); } } } } private class TMP_Param_luzgqn_g1 extends ParameterizedMenuPart<SNode, TransformationMenuItem, TransformationMenuContext> { @NotNull @Override protected List<TransformationMenuItem> createItems(SNode parameter, TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Param_luzgqn_g1.TMP_Action_luzgqn_a6b(parameter).createItems(context); } @Nullable @Override protected Iterable<? extends SNode> getParameters(TransformationMenuContext _context) { return SModelOperations.nodesIncludingImported(SNodeOperations.getModel(_context.getNode()), MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174a6454dL, "jetbrains.mps.baseLanguage.regexp.structure.RegexpDeclaration")); } private class TMP_Action_luzgqn_a6b extends SingleItemMenuPart<TransformationMenuItem, TransformationMenuContext> { private final SNode myParameterObject; public TMP_Action_luzgqn_a6b(SNode parameterObject) { myParameterObject = parameterObject; } @Nullable protected TransformationMenuItem createItem(TransformationMenuContext context) { return new Regexp_TransformationMenu.TMP_Param_luzgqn_g1.TMP_Action_luzgqn_a6b.Item(context); } private class Item extends ActionItemBase implements SideTransformCompletionActionItem, ConstraintsVerifiableActionItem { private final TransformationMenuContext _context; private Item(TransformationMenuContext context) { _context = context; } @Nullable @Override public String getLabelText(String pattern) { return SPropertyOperations.getString(myParameterObject, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name")); } @Override public void execute(@NotNull String pattern) { SNode seq = SNodeFactoryOperations.createNewNode(_context.getModel(), SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174bc30e7L, "jetbrains.mps.baseLanguage.regexp.structure.SeqRegexp")), null); SNodeOperations.replaceWithAnother(_context.getNode(), seq); SLinkOperations.setTarget(seq, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, 0x11174c59241L, "left"), _context.getNode()); SNode ref = SNodeFactoryOperations.createNewNode(_context.getModel(), SNodeFactoryOperations.asInstanceConcept(MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1117f58ea2aL, "jetbrains.mps.baseLanguage.regexp.structure.RegexpDeclarationReferenceRegexp")), null); SLinkOperations.setTarget(ref, MetaAdapterFactory.getReferenceLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1117f58ea2aL, 0x1117f594636L, "regexp"), myParameterObject); SLinkOperations.setTarget(seq, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, 0x11174c5a26fL, "right"), ref); SelectionUtil.selectLabelCellAnSetCaret(_context.getEditorContext(), SLinkOperations.getTarget(seq, MetaAdapterFactory.getContainmentLink(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174c56bf9L, 0x11174c5a26fL, "right")), SelectionManager.FIRST_ERROR_CELL + "|" + SelectionManager.FOCUS_POLICY_CELL + "|" + SelectionManager.FIRST_EDITABLE_CELL + "|" + SelectionManager.FIRST_CELL, -1); } @Nullable @Override public SAbstractConcept getOutputConcept() { return MetaAdapterFactory.getConcept(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x1117f58ea2aL, "jetbrains.mps.baseLanguage.regexp.structure.RegexpDeclarationReferenceRegexp"); } @Override public String getShortDescriptionText(@NotNull String pattern) { return SPropertyOperations.getString(myParameterObject, MetaAdapterFactory.getProperty(0xdaafa647f1f74b0bL, 0xb09669cd7c8408c0L, 0x11174a6454dL, 0x1117f5e9a48L, "description")); } } } } private static boolean isEmptyString(String str) { return str == null || str.length() == 0; } private static Pattern REGEXP_luzgqn_a0a0a0e2d5 = Pattern.compile("\\{\\d+\\}?", 0); private static Pattern REGEXP_luzgqn_a0a0d0g2d5 = Pattern.compile("^\\{(\\d+)", 0); private static Pattern REGEXP_luzgqn_a0a0a0e2e5 = Pattern.compile("\\{\\d+(?:,\\}?)?", 0); private static Pattern REGEXP_luzgqn_a0a0d0g2e5 = Pattern.compile("^\\{(\\d+)", 0); private static Pattern REGEXP_luzgqn_a0a0a0e2f5 = Pattern.compile("\\{\\d+(?:,(?:\\d+\\}?)?)?", 0); private static Pattern REGEXP_luzgqn_a0a0d0e2f5 = Pattern.compile("\\{\\d+,(\\d+)", 0); private static Pattern REGEXP_luzgqn_a0a0e0e2f5 = Pattern.compile("\\{(\\d+)", 0); private static Pattern REGEXP_luzgqn_a0a0d0g2f5 = Pattern.compile("\\{\\d+,(\\d+)", 0); private static Pattern REGEXP_luzgqn_a0a0e0g2f5 = Pattern.compile("\\{(\\d+)", 0); }