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);
}