/* * Copyright (C) 2004 Sun Microsystems, Inc. All rights reserved. Use is * subject to license terms. * * This program is free software; you can redistribute it and/or modify * it under the terms of the Lesser GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA. */ import java.awt.*; import javax.swing.*; import java.net.URL; import java.net.MalformedURLException; import org.jdesktop.jdic.browser.*; /** * JDIC API demo main class. * <p> * SimpleBrowser demonstrate the usage of JDIC API package org.jdesktop.jdic.browser * (Browser component). */ public class SimpleBrowser { // Below method reads, changes javascript variables and attributes of DOM elements. private static void testDOMAPI(WebBrowser webBrowser) { System.out.println("==========================================================="); System.out.println("=== Test setContent()/getContent()/executeScript() APIs ==="); System.out.println("==========================================================="); // Add Chinese/Korean/Japan characters to the content to test unicode // support. String HTML_CONTENT = "<html>" + "<head>" + "<script>" + "var counter = 100;" + "function scriptMethod() { " + "alert('scriptMethod() within the loaded page'); " + "}" + "</script>" + "</head>" + "<title>Test Page for JDIC Browser Component</title>" + "" + "<body>" + "<div id='theDiv'>This page content is set using setContent() API</div>" + "</body>" + "</html>"; System.out.println("==============================="); System.out.println("=== To test executeScript() ==="); System.out.println("==============================="); String jscript = "alert(\"alert 'statement' test\");" + "document.bgColor='blue';"; String result = webBrowser.executeScript(jscript); System.out.println("Execution of: " + jscript + " returns: " + result); System.out.println("============================"); System.out.println("=== To test getContent() ==="); System.out.println("============================"); String content = webBrowser.getContent(); System.out.println("getContent() returns: " + content); System.out.println("============================"); System.out.println("=== To test setContent() ==="); System.out.println("============================"); System.out.println("To setContent(): " + HTML_CONTENT); webBrowser.setContent(HTML_CONTENT); jscript = "scriptMethod();"; System.out.println("Execute JavaScript method within the current page ..."); result = webBrowser.executeScript(jscript); String retContent = webBrowser.getContent(); System.out.println("getContent() returns: " + retContent); // getContent may return the same content in different upper/lower // case or single/double quotation mark. // Here we assume the content is equal if the content lengh is equal. if (retContent != null && retContent.length() == HTML_CONTENT.length()) { System.out.println("=== SUCCEED: getContent() correctly returns " + "the content set by setContent() !!!"); } else { System.out.println("=== ERROR: getContent() doesn't return the " + "content set by setContent() ???"); } } public static void main(String[] args) { JFrame frame = new JFrame("JDIC API Demo - SimpleBrowser"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final WebBrowser webBrowser = new WebBrowser(); //Use below code to check the status of the navigation process, //or register a listener for the notification events. webBrowser.addWebBrowserListener( new WebBrowserListener() { boolean isFirstPage = true; public void downloadStarted(WebBrowserEvent event) {;} public void downloadCompleted(WebBrowserEvent event) {;} public void downloadProgress(WebBrowserEvent event) {;} public void downloadError(WebBrowserEvent event) {;} public void documentCompleted(WebBrowserEvent event) { // Uncomment below code to test getContent()/setContent()/ // executeScript() APIs. // As the setContent() call will invoke this event, which falls // into a loop, so check if this event is fired by the first // loaded page. /* if (isFirstPage) { testDOMAPI(webBrowser); isFirstPage = false; } */ } public void titleChange(WebBrowserEvent event) {;} public void statusTextChange(WebBrowserEvent event) {;} }); try { webBrowser.setURL(new URL("http://java.net")); // Below Chinese website tests unicode support. //webBrowser.setURL(new URL("http://www.google.com/intl/zh-CN/")); // Print out debug messages in the command line. //webBrowser.setDebug(true); } catch (MalformedURLException e) { System.out.println(e.getMessage()); return; } JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.setPreferredSize(new Dimension(700, 500)); panel.add(webBrowser, BorderLayout.CENTER); frame.getContentPane().add(panel, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } }