/** * Copyright (c): Uwe Schmidt, FH Wedel * * You may study, modify and distribute this source code * FOR NON-COMMERCIAL PURPOSES ONLY. * This copyright message has to remain unchanged. * * Note that this document is provided 'as is', * WITHOUT WARRANTY of any kind either expressed or implied. */ /* das Modell: * die Counter Klasse mit * den Routinen zur Ereignis-Verwaltung */ import java.util.Vector; public class Counter { int cnt; public Counter() { this.cnt = 0; counterChangedListeners = new Vector(); } //-------------------- public void incr(int i) { cnt += i; notifyCounterChanged(); } //-------------------- // event listener verwalten private Vector counterChangedListeners; protected void notifyCounterChanged() { Vector l; CounterChangedEvent e = new CounterChangedEvent(this,cnt); synchronized (this) { l = (Vector)counterChangedListeners.clone(); } for ( int i = 0; i < l.size(); ++i ) { ((CounterChangedListener)l.elementAt(i)).counterChanged(e); } } //-------------------- public synchronized void addCounterChangedListener(CounterChangedListener l) { counterChangedListeners.addElement(l); } public synchronized void removeCounterChangedListener(CounterChangedListener l) { counterChangedListeners.removeElement(l); } }