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 }