Proceedings of the 4Th Annual Linux Showcase & Conference, Atlanta

Proceedings of the 4Th Annual Linux Showcase & Conference, Atlanta

USENIX Association Proceedings of the 4th Annual Linux Showcase & Conference, Atlanta Atlanta, Georgia, USA October 10 –14, 2000 THE ADVANCED COMPUTING SYSTEMS ASSOCIATION © 2000 by The USENIX Association All Rights Reserved For more information about the USENIX Association: Phone: 1 510 528 8649 FAX: 1 510 548 5738 Email: [email protected] WWW: http://www.usenix.org Rights to individual papers remain with the author or the author's employer. Permission is granted for noncommercial reproduction of the work for educational or research purposes. This copyright notice must be included in the reproduced paper. USENIX acknowledges all trademarks herein. Mozilla as a cross-platform application development framework David Ascher, Eric Promislow, Dick Hardt ActiveState Tool Corporation 1 Outline • Overview of Mozilla as an application development framework • Building portable user interfaces with XUL, XBL and JavaScript • XPCOM: Mozilla's component strategy • Architecture of the Komodo IDE, a large non- browser Mozilla application • Lessons learned in working with Mozilla Mozilla Overview • XML & JS define the UI • Components (think of them as classes) define the implementation/backend • NSPR is a portable runtime library • Necko is network library • Oh yeah, there’s a layout engine too… (Gecko) • Emphasis on standards compliance 2 UI TLAs • XUL: XML dialect for layout of widgets • XBL: XML dialect for association of behaviors with widgets • JavaScript: What to do on events • Skins: switchable themes XUL Example <?xml version="1.0"?> <?xml-stylesheet href="chrome://mypackage/skin/" type="text/css"?> <?xul-overlay href="chrome://mypackage/content/myOverlay.xul"?> <window id="main-window" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" onload="EditorOnLoad()" > <script language="JavaScript" src="chrome://mypackage/content/demo.js"/> <box orient="vertical"> <button id="Spam" flex="2" oncommand = "DoIt()" /> <button id="Foo" flex="1"/> <button id="Eggs" flex="1"/> </box> </window> 3 XPCOM • Cross-platform component model • Much like COM, without IDispatch • C++, JavaScript supported by Netscape • Python and Perl support by ActiveState • Define an IDL file, an implementation, and can call from any language (e.g. JS in a XUL file) IDL Example: [scriptable, uuid(D1899240-F9D2-11D2-BDD6-000064657374)] interface nsISimpleEnumerator : nsISupports { boolean hasMoreElements(); nsISupports getNext(); }; 4 Python Implementation from xpcom import components class SimpleEnumerator: _com_interfaces_ = [components.interfaces.nsISimpleEnumerator] _reg_desc_ = "Python SimpleEnumerator Implementation" _reg_progid_ = "Python.SimpleEnumerator" _reg_clsid_ = "{E4EE2533-F5BD-4c2c-BEDF-5EC4A35BC609}" def __init__(self): self._data = [] self._index = 0 def hasMoreElements(self): return self._index < len(self._data) def getNext(self): self._index = self._index + 1 return self._data[self._index-1] JS Usage Pattern var winEnumerator = foo.getEnumerator(); while ( winEnumerator.hasMoreElements()) { var myWindow = winEnumerator.getNext(); … do something with myWindow … } The enumerator could be written in C++, Perl, Python, JavaScript, … 5 Architecture of Komodo IDL IDL IDL Python Python Python Perl Perl Perl XPCOM Py/XPCOM Perl/XPCOM XPCOM Core XPCONNECT C++ C++ JS JS JS Non-XPCOM Parts of Mozilla including: Access to DOM manipulation Other Key Tech • Gecko (Layout) • DOM / XML • Network APIs • RDF • NSPR • Java • Crypto • Mail/News/Composer/Chatzilla/… • SVG? XSLT? 6 Lessons learned • XPCOM is a great foundation to build on • Mozilla is huge, but worth investigating • Get involved! – www.mozilla.org – Newsgroups, Bugzilla, IRC • Netscape is a great partner • Unique opportunity for Linux community 7.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    8 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us