OSDN Git Service

05a7ac535f64e7255612f0e4827c2221a69ae20b
[charactermanaj/CharacterManaJ.git] / src / charactermanaj / ui / model / FavoritesChangeObserver.java
1 package charactermanaj.ui.model;\r
2 \r
3 import javax.swing.event.EventListenerList;\r
4 \r
5 import charactermanaj.model.CharacterData;\r
6 \r
7 \r
8 /**\r
9  * お気に入りが変更されたことを通知するためのメカニズム.<br>\r
10  * \r
11  * @author seraphy\r
12  * \r
13  */\r
14 public abstract class FavoritesChangeObserver {\r
15 \r
16         private static FavoritesChangeObserver defobj = new FavoritesChangeObserverImpl();\r
17 \r
18         public static FavoritesChangeObserver getDefault() {\r
19                 return defobj;\r
20         }\r
21 \r
22         public abstract void addFavoritesChangeListener(FavoritesChangeListener l);\r
23 \r
24         public abstract void removeFavoritesChangeListener(FavoritesChangeListener l);\r
25 \r
26         public abstract void notifyFavoritesChange(FavoritesChangeEvent e);\r
27 \r
28         public void notifyFavoritesChange(Object wnd, CharacterData cd) {\r
29                 if (cd == null) {\r
30                         throw new IllegalArgumentException();\r
31                 }\r
32                 notifyFavoritesChange(new FavoritesChangeEvent(wnd, cd));\r
33         }\r
34 }\r
35 \r
36 class FavoritesChangeObserverImpl extends FavoritesChangeObserver {\r
37 \r
38         private EventListenerList listeners = new EventListenerList();\r
39 \r
40         @Override\r
41         public void addFavoritesChangeListener(FavoritesChangeListener l) {\r
42                 listeners.add(FavoritesChangeListener.class, l);\r
43         }\r
44 \r
45         @Override\r
46         public void removeFavoritesChangeListener(FavoritesChangeListener l) {\r
47                 listeners.remove(FavoritesChangeListener.class, l);\r
48         }\r
49 \r
50         @Override\r
51         public void notifyFavoritesChange(FavoritesChangeEvent e) {\r
52                 if (e == null) {\r
53                         throw new IllegalArgumentException();\r
54                 }\r
55                 FavoritesChangeListener[] lst = listeners\r
56                                 .getListeners(FavoritesChangeListener.class);\r
57                 for (FavoritesChangeListener l : lst) {\r
58                         l.notifyChangeFavorites(e);\r
59                 }\r
60         }\r
61 }\r