/** * Common initialization for all constructors. * * @throws Exception */ private void initialize() throws Exception { // Disable most Cobra logging. Logger.getLogger("org.lobobrowser").setLevel(Level.WARNING); // Initialize variables for use with Cobra HTML parsing uacontext = new SimpleUserAgentContext(); domFactory = DocumentBuilderFactory.newInstance(); domFactory.setNamespaceAware(true); // never forget this! domBuilder = domFactory.newDocumentBuilder(); doc = domBuilder.newDocument(); // Initialize variables for the inherited methods xpathFactory = XPathFactory.newInstance(); xpath = xpathFactory.newXPath(); }
public static void main(String[] args) throws Exception { // Initialize logging so only Cobra warnings are seen. Logger.getLogger("org.lobobrowser").setLevel(Level.WARNING); // Open a connection on the URL we want to render first. String uri = "http://www.google.com"; URL url = new URL(uri); URLConnection connection = url.openConnection(); InputStream in = connection.getInputStream(); // A Reader should be created with the correct charset, // which may be obtained from the Content-Type header // of an HTTP response. Reader reader = new InputStreamReader(in); // InputSourceImpl constructor with URI recommended // so the renderer can resolve page component URLs. InputSource is = new InputSourceImpl(reader, uri); HtmlPanel htmlPanel = new HtmlPanel(); UserAgentContext ucontext = new LocalUserAgentContext(); HtmlRendererContext rendererContext = new LocalHtmlRendererContext(htmlPanel, ucontext); // Set a preferred width for the HtmlPanel, // which will allow getPreferredSize() to // be calculated according to block content. // We do this here to illustrate the // feature, but is generally not // recommended for performance reasons. htmlPanel.setPreferredWidth(800); // Note: This example does not perform incremental // rendering while loading the initial document. DocumentBuilderImpl builder = new DocumentBuilderImpl(rendererContext.getUserAgentContext(), rendererContext); Document document = builder.parse(is); in.close(); // Set the document in the HtmlPanel. This method // schedules the document to be rendered in the // GUI thread. htmlPanel.setDocument(document, rendererContext); // Create a JFrame and add the HtmlPanel to it. final JFrame frame = new JFrame(); frame.getContentPane().add(htmlPanel); // We pack the JFrame to demonstrate the // validity of HtmlPanel's preferred size. // Normally you would want to set a specific // JFrame size instead. // pack() should be called in the GUI dispatch // thread since the document is scheduled to // be rendered in that thread, and is required // for the preferred size determination. EventQueue.invokeLater( new Runnable() { public void run() { frame.pack(); frame.setVisible(true); } }); }