Changeset 19

Show
Ignore:
Timestamp:
07/31/05 14:08:24 (3 years ago)
Author:
schst
Message:

Fixed ticket #3: EventListeners? can be removed specifying the classname

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/net/schst/EventDispatcher/EventDispatcher.java

    r18 r19  
    9797    *  
    9898    * @param eventName      name of the event 
    99     * @param listener       the event listener object 
     99    * @param className      the class name of the listener 
    100100    * @return               true, if the listener could be removed, false otherwise 
    101101    */ 
    102     public boolean removeEventListener(String eventName, EventListener listener) { 
     102    public boolean removeEventListener(String eventName, String className) { 
    103103        if (!this.listeners.containsKey(eventName)) { 
    104104            return false; 
    105105        } 
    106106        EventListenerCollection collection = (EventListenerCollection)this.listeners.get(eventName); 
    107         EventListenerContainer container = (EventListenerContainer)collection.removeListener(listener); 
     107        EventListenerContainer container = (EventListenerContainer)collection.removeListener(className); 
    108108        if (container == null) { 
    109109            return false; 
     
    111111        return true; 
    112112    } 
     113 
     114    /** 
     115     * Remove an event listener 
     116     *  
     117     * @param eventName      name of the event 
     118     * @param listener       the event listener object 
     119     * @return               true, if the listener could be removed, false otherwise 
     120     */ 
     121     public boolean removeEventListener(String eventName, EventListener listener) { 
     122         if (!this.listeners.containsKey(eventName)) { 
     123             return false; 
     124         } 
     125         EventListenerCollection collection = (EventListenerCollection)this.listeners.get(eventName); 
     126         EventListenerContainer container = (EventListenerContainer)collection.removeListener(listener); 
     127         if (container == null) { 
     128             return false; 
     129         } 
     130         return true; 
     131     } 
    113132     
    114133    /** 
     
    155174     } 
    156175      
     176     /** 
     177      * Remove an event listener, that has been globally added 
     178      *  
     179      * @param className       the classname of the event listener 
     180      * @return               true, if the listener could be removed, false otherwise 
     181      */ 
     182       public boolean removeGlobalEventListener(String className) { 
     183           EventListenerContainer container = (EventListenerContainer)this.globalListeners.removeListener(className); 
     184           if (container == null) { 
     185               return false; 
     186           } 
     187           return true; 
     188       } 
     189        
    157190    /** 
    158191     * Trigger an event, if you already created an event object 
  • trunk/src/net/schst/EventDispatcher/EventListenerCollection.java

    r17 r19  
    7070 
    7171    /** 
     72     * Remove a listener of a sepciefied class from the list 
     73     *  
     74     * @param className 
     75     * @return 
     76     */ 
     77    public EventListenerContainer removeListener(String className) { 
     78        for (Iterator iter = this.listeners.iterator(); iter.hasNext();) { 
     79            EventListenerContainer container = (EventListenerContainer) iter.next(); 
     80            if (container.getListener().getClass().getName().equals(className)) { 
     81                this.listeners.remove(container); 
     82                return container; 
     83            } 
     84        } 
     85        return null; 
     86    } 
     87     
     88    /** 
    7289     * Remove a listener from the list 
    7390     *  
     
    88105         return null; 
    89106     } 
    90       
     107 
    91108     /** 
    92109      * Get an iterator to iterate over the event listeners in this 
  • trunk/src/net/schst/EventDispatcher/Examples/ExampleRemove.java

    r11 r19  
    2323        EventListener four = new DebugHandler("four"); 
    2424        disp.addGlobalListener(four); 
     25        EventListener five = new EchoHandler(); 
     26        disp.addListener("onLogin", five); 
    2527         
    2628        boolean removed = disp.removeEventListener("onLogin", one); 
     
    3335            System.out.println("The global event listener has succesfully been removed."); 
    3436        } 
     37         
     38        removed = disp.removeEventListener("onLogin", "net.schst.EventDispatcher.Examples.EchoHandler"); 
     39        if (removed == true) { 
     40            System.out.println("The event listener has succesfully been removed by supplying the classname."); 
     41        } 
     42         
    3543 
    36         disp.triggerEvent("onLogin"); 
    37          
     44        Customer schst = new Customer(14, "Stephan Schmidt");         
     45        disp.triggerEvent("onLogin", false, schst); 
    3846    } 
    3947}