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

Reply via email to