import java.applet.Applet; import java.awt.Label; import java.awt.TextField; import java.awt.Button; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.Panel; import java.awt.Color; import java.awt.Event; 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.JavaCGIBridgeTimeOutException; public class Example1Applet extends Applet { private Label _messageLabel = new Label("Enter string to reverse via CGI:"); private TextField _originalTextField = new TextField("hello"); private Button _cgiButton = new Button("Calculate & Display Using CGI/Perl Results"); private Label _reverseLabel = new Label(""); private Label _messageReverseLabel = new Label("Reversed String:"); private String _cgiURL = null; public void init() { this.setBackground(Color.white); setLayout(new BorderLayout()); Panel p = new Panel(); p.setLayout(new BorderLayout()); _messageLabel.setBackground(Color.white); _reverseLabel.setBackground(Color.white); _messageReverseLabel.setBackground(Color.white); p.add("North", _messageLabel); p.add("South", _originalTextField); add("North", p); add("South", _cgiButton); Panel pCenter = new Panel(); pCenter.setLayout(new GridLayout(1,2)); pCenter.add(_messageReverseLabel); pCenter.add(_reverseLabel); add("Center", pCenter); getSetupFile(); } // end of init method public boolean handleEvent(Event e) { if (e.id == Event.ACTION_EVENT && e.target == _cgiButton) { clicked__cgiButton(); } return super.handleEvent(e); } private void clicked__cgiButton() { JavaCGIBridge jcb = new JavaCGIBridge(); Vector returnedDataSet = null; URL u = null; try { if (_cgiURL.startsWith("http")) { u = new URL(_cgiURL); } else { u = new URL(getDocumentBase(), _cgiURL); } Hashtable formVars = new Hashtable(); jcb.addFormValue(formVars,"javacgibridge", "on"); jcb.addFormValue(formVars, "originalstring",_originalTextField.getText()); returnedDataSet = jcb.getParsedData(u,formVars); } catch (MalformedURLException e) { System.out.println("Malformed URL Exception:" + e); } catch (JavaCGIBridgeTimeOutException e) { System.out.println("JavaCGIBridge Timed Out:" + e); } String s = (String)((Vector)returnedDataSet.elementAt(0)).elementAt(0); _reverseLabel.setText(s); } 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("="); Vector returnedDataSet = null; Hashtable keyValuePairs = null; try { URL u = new URL(getDocumentBase(), "setup.html"); returnedDataSet = jcb.getParsedData(u); // 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