If you want to do this with swt's Browser:
- requires:
  - xulrunner 1.8.1.2 (I see that you have this already)
  - a very recent 3.3 stream swt (eg.-
http://download.eclipse.org/downloads/drops/I20070306-1200/index.php )

Example snippet:

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.widgets.*;
import org.mozilla.interfaces.*;

public class Main {
    public static void main(String [] args) {
        System.setProperty(
            "org.eclipse.swt.browser.XULRunnerPath",
            <stringPathToYourXULRunner1812install>);
        Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setBounds(10,10,400,400);
        final Browser browser = new Browser(shell, SWT.MOZILLA);
        browser.setUrl("http://www.google.ca";);
        browser.setBounds(10,10,300,300);
        Button button = new Button(shell, SWT.PUSH);
        button.setBounds(10,330,360,30);
        button.setText("Push to turn on design mode");
        button.addListener(SWT.Selection, new Listener() {
            public void handleEvent(Event event) {
                nsIWebBrowser webBrowser =
(nsIWebBrowser)browser.getWebBrowser();
                if (webBrowser == null) {
                    System.out.println("Could not get the nsIWebBrowser from
the Browser widget");
                    return;
                }
                nsIDOMWindow window = webBrowser.getContentDOMWindow();
                nsIDOMDocument document = window.getDocument();
                nsIDOMNSHTMLDocument nsDocument =
(nsIDOMNSHTMLDocument)document.queryInterface(nsIDOMNSHTMLDocument.NS_IDOMNS
HTMLDOCUMENT_IID);
                nsDocument.setDesignMode("on");
            }
        });
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) display.sleep();
        }
        display.dispose();
    }
}

Note that the first line (the System.setProperty) is a temporary measure to
ensure that an earlier XULRunner is not picked up by the Browser (if an
earlier one is found then the browser.getWebBrowser() call will answer
null).  You don't need this first line if your XULRunner 1.8.1.2 is properly
registered with the system  and you don't have an earlier XULRunner
installed.

Grant


