package com.akjava.gwt.lib.hangouts.client.onair; import java.util.ArrayList; import java.util.List; import com.akjava.gwt.lib.hangouts.client.onair.events.NewParticipantInBroadcastChangedEvent; import com.akjava.gwt.lib.hangouts.client.onair.listeners.NewParticipantInBroadcastChangedListener; public class OnNewParticipantInBroadcastChanged { private OnNewParticipantInBroadcastChanged(){} private static native void registListener()/*-{ $wnd.gapi.hangout.onair.onNewParticipantInBroadcastChanged.add(@com.akjava.gwt.lib.hangouts.client.onair.OnNewParticipantInBroadcastChanged::fireListener(Lcom/akjava/gwt/lib/hangouts/client/onair/events/NewParticipantInBroadcastChangedEvent;)); }-*/; private static native void unregistListener()/*-{ $wnd.gapi.hangout.onair.onNewParticipantInBroadcastChanged.remove(@com.akjava.gwt.lib.hangouts.client.onair.OnNewParticipantInBroadcastChanged::fireListener(Lcom/akjava/gwt/lib/hangouts/client/onair/events/NewParticipantInBroadcastChangedEvent;)); }-*/; public static void add(NewParticipantInBroadcastChangedListener listener){ if(listeners==null){ listeners=new ArrayList<NewParticipantInBroadcastChangedListener>(); listeners.add(listener); registListener(); }else{ listeners.add(listener); } } public static void remove(NewParticipantInBroadcastChangedListener listener){ if(listeners==null){ }else{ listeners.remove(listener); if(listeners.size()==0){ unregistListener(); listeners=null; } } } private static List<NewParticipantInBroadcastChangedListener> listeners; synchronized static void fireListener(NewParticipantInBroadcastChangedEvent event){ for(NewParticipantInBroadcastChangedListener listener:listeners){ listener.onNewParticipantInBroadcastChanged(event); } } }