[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.platform.swt] Re: SWT HTML browser component

For an example on how to get Form names through a javascript query see 
below - it is adapted from snippet 160 (query DOM node value).
Chris

import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.browser.*;

public class PRBrowser {
 public static void main(String [] args) {
  final String html = "<html><body><form name='my form 1'><input 
type='button' value='push me'></form><form name='my form 2'><input 
type='button' value='push me 2'></form><h1 id='myid'>HTML 
Document</h1></body></html>";
  Display display = new Display();
  final Shell shell = new Shell(display);
  shell.setLayout(new FillLayout());
  final Browser browser = new Browser(shell, SWT.NONE);
  browser.addStatusTextListener(new StatusTextListener() {
   public void changed(StatusTextEvent event) {
    browser.setData("query", event.text);
   }
  });
  browser.addProgressListener(new ProgressListener() {
   public void changed(ProgressEvent event) {
   }
   public void completed(ProgressEvent event) {
    /*
     * Use JavaScript to query the list of Form name attributes in the 
document that was loaded.
     *
     * Assign result to the window property status to pass the result to the 
StatusTextListener
     * This trick is required since <code>execute</code> does not return the 
<code>String</code>
     * directly.
     */
    boolean result = 
browser.execute("window.status=document.forms.length;");
    if (!result) {
     /* Script may fail or may not be supported on certain platforms. */
     System.out.println("Script was not executed.");
     return;
    }
    String value = (String)browser.getData("query");
    int length = Integer.parseInt(value);
    String[] forms = new String[length];
    for (int i = 0; i < forms.length; i++) {
     browser.execute("window.status=document.forms["+i+"].name;");
     forms[i] = (String)browser.getData("query");
     System.out.println("Form name: <"+forms[i]+">");
    }
    /* results in forms array */
   }
  });
  /* Load an HTML document */
  browser.setText(html);
  shell.open();
  while (!shell.isDisposed()) {
   if (!display.readAndDispatch())
    display.sleep();
  }
  display.dispose();
 }
}