gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.lib / src / main / java / org / gvsig / tools / util / BaseListenerSupport.java @ 2335
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 |
} |