package jetbrains.mps.lang.structure.findUsages; /*Generated by MPS */ import jetbrains.mps.ide.findusages.findalgorithm.finders.GeneratedFinder; import org.jetbrains.mps.openapi.language.SAbstractConcept; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.mps.openapi.module.SearchScope; import java.util.List; import org.jetbrains.mps.openapi.util.ProgressMonitor; import java.util.Set; import jetbrains.mps.internal.collections.runtime.SetSequence; import java.util.HashSet; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import org.jetbrains.mps.openapi.model.SReference; import org.jetbrains.mps.openapi.module.FindUsagesFacade; import org.jetbrains.annotations.Nullable; import org.jetbrains.mps.openapi.model.SNodeReference; public class NodeAndDescendantsUsages_Finder extends GeneratedFinder { public NodeAndDescendantsUsages_Finder() { } @Override public String getDescription() { return "Node & Descendants Usages"; } @Override public String getLongDescription() { return ""; } @Override public SAbstractConcept getSConcept() { return MetaAdapterFactory.getConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x10802efe25aL, "jetbrains.mps.lang.core.structure.BaseConcept"); } @Override protected void doFind(SNode node, SearchScope scope, List<SNode> _results, ProgressMonitor monitor) { try { Set<SNode> nodes = SetSequence.fromSet(new HashSet<SNode>()); SetSequence.fromSet(nodes).addElement(node); for (SNode child : ListSequence.fromList(SNodeOperations.getNodeDescendants(node, null, false, new SAbstractConcept[]{}))) { SetSequence.fromSet(nodes).addElement(child); } // Set<SReference> resRefs = FindUsagesFacade.getInstance().findUsages(scope, nodes, monitor); for (SReference reference : resRefs) { SNode snode = ((SNode) reference.getSourceNode()); if (!(SetSequence.fromSet(nodes).contains(snode))) { ListSequence.fromList(_results).addElement(snode); } } } finally { monitor.done(); } } @Override public void getSearchedNodes(SNode node, SearchScope scope, List<SNode> _results) { ListSequence.fromList(_results).addElement(node); } @Override public String getNodeCategory(SNode node) { return "Node Descendants Usages"; } @Nullable @Override public SNodeReference getDeclarationNode() { return buildNodePointer(FindUsagesDescriptor.DECLARING_MODEL, "1198430852441"); } }