package jetbrains.mps.ide.devkit.actions;
/*Generated by MPS */
import jetbrains.mps.plugins.relations.RelationDescriptor;
import javax.swing.Icon;
import jetbrains.mps.icons.MPSIcons;
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import org.jetbrains.mps.openapi.module.SModule;
import jetbrains.mps.smodel.Language;
import java.util.ArrayList;
import org.jetbrains.mps.openapi.model.SModel;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModuleOperations;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.smodel.behaviour.BHReflection;
import jetbrains.mps.core.aspects.behaviour.SMethodTrimmedId;
import org.jetbrains.mps.openapi.language.SConcept;
import jetbrains.mps.smodel.LanguageAspect;
import jetbrains.mps.kernel.language.ConceptAspectsHelper;
import jetbrains.mps.smodel.action.SNodeFactoryOperations;
import org.jetbrains.mps.openapi.language.SAbstractConcept;
public class Actions_TabDescriptor extends RelationDescriptor {
private static final Icon ICON = MPSIcons.Nodes.Action;
public Actions_TabDescriptor() {
}
public String getTitle() {
return "Actions";
}
public Character getShortcutChar() {
return 'A';
}
public int compareTo(RelationDescriptor descriptor) {
return new Actions_Order().compare(this, descriptor);
}
public void startListening() {
}
public SNode getBaseNode(SNode node) {
return ConceptEditorOpenHelper.getBaseNode(node);
}
public boolean isApplicable(SNode node) {
return SNodeOperations.isInstanceOf(node, MetaAdapterFactory.getConcept(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x1103553c5ffL, "jetbrains.mps.lang.structure.structure.AbstractConceptDeclaration"));
}
@Nullable
public Icon getIcon() {
return ICON;
}
public List<SNode> getNodes(SNode node) {
SModule module = SNodeOperations.getModel(node).getModule();
if (!((module instanceof Language))) {
return new ArrayList<SNode>();
}
SModel aspectModel = SModuleOperations.getAspect(module, "actions");
if (aspectModel == null) {
return new ArrayList<SNode>();
}
return Sequence.fromIterable(((Iterable<SNode>) BHReflection.invoke(node, SMethodTrimmedId.create("findConceptAspects", MetaAdapterFactory.getConcept(0xc72da2b97cce4447L, 0x8389f407dc1158b7L, 0x1103553c5ffL, "jetbrains.mps.lang.structure.structure.AbstractConceptDeclaration"), "4G9PD8$NvPM"), aspectModel))).toListSequence();
}
public boolean isSingle() {
return false;
}
public Iterable<SConcept> getAspectConcepts(final SNode node) {
return ConceptEditorHelper.getAvailableConceptAspects(LanguageAspect.ACTIONS, node);
}
public SNode createAspect(final SNode node, final SConcept concept) {
return ConceptAspectsHelper.attachNewConceptAspect(LanguageAspect.ACTIONS, node, SNodeFactoryOperations.createNewNode(SNodeFactoryOperations.asInstanceConcept(((SAbstractConcept) concept)), null));
}
}