package jetbrains.mps.console.scripts.runtime.util; /*Generated by MPS */ import jetbrains.mps.console.tool.ConsoleContext; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.console.scripts.behavior.AbstractConsoleScript__BehaviorDescriptor; import javax.swing.SwingUtilities; import jetbrains.mps.internal.collections.runtime.Sequence; import java.util.List; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.console.tool.BaseConsoleTab; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import jetbrains.mps.ide.findusages.model.SearchResults; import org.jetbrains.mps.openapi.module.SRepository; import jetbrains.mps.ide.platform.refactoring.RefactoringAccessEx; import jetbrains.mps.ide.project.ProjectHelper; import jetbrains.mps.ide.platform.refactoring.RefactoringViewAction; import jetbrains.mps.ide.platform.refactoring.RefactoringViewItem; import jetbrains.mps.ide.refactoring.RefactoringViewItemImpl; import org.jetbrains.mps.openapi.model.SNodeReference; import jetbrains.mps.internal.collections.runtime.ISelector; import jetbrains.mps.internal.collections.runtime.IVisitor; import jetbrains.mps.ide.findusages.model.SearchResult; public class ScriptsUtil { public static void executeScript(final ConsoleContext context, SNode script) { final Iterable<SNode> commands = AbstractConsoleScript__BehaviorDescriptor.getCommands_id1whNchEKZry.invoke(script); SwingUtilities.invokeLater(new Runnable() { public void run() { executeCommands(context, Sequence.fromIterable(commands).toListSequence(), 0); } }); } public static void executeCommands(final ConsoleContext context, final List<SNode> commands, final int startWith) { if (startWith == ListSequence.fromList(commands).count()) { return; } context.getProject().getModelAccess().executeCommand(new Runnable() { public void run() { ((BaseConsoleTab) context.getOutputWindow()).execute(ListSequence.fromList(commands).getElement(startWith), null, new Runnable() { public void run() { executeCommands(context, commands, startWith + 1); } }); } }); } public static void refactor(final ConsoleContext context, final Iterable<SNode> nodes, final _FunctionTypes._void_P1_E0<? super SNode> toExecuteWithEachNode) { SearchResults sr = nodesToRefactoringResult(nodes); final SRepository projectRepo = context.getProject().getRepository(); RefactoringAccessEx.getInstance().showRefactoringView(ProjectHelper.toIdeaProject(context.getProject()), new RefactoringViewAction() { public void performAction(final RefactoringViewItem refactoringViewItem) { projectRepo.getModelAccess().executeCommand(new Runnable() { public void run() { Iterable<SNode> includedNodes; if (refactoringViewItem instanceof RefactoringViewItemImpl) { List<SNodeReference> nodeRefs = as_bb8vid_a0a0a0a1a0a0a0a0a0a0b0a2a5(refactoringViewItem, RefactoringViewItemImpl.class).getUsagesView().getIncludedResultNodes(); includedNodes = ListSequence.fromList(nodeRefs).select(new ISelector<SNodeReference, SNode>() { public SNode select(SNodeReference it) { return it.resolve(projectRepo); } }); } else { includedNodes = nodes; } for (SNode resultNode : Sequence.fromIterable(includedNodes)) { if (resultNode != null) { toExecuteWithEachNode.invoke(resultNode); } } } }); refactoringViewItem.close(); context.getOutputWindow().activate(); } }, sr, false, "refactor"); } private static SearchResults<SNode> nodesToRefactoringResult(Iterable<SNode> nodes) { final SearchResults<SNode> result = new SearchResults<SNode>(); Sequence.fromIterable(nodes).visitAll(new IVisitor<SNode>() { public void visit(SNode it) { result.getSearchResults().add(new SearchResult<SNode>(it, "Nodes to refactor")); } }); return result; } private static <T> T as_bb8vid_a0a0a0a1a0a0a0a0a0a0b0a2a5(Object o, Class<T> type) { return (type.isInstance(o) ? (T) o : null); } }