package jetbrains.mps.editor.runtime.impl.cellActions; /*Generated by MPS */ import jetbrains.mps.nodeEditor.cellActions.CellAction_DeleteNode; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.openapi.editor.EditorContext; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.lang.smodel.generator.smodelAdapter.AttributeOperations; import org.jetbrains.mps.openapi.language.SContainmentLink; public class CellAction_DeleteEasily extends CellAction_DeleteNode { public CellAction_DeleteEasily(SNode semanticNode) { super(semanticNode); } public CellAction_DeleteEasily(SNode semanticNode, CellAction_DeleteNode.DeleteDirection direction) { super(semanticNode, direction); } @Override public boolean canExecute(EditorContext context) { return super.canExecute(context) && canBeDeletedEasily(); } private boolean canBeDeletedEasily() { SNode semanticNode = getSourceNode(); for (SNode child : ListSequence.fromList(SNodeOperations.getChildren(semanticNode)).where(new IWhereFilter<SNode>() { public boolean accept(SNode it) { return !(AttributeOperations.isAttribute(it)); } })) { SContainmentLink l = SNodeOperations.getContainingLink(child); if (l.isValid() && (l.isMultiple() || l.isOptional())) { return false; } } return true; } }