mozilla

Compare Revisions

A XUL Bestiary

Change Revisions

Revision 68995:

Revision 68995 by Mgjbot on

Revision 68996:

Revision 68996 by Enn on

Title:
A XUL Bestiary
A XUL Bestiary
Slug:
XUL/A_XUL_Bestiary
XUL/A_XUL_Bestiary
Tags:
NeedsTechnicalReview, Extensions, Add-ons, XUL
NeedsTechnicalReview, Extensions, Add-ons, XUL
Content:

Revision 68995
Revision 68996
n8      This XULNote presents some of the key concepts and terms inn8      This XULNote presents some of the key concepts and terms in
> the XUL development environment. The purpose of this article is > the XUL development environment. The purpose of this article is 
>not to describe these items in any great detail but to define wha>not to describe these items in any great detail but to define wha
>t they are in simple terms. I selected items for this group becau>t they are in simple terms. I selected items for this group becau
>se they seemed to be either shrouded in mystery, misused as conce>se they seemed to be either shrouded in mystery, misused as conce
>pts or terms, or underestimated according to their role in XUL an>pts or terms, or underestimated according to their role in XUL an
>d cross-platform development. In contrast to the <a class="extern>d cross-platform development. In contrast to the <a class="extern
>al" href="http://www.mozilla.org/docs/jargon.html"><i>Mozilla Jar>al" href="http://www.mozilla.org/docs/jargon.html"><em>Mozilla Ja
>gon File</i></a>, this article describes items of specific intere>rgon File</em></a>, this article describes items of specific inte
>st to the web or content developer looking to establish a context>rest to the web or content developer looking to establish a conte
> for understanding Mozilla's new technologies -- and in particula>xt for understanding Mozilla's new technologies -- and in particu
>r Mozilla's XML-based User Interface Language, XUL.>lar Mozilla's XML-based User Interface Language, XUL.
n85      <b>myNewSkin/</b>n85      <strong>myNewSkin/</strong>
n109      Skinning is most often brought up in the context of dynamicn109      Skinning is most often brought up in the context of dynamic
> changes to the overall look of an application. Though this is no> changes to the overall look of an application. Though this is no
>t yet in the browser, very soon it will be possible to change the>t yet in the browser, very soon it will be possible to change the
> look of a whole application dynamically, but only to the extent > look of a whole application dynamically, but only to the extent 
>that the skin is actually defined in the main <i>global.css</i>, >that the skin is actually defined in the main <em>global.css</em>
>or global skin. When you create styles in &lt;style&gt; tags, as >, or global skin. When you create styles in &lt;style&gt; tags, a
>style attributes for individual elements, or in custom CSS files,>s style attributes for individual elements, or in custom CSS file
> you break the ability of Gecko to skin the application to which >s, you break the ability of Gecko to skin the application to whic
>your XUL belongs.>h your XUL belongs.
n121      The <b>D</b>ocument <b>O</b>bject <b>M</b>odel is the repren121      The <strong>D</strong>ocument <strong>O</strong>bject <stro
>sentation of a document as a series of scriptable objects. When a>ng>M</strong>odel is the representation of a document as a series
> scripting language like JavaScript accesses various parts of an > of scriptable objects. When a scripting language like JavaScript
>HTML document, it does so by means of the DOM. The parts of the d> accesses various parts of an HTML document, it does so by means 
>ocument, such as the head, the links, the body, any tags, are ava>of the DOM. The parts of the document, such as the head, the link
>ilable as nodes whose attributes can be got and set. There are, u>s, the body, any tags, are available as nodes whose attributes ca
>nfortunately, different document object models corresponding to d>n be got and set. There are, unfortunately, different document ob
>ifferent types of documents and also to different proprietary not>ject models corresponding to different types of documents and als
>ions about what in a document should be exposed programmatically.>o to different proprietary notions about what in a document shoul
> The <a class="external" href="http://www.w3c.org">W3C</a> has st>d be exposed programmatically. The <a class="external" href="http
>andardized on a particular Document Object Model and already has >://www.w3c.org">W3C</a> has standardized on a particular Document
>a candidate recommendation for an updated version. This is the DO> Object Model and already has a candidate recommendation for an u
>M that is reflected in XUL and in the Mozilla browser. At the hig>pdated version. This is the DOM that is reflected in XUL and in t
>hest level in the tree of nodes that is the DOM sits the window o>he Mozilla browser. At the highest level in the tree of nodes tha
>bject itself. The window has child nodes like the document itself>t is the DOM sits the window object itself. The window has child 
>, a history object which records the pages a user has seen, frame>nodes like the document itself, a history object which records th
> nodes, and so on, all of which are accessible programmatically.>e pages a user has seen, frame nodes, and so on, all of which are
 > accessible programmatically.
n127      The AOM stands for the Application Object Model, and is an n127      The AOM stands for the Application Object Model, and is an 
>extension of the DOM up into the interface defined in XUL. Just a>extension of the DOM up into the interface defined in XUL. Just a
>s HTML is reflected in the DOM as nodes like <i>link, layer,</i>s HTML is reflected in the DOM as nodes like <em>link, layer,</em
>and <i>img</i>, XUL is reflected in the Application Object Model >> and <em>img</em>, XUL is reflected in the Application Object Mo
>in the hierarchy of XUL widgets: browser, menu, menuitem, and so >del in the hierarchy of XUL widgets: browser, menu, menuitem, and
>on. The DOM and the AOM form a kind of continuum, the whole of wh> so on. The DOM and the AOM form a kind of continuum, the whole o
>ich is manipulable from the standards upon which XUL is based.>f which is manipulable from the standards upon which XUL is based
 >.
