File: /Users/shatabdi/Education/GitHub/se450_project/src/model/commands/CommandHistory.java

1     //adopted from week 3, CommandDemo
2     package model.commands;
3     
4     import java.util.Stack;
5     
6     import controller.interfaces.IUndoable;
7     import model.others.TrackShape;
8     
9     public class CommandHistory {
10     	private static final Stack<IUndoable> redoStack = new Stack<>();
11     	public static TrackShape shapeCollection = new TrackShape();
12     
13     	public static TrackShape shapesDeleted = new TrackShape();
14     
15     	public static TrackShape shapesGrouped = new TrackShape();
16     
17     	public static TrackShape shapesInClipboard = new TrackShape();
18     
19     	public static TrackShape shapesSelected = new TrackShape();
20     
21     	private static final Stack<IUndoable> undoStack = new Stack<>();
22     
23     	public static void add(IUndoable cmd) {
24     		undoStack.push(cmd);
25     		redoStack.clear();
26     	}
27     	public static Stack<IUndoable> getRedoStack() {
28     		return redoStack;
29     	}
30     	public static Stack<IUndoable> getUndoStack() {
31     		return undoStack;
32     	}
33     	public static boolean redo() {
34     		boolean result = !redoStack.empty();
35     		if (result) {
36     			IUndoable c = redoStack.pop();
37     			undoStack.push(c);
38     			c.redo();
39     		}
40     		return result;
41     	}
42     	public static boolean undo() {
43     		boolean result = !undoStack.empty();
44     		if (result) {
45     			IUndoable c = undoStack.pop();
46     			redoStack.push(c);
47     			c.undo();
48     		}
49     		return result;
50     	}
51     }
52