package jetbrains.mps.baseLanguage.refactorings; /*Generated by MPS */ import jetbrains.mps.refactoring.framework.BaseRefactoring; import jetbrains.mps.refactoring.framework.IRefactoringTarget; import jetbrains.mps.lang.core.refactorings.Rename; import jetbrains.mps.refactoring.framework.RefactoringContext; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.baseLanguage.util.plugin.refactorings.MethodRefactoringUtil; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.baseLanguage.util.plugin.refactorings.MethodRefactoringUtils; import jetbrains.mps.progress.EmptyProgressMonitor; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SPropertyOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import java.util.List; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.ide.findusages.model.SearchResults; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.ide.findusages.view.FindUtils; public class RenameMethod extends BaseRefactoring { public RenameMethod() { this.addTransientParameter("newName"); } public IRefactoringTarget getRefactoringTarget() { return new RenameMethod_Target(); } public String getUserFriendlyName() { return "Rename Method"; } public Class getOverridenRefactoringClass() { return Rename.class; } public void refactor(final RefactoringContext refactoringContext) { SNode method = MethodRefactoringUtil.getMethodDeclaration(refactoringContext.getSelectedNode()); for (SNode node : ListSequence.fromList(MethodRefactoringUtils.findOverridingMethods(refactoringContext.getCurrentScope(), method, new EmptyProgressMonitor()))) { SPropertyOperations.set(node, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name"), ((String) refactoringContext.getParameter("newName"))); } SPropertyOperations.set(method, MetaAdapterFactory.getProperty(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, 0x110396ec041L, "name"), ((String) refactoringContext.getParameter("newName"))); } public List<SModel> getModelsToGenerate(final RefactoringContext refactoringContext) { return (List<SModel>) refactoringContext.getModelsFromUsages(refactoringContext.getSelectedModel()); } public SearchResults getAffectedNodes(final RefactoringContext refactoringContext) { SNode method = MethodRefactoringUtil.getMethodDeclaration(refactoringContext.getSelectedNode()); if (SNodeOperations.isInstanceOf(method, MetaAdapterFactory.getConcept(0xaf65afd8f0dd4942L, 0x87d963a55f2a9db1L, 0x11d4348057eL, "jetbrains.mps.lang.behavior.structure.ConceptMethodDeclaration"))) { return FindUtils.getSearchResults(new EmptyProgressMonitor(), method, refactoringContext.getCurrentScope(), "jetbrains.mps.baseLanguage.findUsages.ExactMethodUsages_Finder", "jetbrains.mps.lang.behavior.findUsages.OverridingMethods_Finder"); } else { return FindUtils.getSearchResults(new EmptyProgressMonitor(), method, refactoringContext.getCurrentScope(), "jetbrains.mps.baseLanguage.findUsages.BaseMethodUsages_Finder"); } } }