1 package paolomind.multitalk.toolwrapper;
2
3 import java.awt.AWTEvent;
4 import java.awt.event.KeyEvent;
5 import java.awt.event.MouseEvent;
6 import java.util.Properties;
7
8 import paolomind.multitalk.netmessage.IMessageFactory;
9 import paolomind.multitalk.netmessage.IMessage;
10 import paolomind.multitalk.netmessage.MessageException;
11 import paolomind.multitalk.netmessage.Sender;
12 import paolomind.multitalk.plugin.ToolInterface;
13
14 /**
15 * una classe tool per rimandare tutti gli eventi ad un sender.
16 * @author paolo
17 *
18 */
19 public final class EchoEventToolWrapper implements ToolInterface {
20
21 /** */
22 private String name;
23
24 /** */
25 private Sender sender;
26
27 /** */
28 private IMessageFactory mfactory;
29
30 /**
31 * costruttore vuoto.
32 */
33 public EchoEventToolWrapper() {
34 }
35
36 /**
37 * @param e
38 * event
39 */
40 private void logevent(final AWTEvent e) {
41 if (sender != null) {
42 IMessage m = mfactory.createMessage();
43 if (e != null) {
44 m.addInfo(name + ":" + e.paramString());
45 } else {
46 m.addInfo(name + ": null");
47 }
48 m.addInfo(this.getSelfId());
49 sender.send(m);
50 }
51 }
52
53 /**
54 * @param m messaggio
55 */
56 private void logevent(final IMessage m) {
57 if (sender != null) {
58 sender.send(m);
59 }
60 }
61
62 /**
63 * costruttore.
64 * @param pname il nome da dare al tool di echo
65 */
66 public EchoEventToolWrapper(final String pname) {
67 this();
68 this.name = pname;
69 }
70
71 /**
72 * invocato quando il tool viene selezionato.
73 * @see paolomind.multitalk.plugin.ToolInterface#select()
74 */
75 public void select() {
76 logevent((AWTEvent) null);
77 }
78
79 /**
80 * restituisce il proprio id.
81 * @return il proprio id.
82 * @see paolomind.commons.NamedObject#getSelfId()
83 */
84 public String getSelfId() {
85 return name;
86 }
87
88 /**
89 * @param e evento del mouse
90 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
91 */
92 public void mouseClicked(final MouseEvent e) {
93 logevent(e);
94 }
95
96 /**
97 * @param e evento del mouse
98 * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
99 */
100 public void mouseEntered(final MouseEvent e) {
101 logevent(e);
102 }
103
104 /**
105 * @param e evento del mouse
106 * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
107 */
108 public void mouseExited(final MouseEvent e) {
109 logevent(e);
110 }
111
112 /**
113 * @param e evento del mouse
114 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
115 */
116 public void mousePressed(final MouseEvent e) {
117 logevent(e);
118 }
119
120 /**
121 * @param e evento del mouse
122 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
123 */
124 public void mouseReleased(final MouseEvent e) {
125 logevent(e);
126 }
127
128 /**
129 * @param e evento del mouse
130 * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
131 */
132 public void mouseDragged(final MouseEvent e) {
133 logevent(e);
134 }
135
136 /**
137 * @param e evento del mouse
138 * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
139 */
140 public void mouseMoved(final MouseEvent e) {
141 logevent(e);
142 }
143
144 /**
145 * @param e evento della tastiera
146 * @see java.awt.event.KeyListener#keyPressed(java.awt.event.KeyEvent)
147 */
148 public void keyPressed(final KeyEvent e) {
149 logevent(e);
150 }
151
152 /**
153 * @param e evento della tastiera
154 * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
155 */
156 public void keyReleased(final KeyEvent e) {
157 logevent(e);
158 }
159
160 /**
161 * @param e evento della tastiera
162 * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent)
163 */
164 public void keyTyped(final KeyEvent e) {
165 logevent(e);
166 }
167
168 /**
169 * ricezione di un messaggio.
170 *
171 * @param m
172 * il messaggio da ricevere
173 * @throws MessageException
174 * rilancia l'accezione in caso di errori nel messaggio
175 *
176 * @see paolomind.multitalk.netmessage.Receiver#receive(paolomind.multitalk.netmessage.IMessage)
177 */
178 public void receive(final IMessage m) throws MessageException {
179 logevent(m);
180 }
181
182 /**
183 * Non ha proprietà specifiche.
184 * @return null
185 * @see paolomind.multitalk.plugin.ToolInterface#getPropertes()
186 */
187 public Properties getPropertes() {
188 return null;
189 }
190
191 /**
192 * setta l'id.
193 * @param pname l'id con cui sarĂ identificato l'oggetto
194 * @see paolomind.commons.NamedObject#setSelfId(java.lang.String)
195 */
196 public void setSelfId(final String pname) {
197 this.name = pname;
198 }
199
200 /**
201 * il sender a cui inviare i messaggi di log.
202 * @param psender il sender a cui inviare i messaggi di log
203 */
204 public void setSender(final Sender psender) {
205 this.sender = psender;
206 }
207
208 /**
209 * la factory per creare messaggi.
210 * @param pfactory la factory dei messaggi
211 */
212 public void setMessageFactory(final IMessageFactory pfactory) {
213 this.mfactory = pfactory;
214 }
215 }