import java.util.Stack; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileInputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.ObjectOutput; import java.io.ObjectInput; import java.io.ObjectOutputStream; import java.io.ObjectInputStream; import java.io.Writer; public class BoardManager { protected Stack history; public void preSetFieldWrapper(Structure structure, int structNr, int element, Field f) { try { history.push(board.clone()); } catch (CloneNotSupportedException e) { } original(structure, structNr, element, f); } BoardManager() { history = new Stack(); } public void preLoadWrapper() { history.clear(); original(); } public void loadState(File f) throws IOException, ClassNotFoundException { ObjectInput i = new ObjectInputStream(new FileInputStream(f)); board = (Board) i.readObject(); history = (Stack) i.readObject(); updateSudokuViews(); } public void saveState(File f) throws IOException { ObjectOutput o = new ObjectOutputStream(new FileOutputStream(f)); o.writeObject(getBoard()); o.writeObject(history); o.close(); } }