package jetbrains.mps.lang.editor.imageGen.testLanguage.intentions;
/*Generated by MPS */
import jetbrains.mps.editor.intentions.IntentionsFactory;
import jetbrains.mps.editor.intentions.NodeTransformer;
import org.jetbrains.mps.openapi.language.SAbstractConcept;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import jetbrains.mps.smodel.SNodePointer;
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.openapi.editor.EditorContext;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.AttributeOperations;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.IAttributeDescriptor;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SConceptOperations;
import java.util.Collection;
import jetbrains.mps.internal.collections.runtime.CollectionSequence;
import java.util.ArrayList;
import jetbrains.mps.editor.intentions.BaseNodeTransformer;
public class AddExportAsImageAttribute extends IntentionsFactory {
public AddExportAsImageAttribute() {
}
public String getId() {
return getClass().getName();
}
public boolean isAvailableInChildren() {
return true;
}
public boolean isSurroundWith() {
return false;
}
public NodeTransformer.Kind getKind() {
return NodeTransformer.Kind.INTENTION;
}
public SAbstractConcept getApplicableConcept() {
return MetaAdapterFactory.getInterfaceConcept(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L, "jetbrains.mps.lang.core.structure.INamedConcept");
}
public SNodePointer getDeclarationNode() {
return implementationNode;
}
private SNodePointer implementationNode = new SNodePointer("r:f4a32df3-ddb6-4338-8cd1-da1b81738090(jetbrains.mps.lang.editor.imageGen.testLanguage.intentions)", "2442780630506700692");
private boolean isApplicableHelper(SNode node, EditorContext editorContext) {
return SNodeOperations.getParent(node) == null;
}
public boolean isAvailableInChild(SNode node, SNode node1, EditorContext context) {
return true;
}
public boolean isApplicable(SNode node, EditorContext editorContext) {
return isApplicableHelper(node, editorContext);
}
public void execute(SNode node, EditorContext editorContext) {
if (AttributeOperations.getAttribute(node, new IAttributeDescriptor.NodeAttribute(MetaAdapterFactory.getConcept(0x9bcd3d4bc7894f70L, 0x85e4038ea20762b9L, 0x21e6800a818d97ecL, "jetbrains.mps.lang.editor.imageGen.testLanguage.structure.ExportAsImage"))) == null) {
AttributeOperations.setAttribute(node, new IAttributeDescriptor.NodeAttribute(MetaAdapterFactory.getConcept(0x9bcd3d4bc7894f70L, 0x85e4038ea20762b9L, 0x21e6800a818d97ecL, "jetbrains.mps.lang.editor.imageGen.testLanguage.structure.ExportAsImage")), SConceptOperations.createNewNode(MetaAdapterFactory.getConcept(0x9bcd3d4bc7894f70L, 0x85e4038ea20762b9L, 0x21e6800a818d97ecL, "jetbrains.mps.lang.editor.imageGen.testLanguage.structure.ExportAsImage")));
} else {
AttributeOperations.setAttribute(node, new IAttributeDescriptor.NodeAttribute(MetaAdapterFactory.getConcept(0x9bcd3d4bc7894f70L, 0x85e4038ea20762b9L, 0x21e6800a818d97ecL, "jetbrains.mps.lang.editor.imageGen.testLanguage.structure.ExportAsImage")), null);
}
}
public String description(SNode node, EditorContext editorContext) {
return ((AttributeOperations.getAttribute(node, new IAttributeDescriptor.NodeAttribute(MetaAdapterFactory.getConcept(0x9bcd3d4bc7894f70L, 0x85e4038ea20762b9L, 0x21e6800a818d97ecL, "jetbrains.mps.lang.editor.imageGen.testLanguage.structure.ExportAsImage"))) == null ? "Add" : "Remove")) + " export as image annotation";
}
public Collection<NodeTransformer> getTreeTransformers(SNode node, SNode child, EditorContext editorContext) {
Collection<NodeTransformer> result = CollectionSequence.fromCollection(new ArrayList<NodeTransformer>());
CollectionSequence.fromCollection(result).addElement(new BaseNodeTransformer(this, node, editorContext, AddExportAsImageAttribute.this.getKind(), implementationNode) {
protected void execute(SNode node, EditorContext editorContext) {
AddExportAsImageAttribute.this.execute(node, editorContext);
}
protected String getDescription(SNode node, EditorContext editorContext) {
return AddExportAsImageAttribute.this.description(node, editorContext);
}
});
return result;
}
}