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.model.SModel;
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModelOperations;
public class AddRootChange extends ModelChange {
private SNodeId myNodeId;
public AddRootChange(@NotNull ChangeSet changeSet, @NotNull SNodeId nodeId) {
super(changeSet);
myNodeId = nodeId;
}
@NotNull
@Override
public SNodeId getRootId() {
return myNodeId;
}
@Override
public void apply(@NotNull SModel model, @NotNull NodeCopier nodeCopier) {
SNode newNode = getChangeSet().getNewModel().getNode(myNodeId);
SModelOperations.addRootNode(model, nodeCopier.copyNode(newNode));
}
@NotNull
@Override
protected ModelChange createOppositeChange() {
return new DeleteRootChange(getChangeSet().getOppositeChangeSet(), myNodeId);
}
@NotNull
@Override
public ChangeType getType() {
return ChangeType.ADD;
}
@Override
public String toString() {
return "Add root " + myNodeId;
}
@Override
public String getDescription() {
return "Added root #" + myNodeId;
}
}