package lectures.inheritance.extra;
import util.annotations.WebDocuments;
import java.util.Vector;

import lectures.arrays.collections_implementation.AStringHistory;
import lectures.inheritance.AnInheritingStringDatabase;
import util.models.VectorChangeEvent;
import util.models.VectorListener;
@WebDocuments({"Lectures/InheritanceExtra.pptx", "Lectures/InheritanceExtra.pdf", "Videos/InheritanceExtra.avi"})
public class AnObservableStringSet extends AnInheritingStringDatabase {
    Vector<VectorListener> listeners = new Vector();
    public void addVectorListener(VectorListener vectorListener) {
        listeners.addElement(vectorListener);
    }
    public void addElement(String element) {
        super.addElement(element);
        notifyListeners(new VectorChangeEvent(this, VectorChangeEvent.AddComponentEvent, size -1, null, element, size));        
    } 
    public void removeElement(String element) {
        super.removeElement(element);
        notifyListeners(new VectorChangeEvent(this, VectorChangeEvent.DeleteComponentEvent, size + 1, null, element, size));        

    }
    void notifyListeners (VectorChangeEvent event) {
        for (int i = 0; i < listeners.size(); i++) {
            listeners.elementAt(i).updateVector(event);
        }
        
    }
}