package lectures.mvc.collections;
import util.annotations.WebDocuments;
import lectures.arrays.collections_implementation.AStringHistory;
import lectures.arrays.collections_implementation.StringHistory;
import util.annotations.ObserverRegisterer;
import util.annotations.ObserverTypes;
import util.models.VectorChangeEvent;
import util.models.VectorListener;
@WebDocuments({"Lectures/MvcCollections.pptx", "Lectures/MvcCollections.pdf", "Videos/MvcCollections.avi"})
public class AnObservableStringHistory extends AStringHistory implements ObservableStringHistory {
VectorListenerSupport vectorListenerSupport = new AVectorListenerSupport();
public void addElement(String element) {
if (isFull())
System.out.println("Adding item to a full history");
else {
contents[size] = element;
size++;
vectorListenerSupport.notifyAllListeners(
new VectorChangeEvent(this, VectorChangeEvent.AddComponentEvent,
size -1, null, element, size));
}
}
@ObserverRegisterer(ObserverTypes.VECTOR_LISTENER)
public void addVectorListener(VectorListener aListener) {
vectorListenerSupport.addElement(aListener);
}
public static void main (String[] args) {
StringHistory stringHistory = new AnObservableStringHistory();
stringHistory.addElement("James Dean");
stringHistory.addElement("Joe Doe");
stringHistory.addElement("Jane Smith");
stringHistory.addElement("John Smith");
bus.uigen.ObjectEditor.edit(stringHistory);
}
}