package lectures.undo_commands;
import util.annotations.WebDocuments;
import lectures.mvc.AnObservableCounter;
import lectures.mvc.CounterObserver;
import lectures.mvc.ObservableCounter;
import bus.uigen.ObjectEditor;
import bus.uigen.attributes.AttributeNames;
@WebDocuments({"Lectures/UndoCommands.pptx", "Lectures/UndoCommands.pdf", "Videos/UndoCommands.avi"})
public class AnUndoableCounter implements UndoableCounter {
    ObservableCounter counter;
    Undoer undoer = new HistoryUndoer();
    public AnUndoableCounter (ObservableCounter theCounter){
        counter = theCounter;
    }
    public int getValue() {
        return counter.getValue();
    }
    public void add(int theAmount) {
        undoer.execute(new AnAddCounterCommand(counter, theAmount));
    }
    public void addObserver(CounterObserver observer) {
        counter.addObserver(observer);      
    }
    public void undo() {undoer.undo();}
    public void redo() {undoer.redo();} 
    public static void main (String[] args) {   
        ObjectEditor.setAttribute(AnUndoableCounter.class, AttributeNames.SHOW_SYSTEM_MENUS, false);
        bus.uigen.ObjectEditor.edit(new AnUndoableCounter(new AnObservableCounter()));
    }   
    
}