XUL/JavaScript <-> Java

[email protected]
Newsgroups gmane.comp.mozilla.devel.java
Organization http://groups.google.com
Message-ID <1168954537.378662.4090__22758.6466273808$1168954823$gmane$org@v45g2000cwv.googlegroups.com>
Hi!

I have implemented a GUI in XUL with JavaScript and load it in my
Java-App using the concept from
http://developer.mozilla.org/en/docs/JavaXPCOM:Embedding_Mozilla_in_a_Java_Application_using_JavaXPCOM.

My current Java-code is:
Code:

import java.io.FileNotFoundException;
import java.io.File;
import org.mozilla.xpcom.*;


public class JavaXPCOM_test1 {

   public static void main(String[] args) {

      File grePath = null;
      LocationProvider locProvider;

      Mozilla mozilla = Mozilla.getInstance();
      GREVersionRange[] range = new GREVersionRange[1];
      range[0] = new GREVersionRange("1.8.0", true, "1.9", false);

      try {
         grePath = Mozilla.getGREPathWithProperties(range, null);
         locProvider = new LocationProvider(grePath);
         mozilla.initEmbedding(grePath, grePath, locProvider);
      }

      catch (FileNotFoundException e) {
         System.out.println("Fehler: FileNotFoundException");
      }
      catch (XPCOMException e) {
         System.out.println("Fehler: XPCOMException");
      }

      System.out.println("File grePath = "+grePath);
      System.out.println("grePath.getPath = "+grePath.getPath());


      nsIServiceManager serviceManager = mozilla.getServiceManager();

      nsIAppStartup appStartup =
(nsIAppStartup)serviceManager.getServiceByContractID("@mozilla.org/toolkit/app-startup;1",
nsIAppStartup.NS_IAPPSTARTUP_IID);
       System.out.println("1: nsIAppStartup appStartup = "+appStartup);


       nsIWindowCreator windowCreator =
(nsIWindowCreator)appStartup.queryInterface(nsIWindowCreator.NS_IWINDOWCREATOR_IID);

       System.out.println("2: nsIWindowCreator windowCreator =
"+windowCreator);

       nsIWindowWatcher windowWatcher =
(nsIWindowWatcher)serviceManager.getServiceByContractID("@mozilla.org/embedcomp/window-watcher;1",
nsIWindowWatcher.NS_IWINDOWWATCHER_IID);
       System.out.println("3: nsIWindowWatcher windowWatcher =
"+windowWatcher);

       windowWatcher.setWindowCreator(windowCreator);
       System.out.println("4:
windowWatcher.setWindowCreator(windowCreator)");

       nsIDOMWindow win = windowWatcher.openWindow(null,
"chrome://editor/content", "JAVA_EDITOR",
"chrome,resizable,centerscreen", null);
       System.out.println("5: nsIDOMWindow win = "+win);

       windowWatcher.setActiveWindow(win);
       System.out.println("6: windowWatcher.setActiveWindow(win)");


       System.out.println("7: appStartup.run() START");
       appStartup.run();
       System.out.println("7: appStartup.run() FINISHED");


       System.out.println("try termEmbedding");
       try {
          System.out.println("mozilla.termEmbedding(); START");
          mozilla.termEmbedding();
          System.out.println("mozilla.termEmbedding(); FINISHED");
       }
       catch (XPCOMException e) {
          System.out.println("Fehler: XPCOMException");
       }
       System.out.println("finished termEmbedding");
      System.out.println("All done");

   } //static void main(String[] args)
} //public class JavaXPCOM_test1




Now i need to call a Java-method from within my JavaScript and call a
JavaScript-method from Java.

What is the simplest way to do this? I have read something that it is
possible with JavaXPCOM or LiveConnect. But I don't know what is
easyer, better and how to do it. I Think some example codes would save
a few days of work. Cause for somebody who allready has the code its no
prob to post a sample code that help many people needing it like me

Another questions I have are:
1.)
In future I want both, run my App via the embedded GUI in Jave using
the code shown and run my gui in directly as xulrunner standalone app.
So I need a interface between java and javascript that works in both
cases.

2.)
When I run my Java-App with the shown code it stops at the line
Code:
appStartup.run();

when my gui is displayed until I close the window.
Can I call another Java-method from JavaScript although the app stops
at lthis line? And what if I want to call a JavaScript-method from Java
now?

3.)
Will my app stay non platform specific?
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.