import java.util.Vector; public class MyComponent { /** * Liste pour stocker tous les veilleurs de ce composant. */ private Vector listenersList = new Vector(); /** * Le nom du composant. */ private String name=""; /** * La valeur du composant. */ private int value = 0; /** * Constructeur du composant. * @param name le nom du composant. */ public MyComponent(String name) { this.name=name; } /** * Retourne le nom du composant * @return le nom du composant as String */ public String getName() { return name; } /** * Modife la valeur du composant. * @param value la nouvelle valeur du composant. */ public void setValue(int value) { this.value = value; notifValueChange(); } /** * Retourne la valeur du composant * @return la valeur du composant as int */ public int getValue() { return value; } /** * Pour notifier tous les veilleurs de ce composant du changement de sa valeur. */ protected void notifValueChange() { MyEvent e = new MyEvent(this); for (int i = 0; i < listenersList.size(); i++) { MyEventListener l = (MyEventListener) listenersList.elementAt(i); l.onValueChange(e); } } /** * Enregistrement d'un veilleur dans la Liste. * @param l un veilleur définit par l'interface MyEventListener */ public synchronized void addStockListener(MyEventListener l) { listenersList.addElement(l); } /** * Suppression d'un veilleur de la liste. * @param l un veilleur définit par l'interface MyEventListener */ public synchronized void removeStockListener(MyEventListener l) { listenersList.removeElement(l); } @Override public String toString() { return name + " " + value; } }