OSDN Git Service

dmg作成バージョンの取得方法の修正
[charactermanaj/CharacterManaJ.git] / src / main / java / charactermanaj / model / CharacterDataChangeObserver.java
1 package charactermanaj.model;\r
2 \r
3 import javax.swing.event.EventListenerList;\r
4 \r
5 \r
6 /**\r
7  * キャラクターデータが変更されたことを通知するためのメカニズム\r
8  * \r
9  * @author seraphy\r
10  * \r
11  */\r
12 public abstract class CharacterDataChangeObserver {\r
13 \r
14         private static CharacterDataChangeObserver inst = new CharacterDataChangeObserverImpl();\r
15 \r
16         public static CharacterDataChangeObserver getDefault() {\r
17                 return inst;\r
18         }\r
19 \r
20         public abstract void addCharacterDataChangeListener(\r
21                         CharacterDataChangeListener l);\r
22 \r
23         public abstract void removeCharacterDataChangeListener(\r
24                         CharacterDataChangeListener l);\r
25 \r
26         public abstract void notifyCharacterDataChange(CharacterDataChangeEvent e);\r
27 \r
28         public void notifyCharacterDataChange(Object wnd, CharacterData cd,\r
29                         boolean changeStructure, boolean reloadPartsAndFavorites) {\r
30                 if (cd == null) {\r
31                         throw new IllegalArgumentException();\r
32                 }\r
33                 notifyCharacterDataChange(new CharacterDataChangeEvent(wnd, cd,\r
34                                 changeStructure, reloadPartsAndFavorites));\r
35         }\r
36 }\r
37 \r
38 class CharacterDataChangeObserverImpl extends CharacterDataChangeObserver {\r
39 \r
40         private EventListenerList listeners = new EventListenerList();\r
41 \r
42         @Override\r
43         public void addCharacterDataChangeListener(CharacterDataChangeListener l) {\r
44                 listeners.add(CharacterDataChangeListener.class, l);\r
45         }\r
46 \r
47         @Override\r
48         public void removeCharacterDataChangeListener(CharacterDataChangeListener l) {\r
49                 listeners.remove(CharacterDataChangeListener.class, l);\r
50         }\r
51 \r
52         @Override\r
53         public void notifyCharacterDataChange(CharacterDataChangeEvent e) {\r
54                 if (e == null) {\r
55                         throw new IllegalArgumentException();\r
56                 }\r
57                 CharacterDataChangeListener[] lst = listeners\r
58                                 .getListeners(CharacterDataChangeListener.class);\r
59                 for (CharacterDataChangeListener l : lst) {\r
60                         l.notifyChangeCharacterData(e);\r
61                 }\r
62         }\r
63 }\r
64 \r