Tuesday, December 14, 2004

Discovering XUL

I've been quite taken by some research I have done into XUL. I've been working on a company project and wanted to evaluate existing technologies for declaring user interfaces using XML. I have used ASP.NET, JSP Tags, XML/XSLT, Macromedia Flex and our own tag based controls. So far XUL offers some of the best performance and has made interface design very simple.

One thing that is quite concerning is the lack of XUL support in Internet Explorer. I've begun reading posts on if this is a problem that can be corrected. I started this whole journey by wanting HTCs to run in Mozilla. I found this post that is a good attempt at making that a reality...

http://dean.edwards.name/moz-behaviors/

But what this really did was expose me to XUL. I was trying to get HTCs working and thought... why not just create XBL versions of my existing HTCs? In doing this I discovered something... XUL is far superior to any declarative syntax I found.

So I began playing with this. Interestly as I got more and more working in regular XUL under Firefox, I realized this could be used to make applications instead of the HTC-based system I currently use. But the big challenge is that these applications would not be supported by IE... which is currentlt what all our customers use. This is obviously a big problem. So, I remembered what Dean Edwards had done getting HTCs to work in Mozilla and figured that since XUL/XBL is XML based, the opposite could be done for IE.

I began using Client-Side XSLT in IE to make this transformation. I am still working on this and will hopefully have more to report soon. I have sucessfully gotten IE to make XUL look like it should and act like it should (with box layout), but I need to work a little more on this.

Before I put too much more work into getting XUL to look good, I'm going to begin researching three of the more difficult integration points:

  1. Binding XBL to elements, presumably by rewriting the CSS to match the generated HTML and then adding a generic HTC behavior that knows how to read XBL, etc.
  2. Somehow mimicing general XPCOM components, and how to support other ones.
  3. Runtime changes to properties
  4. Binding controls to RDF datasource. I think this can be done through the client-side XSLT.
Hopefully I'll have more to report soon and a URL where these files will reside.

0 Comments:

Post a Comment

<< Home