// ********************************************************************** // // <copyright> // // BBN Technologies // 10 Moulton Street // Cambridge, MA 02138 // (617) 873-8000 // // Copyright (C) BBNT Solutions LLC. All rights reserved. // // </copyright> // ********************************************************************** // // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/graphicLoader/netmap/NetMapListenerSupport.java,v $ // $RCSfile: NetMapListenerSupport.java,v $ // $Revision: 1.3 $ // $Date: 2004/10/14 18:05:47 $ // $Author: dietrick $ // // ********************************************************************** package com.bbn.openmap.graphicLoader.netmap; import java.util.Properties; import java.util.Vector; import com.bbn.openmap.util.Debug; /** * NetMapListenerSupport is used to manage NetMapListeners, and to * distribute NetMapEvents to them. */ public class NetMapListenerSupport implements java.io.Serializable { transient private Vector listeners; transient private Object source; /** * Construct a NetMapListenerSupport. */ public NetMapListenerSupport() { this(null); } /** * Construct a NetMapListenerSupport. * * @param aSource source Object */ public NetMapListenerSupport(Object aSource) { source = aSource; } /** * Set the source object. * * @param aSource source Object */ public synchronized void setSource(Object aSource) { source = aSource; } /** * Get the source object. * * @return Object source */ public synchronized Object getSource() { return source; } /** * Add a NetMapListener. * * @param l NetMapListener */ public synchronized void addNetMapListener(NetMapListener l) { if (listeners == null) { listeners = new java.util.Vector(); } if (!listeners.contains(l)) { listeners.addElement(l); } } /** * Remove a NetMapListener. * * @param l NetMapListener */ public synchronized void removeNetMapListener(NetMapListener l) { if (listeners == null) { return; } listeners.removeElement(l); } /** * Return a cloned list of Listeners. * * @return Vector of listeners, null if none have been added. */ public synchronized java.util.Vector getListeners() { if (listeners == null) { return null; } return (java.util.Vector) listeners.clone(); } /** * Remove all listeners. */ public void clearNetMapListeners() { listeners.clear(); } /** * Send a center event to all registered listeners. */ public void fireNetMapEvent(Properties eventProperties) { java.util.Vector targets; NetMapListener target; Object theSource = getSource(); targets = getListeners(); if (listeners == null) { return; } int nTargets = targets.size(); if (nTargets == 0) return; NetMapEvent evt = new NetMapEvent(theSource, eventProperties); for (int i = 0; i < nTargets; i++) { target = (NetMapListener) targets.elementAt(i); if (Debug.debugging("mapbean")) { Debug.output("NetMapListenerSupport.fireNetMapEvent(): " + "target is: " + target); } target.catchEvent(evt); } } }