package jetbrains.mps.editor.runtime.impl.cellActions; /*Generated by MPS */ import jetbrains.mps.editor.runtime.cells.AbstractCellAction; import org.jetbrains.mps.openapi.model.SNode; import org.jetbrains.mps.openapi.language.SProperty; import jetbrains.mps.nodeEditor.cellActions.CellAction_DeleteNode; import jetbrains.mps.openapi.editor.EditorContext; import org.jetbrains.mps.openapi.model.SNodeAccessUtil; public class CellAction_DeleteSPropertyOrNode extends AbstractCellAction { private final SNode mySemanticNode; private final SProperty myProperty; private final CellAction_DeleteNode.DeleteDirection myDirection; public CellAction_DeleteSPropertyOrNode(SNode semanticNode, SProperty property) { this(semanticNode, property, CellAction_DeleteNode.DeleteDirection.FORWARD); } public CellAction_DeleteSPropertyOrNode(SNode semanticNode, SProperty property, CellAction_DeleteNode.DeleteDirection direction) { mySemanticNode = semanticNode; myProperty = property; myDirection = direction; } @Override public boolean canExecute(EditorContext context) { return true; } @Override public void execute(EditorContext context) { if (SNodeAccessUtil.getProperty(mySemanticNode, myProperty) != null) { SNodeAccessUtil.setProperty(mySemanticNode, myProperty, null); } else { CellAction_DeleteEasily deleteAction = new CellAction_DeleteEasily(mySemanticNode, myDirection); if (deleteAction.canExecute(context)) { deleteAction.execute(context); } } } }