package jetbrains.mps.baseLanguage.util.plugin.refactorings; /*Generated by MPS */ import java.util.List; import org.jetbrains.mps.openapi.model.SNode; import java.util.ArrayList; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SConceptOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; import jetbrains.mps.smodel.CopyUtil; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; public class ExtractMethodFromStatementsRefactoring extends ExtractMethodRefactoring { protected List<SNode> myStatements = new ArrayList<SNode>(); public ExtractMethodFromStatementsRefactoring(ExtractMethodRefactoringParameters params) { super(params); ListSequence.fromList(this.myStatements).addSequence(ListSequence.fromList(((List<SNode>) params.getNodesToRefactor()))); } @Override protected SNode createMethodBody() { SNode body = SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b200L, "jetbrains.mps.baseLanguage.structure.StatementList")); this.modifyPartToExtract(); ListSequence.fromList(SLinkOperations.getChildren(body, MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b200L, 0xf8cc6bf961L, "statement"))).addSequence(ListSequence.fromList((List<SNode>) CopyUtil.copy(this.myStatements))); return body; } @Override public void replaceMatch(MethodMatch match, SNode methodDeclaration) { SNode methodCall = this.createMethodCall(match, methodDeclaration); SNode callStatement = SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b213L, "jetbrains.mps.baseLanguage.structure.ExpressionStatement")); SLinkOperations.setTarget(callStatement, MetaAdapterFactory.getContainmentLink(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc56b213L, 0xf8cc56b214L, "expression"), methodCall); List<SNode> statements = match.getNodes(); SNodeOperations.insertPrevSiblingChild(ListSequence.fromList(statements).first(), callStatement); for (SNode statement : ListSequence.fromList(statements)) { SNodeOperations.deleteNode(statement); } } protected void modifyPartToExtract() { } @Override public SNode getMethodType() { return SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8cc6bf96dL, "jetbrains.mps.baseLanguage.structure.VoidType")); } }