package lectures.generics_adapters.extra;
import util.annotations.WebDocuments;
import lectures.generics_adapters.AHistory;
import lectures.generics_adapters.GenericObserver;
import lectures.generics_adapters.History;
import lectures.mvc.ACounter;
import lectures.mvc.AnObserverHistory;
import lectures.mvc.Counter;
import lectures.mvc.ObservableCounter;
@WebDocuments({"Lectures/GenericsAdaptersExtra.pptx", "Lectures/GenericsAdaptersExtra.pdf", "Videos/GenericsAdaptersExtra.avi"})
public class AnElaboratingObservableCounter extends ACounter implements ElaboratingObservableCounter {
int counter = 0;
History<GenericObserver<Counter>> observers = new AHistory<GenericObserver<Counter>>();
public void add (int amount) {
super.add(amount);
notifyAllObservers();
}
public void addObserver(GenericObserver<Counter> observer) {
observers.addElement(observer);
observer.update(this);
}
void notifyAllObservers() {
for (int observerNum = 0; observerNum < observers.size();
observerNum++) {
observers.elementAt(observerNum).update(this);
}
}
}