1 21 24 package org.lobobrowser.util; 25 26 import java.util.*; 27 28 31 public abstract class EventDispatch2 { 32 private Collection listeners; 33 private static final EventListener[] EMPTY_ARRAY = new EventListener[0]; 34 35 public EventDispatch2() { 36 } 37 38 public Collection createListenerCollection() { 39 return new ArrayList(); 40 } 41 42 public final void addListener(EventListener listener) { 43 synchronized(this) { 44 if(this.listeners == null) { 45 this.listeners = this.createListenerCollection(); 46 } 47 this.listeners.add(listener); 48 } 49 } 50 51 public final void removeListener(EventListener listener) { 52 synchronized(this) { 53 if(this.listeners != null) { 54 this.listeners.remove(listener); 55 } 56 } 57 } 58 59 public final boolean fireEvent(EventObject event) { 60 EventListener[] larray; 61 synchronized(this) { 62 Collection listeners = this.listeners; 63 if(listeners == null || listeners.size() == 0) { 64 return false; 65 } 66 larray = (EventListener[]) this.listeners.toArray(EMPTY_ARRAY); 67 } 68 int length = larray.length; 69 for(int i = 0; i < length; i++) { 70 this.dispatchEvent(larray[i], event); 72 } 73 return true; 74 } 75 76 protected abstract void dispatchEvent(EventListener listener, EventObject event); 77 } 78 | Popular Tags |