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;
}
}