ucar.nc2.util
Class ListenerManager

java.lang.Object
  extended by ucar.nc2.util.ListenerManager

@ThreadSafe
public class ListenerManager
extends Object

Helper class for managing event listeners. It is thread safe, but better not to be adding/deleting listeners while sending events. Example:


  private void createListenerManager() {
    lm = new ListenerManager(
            "ucar.nc2.util.DatasetCollectionManager$EventListener",
            "ucar.nc2.util.DatasetCollectionManager$Event",
            "setMessage");
  }

  public void addEventListener(EventListener l) {
    lm.addListener(l);
  }

  public void removeEventListener(EventListener l) {
    lm.removeListener(l);
  }

  public class Event extends java.util.EventObject {
    private String message;

    Event(String message) {
      super(DatasetCollectionManager.this);
      this.message = message;
    }

    public String getMessage() {
      return message;
    }
  }

  public static interface EventListener {
    public void setMessage(DatasetCollectionManager.Event event);
  }

 lm.sendEvent(event);
 

Author:
John Caron

Constructor Summary
ListenerManager(String listener_class, String event_class, String method_name)
          Constructor.
 
Method Summary
 void addListener(Object l)
          Add a listener.
 boolean getEnabled()
           
 boolean hasListeners()
           
 void removeListener(Object l)
          Remove a listener.
 void sendEvent(EventObject event)
          Send an event to all registered listeners.
 void sendEventExcludeSource(EventObject event)
          Send an event to all registered listeners, except the named one.
 void setEnabled(boolean enabled)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ListenerManager

public ListenerManager(String listener_class,
                       String event_class,
                       String method_name)
Constructor.

Parameters:
listener_class - the name of the EventListener class, eg "ucar.unidata.ui.UIChangeListener"
event_class - the name of the Event class, eg "ucar.unidata.ui.UIChangeEvent"
method_name - the name of the EventListener method, eg "processChange".
                          This method must have the signature     public void method_name( event_class e) 
Method Detail

setEnabled

public void setEnabled(boolean enabled)

getEnabled

public boolean getEnabled()

addListener

public void addListener(Object l)
Add a listener.

Parameters:
l - listener must be of type "listener_class"

removeListener

public void removeListener(Object l)
Remove a listener.

Parameters:
l - listener must be of type "listener_class"

hasListeners

public boolean hasListeners()

sendEvent

public void sendEvent(EventObject event)
Send an event to all registered listeners. If an exception is thrown, remove the Listener from the list

Parameters:
event - the event to be sent: public void method_name( event_class event)

sendEventExcludeSource

public void sendEventExcludeSource(EventObject event)
Send an event to all registered listeners, except the named one.

Parameters:
event - the event to be sent: public void method_name( event_class event)


Copyright © 1999-2011 UCAR/Unidata. All Rights Reserved.