/*
* 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 //