ChannelListApplet.java
00001
00002
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;
00014 import com.rbnb.utility.RBNBProcess;
00015
00016
00017
00018
00019
00020
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
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
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
1.3.7