package jetbrains.mps.refactoring.participant; /*Generated by MPS */ import java.util.List; import org.jetbrains.mps.openapi.module.SRepository; import org.jetbrains.mps.openapi.module.SearchScope; import org.jetbrains.mps.openapi.util.ProgressMonitor; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import jetbrains.mps.internal.collections.runtime.ITranslator2; public abstract class RefactoringParticipantBase<InitialDataObject, FinalDataObject, InitialPoint, FinalPoint> implements RefactoringParticipant<InitialDataObject, FinalDataObject, InitialPoint, FinalPoint> { public List<List<RefactoringParticipant.Change<InitialDataObject, FinalDataObject>>> getChanges(List<InitialDataObject> initialStates, SRepository repository, List<RefactoringParticipant.Option> selectedOptions, SearchScope searchScope, ProgressMonitor progressMonitor) { RefactoringParticipant.Option firstOption = ListSequence.fromList(getAvailableOptions(initialStates, repository)).first(); progressMonitor.start((firstOption == null ? "" : firstOption.getDescription()), ListSequence.fromList(initialStates).count()); List<List<RefactoringParticipant.Change<InitialDataObject, FinalDataObject>>> result = ListSequence.fromList(new ArrayList<List<RefactoringParticipant.Change<InitialDataObject, FinalDataObject>>>(ListSequence.fromList(initialStates).count())); for (InitialDataObject initialState : ListSequence.fromList(initialStates)) { ListSequence.fromList(result).addElement(getChanges(initialState, repository, selectedOptions, searchScope, progressMonitor.subTask(1))); if (progressMonitor.isCanceled()) { return null; } } progressMonitor.done(); return result; } public List<RefactoringParticipant.Change<InitialDataObject, FinalDataObject>> getChanges(InitialDataObject initialState, SRepository repository, List<RefactoringParticipant.Option> selectedOptions, SearchScope searchScope, ProgressMonitor progressMonitor) { return getChanges(initialState, repository, selectedOptions, searchScope); } public List<RefactoringParticipant.Change<InitialDataObject, FinalDataObject>> getChanges(InitialDataObject initialState, SRepository repository, List<RefactoringParticipant.Option> selectedOptions, SearchScope searchScope) { throw new UnsupportedOperationException(); } public List<RefactoringParticipant.Option> getAvailableOptions(List<InitialDataObject> initialStates, final SRepository repository) { return ListSequence.fromList(initialStates).translate(new ITranslator2<InitialDataObject, RefactoringParticipant.Option>() { public Iterable<RefactoringParticipant.Option> translate(InitialDataObject initialState) { return getAvailableOptions(initialState, repository); } }).distinct().toListSequence(); } public List<RefactoringParticipant.Option> getAvailableOptions(InitialDataObject initialState, SRepository repository) { throw new UnsupportedOperationException(); } }