View Javadoc
1 /***
2 * Copyright (c) 2003 held jointly by the individual authors.
3 *
4 * This library is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License as published
6 * by the Free Software Foundation; either version 2.1 of the License, or
7 * (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; with out even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with this library; if not, write to the Free Software Foundation,
16 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
17 *
18 * > http://www.gnu.org/copyleft/lesser.html
19 * > http://www.opensource.org/licenses/lgpl-license.php
20 */
21 package net.mlw.gfw.event;
22
23 import java.util.Stack;
24
25 /***
26 * @author Matthew L. Wilson
27 * @version $Revision: 1.3 $ $Date: 2004/06/29 20:32:57 $
28 */
29 public class AsynchronousEventHandlerDecorator extends Thread implements EventHandler
30 {
31 private EventHandler parent;
32 private Stack eventStack = new Stack();
33
34 /***
35 * @param parent
36 */
37 public AsynchronousEventHandlerDecorator(EventHandler parent)
38 {
39 setDaemon(true);
40 this.parent = parent;
41 }
42
43 /***
44 * @see net.mlw.gfw.event.EventHandler#onEvent(net.mlw.gfw.event.Event)
45 */
46 public synchronized void onEvent(Event event)
47 {
48 eventStack.addElement(event);
49 interrupt();
50 }
51
52 /***
53 * @see java.lang.Runnable#run()
54 */
55 public void run()
56 {
57 while (true)
58 {
59 try
60 {
61 while (eventStack.size() == 0)
62 {
63 synchronized (this)
64 {
65 wait();
66 }
67 }
68
69 Event event = (Event) eventStack.pop();
70 System.out.println(this +" " + event);
71 parent.onEvent(event);
72 }
73 catch (InterruptedException normalBehavior)
74 {
75 }
76 }
77 }
78 }
This page was automatically generated by Maven