package jetbrains.mps.baseLanguage.refactorings;
/*Generated by MPS */
import jetbrains.mps.refactoring.framework.BaseRefactoring;
import jetbrains.mps.refactoring.framework.IRefactoringTarget;
import jetbrains.mps.refactoring.framework.RefactoringContext;
import jetbrains.mps.baseLanguage.util.plugin.refactorings.ChangeMethodSignatureRefactoring;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import java.util.List;
import jetbrains.mps.ide.findusages.model.SearchResults;
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.ide.findusages.view.FindUtils;
import jetbrains.mps.progress.EmptyProgressMonitor;
import java.util.ArrayList;
import jetbrains.mps.ide.findusages.model.SearchResult;
public class ChangeMethodSignature extends BaseRefactoring {
public ChangeMethodSignature() {
this.addTransientParameter("myRefactorings");
}
public IRefactoringTarget getRefactoringTarget() {
return new ChangeMethodSignature_Target();
}
public String getUserFriendlyName() {
return "Change Method Signature";
}
public void refactor(final RefactoringContext refactoringContext) {
for (ChangeMethodSignatureRefactoring ref : ListSequence.fromList(((List<ChangeMethodSignatureRefactoring>) refactoringContext.getParameter("myRefactorings")))) {
ref.doRefactoring();
}
}
public SearchResults getAffectedNodes(final RefactoringContext refactoringContext) {
SearchResults<SNode> allResults = new SearchResults();
for (ChangeMethodSignatureRefactoring ref : ListSequence.fromList(((List<ChangeMethodSignatureRefactoring>) refactoringContext.getParameter("myRefactorings")))) {
SearchResults<SNode> curResults = FindUtils.getSearchResults(new EmptyProgressMonitor(), ref.getDeclaration(), refactoringContext.getCurrentScope(), "jetbrains.mps.baseLanguage.findUsages.ExactMethodUsages_Finder");
List<SNode> usages = new ArrayList<SNode>();
for (SearchResult<SNode> result : ListSequence.fromList(curResults.getSearchResults())) {
ListSequence.fromList(usages).addElement(result.getObject());
}
ref.setUsages(usages);
allResults.addAll(curResults);
}
return allResults;
}
}