Main Page | Class Hierarchy | Class List | File List | Class Members | Related Pages

ChannelListApplet.java

00001 /* 00002 * Created on Mar 25, 2004 00003 */ 00004 package org.nees.rbnb; 00005 00006 import java.applet.Applet; 00007 00008 import java.awt.*; 00009 import java.awt.event.ActionEvent; 00010 import java.awt.event.ActionListener; 00011 00012 import com.rbnb.sapi.*; 00013 import com.rbnb.utility.ArgHandler; //for argument parsing 00014 import com.rbnb.utility.RBNBProcess; //alternative to System.exit, so 00015 //don't bring down servlet engine 00016 //import COM.Creare.Utility.ArgHandler; //for argument parsing 00017 //import COM.Creare.Utility.RBNBProcess; //alternative to System.exit, so 00018 //don't bring down servlet engine 00019 /* 00020 * @author terry 00021 */ 00022 public class ChannelListApplet extends Applet { 00023 00024 private static final String SERVER_NAME = "localhost"; 00025 private static final String SERVER_PORT = "3333"; 00026 private static final String SINK_NAME = "ListChannelApplet"; 00027 00028 private String serverName = SERVER_NAME; 00029 private String serverPort = SERVER_PORT; 00030 private String server = serverName + ":" + serverPort; 00031 private String sinkName = SINK_NAME; 00032 00033 Sink sink = null; 00034 ChannelMap sMap; 00035 int index; 00036 boolean connected = false; 00037 00038 Thread stringDataThread; 00039 boolean runit = false; 00040 00041 private void setArgs() { 00042 String serverName = SERVER_NAME; 00043 String serverPort = SERVER_PORT; 00044 String sinkName = SINK_NAME; 00045 String param; 00046 00047 param = getParameter("serverName"); 00048 if (param != null) 00049 serverName = param; 00050 00051 param = getParameter("serverPort"); 00052 if (param != null) 00053 serverPort = param; 00054 00055 param = getParameter("sinkName"); 00056 if (param != null) 00057 sinkName = param; 00058 00059 setArgs(serverName,serverPort,sinkName); 00060 } 00061 00062 private void setArgs(String serverName, String serverPort, String sinkName) 00063 { 00064 this.serverName = serverName; 00065 this.serverPort = serverPort; 00066 00067 server = serverName + ":" + serverPort; 00068 00069 setArgs(server,sinkName); 00070 } 00071 00072 private void setArgs(String server, String sinkName) 00073 { 00074 this.server = server; 00075 serverText.setText(server); 00076 00077 this.sinkName = sinkName; 00078 sinkText.setText(sinkName); 00079 } 00080 00081 private void setArgsFromTextFields() 00082 { 00083 setArgs ( 00084 serverText.getText(), 00085 sinkText.getText() 00086 ); 00087 } 00088 00089 public void openConnection() 00090 { 00091 if (connected) return; 00092 00093 try { 00094 disableStart(); 00095 setArgsFromTextFields(); 00096 messagePanel.message("Attempting connection to server..."); 00097 // Create a sink and connect: 00098 sink=new Sink(); 00099 sink.OpenRBNBConnection(server,sinkName); 00100 connected = true; 00101 messagePanel.message("ChannelListApplet: Connection made to server = " 00102 + server + " requesting channel list."); 00103 enableStart(); 00104 start(); 00105 connectButton.setLabel(DISCONNECT); 00106 connectButton.setActionCommand(connectButton.getLabel()); 00107 } 00108 catch (SAPIException se) 00109 { 00110 messagePanel.message("SAPIException = " + se); 00111 } 00112 } 00113 00114 private void enableStart() { 00115 startStopButton.setEnabled(true); 00116 } 00117 00118 private void disableStart() { 00119 startStopButton.setEnabled(false); 00120 } 00121 00122 private void closeConnection() 00123 { 00124 if (!connected) return; 00125 stop(); 00126 disableStart(); 00127 connected = false; 00128 sink.CloseRBNBConnection(); 00129 connectButton.setLabel(CONNECT); 00130 connectButton.setActionCommand(connectButton.getLabel()); 00131 } 00132 00133 public void startThread() 00134 { 00135 00136 if (!connected) return; 00137 00138 // Use this inner class to hide the public run method 00139 Runnable r = new Runnable() { 00140 public void run() { 00141 runWork(); 00142 } 00143 }; 00144 runit = true; 00145 stringDataThread = new Thread(r, "ChannelListThread"); 00146 stringDataThread.start(); 00147 messagePanel.message("ChannelListApplet: Started thread."); 00148 } 00149 00150 public void stopThread() 00151 { 00152 runit = false; 00153 stringDataThread.interrupt(); 00154 messagePanel.message("ChannelListApplet: Stopped thread."); 00155 } 00156 00157 private void runWork () 00158 { 00159 try { 00160 while(isRunning()) 00161 { 00162 sMap = new ChannelMap(); 00163 sink.RequestRegistration(); 00164 sMap = sink.Fetch(-1,sMap); 00165 ChannelTree tr = ChannelTree.createFromChannelMap(sMap); 00166 messagePanel.message(tr.toString()); 00167 try { 00168 Thread.sleep(1000); 00169 } catch (InterruptedException ignore) {} 00170 } 00171 } 00172 catch (SAPIException se) 00173 { 00174 messagePanel.message("SAPIException = " + se); 00175 } 00176 stringDataThread = null; 00177 } 00178 00179 public boolean isRunning() 00180 { 00181 return (connected && runit); 00182 } 00183 00184 public void init() { 00185 setArgs(); 00186 setLayout(); 00187 repaint(); 00188 messagePanel.message("initializing... "); 00189 messagePanel.message("Starting channelListApplet on " + server + " as " + sinkName); 00190 } 00191 00192 public void start() { 00193 messagePanel.message("starting... "); 00194 startThread(); 00195 startStopButton.setLabel(STOP); 00196 startStopButton.setActionCommand(startStopButton.getLabel()); 00197 } 00198 00199 public void stop() { 00200 messagePanel.message("stopping... "); 00201 stopThread(); 00202 startStopButton.setLabel(START); 00203 startStopButton.setActionCommand(startStopButton.getLabel()); 00204 } 00205 00206 public void destroy() { 00207 messagePanel.message("preparing for unloading..."); 00208 closeConnection(); 00209 } 00210 00211 private static final String CONNECT = "Connect"; 00212 private static final String DISCONNECT = "Disconnect"; 00213 private Button connectButton = new Button(CONNECT); 00214 00215 private static final String START = "Start"; 00216 private static final String STOP = "Stop"; 00217 private Button startStopButton = new Button(START); 00218 00219 private TextField serverText = 00220 new TextField(SERVER_NAME + ":" + SERVER_PORT,40); 00221 private TextField sinkText = new TextField(SINK_NAME,40); 00222 00223 MessagePanel messagePanel = new MessagePanel(); 00224 00225 private void setLayout() 00226 { 00227 setLayout(new BorderLayout()); 00228 00229 Panel p = new Panel(); 00230 p.setLayout(new GridLayout(2,4)); 00231 p.add(serverText); 00232 p.add(new Label("Server Host : port")); 00233 p.add(sinkText); 00234 p.add(new Label("Sink Name")); 00235 add("North",p); 00236 00237 p = new Panel(); 00238 p.add(connectButton); 00239 p.add(startStopButton); 00240 add("South", p); 00241 00242 p = new Panel(); 00243 p.add(messagePanel); 00244 add("Center", p); 00245 00246 startStopButton.setEnabled(false); 00247 startStopButton.setActionCommand(startStopButton.getLabel()); 00248 startStopButton.addActionListener( 00249 new ActionListener() { 00250 public void actionPerformed(ActionEvent ev) { 00251 startStopAction(ev.getActionCommand()); 00252 } 00253 } 00254 ); 00255 00256 connectButton.setActionCommand(connectButton.getLabel()); 00257 connectButton.addActionListener( 00258 new ActionListener() { 00259 public void actionPerformed(ActionEvent ev) { 00260 connectAction(ev.getActionCommand()); 00261 } 00262 } 00263 ); 00264 00265 } 00266 00267 private void startStopAction(String command) 00268 { 00269 if (command.equals(STOP)) 00270 stop(); 00271 else 00272 start(); 00273 } 00274 00275 private void connectAction(String command) 00276 { 00277 if (command.equals(CONNECT)) 00278 openConnection(); 00279 else 00280 closeConnection(); 00281 } 00282 00283 private void displayChannelList() { 00284 try { 00285 sMap = new ChannelMap(); 00286 sink.RequestRegistration(); 00287 sMap = sink.Fetch(-1,sMap); 00288 ChannelTree tr = ChannelTree.createFromChannelMap(sMap); 00289 messagePanel.message(tr.toString()); 00290 } catch (SAPIException se) { se.printStackTrace(); } 00291 } 00292 00293 }

Generated on Tue Aug 24 11:12:24 2004 for Data turbine for NEESGrid by doxygen 1.3.7