package jetbrains.mps.smodel.undo; /*Generated by MPS */ import org.jetbrains.annotations.NotNull; import org.jetbrains.mps.openapi.model.SNode; import java.util.List; import jetbrains.mps.smodel.SNodeUndoableAction; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.internal.collections.runtime.ListSequence; import jetbrains.mps.internal.collections.runtime.IWhereFilter; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; public abstract class NodeBasedCommand extends DefaultCommand { @NotNull private SNode myMainNode; public NodeBasedCommand(@NotNull SNode mainNode) { myMainNode = mainNode; } @Override public Iterable<SNode> getVirtualFileNodes(List<SNodeUndoableAction> actions) { return Sequence.fromIterable(super.getVirtualFileNodes(ListSequence.fromList(actions).where(new IWhereFilter<SNodeUndoableAction>() { public boolean accept(SNodeUndoableAction it) { return !(SNodeOperations.getNodeAncestors(((SNode) it.getAffectedNode()), null, false).contains(myMainNode)); } }).toListSequence())).union(Sequence.fromIterable(Sequence.<SNode>singleton(myMainNode))); } }