SWTBrowser +getText

spammich

Grünschnabel
Also ich habe den SWTBrowser in meine Swing GUI eingebaut, die in einem Thread läuft.. Nun will ich aber ausserhalb des Threads ein Url setzen und mittel der funktion getText den Quellcode bekommen.. Nur habe ich kein schimmer wie genau ich das umsetzen soll..

Code:
import java.awt.Canvas;

import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class SWTBrowser {
   
   private final Display display;
   private final Shell shell;
   public final Browser browser;
   
   public SWTBrowser(Canvas canvas, int width, int height) {
      // TODO Auto-generated constructor stub
      try {
         display = new Display();
         shell = SWT_AWT.new_Shell(display, canvas);
         FillLayout shell1Layout = new FillLayout();
         shell.setLayout(shell1Layout);
         
         browser = new Browser(shell, SWT.NULL);
         browser.setLayoutData(new GridData(GridData.FILL_BOTH));
         
         shell.setSize(width, height);
         shell.open();
      } catch (Throwable e) {
         cleanUp();
         throw new IllegalStateException("Browser could not be initialized", e);
      }
   }
   
   public void start(String url) {
      setUrl(url);
      
      while (!shell.isDisposed()) {
         try {
            if (!display.readAndDispatch()) {
               display.sleep(); // If no more entries in event queue
            }
         } catch (ArrayIndexOutOfBoundsException e) {

         } catch (StackOverflowError e) {

         }
      }
      
      cleanUp();
      
   }
   
   public void cleanUp() {
      // explicity remove components
      if (shell != null)
         shell.dispose();
      if (browser != null)
         browser.dispose();
   }

   public final void setUrl(final String u) {
      display.asyncExec(new Runnable() {
         public void run() {
            browser.setUrl(u);
         }
      });      
   }


   public String getText() {
      // wie muss das nun aussehen?
   }
}

Also bei setUrl kann man ja von aussen mittels display.asyncExec auf den Thread zugreifen, nur wann weiss man, wann die Seite fertig geladen ist und wie gebe ich den String des Quellcodes zurück

//mfg micha
 
Zurück