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