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 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 40 { 41 final ServerTreeNode snode = new ServerTreeNode(server); 42 connectedServers.add(snode); 43 44 treeModel.insertNodeInto(snode, 46 root, 47 0); 48 49 cd.executePeriodically(REFRESH_PERIOD, 51 new Runnable () { 52 public void run() 53 { 54 SwingUtilities.invokeLater(new Runnable () { 55 public void run() { 56 try 57 { 58 snode.refresh(treeModel); 59 } 60 catch (java.rmi.RemoteException e) {} 61 } 62 }); 63 } 64 }, 65 true); 66 } 67 68 void disconnect(ServerTreeNode stn) 69 throws java.rmi.RemoteException 70 { 71 if (connectedServers.contains(stn)) 72 { 73 connectedServers.remove(stn); 74 try 75 { 76 stn.getAdmin().close(); 77 } catch (java.rmi.RemoteException e) {} 78 79 treeModel.removeNodeFromParent(stn); 80 } 81 } 82 83 void refresh() 84 throws java.rmi.RemoteException 85 { 86 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 |