package aliview;
import java.util.ArrayList;
import aliview.undo.UndoSavedState;
import aliview.undo.UndoSavedStateEverything;
public class UndoList{
private ArrayList<UndoSavedState> delegate = new ArrayList<UndoSavedState>();
private int positionPointer = -1;
public void add(UndoSavedState state) {
delegate.add(state);
positionPointer = delegate.size() - 1;
}
public boolean hasAvailableUndos() {
if(delegate.size() > 0 && positionPointer >= 0){
return true;
}
return false;
}
public boolean hasAvailableRedos() {
if(delegate.size() > 0 && positionPointer < (delegate.size()-1)){
return true;
}
return false;
}
public void addCurrentState(UndoSavedState state) {
delegate.add(state);
positionPointer = delegate.size() - 2;
}
public boolean isCurrentStateNeeded() {
if(positionPointer == delegate.size() - 1){
return true;
}
return false;
}
public UndoSavedState getUndoState(){
UndoSavedState state = null;
if(hasAvailableUndos()){
state = delegate.get(positionPointer);
positionPointer --;
}
return state;
}
public UndoSavedState getRedoState(){
UndoSavedState state = null;
if(hasAvailableRedos()){
positionPointer ++;
state = delegate.get(positionPointer);
}
return state;
}
}