/** 
 * publisherSupport.java
 *
 * Description:		Event set support class for publisherListener.
					Manages listener registration and contains fire functions.
 * @author			daassi
 * @version			
 */

package publisherListener;


import java.util.Vector;

/** 
 * publisherSupport bottlenecks support for classes that fire events to 
 * publisherListener listeners.
 */

public class publisherSupport implements java.io.Serializable {

	Vector publisherListeners = new Vector();

	public synchronized void addgraphListener(graphListener l) {
		// add a listener if it is not already registered
		if (!publisherListeners.contains(l)) {
			publisherListeners.addElement(l);
		}
	}

	public synchronized void removegraphListener(graphListener l) {
		// remove it if it is registered
		if (publisherListeners.contains(l)) {
			publisherListeners.removeElement(l);
		}
	}
 
 
  public void fireSelectedAreaUpdated(int posX, int posY, int width, int height)
  {
		// Make a copy of the listener object vector so that
		// it cannot be changed while we are firing events.
		Vector v;
		synchronized(this)
		{
			v = (Vector) publisherListeners .clone();
		}
		
		// Fire the event to all listeners.
		int count = v.size();
		for (int i = 0; i < count; i++)
		{
			graphListener  listener = (graphListener ) v.elementAt(i);
			listener.selectedAreaUpdated (posX, posY, width, height);
		}
	}
  
}

/* @(#)publisherSupport.java */