"krithika" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> On Mar 8, 8:49 am, "timeless" <[EMAIL PROTECTED]> wrote:
> > On Mar 7, 2:46 pm, "krithika" <[EMAIL PROTECTED]> wrote:
> >
> >
> >
> > > Hi folks,
> >
> > > We are trying to embed gecko from java using javaxpcom in Linux.I have
> > > not been successful so far.
> >
> > > We do a JNI call which create a GTKWidget as shown below.This
> > > GtkWidget handle is being given to baseWindow.initWindow from my java
> > > code.
> >
> > > This is not working?
> >
> > > Can someone throw some light as to whether this is possible in the
> > > first place.
> >
> > > gtk_init(NULL,NULL);
> > >  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
> > >  /*-- Display the window --*/
> > > gtk_widget_realize(window);
> > >  area=gtk_hbox_new (FALSE, 10);
> > >  gtk_container_add(GTK_CONTAINER(window),area);
> > >  gtk_widget_realize(area);
> > >  gtk_widget_show(area);
> > >  gtk_main();
> >
> > > and return area to the java code via JNI.
> >
> > I don't understand your use of gtk_main()
> >
> > http://mxr.landfill.bugzilla.org/gnome/source/libgtk-java/src/java/or...
> >
> > Seems to indicate you're using it wrong. And given that
> > java.org.gnu.gtk.Gtk exists, I have to ask why you don't just use it.
>
>
> I just moved on to try swt package for gettting baseWindow handle.But
> webNavigation is not happening.This is what I have done.Using
> xulrunner1.8.1.2 jars / eclipse3.2.2 and swt package.
>
>         Display display = new Display();
> Shell shell = new Shell(display);
> shell.setBounds(300, 300, 300, 300);
> shell.setText("Main Window");
> TestGTK gtk =  new TestGTK(shell,SWT.EMBEDDED);
> gtk.initDisplay(shell);
>
> shell.open();
> gtk.test();
> while (!shell.isDisposed())
> {
> if (!display.readAndDispatch())
> display.sleep();
> }
>
> display.dispose();
>
>
> }
> void initDisplay(Composite parent)
> {
>     Display display = parent.getDisplay();
>     display.setData(NO_INPUT_METHOD, null);
> }
>
> public void test()
> {
>                        // gre initialization
> Mozilla mozilla = Mozilla.getInstance();
> mozilla.initialize(grePath);
> mozilla.initEmbedding(grePath, grePath, locProvider);
> componentManager =mozilla.getComponentManager();
> System.out.println("Step0: componentManager "+componentManager);
>
> serviceManager = mozilla.getServiceManager();
> System.out.println("Step1: serviceManager "+serviceManager);
>
> proxy =
>
(nsIProxyObjectManager)componentManager.createInstanceByContractID("@mozilla
.org/
> xpcomproxy;1",null,nsIProxyObjectManager.NS_IPROXYOBJECTMANAGER_IID);
>
> appStartup
> =(nsIAppStartup)serviceManager.getServiceByContractID("@mozilla.org/
> toolkit/app-startup;1",nsIAppStartup.NS_IAPPSTARTUP_IID);
> System.out.println("Step2: nsIAppStartup appStartup =
> "+appStartup);
>
> nsIWindowCreator windowCreator
>
=(nsIWindowCreator)appStartup.queryInterface(nsIWindowCreator.NS_IWINDOWCREA
TOR_IID);
> System.out.println("Step3: nsIWindowCreator windowCreator
> ="+windowCreator);
>
> windowWatcher =
> (nsIWindowWatcher)serviceManager.getServiceByContractID("@mozilla.org/
> embedcomp/window-watcher;1", nsIWindowWatcher.NS_IWINDOWWATCHER_IID);
> System.out.println("Step4: nsIWindowWatcher windowWatcher
> ="+windowWatcher);
>
> windowWatcher.setWindowCreator(windowCreator);
> System.out.println("Step5: setWindowCreator(windowCreator)");
>
> browser =
> (nsIWebBrowser)componentManager.createInstanceByContractID("@mozilla.org/
> embedding/browser/nsWebBrowser;
> 1",null,nsIWebBrowser.NS_IWEBBROWSER_IID);
> System.out.println("Step6: nsIWebBrowser "+browser);
>
>
> int hwnd = createWindowHandle();
> System.out.println("createWindowHandle "+hwnd);
> nsIBaseWindow baseWindow = (nsIBaseWindow)
>
> browser.queryInterface(nsIBaseWindow.NS_IBASEWINDOW_IID);
>         baseWindow.initWindow(hwnd, 0, 0, 0, 1024, 768);
> baseWindow.create();
> baseWindow.setVisibility(true);
>
> webNavigation = (nsIWebNavigation)
> browser.queryInterface(nsIWebNavigation.NS_IWEBNAVIGATION_IID);
> System.out.println("Step8: nsIWebNavigation "+webNavigation);
>
> webNavigation.loadURI(urlToLoad,nsIWebNavigation.LOAD_FLAGS_NONE,
> null, null, null);
> System.out.println("Step9: nsIWebNavigation url "+urlToLoad);
> listener=new WebProgressListener();
> progress=
> (nsIWebProgress)serviceManager.getServiceByContractID("@mozilla.org/
> docloaderservice;1", nsIWebProgress.NS_IWEBPROGRESS_IID);
> System.out.println("Step7: nsIWebProgress "+progress);
>
>
>
progress.addProgressListener((nsIWebProgressListener)listener,nsIWebProgress
.NOTIFY_ALL);
> System.out.println("Step7: nsIWebProgressListener added ");
>
>
>
> //appStartup.run();
>
>
>
> }
>
> int createWindowHandle()
> {
> String osname=System.getProperty("os.name");
> System.out.println("osname "+osname);
>           int embed_handle = OS.gtk_hbox_new (false, 0);
>         OS.gtk_container_add (this.handle, embed_handle);
>         OS.gtk_widget_show (embed_handle);
>        return embed_handle;
> }
>
>
> Need help.I have no exceptions or errors.
>
> regards,
> Krith
>


_______________________________________________
dev-embedding mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-embedding

Reply via email to