public void connect(String page) {
    bf.status.setText("Connecting to server...");
    try {
      Socket socket = new Socket(server, port);
      // Set the server connect timeout to 5 seconds
      socket.setSoTimeout(5000);
      BufferedReader inputStream =
          new BufferedReader(new InputStreamReader(socket.getInputStream()));
      PrintWriter outputStream =
          new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);

      bf.status.setText("Reading URL...");
      outputStream.println("GET " + page + " HTTP/1.0");
      outputStream.println("Host: " + server);
      outputStream.println();
      String line = "";
      String text = "";
      int count = 0;
      boolean headers = true;
      while ((line = inputStream.readLine()) != null) {
        if (line.equals("")) {
          headers = false;
        }
        if (!headers && !line.equals("")) {
          text = text + parse(line) + "\n";
        }
        if (count != 1) {
          bf.status.setText("Read " + count + " lines");
        } else {
          bf.status.setText("Read " + count + " line");
        }
        count++;
      }
      bf.setText(text);
      bf.status.setText("done");

      socket.close();

    } catch (UnknownHostException e) {
      System.out.println(e);
      bf.setText("Not online");
      bf.status.setText("");
    } catch (SocketException e) {
      System.out.println("Socket Exception " + e);
      bf.setText("Socket exception");
      bf.status.setText("");
    } catch (InterruptedIOException e) {
      System.out.println("Read to server timed out " + e);
      bf.setText("Server connect timed out");
      bf.status.setText("");
    } catch (IOException e) {
      bf.setText("IO exception");
      bf.status.setText("");
      System.out.println("IOException " + e);
    }
  }
 public boolean handleEvent(Event e) {
   if (e.id == Event.WINDOW_DESTROY) {
     System.out.println("Disposing of browser frame");
     bf.hide();
     bf.dispose();
     bf = null;
     return true;
   } else {
     return false;
   }
 }
  public void frameInit(String url) {

    bf = new BrowserFrame(this, "SimpleBrowser", 25, 72, "", url);

    bf.ta.setFont(new java.awt.Font("Courier", java.awt.Font.PLAIN, 12));
    bf.resize(700, 500);
    bf.show();
    bf.back.disable();
    bf.forward.disable();
    bf.status.setText("Connecting to server");

    connect(split(url));
  }
 public boolean action(Event e, Object arg) {
   System.out.println(e + " " + arg);
   if (e.target == bf.tf) {
     System.out.println("new page");
     String url = bf.tf.getText();
     pages.addElement(url);
     String page = split(url);
     System.out.println("Server = " + server);
     System.out.println("Port = " + port);
     System.out.println("Page = " + page);
     connect(page);
     position++;
     bf.back.enable();
     return true;
   } else if (e.target == bf.back) {
     System.out.println("pos " + position + " " + pages.size());
     if (position > 0) {
       position--;
       String page = split((String) pages.elementAt(position));
       bf.tf.setText((String) pages.elementAt(position));
       connect(page);
       if (position == 0) {
         bf.back.disable();
       }
       bf.forward.enable();
     }
     return true;
   } else if (e.target == bf.forward) {
     if (position != pages.size() - 1) {
       position++;
       bf.tf.setText((String) pages.elementAt(position));
       String page = split((String) pages.elementAt(position));
       if (position == pages.size() - 1) {
         bf.forward.disable();
       }
       bf.back.enable();
       connect(page);
     }
     return true;
   } else if (e.target == bf.b) {
     System.out.println("Disposing of browser frame");
     bf.hide();
     bf.dispose();
     bf = null;
     return true;
   } else {
     return false;
   }
 }
 public void setRootNode(NodeImpl node) {
   if (!(node instanceof HTMLElementImpl)) {
     throw new IllegalArgumentException("node=" + node);
   }
   HTMLElementImpl element = (HTMLElementImpl) node;
   HtmlRendererContext context = element.getHtmlRendererContext();
   this.htmlContext = context;
   if (context != null) {
     String rows = element.getAttribute("rows");
     String cols = element.getAttribute("cols");
     HtmlLength[] rowLengths = this.getLengths(rows);
     HtmlLength[] colLengths = this.getLengths(cols);
     this.rowHtmlLengths = rowLengths;
     this.colHtmlLengths = colLengths;
     HTMLElementImpl[] subframes = this.getSubFrames(element);
     Component[] frameComponents = new Component[subframes.length];
     this.frameComponents = frameComponents;
     for (int i = 0; i < subframes.length; i++) {
       HTMLElementImpl frameElement = subframes[i];
       if (frameElement != null && "FRAMESET".equalsIgnoreCase(frameElement.getTagName())) {
         FrameSetPanel fsp = new FrameSetPanel();
         fsp.setRootNode(frameElement);
         frameComponents[i] = fsp;
       } else {
         BrowserFrame frame = context.createBrowserFrame();
         if (frameElement != null) {
           String src = frameElement.getAttribute("src");
           if (src != null) {
             java.net.URL url;
             try {
               url = frameElement.getFullURL(src);
               if (url != null) {
                 frame.loadURL(url);
               }
             } catch (MalformedURLException mfu) {
               // ignore
             }
           }
         }
         frameComponents[i] = frame.getComponent();
       }
     }
   }
 }