KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > ubermq > jms > ui > admin > AdminController


1 package com.ubermq.jms.ui.admin;
2
3 import EDU.oswego.cs.dl.util.concurrent.*;
4 import com.ubermq.jms.server.admin.*;
5 import java.util.*;
6 import javax.swing.*;
7 import javax.swing.tree.*;
8
9 /**
10  * The controller for the administrative application.<P>
11  *
12  * The admin app controls multiple administrative interfaces,
13  * and displays connections and meta-information about each.<P>
14  *
15  */

16 public class AdminController
17 {
18     private DefaultTreeModel treeModel;
19     private MutableTreeNode root;
20
21     private List connectedServers;
22
23     private ClockDaemon cd;
24     private static final long REFRESH_PERIOD = 10000;
25
26     public AdminController()
27     {
28         this.root = new DefaultMutableTreeNode(com.ubermq.jms.client.impl.Connection.UBERMQ_PROVIDER_NAME + " " +
29                                                    com.ubermq.jms.client.impl.Connection.UBERMQ_PROVIDER_VERSION);
30         this.treeModel = new DefaultTreeModel(root, true);
31
32         this.connectedServers = new ArrayList();
33         this.cd = new ClockDaemon();
34     }
35
36     DefaultTreeModel getTreeModel() {return treeModel;}
37
38     void connect(MessageServerAdmin server)
39         throws java.rmi.RemoteException JavaDoc
40     {
41         final ServerTreeNode snode = new ServerTreeNode(server);
42         connectedServers.add(snode);
43
44         // insert into tree
45
treeModel.insertNodeInto(snode,
46                                  root,
47                                  0);
48
49         // periodically refresh this
50
cd.executePeriodically(REFRESH_PERIOD,
51                                new Runnable JavaDoc() {
52                     public void run()
53                     {
54                         SwingUtilities.invokeLater(new Runnable JavaDoc() {
55                                     public void run() {
56                                         try
57                                         {
58                                             snode.refresh(treeModel);
59                                         }
60                                         catch (java.rmi.RemoteException JavaDoc e) {}
61                                     }
62                                 });
63                     }
64                 },
65                                true);
66     }
67
68     void disconnect(ServerTreeNode stn)
69         throws java.rmi.RemoteException JavaDoc
70     {
71         if (connectedServers.contains(stn))
72         {
73             connectedServers.remove(stn);
74             try
75             {
76                 stn.getAdmin().close();
77             } catch (java.rmi.RemoteException JavaDoc e) {}
78
79             treeModel.removeNodeFromParent(stn);
80         }
81     }
82
83     void refresh()
84         throws java.rmi.RemoteException JavaDoc
85     {
86         // do a blanket refresh of all connected servers.
87
Iterator iter = connectedServers.iterator();
88         while (iter.hasNext())
89         {
90             ServerTreeNode stn = (ServerTreeNode)iter.next();
91             stn.refresh(treeModel);
92         }
93     }
94 }
95
96
Popular Tags