Hi, Dave Hyatt - Safari, Firebird and Mozilla XUL dev lead - blogs in Surfin' Safari about XUL and the XUL-like layout goodies packed into Safari 1.1 shipping with OS X 10.3 a.k.a. Panther.
Dave writes: So what is XUL anyway? It is an XML language whose tags consist of: (1) layout primitives (tags like hbox, vbox, grid and stack) (2) widgets (tags like menulist, menubar, toolbar, and button) (3) commands, keyboard accelerators (tags like command and keyset) (4) xul templates (for UI binding to back-end data, represented as RDF) and concludes how easy it is to build your own XUL motor: So to implement XUL, you have to: (a) build an XML+CSS+DOM+JS layout engine (b) implement additional layout primitives (like a spring and strut model and popups) that interoperate with the standard CSS-defined layout primitives (c) implement a binary format cache for the XML and JS so that it can be loaded really quickly even across launches of the app (d) implement a component/tag extension model like XBL to allow XML tags to be defined as components and reused easily in different pages, windows, and dialogs (e) implement XML tag support for all the remaining OS widgets that HTML has been missing for years (tree widget anyone?) (f) provide a binding from the GUI XML to backend data, via some form of data binding (Mozilla chose RDF) (g) expose an entire SDK for file I/O, networking, etc to JS in addition to your preferred native language formats (h) implement support for a command infrastructure for command execution and command updating (i) implement very smart memory caching for CSS and XML that allows lightweight prototypes to be cloned and shared (with copy-on-write semantics) Then all you have to do is put it in a blender for three years. See? It's easy. :) The piece of XUL that Safari implements is "(b) implement some additional layout primitives." XUL basically introduces four new layout primitives to CSS: the flexible box, the grid (flexible boxes in 2 dimensions), rich popups/tooltips, and stacks. Safari in Panther has implemented the first (and most useful) of those layout primitives, the flexible box model. Since the box layout primitives are defined via CSS, you can even use them in HTML (in either Safari or Mozilla). Full story @ http://weblogs.mozillazine.org/hyatt/archives/2003_10.html#004249 - Gerald ------------------------------------------------------- This SF.net email is sponsored by: The SF.net Donation Program. Do you like what SourceForge.net is doing for the Open Source Community? Make a contribution, and help us add new features and functionality. Click here: http://sourceforge.net/donate/ _______________________________________________ xul-announce mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/xul-announce