package jetbrains.mps.vcs.diff.changes;
/*Generated by MPS */
import org.jetbrains.mps.openapi.language.SLanguage;
import jetbrains.mps.vcs.diff.ChangeSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.mps.openapi.model.SModel;
import jetbrains.mps.extapi.model.SModelBase;
public class EngagedLanguageChange extends DependencyChange {
private final SLanguage myLanguage;
public EngagedLanguageChange(ChangeSet cs, boolean delete, SLanguage lang) {
super(cs, delete);
myLanguage = lang;
}
public void apply(@NotNull SModel model, @NotNull NodeCopier nodeCopier) {
if (isDelete()) {
((SModelBase) model).removeEngagedOnGenerationLanguage(myLanguage);
} else {
((SModelBase) model).addEngagedOnGenerationLanguage(myLanguage);
}
}
@NotNull
protected ModelChange createOppositeChange() {
return new EngagedLanguageChange(getChangeSet().getOppositeChangeSet(), !(isDelete()), myLanguage);
}
public SLanguage getLanguage() {
return myLanguage;
}
@Override
public String getDescription() {
String fmt = (isDelete() ? "Disengaged language %s on generation" : "Engage language %s on generation");
return String.format(fmt, myLanguage.getQualifiedName());
}
@Override
public String toString() {
return myLanguage.toString();
}
}