svn-document-layout / trunk / org.gvsig.app.document.layout2.app / org.gvsig.app.document.layout2.app.mainplugin / src / main / java / org / gvsig / app / project / documents / layout / CustomizableObserverHelper.java @ 168
History | View | Annotate | Download (962 Bytes)
1 | 153 | cmartinez | package org.gvsig.app.project.documents.layout; |
---|---|---|---|
2 | |||
3 | import java.util.ArrayList; |
||
4 | import java.util.List; |
||
5 | |||
6 | import org.gvsig.tools.observer.Observable; |
||
7 | |||
8 | /**
|
||
9 | * The goal of this class is to be extended internally by a
|
||
10 | * class wishing to manage specific listeners.
|
||
11 | *
|
||
12 | * @author Cesar Martinez
|
||
13 | */
|
||
14 | public abstract class CustomizableObserverHelper { |
||
15 | |||
16 | private List listeners = new ArrayList(); |
||
17 | |||
18 | public synchronized void addObserver(Object o) { |
||
19 | if( this.listeners.contains(o) ) { |
||
20 | return;
|
||
21 | } |
||
22 | this.listeners.add(o);
|
||
23 | } |
||
24 | |||
25 | public synchronized void deleteObserver(Object o) { |
||
26 | this.listeners.remove(o);
|
||
27 | } |
||
28 | |||
29 | public synchronized void deleteObservers() { |
||
30 | this.listeners = new ArrayList(); |
||
31 | } |
||
32 | |||
33 | public synchronized void notifyObservers(Object observable, Object data) { |
||
34 | for(int i =0; i<this.listeners.size(); i++ ) { |
||
35 | Object o = (Object) this.listeners.get(i); |
||
36 | doNotify(o, data); |
||
37 | } |
||
38 | |||
39 | } |
||
40 | |||
41 | protected abstract void doNotify(Object listener, Object data); |
||
42 | } |