001 package com.croftsoft.apps.vaft.util.broadcast;
002
003 import java.util.*;
004
005 /*********************************************************************
006 * <P>
007 * Used to broadcast BroadcastEvent objects to BroadcastListener
008 * objects.
009 * <P>
010 * @author
011 * <A HREF="http://www.alumni.caltech.edu/~croft">David W. Croft</A>
012 * @version
013 * 1998-04-05
014 *********************************************************************/
015
016 public class Broadcast implements Broadcaster
017 //////////////////////////////////////////////////////////////////////
018 //////////////////////////////////////////////////////////////////////
019 {
020
021 private Broadcaster broadcaster;
022 private Vector listeners;
023
024 //////////////////////////////////////////////////////////////////////
025 // Constructor method
026 //////////////////////////////////////////////////////////////////////
027
028 public Broadcast ( Broadcaster broadcaster )
029 //////////////////////////////////////////////////////////////////////
030 {
031 this.broadcaster = broadcaster;
032 listeners = new Vector ( );
033 }
034
035 //////////////////////////////////////////////////////////////////////
036 // Access methods
037 //////////////////////////////////////////////////////////////////////
038
039 public Broadcaster getBroadcaster ( ) { return broadcaster; }
040 public Vector getListeners ( ) { return listeners ; }
041
042 //////////////////////////////////////////////////////////////////////
043 //////////////////////////////////////////////////////////////////////
044
045 public String getBroadcastName ( )
046 //////////////////////////////////////////////////////////////////////
047 {
048 return broadcaster.toString ( );
049 }
050
051 public synchronized boolean addBroadcastListener (
052 BroadcastListener bl )
053 //////////////////////////////////////////////////////////////////////
054 {
055 if ( listeners.contains ( bl ) ) return false;
056 listeners.addElement ( bl );
057 return true;
058 }
059
060 public boolean removeBroadcastListener ( BroadcastListener bl )
061 //////////////////////////////////////////////////////////////////////
062 {
063 return listeners.removeElement ( bl );
064 }
065
066 //////////////////////////////////////////////////////////////////////
067 //////////////////////////////////////////////////////////////////////
068
069 public void broadcast ( String announcement )
070 //////////////////////////////////////////////////////////////////////
071 {
072 broadcast ( new BroadcastEvent ( broadcaster, announcement ) );
073 }
074
075 protected synchronized void broadcast ( BroadcastEvent be )
076 //////////////////////////////////////////////////////////////////////
077 {
078 Enumeration e = listeners.elements ( );
079 while ( e.hasMoreElements ( ) )
080 {
081 BroadcastListener broadcastListener
082 = ( BroadcastListener ) e.nextElement ( );
083 broadcastListener.broadcastSent ( be );
084 }
085 }
086
087 //////////////////////////////////////////////////////////////////////
088 //////////////////////////////////////////////////////////////////////
089 }