import java.applet.Applet; import java.awt.*; import java.net.URL; import java.net.MalformedURLException; import java.util.Vector; import java.util.Enumeration; import java.util.Hashtable; import com.extropia.net.JavaCGIBridge; import com.extropia.net.JavaCGIBridgeExtension; import com.extropia.net.JavaCGIBridgeTimeOutException; public class Example4Applet extends Applet { private TextArea _cgiResults = new TextArea(); private Button _callCGIButton = new Button("Call CGI Script"); private String _cgiURL = null; public void init() { this.setBackground(Color.white); setLayout(new BorderLayout()); add("North", _cgiResults); add("South", _callCGIButton); getSetupFile(); } // end of init method public boolean handleEvent(Event e) { if (e.id == Event.ACTION_EVENT && e.target == _callCGIButton) { clicked_cgiButton(); } return super.handleEvent(e); } private void clicked_cgiButton() { JavaCGIBridge jcb = new JavaCGIBridge(); byte [] returnedData = null; URL u = null; try { if (_cgiURL.startsWith("http")) { u = new URL(_cgiURL); } else { u = new URL(getDocumentBase(), _cgiURL); } returnedData = jcb.getRawData(u); } catch (MalformedURLException e) { System.out.println("Malformed URL Exception:" + e); } catch (JavaCGIBridgeTimeOutException e) { System.out.println("JavaCGIBridge Timed Out:" + e); } _cgiResults.setText(new String(returnedData,0)); } private void getSetupFile() { JavaCGIBridge jcb = new JavaCGIBridge(); // Since we are reading a setup file, we just want // to make it into a variable=value format instead of the // funky ~|~ seperator that is the default. This makes the // setup file easier to read at the risk of making sure a // particular variable does not have an equal symbol in its // value. jcb.setFieldSeparator("="); jcb.setRecordSeparator("\n"); Vector returnedDataSet = null; Hashtable keyValuePairs = null; try { URL u = new URL(getDocumentBase(), "setup.html"); returnedDataSet = jcb.getParsedData(u); if (returnedDataSet == null) { System.out.println("returned data set is null for some reason, probably a missing setup file"); } // We call the function below since the vectors that // are returned contain setup information in the form of // the first field being a key (variable) and the second // field being a value to the key keyValuePairs = jcb.getKeyValuePairs(returnedDataSet); } catch (MalformedURLException e) { System.out.println("Malformed URL Exception:" + e); } catch (JavaCGIBridgeTimeOutException e) { System.out.println("JavaCGIBridge Timed Out:" + e); } _cgiURL = (String)keyValuePairs.get("cgiURL"); } // end of getSetupFile } // end of ExampleApplet