Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.lib / src / main / java / org / gvsig / tools / util / BaseListenerSupport.java @ 2030

History | View | Annotate | Download (1.47 KB)

1
package org.gvsig.tools.util;
2

    
3
import java.util.EventListener;
4
import java.util.HashSet;
5
import java.util.Set;
6
import org.slf4j.Logger;
7
import org.slf4j.LoggerFactory;
8

    
9
public class BaseListenerSupport {
10

    
11
    protected static final Logger LOGGER = LoggerFactory.getLogger(BaseListenerSupport.class);
12
    
13
    public interface NotificationListener extends EventListener {
14
        public void notify(EventListener event);
15
    }
16
    
17
    protected Set<EventListener> listeners = new HashSet();
18

    
19
    public void addListener(EventListener listener) {
20
        listeners.add(listener);
21
    }
22

    
23
    public EventListener[] getListeners() {
24
        return (EventListener[]) this.listeners.toArray(new EventListener[this.listeners.size()]);
25
    }
26

    
27
    public boolean hasListeners() {
28
        return !this.listeners.isEmpty();
29
    }
30
    
31
    public void removeListener(EventListener listener) {
32
        listeners.remove(listener);
33
    }
34

    
35
    public void removeAllListener() {
36
        this.listeners.clear();
37
    }
38

    
39
    public void notifyEvent(EventListener event) {
40
        for (EventListener listener : this.listeners) {
41
            if( listener instanceof NotificationListener ) {
42
                try {
43
                    ((NotificationListener)listener).notify(event);
44
                } catch(Throwable th) {
45
                    LOGGER.warn("Problems notifying "+(event==null? "NULL":event.getClass().getSimpleName())+" to "+listener.getClass().getSimpleName());
46
                }
47
            }
48
        }
49
    }
50

    
51
}