/* 
	selectedElemSupport.java

	Author:			daassi
	Description:	Event set support class for selectedElemListener.
					Manages listener registration and contains fire functions.
*/

package selectedElemListener;


import java.util.Vector;

public class selectedElemSupport implements java.io.Serializable
{
	Vector selectedElemListeners = new Vector();

	public synchronized void addselectedElemListener(selectedElemListener l)
	{
		// add a listener if it is not already registered
		if (!selectedElemListeners.contains(l))
		{
			selectedElemListeners.addElement(l);
		}
	}

	public synchronized void removeselectedElemListener(selectedElemListener l)
	{
		// remove it if it is registered
		if (selectedElemListeners.contains(l))
		{
			selectedElemListeners.removeElement(l);
		}
	}
   
   public void fireElemClicked(Vector elemInfos)
	{
		// 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) selectedElemListeners.clone();
		}
		
		// Fire the event to all listeners.
		int count = v.size();
		for (int i = 0; i < count; i++)
		{
			selectedElemListener listener = (selectedElemListener) v.elementAt(i);
			listener.elemClicked(elemInfos);
		}
	}
   
   public void fireMouseMovingOnElem()
	{
		// 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) selectedElemListeners.clone();
		}
		
		// Fire the event to all listeners.
		int count = v.size();
		for (int i = 0; i < count; i++)
		{
			selectedElemListener listener = (selectedElemListener) v.elementAt(i);
			listener.mouseMovingOnElem();
		}
	}


}

/* selectedElemSupport.java */
