View Javadoc
1 package net.mlw.fball.gui.listeners;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6
7 import net.mlw.fball.event.Event;
8 import net.mlw.fball.event.EventListener;
9 import net.mlw.fball.gui.AppContext;
10 import net.mlw.fball.gui.events.ErrorEvent;
11 import net.mlw.fball.gui.events.RunLoadersEvent;
12 import net.mlw.fball.gui.events.StateChangedEvent;
13 import net.mlw.fball.loader.Loader;
14 import net.mlw.fball.loader.LoaderGroup;
15 import net.mlw.util.swing.CheckTreeNode;
16
17 /***
18 * net.mlw.fball.gui.listeners.RunLoadersEventListener
19 *
20 * @author Matthew L. Wilson
21 * @version $Revision: 1.1 $ $Date: 2004/03/01 15:31:43 $
22 */
23 public class RunLoadersEventListener implements EventListener, Runnable
24 {
25 private Thread thread;
26
27 private List selectedLoaders = new ArrayList();
28
29 /*** @see net.mlw.fball.event.EventListener#onEvent(net.mlw.fball.event.Event)
30 */
31 public void onEvent(Event event)
32 {
33 if (event instanceof StateChangedEvent)
34 {
35 StateChangedEvent stateChangedEvent = (StateChangedEvent) event;
36 CheckTreeNode node = (CheckTreeNode) stateChangedEvent.getSource();
37 if (node.isSelected())
38 {
39 selectedLoaders.add(node.getName());
40 }
41 else
42 {
43 selectedLoaders.remove(node.getName());
44 }
45 }
46 else if (event instanceof RunLoadersEvent)
47 {
48 synchronized (this)
49 {
50 if (thread == null)
51 {
52 thread = new Thread(this);
53 thread.start();
54 }
55 else
56 {
57 AppContext.getEventListenerGroup().onEvent(new ErrorEvent("error.loaderRunning"));
58 }
59 }
60 }
61 }
62
63 private void execute(LoaderGroup loaders) throws Exception
64 {
65 for (Iterator iter = loaders.getLoaders().iterator(); iter.hasNext();)
66 {
67 Loader loader = (Loader) iter.next();
68 if (loader instanceof LoaderGroup)
69 {
70 execute((LoaderGroup) loader);
71 }
72 else
73 {
74 if (selectedLoaders.contains(loader.getName()))
75 {
76 loader.doLoad();
77 }
78 }
79 }
80 }
81 /*** @see java.lang.Runnable#run()
82 */
83 public void run()
84 {
85 try
86 {
87 execute(AppContext.getRootLoader());
88 thread = null;
89 }
90 catch (Exception e)
91 {
92 e.printStackTrace();
93 }
94 }
95
96 }
This page was automatically generated by Maven