package jetbrains.mps.execution.lib.ui; /*Generated by MPS */ import org.jetbrains.annotations.NotNull; import org.jetbrains.mps.openapi.language.SAbstractConcept; import org.jetbrains.annotations.Nullable; import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.mps.openapi.module.SearchScope; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.project.GlobalScope; import java.util.List; import org.jetbrains.mps.openapi.module.FindUsagesFacade; import org.jetbrains.mps.openapi.util.ProgressMonitor; import java.util.Set; import java.util.Collections; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import jetbrains.mps.internal.collections.runtime.IWhereFilter; public class NodeByConceptChooser extends NodeChooser { @NotNull private SAbstractConcept myTargetConcept; @Nullable private _FunctionTypes._return_P1_E0<? extends Boolean, ? super SNode> myAcceptor; private final SearchScope myScope; public NodeByConceptChooser() { this(MetaAdapterFactory.getConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x10802efe25aL, "jetbrains.mps.lang.core.structure.BaseConcept"), null); } public NodeByConceptChooser(SAbstractConcept conceptFqName, @Nullable _FunctionTypes._return_P1_E0<? extends Boolean, ? super SNode> acceptor) { super(); myTargetConcept = conceptFqName; myAcceptor = acceptor; myScope = GlobalScope.getInstance(); } public SAbstractConcept getTargetConcept() { return myTargetConcept; } public void setTargetConcept(SAbstractConcept targetConcept) { myTargetConcept = targetConcept; } public _FunctionTypes._return_P1_E0<? extends Boolean, ? super SNode> getAcceptor() { return myAcceptor; } public void setAcceptor(_FunctionTypes._return_P1_E0<? extends Boolean, ? super SNode> acceptor) { myAcceptor = acceptor; } @Override protected List<SNode> findToChooseFromOnInit(FindUsagesFacade manager, ProgressMonitor monitor) { Set<SNode> instances = manager.findInstances(myScope, Collections.singleton(myTargetConcept), false, monitor); if (this.myAcceptor == null) { return ListSequence.fromListWithValues(new ArrayList<SNode>(), instances); } else { return ListSequence.fromList(ListSequence.fromListWithValues(new ArrayList<SNode>(), instances)).where(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return NodeByConceptChooser.this.myAcceptor.invoke(it); } }).toListSequence(); } } }