1 package paolomind.multitalk.plugin;
2
3 import java.util.HashMap;
4 import java.util.Iterator;
5 import java.util.Map;
6
7 import paolomind.commons.NamedObject;
8 import paolomind.commons.ObjectContainer;
9
10 /**
11 * oggetto che gestisce un insieme eterogeneo di moduli.
12 * @author paolo
13 */
14 public class ModuleManager implements Module, ObjectContainer {
15
16 /** */
17 private Module current;
18 /** */
19 private Map modulemap;
20 /** */
21 private String name;
22
23 /**
24 * costruttore.
25 * @param map
26 * la mappa di moduli
27 */
28 public ModuleManager(final Map map) {
29 modulemap = map;
30 }
31
32 /**
33 * costruttore.
34 */
35 public ModuleManager() {
36 this(new HashMap());
37 }
38
39 /**
40 * attiva il modulo corrente selezionato.
41 * @see paolomind.multitalk.plugin.Module#activate()
42 */
43 public final void activate() {
44 if (current != null) {
45 current.activate();
46 }
47 }
48
49 /**
50 * distruge il modulo corrente selezionato.
51 * @see paolomind.multitalk.plugin.Module#dispose()
52 */
53 public final void dispose() {
54 if (current != null) {
55 current.dispose();
56 }
57 }
58
59 /**
60 * inizializza il modulo corrente selezionato.
61 * @see paolomind.multitalk.plugin.Module#init()
62 */
63 public final void init() {
64 if (current != null) {
65 current.init();
66 }
67 }
68
69 /**
70 * mette in pausa il modulo corrente selezionato.
71 * @see paolomind.multitalk.plugin.Module#standby()
72 */
73 public final void standby() {
74 if (current != null) {
75 current.standby();
76 }
77 }
78
79 /**
80 * registra un ogetto.
81 *
82 * @param element
83 * l'oggetto da registrare con il suo nome
84 * @see paolomind.commons.ObjectContainer#register(paolomind.commons.NamedObject)
85 */
86 public final void register(final NamedObject element) {
87 modulemap.put(element.getSelfId(), element);
88 }
89
90 /**
91 * seleziona un ogetto registrato. il manager prende il comportamento di tale
92 * oggetto
93 *
94 * @param pname
95 * identificativo dell'ogetto
96 * @return true se l'oggetto esiste ed è stato selezionato, false altrimenti
97 * @see paolomind.commons.ObjectContainer#select(java.lang.String)
98 */
99 public final boolean select(final String pname) {
100 current = (Module) modulemap.get(pname);
101 return (current != null);
102 }
103
104 /**
105 * reperisce un elemento registrato.
106 *
107 * @param pname
108 * nome dell'oggetto registrato
109 * @return restituisce un ogetto registrato oppure null
110 * @see paolomind.commons.ObjectContainer#get(java.lang.String)
111 */
112 public final Object get(final String pname) {
113 return modulemap.get(pname);
114 }
115
116 /**
117 * restituisce tutti gli elementi.
118 *
119 * @return tutti gli elementi registrati
120 * @see paolomind.commons.ObjectContainer#getAll()
121 */
122 public final Iterator getAll() {
123 return modulemap.values().iterator();
124 }
125
126 /**
127 * restituisce il modulo corrente selezionato.
128 * @return il modulo corrente selezionato
129 */
130 protected final Module getCurrentModule() {
131 return current;
132 }
133
134 /**
135 * setta il modulo corrente.
136 * @param currentModule
137 * il modulo corrente.
138 */
139 protected final void setCurrentModule(final Module currentModule) {
140 this.current = currentModule;
141 }
142
143 /**
144 * restituisce la mappa dei moduli.
145 * @return la mappa dei moduli
146 */
147 protected final Map getModulemap() {
148 return modulemap;
149 }
150
151 /**
152 * setta la mappa dei moduli.
153 * @param pmodulemap
154 * la mappa dei moduli
155 */
156 protected final void setModulemap(final Map pmodulemap) {
157 this.modulemap = pmodulemap;
158 }
159
160 /**
161 * restituisce il proprio id.
162 * @return l'identificativo dell'ogetto
163 * @see paolomind.commons.NamedObject#getSelfId()
164 */
165 public final String getSelfId() {
166 return this.name;
167 }
168
169 /**
170 * setta l'id.
171 * @param pname l'id con cui sarà identificato l'oggetto
172 * @see paolomind.commons.NamedObject#setSelfId(java.lang.String)
173 */
174 public final void setSelfId(final String pname) {
175 this.name = pname;
176 }
177
178 }