/* * DefaultVectorModel.java, (c) Raimond Reichert 1999 */ package mldemo; import java.util.*; import java.lang.ref.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * Implements VectorModel the "normal" way, ie, using * a Vector to hold the references to the * VectorModel.Listeners. * * @author Raimond Reichert */ public class DefaultVectorModel implements VectorModel { private Vector vector; private Vector listeners; public DefaultVectorModel() { vector = new Vector(); listeners = new Vector(); } // DefaultVectorModel // public void addElement (Object object) { vector.addElement (object); fireElementAdded (object); } // addElement // public void removeElement (Object object) { vector.removeElement (object); fireElementRemoved (object); } // removeElement // public Object elementAt (int index) { return vector.elementAt (index); } // elementAt // public int size() { return vector.size(); } // size // public void addListener (VectorModel.Listener l) { listeners.addElement (l); } // addListener // public void removeListener (VectorModel.Listener l) { listeners.removeElement (l); } // removeListener // protected void fireElementAdded (Object object) { VectorModel.Event e = null; int size = listeners.size(); for (int i = 0; i < size; i++) { if (e == null) // lazily create event e = new VectorModel.Event (this, object); ((VectorModel.Listener)listeners.elementAt(i)).elementAdded (e); } } // fireElementAdded // protected void fireElementRemoved (Object object) { VectorModel.Event e = null; int size = listeners.size(); for (int i = 0; i < size; i++) { if (e == null) // lazily create event e = new VectorModel.Event (this, object); ((VectorModel.Listener)listeners.elementAt(i)).elementRemoved (e); } } // fireElementRemoved // } // DefaultVectorModel //