n148<b>&lt;menu id="file" value="File" &gt;</b>n148<strong>&lt;menu id="file" label="File" &gt;</strong>
149  &lt;popup&gt;149  &lt;menupopup&gt;
150    &lt;menuitem value="New" onclick="CreateNewDoc()" /&gt;150    &lt;menuitem label="New" oncommand="CreateNewDoc()" /&gt;
151    &lt;menuitem value="Open" onclick="OpenDoc()" /&gt;151    &lt;menuitem label="Open" oncommand="OpenDoc()" /&gt;
152    &lt;menuitem value="Close" onclick="CloseDoc()" /&gt;152    &lt;menuitem label="Close" oncommand="CloseDoc()" /&gt;
153  &lt;/popup&gt;153  &lt;/menupopup&gt;
154<b>&lt;/menu&gt;</b>154<strong>&lt;/menu&gt;</strong>
n166      If you don't do anything about these events, then you proban166      If you don't do anything about these events, then you proba
>bly never know about them. Documents will load, buttons will be c>bly never know about them. Documents will load, buttons will be c
>licked, and links will be hovered over, and events will be raised>licked, and links will be hovered over, and events will be raised
> for all these actions behind closed doors. If, however, you writ> for all these actions behind closed doors. If, however, you writ
>e <i>event handlers</i> inside <i>event listeners</i>, as we will>e <em>event handlers</em> inside <em>event listeners</em>, as we 
> describe shortly, you can use these events to set off other acti>will describe shortly, you can use these events to set off other 
>ons. This using of events to prompt other, more expicit actions i>actions. This using of events to prompt other, more expicit actio
>s loosely what is meant by an event model.>ns is loosely what is meant by an event model.
n187      Mozilla is obviously a lot more than simply an interface. In187      Mozilla is obviously a lot more than simply an interface. I
>t's cross-platform, and standards-based, and yet in some way, the>t's cross-platform, and standards-based, and yet in some way, the
> event handlers written once in JavaScript and living in the XUL > event handlers written once in JavaScript and living in the XUL 
>interface are getting very serious things done down in the applic>interface are getting very serious things done down in the applic
>ation core. Things like socket interfaces, editing, mail/news, se>ation core. Things like socket interfaces, editing, mail/news, se
>curity. The technologies that make this possible are perhaps the >curity. The technologies that make this possible are perhaps the 
>least understood of the phalanx of innovations that is Mozilla. I>least understood of the phalanx of innovations that is Mozilla. I
>n addition to the small matter of programming these serious thing>n addition to the small matter of programming these serious thing
>s in C++ and compiling them platform for platform, the architects>s in C++ and compiling them platform for platform, the architects
> and developers of Mozilla use three "XP" technologies to link th> and developers of Mozilla use three "XP" technologies to link th
>e core with the interface. XPCOM is not a programming language bu>e core with the interface. XPCOM is not a programming language bu
>t an approach to programming (in C++, say) that provides for a tr>t an approach to programming (in C++, say) that provides for a tr
>uly cross-platform Component Object Model, whence the technology >uly cross-platform Component Object Model, whence the technology 
>gets its name. Based on COM, XPCOM insists that chunks of code pr>gets its name. Based on COM, XPCOM insists that chunks of code pr
>ovide language- and platform-neutral interfaces that other object>ovide language- and platform-neutral interfaces that other object
>s can use to access its services. XPCOM enforces rules for design>s can use to access its services. XPCOM enforces rules for design
> and compilation that make it possible to use the services of an > and compilation that make it possible to use the services of an 
>object without knowing anything about implementation. XPIDL, the >object without knowing anything about implementation. XPIDL, the 
>Cross-Platform Interface Definition Language, is a language in wh>Cross-Platform Interface Definition Language, is a language in wh
>ich these interfaces insisted upon by XPCOM can be described. Whe>ich these interfaces insisted upon by XPCOM can be described. Whe
>n XPIDL is used to describe the XPCOM interfaces, it makes those >n XPIDL is used to describe the XPCOM interfaces, it makes those 
>interfaces available in special header files. Finally, XPConnect >interfaces available in special header files. Finally, XPConnect 
>is the technology that connects these XPCOM/XPIDL interfaces to J>is the technology that connects these XPCOM/XPIDL interfaces to J
>avaScript, the scripting language XUL uses. These three cross-pla>avaScript, the scripting language XUL uses. These three cross-pla
>tform glue technologies fit in the middle of an architecture that>tform glue technologies fit in the middle of an architecture that
> looks something like this: <img align="none" alt="Bridging C++ a> looks something like this: <img align="none" alt="Bridging C++ a
>nd JavaScript" fileid="775" src="File:en/Media_Gallery/Moz_xp.png>nd JavaScript" class=" internal" src="/@api/deki/files/775/=Moz_x
>">>p.png">
n191      Other Documents: <a class="external" href="http://www.moziln191      Other Documents: <a class="external" href="http://www.mozil
>la.org/docs/jargon.html">Mozilla Jargon File</a> and <a href="en/>la.org/docs/jargon.html">Mozilla Jargon File</a> and <a href="/en
>Introduction_to_XUL">Introduction to XUL</a>>/XUL/Introduction_to_XUL" title="en/XUL/Introduction_to_XUL">Intr
 >oduction to XUL</a>
tt205    </div>
206    <p>
205    </div>{{ languages( { "ja": "ja/A_XUL_Bestiary" } ) }}207      {{ languages( { "ja": "ja/A_XUL_Bestiary" } ) }}
208    </p>

Back to History