package jetbrains.mps.vcs.diff.changes;
/*Generated by MPS */
import org.jetbrains.mps.openapi.model.SNodeId;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.vcs.diff.ChangeSet;
import org.jetbrains.mps.openapi.language.SContainmentLink;
import org.jetbrains.mps.openapi.model.SModel;
public class NodeGroupStructChange extends NodeGroupChange {
private final SNodeId myOppositeNodeId;
public NodeGroupStructChange(@NotNull ChangeSet changeSet, @NotNull SNodeId parentNodeId, @NotNull SNodeId newParentNodeId, @NotNull SContainmentLink role, int begin, int end, int resultBegin, int resultEnd) {
super(changeSet, parentNodeId, role, begin, end, resultBegin, resultEnd);
myOppositeNodeId = newParentNodeId;
}
@NotNull
@Override
public SNodeId getParentNodeId(boolean isNewModel) {
return (isNewModel ? myOppositeNodeId : super.getParentNodeId(false));
}
@Override
public void apply(@NotNull SModel model, @NotNull NodeCopier nodeCopier) {
assert model == getChangeSet().getOldModel();
super.apply(model, nodeCopier);
}
@NotNull
@Override
protected ModelChange createOppositeChange() {
return new NodeGroupStructChange(getChangeSet().getOppositeChangeSet(), getParentNodeId(true), getParentNodeId(false), getRoleLink(), getResultBegin(), getResultEnd(), getBegin(), getEnd());
}
}