I'm interested in using XUL as a standard way of defining my Java app (both Swing and web alike) UIs. To do this, I need two major components:
- An open source GUI builder that allows me to drag n'drop UI elements, like Abeille forms or Matisse, etc., and export these UIs into a standards-compliant XUL file
- A Java lib for reading that exported XUL file and building UI components out of it
I would have thought this would be easy to find, however there are a number of problems:
- For one, I can't seem to find an "official" XSD Schema for XUL (even off of Mozilla's site), so it doesn't seem to be universally enforced/validated from a central schema, and as such, seems to have lots of conflicting variations across various XUL tools/products
- Hence, gettting one tool that can export a XUL file, and a Java lib to read that XUL file without errors, seems to be difficult/impossible
- All the XUL-based GUI builders I've found seem to be proprietary and expensive
- The only Java libs that can read XUL files seem to be billed as "XUL toolkits" and include a web server, templating engine, etc. In other words, they are overkill for what I need, which is something that can read a XUL file and produce a container object full of UI widgets.
Anyone have any idea as to how I could marry these two ideas together and accomplish what I need? Thanks in advance!
I once explored that avenue with many toolkits. From my experience, it is not worth it, but why not give it another try?...
I needed the following :
- CSS Integration, if possible, to skin the UI
- Scripting using Rhino and/or other JVM scripting languages
- XML markup support and basic Swing integration (Not really important)
I ended up customizing an existing library. I can't recall the exact name, but I think it was a fork of swingml to support inline scripting better. I improved the Rhino support and also hooked some Jython integration.
There were many other options, but nothing that was really astonishing.
I also tried to use Apache Commons Jelly (main library behind early Apache Maven versions). Commons Jelly has/had a Jelly Swing module.
At the end, I realized that it wasn't both convenient and time saving, in addition to overhead (Java reflection and dynamic method dispatching, proxies and interaction with JVM scripting languages -> scoping among other things, etc.).