package jetbrains.mps.lang.editor.behavior; /*Generated by MPS */ import jetbrains.mps.scope.FilteringScope; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.scope.ModelsScope; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import java.util.Collection; import java.util.Set; import jetbrains.mps.internal.collections.runtime.SetSequence; import java.util.HashSet; import jetbrains.mps.smodel.Language; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModuleOperations; import org.jetbrains.mps.openapi.module.SDependency; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SLinkOperations; import jetbrains.mps.lang.structure.behavior.AbstractConceptDeclaration__BehaviorDescriptor; /*package*/ class EditorComponentDeclarationScope extends FilteringScope { private SNode myConceptDeclaration; private EditorComponentDeclarationScope(final SModel model, SNode concept) { super(new ModelsScope(getModels(model), false, MetaAdapterFactory.getConcept(0x18bc659203a64e29L, 0xa83a7ff23bde13baL, 0xfb35c2bb47L, "jetbrains.mps.lang.editor.structure.EditorComponentDeclaration"))); myConceptDeclaration = concept; } /*package*/ EditorComponentDeclarationScope(SNode editorComponent) { this(SNodeOperations.getModel(editorComponent), AbstractComponent__BehaviorDescriptor.getConceptDeclaration_id67EYkym$wx3.invoke(editorComponent)); } private static Collection<SModel> getModels(SModel model) { Set<SModel> editorModels = SetSequence.fromSet(new HashSet<SModel>()); if (model.getModule() instanceof Language) { Language language = (Language) model.getModule(); SetSequence.fromSet(editorModels).addElement(SModuleOperations.getAspect(language, "editor")); for (SDependency dep : Sequence.fromIterable(language.getDeclaredDependencies())) { if (dep.getTarget() instanceof Language) { SetSequence.fromSet(editorModels).addElement(SModuleOperations.getAspect(dep.getTarget(), "editor")); } } } return editorModels; } @Override public boolean isExcluded(SNode node) { SNode editorComponent = SNodeOperations.as(node, MetaAdapterFactory.getConcept(0x18bc659203a64e29L, 0xa83a7ff23bde13baL, 0xfb35c2bb47L, "jetbrains.mps.lang.editor.structure.EditorComponentDeclaration")); return editorComponent == null || SLinkOperations.getTarget(editorComponent, MetaAdapterFactory.getContainmentLink(0x18bc659203a64e29L, 0xa83a7ff23bde13baL, 0xfb35c2bb47L, 0x619d955714550434L, "overridenEditorComponent")) != null || !((boolean) AbstractConceptDeclaration__BehaviorDescriptor.isSubconceptOf_id73yVtVlWOga.invoke(myConceptDeclaration, AbstractComponent__BehaviorDescriptor.getConceptDeclaration_id67EYkym$wx3.invoke(editorComponent))); } }