package UndoRedo;
import java.util.ArrayList;
import LDraw.Files.LDrawStep;
import LDraw.Support.LDrawDirective;
import Window.MOCBuilder;
public class ChangeDirectivesIndexAction implements IAction {
private ArrayList<Integer> oldIndexList;
private ArrayList<Integer> newIndexList;
private LDrawStep parent;
private ArrayList<LDrawDirective> directives;
private MOCBuilder builder;
public ChangeDirectivesIndexAction() {
oldIndexList = new ArrayList<Integer>();
newIndexList = new ArrayList<Integer>();
directives = new ArrayList<LDrawDirective>();
}
public ChangeDirectivesIndexAction(MOCBuilder builder, LDrawStep parent,
LDrawDirective directive, int oldIndex, int newIndex) {
this();
this.builder = builder;
this.parent = parent;
this.directives.add(directive);
this.oldIndexList.add(oldIndex);
this.newIndexList.add(newIndex);
}
public void add(MOCBuilder builder, LDrawStep parent,
LDrawDirective directive, int oldIndex, int newIndex) {
if (this.builder == null)
this.builder = builder;
if (this.parent == null)
this.parent = parent;
this.directives.add(directive);
this.oldIndexList.add(oldIndex);
this.newIndexList.add(newIndex);
}
@Override
public void undoAction() {
for (int i = 0; i < directives.size(); i++)
builder.changeDirectiveIndex(parent, directives.get(i),
oldIndexList.get(i));
}
@Override
public void redoAction() {
for (int i = 0; i < directives.size(); i++)
builder.changeDirectiveIndex(parent, directives.get(i),
newIndexList.get(i));
}
}