Index
BensEventMulticaster.java


/*
 *  "COM.bensoft.base" Copyright (C) by Michael Benson - 7/27/97
 *
 *  "BensEventMulticaster" keeps track of listeners (like JDK 1.1).
 *			Multiple listeners can be registered to one event.
 */

package COM.bensoft.base;

import java.awt.*;
import java.util.*;
import java.io.*;


/**
 * BensEventMulticaster keeps track of listeners like JDK 1.1, but works
 * with JDK 1.0.2.  Multiple listeners can be registered to one event.
 *  
 * @author	Michael Benson
 */
public class BensEventMulticaster
{
	private	Vector		_listeners;
	private	boolean		_hasListeners;		// true if there are any listeners.
	
	/**
	 * EventMulticaster constructor.  Initialize to empty.
	 */
	public BensEventMulticaster()
	{
		_listeners = new Vector();
		_hasListeners = false;
	}

	/**
	 * Allow user to iterate through the list of listeners.
	 *
	 * @return	a clone of the list of listeners (as a Vector).
	 */
	public synchronized Enumeration elements()
	{
		return ((Vector)(_listeners.clone())).elements();
	}
	
	/**
	 * Add a listener.
	 *
	 * @param	el	the listener to be added.
	 */
	public synchronized void addListener(BensEventListener el)
	{
		_listeners.addElement(el);
		_hasListeners = true;
	}

	/**
	 * Remove a listener.
	 *
	 * @param	el	the listener to be removed.
	 */
	public synchronized void removeListener(BensEventListener el)
	{
		_listeners.removeElement(el);
		_hasListeners = (_listeners.size() > 0);
	}

	/**
	 * Returns whether or not there are any listeners present.
	 *
	 * @return	true if there are listeners, false if not.
	 */
	public synchronized boolean hasListeners()
	{
		return _hasListeners;
	}
	
}