package com.xenoage.zong.commands.core.music.group;
import com.xenoage.utils.document.command.Command;
import com.xenoage.utils.document.command.Undoability;
import com.xenoage.zong.core.music.StavesList;
import com.xenoage.zong.core.music.group.BracketGroup;
/**
* Removes a {@link BracketGroup}.
*
* @author Andreas Wenger
*/
public class BracketGroupRemove
implements Command {
//data
private StavesList stavesList;
private BracketGroup group;
//backup data
private int groupIndex;
public BracketGroupRemove(StavesList stavesList, BracketGroup group) {
this.stavesList = stavesList;
this.group = group;
}
@Override public void execute() {
//remember element index, since the list is sorted
groupIndex = stavesList.getBracketGroups().indexOf(group);
if (groupIndex == -1)
throw new IllegalStateException("group is unknown");
stavesList.getBracketGroups().remove(group);
}
@Override public Undoability getUndoability() {
return Undoability.Undoable;
}
@Override public void undo() {
stavesList.getBracketGroups().add(groupIndex, group);
}
}