<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>xul &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://wordpress.com/tag/xul/</link>
	<description>Feed of posts on WordPress.com tagged "xul"</description>
	<pubDate>Wed, 14 May 2008 14:55:10 +0000</pubDate>

	<generator>http://wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Native look and feel apps with Firefox XULRunner]]></title>
<link>http://weeklysqueak.wordpress.com/?p=418</link>
<pubDate>Tue, 13 May 2008 15:32:07 +0000</pubDate>
<dc:creator>Michael Davies</dc:creator>
<guid>http://weeklysqueak.wordpress.com/?p=418</guid>
<description><![CDATA[
Pavel Krivanek has published details of a project he&#8217;s been working on: SeasideXUL, which us]]></description>
<content:encoded><![CDATA[<p><a href="http://weeklysqueak.wordpress.com/files/2008/05/seasidexul.png"><img class="alignnone size-full wp-image-420" src="http://weeklysqueak.wordpress.com/files/2008/05/seasidexul.png" alt="" width="331" height="308" /></a></p>
<p>Pavel Krivanek has published details of a project he's been working on: <a href="http://code.google.com/p/seasidexul/">SeasideXUL</a>, which uses the Mozilla Foundation's <a href="http://developer.mozilla.org/en/docs/XULRunner">XULRunner</a> and <a href="http://en.wikipedia.org/wiki/AJAX">Ajax</a>, with <a href="http://www.seaside.st/">Seaside</a> providing the muscle, and allows developers to create applications with a native look and feel.</p>
<p>Pavel has already used the framework to wrap the <a href="http://wiresong.ca/OmniBrowser">OmniBrowser suite</a> of development tools, so allowing Squeak development to take place in the host environment.</p>
<p>The code is <a href="http://http://www.squeaksource.com/SeasideXUL.html">downloadable from SqueakSource</a>, and a <a href="http://seasidexul.googlecode.com/files/obseasidexul.zip">pre-built image</a> has also been made available which includes the OmniBrowser integration. Pavel has also published <a href="http://comtalk.eu/public/pub/SeasideXUL/screenshots/">a set of screenshots</a> of the "Periodic Table" sample application demonstrating the capabilities of SeasideXUL.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[How to detect XUL trees scroll event]]></title>
<link>http://dafizilla.wordpress.com/?p=54</link>
<pubDate>Fri, 09 May 2008 17:17:56 +0000</pubDate>
<dc:creator>dafi</dc:creator>
<guid>http://dafizilla.wordpress.com/?p=54</guid>
<description><![CDATA[My extension VisualDiffer contains two nsITreeViews that must synchronize scrolling, when user scrol]]></description>
<content:encoded><![CDATA[<p>My extension <a href="http://dafizilla.sourceforge.net/visualdiffer/index.php">VisualDiffer</a> contains two <a href="http://www.xulplanet.com/references/xpcomref/ifaces/nsITreeView.html">nsITreeView</a>s that must synchronize scrolling, when user scrolls one the other tree moves the selection to the corresponding row.</p>
<p>Apparently XUL trees don't have any event handler to intercept scrolling operations so I run the risk to became crazy.</p>
<p>After days spent to find a solution (using google) without result I've tried to use the <a href="http://www.xulplanet.com/references/elemref/ref_EventHandlers.html#attr_DOMAttrModified">DOMAttrModified</a> event and amazingly it worked.</p>
<p>First I add a listener to the tree (VisualDiffer adds listeners to left and right trees)</p>
<p>document.getElementById<span style="color:#871f78;">(</span><span style="color:#23238e;">"left-tree"</span><span style="color:#871f78;">)</span>.addEventListener<span style="color:#871f78;">(</span><span style="color:#23238e;">"DOMAttrModified"</span>,<br />
function<span style="color:#871f78;">(</span>event<span style="color:#871f78;">)</span> <span style="color:#871f78;">{</span> gFolderDiffer.onLeftScroll<span style="color:#871f78;">(</span>event<span style="color:#871f78;">)</span>;<span style="color:#871f78;">}</span>, <span style="color:#871f78;">false</span><span style="color:#871f78;">)</span>;</p>
<p>The onScroll simply checks if event.attrName is "curpos" and if it's true the tree has been scrolled by user</p>
<p>onLeftScroll <span style="color:#871f78;">:</span> function<span style="color:#871f78;">(</span>event<span style="color:#871f78;">)</span> <span style="color:#871f78;">{</span> <span style="color:#871f78;"> if</span> <span style="color:#871f78;">(</span>event.attrName <span style="color:#871f78;">==</span> <span style="color:#23238e;">"curpos"</span><span style="color:#871f78;">)</span> <span style="color:#871f78;">{</span><br />
rightTreeView.treebox.scrollToRow<span style="color:#871f78;">(</span>leftTreeView.treebox.getFirstVisibleRow<span style="color:#871f78;">(</span><span style="color:#871f78;">)</span><span style="color:#871f78;">)</span>;<br />
<span style="color:#871f78;">}</span><br />
<span style="color:#871f78;">}</span></p>
<p>This solution works fine but maybe exists a better way...</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[VisualDiffer: a new Komodo extension]]></title>
<link>http://dafizilla.wordpress.com/?p=51</link>
<pubDate>Sat, 03 May 2008 07:17:11 +0000</pubDate>
<dc:creator>dafi</dc:creator>
<guid>http://dafizilla.wordpress.com/?p=51</guid>
<description><![CDATA[When I migrated to Ubuntu I loose some important developer tools like UltraEdit and Beyond Compare t]]></description>
<content:encoded><![CDATA[<p>When I migrated to Ubuntu I loose some important developer tools like <a href="http://www.ultraedit.com/">UltraEdit</a> and <a href="http://www.scootersoftware.com/">Beyond Compare</a> two closed-source commercial applications representing the state-of-art like editor and file comparator.</p>
<p>I've created <a href="http://dafizilla.sourceforge.net/morekomodo/index.php">MoreKomodo</a> (the original name was UltraKomodo :P ) to add to <a href="http://www.activestate.com/Products/komodo_ide/komodo_edit.mhtml">KomodoEdit</a> the UltraEdit features I need.</p>
<p>Folders and files comparison tools under Gnome are poor so I've decided to create my own differ application based on KomodoEdit for at least three reasons</p>
<p>KomodoEdit is open source</p>
<p>KomodoEdit is XUL based so I can develop re-using my know-how</p>
<p>KomodoEdit is multiplatform (thanks to Mozilla Gecko Engine)</p>
<p>Finally I've finished the first stable version of <a href="http://dafizilla.sourceforge.net/visualdiffer/index.php">VisualDiffer</a>, it misses many features but I hope to add them.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Linux+ 3/2008]]></title>
<link>http://mati304.wordpress.com/?p=85</link>
<pubDate>Thu, 01 May 2008 11:59:56 +0000</pubDate>
<dc:creator>mati304</dc:creator>
<guid>http://mati304.wordpress.com/?p=85</guid>
<description><![CDATA[ena: 24.90zł

Na dołączonej płycie DVD znajdziemy CoreWars oraz dystrybucję Mandriva 2008 Free.]]></description>
<content:encoded><![CDATA[<p><strong>ena:</strong> 24.90zł</p>
<p><img src="http://lpmagazine.org//files/linuxplus/Cover/Linux_03_2008_PL.jpg" alt="" /></p>
<p>Na dołączonej płycie DVD znajdziemy<strong> CoreWars</strong> oraz dystrybucję <strong>Mandriva 2008 Free</strong>.</p>
<p><strong><span class="article_title">Multimedia w systemie Ola!Dom 6.06</span></strong><br />
<span class="pdf_author">Krzysztof Lichota pokaże, że edycja plików wideo wcale nie jest taka skomplikowana, jak się powszechnie uważa. Razem z artykułem, użytkownik zgra film z płyty, zmieni napisy i język ścieżki dźwiękowej oraz nagra tak przygotowany plik na płytę. </span></p>
<p><strong><span class="article_title">Przegląd systemów zarządzania treścią</span></strong><br />
Ciężko sobie wyobrazić administrację strony bez CMS'a. Ta publikacja, autorstwa <span class="pdf_author">Przemysława Żarneckiego, jest porównaniem ogólnie dostępnych w sieci tego typu systemów. Przedstawia, między innymi PHP Nuke, ThePortal, Xoops i Mambo. </span></p>
<p><strong>Undervolting pod Linuksem</strong><br />
Tekst przedstawia pojęcie undervoltingu oraz opis uruchomienia go w systemach Linux. Autor artykułu dogłębnie poruszył temat i napisał obszerny poradnik. Czytelnik nie będzie miał problemu z całym procesem.</p>
<p><strong>Opera - idealne połączenie</strong><br />
Jest to publikacja opisująca znaną przeglądarkę internetową - Operę. Autor jednak skupił się na wbudowanym kliencie pocztowym. Pokazał siłę Opera Mail Client (M2), dzięki czemu produkt norweskiej firmy jest potężnym narzędziem do codziennej pracy.</p>
<p><strong>Pozostałe artykuły:</strong></p>
<ul>
<li><span class="article_title">ClawsMail</span></li>
<li><span class="article_title">XUL- wieloplatformowy język opisu interfejsu użytkownika, cz.2.</span></li>
<li><span class="article_title">Scalix - migracja z MS Exchange</span></li>
<li><span class="article_title">Wojny rdzeniowe</span></li>
<li><span class="article_title">Warzone 2100 Resurection - strategia czasu rzeczywistego</span></li>
</ul>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Getting started with XULRunner]]></title>
<link>http://milanjk.wordpress.com/?p=8</link>
<pubDate>Tue, 15 Apr 2008 11:54:06 +0000</pubDate>
<dc:creator>milanjk</dc:creator>
<guid>http://milanjk.wordpress.com/?p=8</guid>
<description><![CDATA[XULRunner is a Mozilla runtime package that can be used to bootstrap XUL+XPCOM applications that ar]]></description>
<content:encoded><![CDATA[<p><a title="XULRunner" href="http://developer.mozilla.org/en/docs/XULRunner" target="_blank">XULRunner</a> is a Mozilla runtime package that can be used to bootstrap XUL+XPCOM applications that are as rich as Firefox and Thunderbird. Flickr Uploader is built using XULRunner, there is <a href="http://developer.yahoo.net/blog/archives/2008/02/flickr-uploadr-open-source-xulrunner.html" target="_blank">video </a>explaining the same thing that I came across...for my reference:</p>
<ul>
<li><a href="http://developer.mozilla.org/en/docs/XULRunner" target="_blank">XULRunner</a>, <a href="http://developer.mozilla.org/en/docs/Getting_started_with_XULRunner" target="_blank">Getting Started with XULRunner</a></li>
<li><a title="Source Code, Flickr Uploader" href="http://www.flickr.com/tools/uploadr/">Flickr Uploader</a>, <a href="http://developer.yahoo.net/blog/archives/2008/02/flickr-uploadr-open-source-xulrunner.html" target="_blank">Video</a></li>
</ul>
<p>On the same note, if you require a packager, <a href="http://nsis.sourceforge.net/Main_Page" target="_blank">NSIS </a>is the leading choice!!</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[How to get element style values from XUL (or HTML)]]></title>
<link>http://dafizilla.wordpress.com/?p=50</link>
<pubDate>Mon, 07 Apr 2008 18:15:34 +0000</pubDate>
<dc:creator>dafi</dc:creator>
<guid>http://dafizilla.wordpress.com/?p=50</guid>
<description><![CDATA[I&#8217;m working to my Extend Firefox 2 Runner Up winner Table2Clipboard.
Many users tell me to add]]></description>
<content:encoded><![CDATA[<p>I'm working to my Extend Firefox 2 <a href="http://blog.mozilla.com/extendfirefox/2008/03/12/announcing-the-extend-firefox-2-winners/">Runner Up</a> winner <a href="http://dafizilla.sourceforge.net/table2clip/index.php">Table2Clipboard</a>.</p>
<p>Many users tell me to add a simple feature, exclude cells having style display: none.</p>
<p>The solution is so straightforward that I could not believe after initial implementation.</p>
<p>You can style an element using CSS selectors</p>
<p>.<span style="color:#008b8b;">invisible</span> <span style="color:#871f78;">{</span><br />
display: <span style="color:#871f78;">none</span>;<br />
<span style="color:#871f78;">}</span></p>
<p><span style="color:#0000ff;">&#60;span</span> <span style="color:#871f78;">id</span><span style="color:#871f78;">=</span><span style="color:#23238e;">"invisibleSpan"</span> <span style="color:#871f78;">class=</span><span style="color:#23238e;">"invisible"</span><span style="color:#0000ff;">&#62;</span>I'm invisible man<span style="color:#0000ff;">&#60;/span&#62;</span></p>
<p>or using the attribute style attribute</p>
<p><span style="color:#0000ff;">&#60;span</span> <span style="color:#871f78;">id</span><span style="color:#871f78;">=</span><span style="color:#23238e;">"invisibleSpan"</span> <span style="color:#871f78;">style=</span><span style="color:#23238e;">"display : none"</span><span style="color:#0000ff;">&#62;</span>I'm invisible man<span style="color:#0000ff;">&#60;/span&#62;</span></p>
<p>These two ways can both simply handled using <a href="http://developer.mozilla.org/en/docs/DOM:window.getComputedStyle">getComputedStyle</a></p>
<p><span style="color:#871f78;">var</span> spanElement <span style="color:#871f78;">=</span> document.getElementById<span style="color:#871f78;">(</span><span style="color:#23238e;">"invisibleSpan"</span><span style="color:#871f78;">)</span>;<br />
<span style="color:#871f78;">var</span> style <span style="color:#871f78;">=</span> spanElement.ownerDocument.defaultView.getComputedStyle<span style="color:#871f78;">(</span>spanElement, <span style="color:#871f78;">null</span><span style="color:#871f78;">)</span>;<br />
<span style="color:#871f78;">var</span> displayValue <span style="color:#871f78;">=</span> style.getPropertyValue<span style="color:#871f78;">(</span><span style="color:#23238e;">"display"</span><span style="color:#871f78;">)</span>;</p>
<p>That's all folks!!</p>
<p>Obviously you can use any CSS attribute not only <span style="color:#23238e;">display</span>.</p>
<p>Pay attention to ownerDocument.defaultView, you should use window.getComputedStyle() but under XUL this doesn't return what you expect.</p>
<p>getComputedStyle can be used in normal unprivileged HTML code, too.</p>
<p>getComputedStyle is a W3C standard and is present on Internet Explorer, Opera and Safari, too.</p>
<p>Little things make developer life easier.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[این بار هم Firefox از نگاهی دیگر]]></title>
<link>http://silvercover.wordpress.com/?p=28</link>
<pubDate>Thu, 03 Apr 2008 11:27:09 +0000</pubDate>
<dc:creator>silvercover</dc:creator>
<guid>http://silvercover.wordpress.com/?p=28</guid>
<description><![CDATA[با طوفانی که بنیاد موزیلا با ارائه محصولات خود ، خصوصا ]]></description>
<content:encoded><![CDATA[<p align="justify"><img src="http://silvercover.wordpress.com/files/2008/04/firefox-logo.png" alt="firefox-logo.png" align="left" />با طوفانی که بنیاد موزیلا با ارائه محصولات خود ، خصوصا فایرفاکس به راه انداخته است کمتر پیش می آید که خبر یا مطلبی پیرامون آن در محافل خبری و علمی مربوطه به گوش نرسد. از آنجاییکه عموما هر بار گوشه ای از قابلیت ها و ویژگی های فایر فاکس مطرح می شود، لذا این بار بر آن شدم تا مروری بر بسته های توسعه (Extension) فایرفاکس را تقدیم خوانندگان نمایم. در این مقاله ابتدا شرحی مختصر بر چگونگی تولید و توسعه Extension ها ارائه می شود و در ادامه چند Extension معروف فایر فاکس بررسی می شود.</p>
<p align="justify">همان طور که می دانید نرم افزارهای امروزی به دلیل رشد سریع پیشرفت های نرم افزاری از یک طرف و تقاضای روز افزون کاربران جهت ارائه ویژگی های جدید از جانب تولید گنندگان نرم افزار، آماج تغییرات زیادی هستند. بنابراین در این بین باید راه حلی جهت حل مقطعی یا دائمی وجود داشته باشد. این راه حل فراهم آوردن امکاناتی از جانب تولید کنندگان اصلی نرم افزار برای کاربران است که طی آن بتوانند به نیاز های خود پاسخ گویند و خود بتوانند قابلیت های برنامه را توسعه دهند. به بیان دیگر می توان از این امکان استفاده نمود و بسته هایی را جهت توسعه برنامه اصلی تولید نمود. عمدتا از این بسته ها تحت عنواین Plug-In، Add-On، Add-In، Extension و... یاد می شود که در رابطه با فایر فاکس بسته های توسعه دهنده به صورت زیر تعریف می شوند:</p>
<div align="justify"></div>
<p align="justify"><b>Extension</b>: افزودنی های کوچکی هستند که قابلیت های فایر فاکس یا <a href="http://www.mozilla.com/thunderbird/" target="_blank">Thunderbird</a> را افزایش می دهند. این افزودنی ها می توانند هر چیزی از نوار های ابزار گرفته تا یک ویژگی کاملا جدید را به بدنه برنامه های مذکور اضاف نمایند.</p>
<div align="justify"></div>
<p align="justify">Plug-In: <b>Plug-In</b> ها نیز برنامه هایی هستند جهت افزودن قابلیت های مرورگر فایرفاکس تا مرورگر بتواند محتویات خاصی همچون ویدئو، موسیقی و بازی را عرضه کند. مثالی از این دست فلش پلیر شرکت Adobe ، اکروبات ریدر و نرم افزار ماشین مجازی از شرکت سان است.</p>
<div align="justify"></div>
<p align="justify"><b>Theme</b>: توسط <a href="https://addons.mozilla.org/en-US/firefox/browse/type:2" target="_blank">Theme</a> ها می توان ظاهر برنامه های ساخت بنیاد موزیلا را تغییر داد. این به معنی گرافیک و رنگ های جدید می باشد.</p>
<p align="justify"><!--more--></p>
<p>در این مقاله تمرکز ما بر روی Extension ها می باشد. حال اجازه دهید تا نگاهی مختصر به چگونگی ساخت این Extension ها داشته باشیم. Extension ها در فایر فاکس توسط زبان Javascript نوشته می شوند. زبانی که این روزها بسیار مورد توجه واقع شده است.</p>
<p align="justify">Extension های فایرفاکس به صورت فایل های Zip یا بسته هایی با پسوند XPI (زیپی تلفظ می شود) منتشر می شوند. محتویات در این بسته ها به ترتیب خاصی قرار می گیرند که لازم است این ترتیب به هنگام ساخت Extension های جدید رعایت شود. در ابتدا و به طور کلی این مرحله از کار صرف مهیا سازی محیط توسعه می شود که اولین گام جدی در تولید Extension ها می باشد. برنامه های نوشته شده باید بر طبق این ساختار در بسته قرار گیرند. گام بعدی تولید فایل Install Manifest است. در این فایل، توسعه دهنده بایستی اقدام به درج خصوصیات Extension خود نماید. برای این کار شیوه ای از پیش تعیین شده وجود دارد که مشخص می کند خصوصیات چگونه باید درج شوند. در حقیقت عملیات این مرحله به شناسایی Extension توسط مرورگر فایر فاکس کمک می کند. همان طور که مشخص است اکثرا Extension ها دارای واسط گرافیکی مختص خود هستند که به هنگام نصب یا استفاده از آنها در مرورگر فایر فاکس نمایان می شود. بنابراین باید به هنگام تولید Extension ها واسط مورد نیاز را تهیه کنیم. این کار توسط زبان XUL ( بخوانید زول ) امکان پذیر است.</p>
<p align="justify"> XUL سر نام عبارت <a href="http://www.mozilla.org/projects/xul/" target="_blank">XML User Interface Language</a> است که یک زبان نشانه گذاری واسط کاربر ( User Interface) است. این زبان جهت پشتیبانی از برنامه های ساخت بنیاد موزیلا همانند فایرفاکس و Thunderbird توسعه داده شده است. همانند  XIML و 1 UIML این زبان کاربردی از XML است که رابط کاربری را توصیف می کند. از آنجاییکه XUL یک استاندارد عمومی نمی باشد، از دسته ای از استاندارد ها و فن آوری های موجود شامل CSS، Javascript، 2DTD و 3RDF تشکیل شده است که نسبتا فراگیری این تکنیک را برای برنامه نویسانی که دارای تجاربی در امر طراحی وب هستند آسان می کند. شایان ذکر است که خود رابط کاربری مرورگر فایرفاکس توسط این زبان نوشته شده است. در این مرحله قسمت های (Widget  ها) مورد نیاز توسط افزودن بلوکی حاوی عناصر مربوط به همراه کنترلگر های رویداد صورت می پذیرد. جهت مشاهده یک نمونه عملی می توانید از مسیر نصب مرورگر فایر فاکس و از پوشه chrome فایل browser.jar را با کمک برنامه WinRAR از حالت فشرده خارج نموده و توسط یک ویرایشگر متن اقدام به مشاهده ساختار فایل browser.xul نمایید. ساختار گرافیکی فایر فاکس در این فایل توصیف شده است. این فایل به گونه ای سازمان یافته است که بتواند تغییرات لازم را در رابط کاربری ، حتی در زمان اجرا اعمال نماید.</p>
<p align="justify">بسته های حاوی عناصر تشکیل دهنده رابط کاربری فایرفاکس تحت نام chrome package معرفی می شوند. بنابراین فایل های مبتنی بر زبان XUL نیز جزئی از این بسته می باشد. در همین راستا به دلیل متغیر بودن محل نصب فایر فاکس در سیستم های مختلف توسعه دهندگان موزیلا تصمیم گرفتند که از URI ها ( در اینجا chrome://) سود جویند. پس از اینکه بسته chrome آماده شد نوبت به ثبت آن می رسد. منظور از ثبت فرآیندی است که طی آن به مرورگر اعلام می کنیم که رابط کاربری Extension را شناسایی کند.</p>
<p align="justify">در ادامه اقدام به تست Extension خود می نماییم تا از بابت عملکرد صحیح آن اطمینان یابیم. این کار را از طریق ایجاد چندین فایل به خصوص در پوشه Extension که خود در پوشه profile واقع شده است، انجام می شود. بدین ترتیب فایرفاکس پس از اولین اجرا بعد از عملیات مذکور، Extension را یافته و اقدام به نصب آن می کند. اما این هنوز پایان کار نیست و نباید تصور کرد که Extension آماده انتشار است. حال که از بابت عملکرد صحیح Extension مطمئن شدیم نوبت به ایجاد بسته نهایی جهت انتشار می رسد. بسته نهایی با زیپ کردن محتویات ساخته شده بر اساس چیدمانی که در ابتدای این بحث مطرح شد انجام می پذیرد. سپس به راحتی با تغییر نام بسته پسوند آن را با xpi جایگزین می کنیم. حالا بسته شما آماده انتشار است. توضیحات ارائه شده در این بخش تنها شرحی کلی بر چگونگی ساخت Extension های مرورگر فایرفاکس بود. جهت مطالعه جزئیات بیشتر می توانید به آدرس <a href="http://developer.mozilla.org/en/doc/extensions" target="_blank">developer.mozilla.org/en/doc/extensions</a> مراجعه کنید. باید گفت که درصد قابل توجهی از Extension های ارائه شده از جانب توسعه دهندگان آنچنان پیچیده نیست که این می تواند سبب ایجاد انگیزه برای توسعه دهندگان نو پا شود تا به جمع توسعه دهندگان موزیلا بپیوندند.</p>
<p align="justify">اما پس از بررسی اجمالی نحوه ساخت Extension برای فایرفاکس اجازه دهید به چند Extension برتر بیاندازیم. معیار این برتری آمار دریافت ها و نرخ برتری آنهاست. جدول زیر لیست 10 Extension برتر ارائه شده در سایت رسمی برنامه فایرفاکس به همراه شرح مختصری پیرامون آنها را نشان می دهد. لازم به ذکر است که جهت حذف و یا مشاهده خصوصیات Extension ها و تنظیم آنها می توانید از منوی Tools برنامه فایرفاکس گزینه Extensions را برگزینید. چنانچه هیچ Extension ی را نصب نکرده باشید ممکن است پس بازگشایی پنجره Extension تنها با DOM Inspector که یک کاوشگر جهت کنکاش در ساختار شی ای (DOM) اسناد بارگذاری شده است، مواجه شوید. این Extesnsion خود ابزاری بسیار مفید برای توسعه دهندگان وب می باشد.</p>
<h3><b>برخی از افزودنی ( Extension ) های مشهور فایرفاکس</b></h3>
<h4> Flashgot</h4>
<p align="justify">	 ابزاری جهت دریافت سریع و متجمع محتویات سایت هاست. این Extension دارای ویژگی جالب توجه جهت تولید گالری های چند رسانه ای می باشد.</p>
<h4>Noscript</h4>
<p align="justify">	این بسته قابلیت های حفاظتی اضافی را برای فایرفاکس به ارمغان می آورد. این بسته به شما امکان می دهد تا اجرای محتویات وابسته به یک زبان اسکریپتی از قبیل Javascript را تحت کنترل خود در آورد و به عبارتی با سفارشی سازی مانع از بروز مشکلات امنیتی شوید.</p>
<h4> Fasterfox</h4>
<p>این Extension را می توان جهت افزایش کارایی فایرفاکس به کاربرد. این بسته با در اختیار گذاشتن ابزارهایی جهت دست کاری ویژگی هایی از قبیل DNS Cache ، Pipelining و... می تواند بسیار مورد توجه کاربران حرفه ای واقع شود.</p>
<h4> Adblock</h4>
<p>این بسته جهت بلوکه کردن محتویات ناخواسته تبلیغاتی مورد استفاده قرار می گیرد.</p>
<h4> downTHEMall</h4>
<p>این بسته به عنوان جایگزینی برای برنامه های مدیریت دانلود ارائه شده و به ادعای سازندگان آن می تواند سرعت دریافت را تا 600% افزایش دهد!</p>
<h4> Tabbrowser Preferences</h4>
<p>این بسته ویژگی های بیشتری را برای قابلیت Tab browsing مرورگر ارائه می دهد.</p>
<h4> IE Tab</h4>
<p>این بسته امکان الحاق مرورگر IE به درون مرورگر فایرفاکس را با هدف افزودن ویژگی Tab browsing فراهم می سازد.</p>
<h4> Forecastfox</h4>
<p>از این ابزار می توان جهت اطلاع یافتن از وضع آب و هوای نقاط مختلف جهان استفاده نمود.</p>
<h4> Tabmix Plus</h4>
<p align="justify">	از این بسته ارزشمند می توان جهت افزودن قابلیت های بیشتری به ویژگی Tab Browsing مرورگر فایر فاکس استفاده نمود. توسط این Extension می توان از Tab های موجود نمونه برداری کرد و یا رفتار آنها را کنترل کرده و یا Tab  های بسته شده را مجددا باز (Undo) نمود. در این بسته همچنین قسمتی جهت مدیریت Sessionها ارائه شده است که از آن می توان برای بازیابی وضعیت اولیه پس از Crash شدن مرورگر سود جست.</p>
<h4></h4>
<h4>PDF Download</h4>
<p>به هنگام مواجهه با فایل های PDF  امکان انتخاب اینکه ایا فایل PDF درون خود فایرفاکس یا برنامه خارجی مورد استفاده جهت خواندن فایل PDF باز شود را در اختیار کاربر قرار می دهد.<br />
<i>منبع:</i><br />
developer.mozilla.org/en/doc/extensions</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[XUL and textbox CSS styles]]></title>
<link>http://dafizilla.wordpress.com/?p=48</link>
<pubDate>Sun, 30 Mar 2008 10:46:40 +0000</pubDate>
<dc:creator>dafi</dc:creator>
<guid>http://dafizilla.wordpress.com/?p=48</guid>
<description><![CDATA[If you want to change the background color for HTML input text boxes you simply set the background-c]]></description>
<content:encoded><![CDATA[<p>If you want to change the background color for HTML input text boxes you simply set the <b>background-color</b> style attribute, very obvious.</p>
<p>.<font color="#008b8b">my-textbox</font> <font color="#871f78">{</font><br />
background-color: <font color="#871f78">red</font>;<br />
<font color="#871f78">}</font></p>
<p>If you want to make same thing for XUL <a href="http://developer.mozilla.org/en/docs/XUL:textbox">textboxes</a> you apply the same style attribute discovering it doesn't work... :(</p>
<p>Ehm.. It works but you must disable standard mozilla behaviour using <a href="http://developer.mozilla.org/en/docs/CSS:-moz-appearance">-moz-appearance</a> attribute</p>
<p>.<font color="#008b8b">my-textbox</font> <font color="#871f78">{<br />
</font>  -moz-appearance: <font color="#871f78">none</font>;<br />
background-color: <font color="#871f78">red</font>;<br />
<font color="#871f78">}</font></p>
<p>Little lesson learned ;)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Deferred functions in Javascript]]></title>
<link>http://pausebuttonedit.wordpress.com/?p=6</link>
<pubDate>Mon, 24 Mar 2008 14:44:54 +0000</pubDate>
<dc:creator>pausebuttonedit</dc:creator>
<guid>http://pausebuttonedit.wordpress.com/?p=6</guid>
<description><![CDATA[Okey dokey. So as my first little peek at some of the actual programming I&#8217;ve been up to over ]]></description>
<content:encoded><![CDATA[<p>Okey dokey. So as my first little peek at some of the actual programming I've been up to over the past couple of years, here's a little implementation of a way to defer arbitrary functions until arbitrary conditions have been met.</p>
<p>One of the first problems I came up against when developing Bxs came to light when I was figuring out how to build editable XUL <a href="http://xulplanet.com/references/elemref/ref_listbox.html">listboxes</a> for given MySQL tables dynamically at application startup, and then share information between them as they were building and after they were built.</p>
<p>Example: I have a table describing a list of exhibitions, each row having the usual stuff like title, dates etc., and also a field for the exhibition venue, which is a 'has-one' relationship to another table. I want the exhibitions listbox to display not the id number of the relevant venue, but the name of the venue and the city it's located in. I want the app, as it's booting up, to recognise that the given field relates to another table, check if the listbox for that table has built itself yet, and if so, to grab the relevant details from that listbox. If the related listbox hasn't built, the requesting table tells it to build, waits until it's built, etc.</p>
<p>The problem is: how do I tell the exhibitions listbox when the venues listbox has built?</p>
<p>The way I did it was using <a href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Object:watch">object.watch()</a>. Here's the implementation:</p>
<pre>
<code>

when = function(obj,prop,fn) {
    if (obj[prop] &#38;&#38; obj[prop] !== undefined) {
        return fn();
    }

    if (!obj.deferredFunctions) {
        obj.deferredFunctions = {};
    }
    if (!obj.deferredFunctions[prop]) {
        obj.deferredFunctions[prop] = [];
    }
    obj.deferredFunctions[prop].push(fn);

    var ready = function(newVal) {
        obj.unwatch(prop);
        obj[prop] = newVal;

        obj.deferredFunctions[prop].forEach(function(el,idx,arr) {
            var _fn = el;
            arr[idx] = null;
            return _fn();
        });

        delete obj.deferredFunctions[prop];
        return obj[prop];
    }

    obj.watch(prop,function(myProp,oldVal,newVal) {
        if (newVal !== undefined) {
            return ready(newVal);
        }
    });

};

/* Example pseudo-code: */
when(listbox.venues,'ready',function() { listbox.exhibitions.updateLabels(); });

</code></pre>
<p>The big problem with this implementation is that it can't return a value unless the prop you're waiting for is already set when you call when(). But I'm fairly proud of it. It has a nice natural calling syntax and gets a lot of stuff done in not much code.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Get HTML code from nsISelection in XUL]]></title>
<link>http://dafizilla.wordpress.com/?p=45</link>
<pubDate>Sat, 22 Mar 2008 07:56:33 +0000</pubDate>
<dc:creator>dafi</dc:creator>
<guid>http://dafizilla.wordpress.com/?p=45</guid>
<description><![CDATA[Recently after a discussion with my friend bard we realized how it is easy to obtain HTML source cod]]></description>
<content:encoded><![CDATA[<p>Recently after a discussion with my friend <a href="http://sameplace.cc/fr/blog">bard</a> we realized how it is easy to obtain HTML source code associated to the current browser (eg Firefox, Flock) selection.</p>
<p>It's too simple to discuss the snippet, leave the code speaks itself</p>
<pre><font color="#871f78">function</font> selectionToHTMLSource<font color="#871f78">()  {
</font>    <font color="#871f78">var</font> sel <font color="#871f78">=</font> document.commandDispatcher.focusedWindow.getSelection<font color="#871f78">();
</font>    <font color="#871f78">if (</font>sel.rangeCount <font color="#871f78">&#60; <font color="#8b0000">1</font>) {
</font>        <font color="#871f78">return</font> "";
    <font color="#871f78">}</font>

    <font color="#871f78">var</font> node <font color="#871f78">=</font> sel.getRangeAt(<font color="#8b0000">0</font>).cloneContents<font color="#871f78">();
</font>    <font color="#871f78">var</font> xmlStr <font color="#871f78">=</font> <font color="#871f78">new</font> XMLSerializer<font color="#871f78">().</font>serializeToString<font color="#871f78">(</font>node<font color="#871f78">);
</font>    <font color="#871f78">return</font> xmlStr<font color="#871f78">;
}</font></pre>
<p>The code handles single selection, if you need to work with multiple selections like tables rows/cells take a look at <a href="http://dafizilla.sourceforge.net/table2clip/index.php">Table2Clipboard</a></p>
<pre></pre>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Joke]]></title>
<link>http://pppc.wordpress.com/2008/03/20/joke/</link>
<pubDate>Thu, 20 Mar 2008 20:46:26 +0000</pubDate>
<dc:creator>pppc</dc:creator>
<guid>http://pppc.wordpress.com/2008/03/20/joke/</guid>
<description><![CDATA[
Un projet de dance flour pour les bas quartiers de Maribor.
]]></description>
<content:encoded><![CDATA[<p><a href="http://pppc.wordpress.com/files/2008/03/joke.png" title="joke"><img src="http://pppc.wordpress.com/files/2008/03/joke.png" alt="joke" /></a></p>
<p>Un projet de dance flour pour les bas quartiers de Maribor.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Célébration Xul du 29 février]]></title>
<link>http://pppc.wordpress.com/?p=12</link>
<pubDate>Thu, 20 Mar 2008 18:36:47 +0000</pubDate>
<dc:creator>pppc</dc:creator>
<guid>http://pppc.wordpress.com/?p=12</guid>
<description><![CDATA[
Pour l&#8217;équinoxe républicaine, la corporation s&#8217;invite au 108 rue de Bourgogne.
]]></description>
<content:encoded><![CDATA[<p><a href="http://pppc.wordpress.com/files/2008/03/expo.png" title="visuel expo"><img src="http://pppc.wordpress.com/files/2008/03/expo.thumbnail.png" alt="visuel expo" /></a></p>
<p>Pour l'équinoxe républicaine, la corporation s'invite au 108 rue de Bourgogne.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[XBL, CSS selectors priority and Firefox 3]]></title>
<link>http://dafizilla.wordpress.com/?p=42</link>
<pubDate>Tue, 11 Mar 2008 18:58:43 +0000</pubDate>
<dc:creator>dafi</dc:creator>
<guid>http://dafizilla.wordpress.com/?p=42</guid>
<description><![CDATA[I wrote a little XBL component to allow menuitems to have images centered, I added it to Firefox 2 b]]></description>
<content:encoded><![CDATA[<p>I wrote a little XBL component to allow menuitems to have images centered, I added it to Firefox 2 browser context menu and worked fine immediately, after a while I installed component on Firefox 3 beta 4 and surprisingly the menuitem didn't show the image :(</p>
<p>I've asked help on <a href="irc://irc.mozilla.org/extdev">Mozilla IRC</a> and after about an hour the mistery was revealed.</p>
<p>The innocent CSS declaration shown below works fine on Firefox 2</p>
<p>.<font color="#008b8b">menuitem-image-center</font> <font color="#871f78">{</font><br />
-moz-binding<font color="#871f78">: url(</font><font color="#23238e">'chrome://morekomodo/content/bindings/menu.xml#menuitemImageCenterBinding'</font><font color="#871f78">);</font><br />
<font color="#871f78">}</font></p>
<p>but requires a little modification on Firefox 3 beta 5pre (at this time the latest available)</p>
<p>.<font color="#008b8b">menuitem-image-center</font> {<br />
-moz-binding<font color="#871f78">: url(</font><font color="#23238e">'chrome://morekomodo/content/bindings/menu.xml#menuitemImageCenterBinding'</font><font color="#871f78">)</font><br />
<font color="#ff0000">!important</font>;<br />
<font color="#871f78">}</font></p>
<p>You must notice the selector without <font color="#ff0000">!important</font> attribute works on Firefox 3 when applied on menus different from browser context menu.</p>
<p>I suspect the browser context menu should have some special treatment on new Firefox...</p>
<p><a href="http://dafizilla.wordpress.com/files/2008/03/aa.jpg" title="Context menu"></a></p>
<div style="text-align:center;"><a href="http://dafizilla.wordpress.com/files/2008/03/aa.jpg" title="Context menu"><img src="http://dafizilla.wordpress.com/files/2008/03/aa.jpg" alt="Context menu" /></a></div>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Gnome e Mozilla uniscono le forze]]></title>
<link>http://khole8.wordpress.com/?p=159</link>
<pubDate>Sat, 08 Mar 2008 01:17:53 +0000</pubDate>
<dc:creator>Ferro</dc:creator>
<guid>http://khole8.wordpress.com/?p=159</guid>
<description><![CDATA[
Gnome e Mozilla hanno annunciato che aumenteranno la loro collaborazione per migliorare il supporto]]></description>
<content:encoded><![CDATA[<p><img src="http://www.zeronave.it/zn/wp-content/uploads/2007/11/mozilla-logo.png" height="279" width="247" /></p>
<p>Gnome e Mozilla hanno annunciato che aumenteranno la loro collaborazione per migliorare il supporto agli sviluppatori e l'esperienza degli utenti di applicazioni desktop Gnu/Linux.  La partnership si basa su tre punti principali:</p>
<p>La fondazione Mozilla si unirà al gruppo di sviluppo della Gnome Faundation, per aiutarlo ad impostare le direttive a lungo termine del progetto</p>
<p>Mozilla riafferma l'impegno ad aumentare l'integrazione con Gnome, per lo sviluppo di Xul e di Mozilla Firefox</p>
<p>Mozilla annuncia che devolverà $10.000 a Gnome, per il miglioramento dell'accessibilità del desktop Gnome tramite il  <a href="http://www.gnome.org/projects/outreach/a11y">"GNOME Outreach   Program: Accessibility"</a></p>
<p>" ...continueremo a lavorare con GNOME per accertarci che gli utenti Firefox e Mozilla abbiano, sulle piattaforme Gnome, la migliore esperienza possibile " ha dichiarato Chris Blizzard, membro della Mozilla Corporation. Anche da casa Gnome giungono entusiastiche dichiarazioni. Questa collaborazione viene in contro alle necessità di tutti gli utenti Gnu/Linux, speriamo che le cose procedano per il verso giusto; le basi ci sono.</p>
<p>Ecco il <a href="http://www.gnome.org/press/releases/2008-03-mofojoins.html" target="_blank">comunicato ufficiale</a>.</p>
<p><img src="http://www.gnome.org/~jamesh/gnome-slashdot2.png" height="225" width="198" /></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Las Fundaciones GNOME y Mozilla Unen Fuerzas]]></title>
<link>http://quisqueyalibre.wordpress.com/?p=279</link>
<pubDate>Thu, 06 Mar 2008 02:56:54 +0000</pubDate>
<dc:creator>megaslay</dc:creator>
<guid>http://quisqueyalibre.wordpress.com/?p=279</guid>
<description><![CDATA[La Fundación GNOME y la Fundación Mozilla anunciaron que incrementarán su colaboración para mejo]]></description>
<content:encoded><![CDATA[<p>La <b>Fundación GNOME</b> y la <b>Fundación Mozilla</b> anunciaron que incrementarán su colaboración para mejorar el soporte para desarrolladores y la experiencia del usuario de las aplicaciones de escritorio bajo <b>GNU/Linux</b> y otros sistemas operativos libres. Fundamentalmente, el acuerdo abarca tres aspectos:</p>
<p>1. La <b>Fundación Mozilla</b> se unirá al comité de asesores de la <b>Fundación GNOME</b>, ayudando a fijar la dirección a largo de este último proyecto.</p>
<p>2. <b>Mozilla</b> reafirma su compromiso de integrar la plataforma de desarrollo <b>XUL</b> con la plataforma de <b>GNOME</b>.</p>
<p>3. La <b>Fundación Mozilla</b> anuncia la consesión de U$S 10.000 a la <b>Fundación GNOME</b> para ser gastados en mejorar la accesibilidad del escritorio <b>GNOME</b> bajo el programa GNOME Outreach Program: Accessibility.</p>
<p>"<i><b>GNOME</b> y <b>GTK+</b> han sido nuestro entorno de elección durante años. A medida que nos movemos de los escritorios a un mercado móvil, continuaremos trabajando con <b>GNOME</b> para asegurar que los usuarios de <b>Mozilla</b> y <b>Firefox</b> tengan la mejor experiencia posible</i>", dijo el evangelista de <b>Mozilla</b> Chris Blizzard.</p>
<p><!--more--></p>
<ul>
<li>Fuente: VivaLinux.</li>
</ul>
]]></content:encoded>
</item>
<item>
<title><![CDATA[FOSDEM]]></title>
<link>http://marcoos.wordpress.com/?p=338</link>
<pubDate>Wed, 27 Feb 2008 23:12:45 +0000</pubDate>
<dc:creator>marcoos</dc:creator>
<guid>http://marcoos.wordpress.com/?p=338</guid>
<description><![CDATA[Hubert właściwie napisał wszystko to, co ja chciałem napisać, więc po szczegółową relację ]]></description>
<content:encoded><![CDATA[<p>Hubert właściwie napisał wszystko to, co ja chciałem napisać, więc po <a href="http://hubertgajewski.com/2008/02/26/fosdem-2008-zakonczony/">szczegółową relację</a> zapraszam do jego bloga. W tym miejscu tylko kilka luźnych myśli...</p>
<ul>
<li>Bruksela jest fajna.</li>
<li>Takoż i źarcie w La Boussole i Le Roy d'Espagne. W tej drugiej knajpie polecam "karbonadę po flamandzku na piwie Leff Brune". Ponadto jeśli ktoś ma mało czasu, a chce przejść przyspieszony kurs belgijskiego piwa - za osiem euro z hakiem ww "Królu Hiszpanii" dostanie "palette degustation", czyli 5 malutkich (0,1 l.) piw, każde innego rodzaju. Wiedziałem, że Leff jest całkiem niezłe, teraz okazało się, że i Hoegaarden również. :)</li>
<li>Brytyjski lumpenproletariat wieczorami w Brukseli zachowuje się równie kulturalnie jak w Krakowie.</li>
<li>FOSDEM rośnie. Wprawdzie w tym roku nie było Richarda Stallmana (2006), ani sensacji pod tytułem "Java na GPL!" (2007), a "opening keynote" poświęcona była Linuksowi w Hollywood, za to sale poszczególnych projektów F/LOSS pękały w szwach. <a href="http://diary.braniecki.net/2008/02/22/fosdem-2008-begins/">Problem gandalfa</a> - za dużo interesujących sesji jednocześnie - nie był tylko jego problemem.</li>
<li>W głównej sali jakieś 30% laptopów stanowiły MacBooki - białe, czarne i "Pro". Rok temu ilość iBooków i MacBooków łącznie w głównej sali nie przekraczała 10%.</li>
<li>Spod Mac OS X wyświetlane były prezentacje w sali głównej - przynajmniej te, które widziałem: dwa początkowe wykłady (Linux w Hollywood, patenty) i "endgame".  Podobnie - wszystkie prezentacje (poza jedną, Roberta Kaisera) w sali Mozilli. Zdecydowana większość w Apple Keynote, niektóre w <a href="http://meyerweb.com/eric/tools/s5/">S5</a> pod Firefoksem lub SeaMonkey. Nie zauważyłem nic w OpenOffice...</li>
<li>O tym, że sala Mozilli w sobotę zamieniła się w saunę, wiecie już, jeśli przeczytaliście post Huberta... :)</li>
<li>"Mozilla is going mobile and this time we mean it!". Firefox Mobile będzie dostępny dla Linuksa, Windows CE (czy jak to-to się teraz zwie) i być może również Symbiana. Nie jest jasna przyszłość Firefoksa Mobile na iPhonie/iPodzie touch, jako że SDK do iPhone'a wciąż pozostaje zagadką.</li>
<li>Tenże Firefox Mobile powstanie na bazie XULRunnera. W przeciwieństwie do śp. Minimo będzie więc zawierał interfejs zbudowany w XUL i będzie obsługiwał rozszerzenia. Tak więc możecie się spodziewać, że np. AdBlocka i GreaseMonkey odpalicie na smartfonie. :)</li>
<li><a href="http://labs.mozilla.com/2007/10/prism/">Mozilla Prism</a> (dawniej "WebRunner") - dzięki niej można zbudować przeglądarkę przeznaczoną dla jednej konkretnej witryny (czy raczej: aplikacji webowej). Nie przerabiaj swojej aplikacji webowej na desktopową, zrób sobie tylko do niej w trzy minuty własną przeglądarkę. Jeśli ten projekt wejdzie w stadium 1.0 w rozsądnym terminie, klepanie czegokolwiek pod Adobe AIR będzie tylko stratą czasu.</li>
<li><a href="https://labs.mozilla.com/forum/index.php/board,19.0.html">Mozilla Weave</a> - czyli profil przeglądarki dostępny zdalnie, za to szyfrowany po stronie klienta, dzięki czemu zachowana zostaje prywatność. Eksperymentalny projekt Mozilla Labs.</li>
<li><a href="http://getmiro.com/">Miro</a> - czyli społecznościowa konkurencja dla Joosta. Kolejne świetne zastosowanie XULRunnera.</li>
<li>Polska rośnie w siłę. Przynajmniej jeśli chodzi o <a href="http://www.flickr.com/photos/nitot/2289098781/in/set-72157603981434989/">liczbę użytkowników Firefoksa</a>.</li>
<li>Mozilla.org skończyła 10 lat, z której to okazji zaproszono nas na kręgle. :)</li>
<li>Ha, w końcu udało mi się wziąć na chwilę w łapska <a href="http://laptop.org/">OLPC</a>. :)</li>
<li>I <a href="http://eeepc.asus.com/global/">Eee PC</a> też, do tego z OpenSolarisem na pokładzie.</li>
</ul>
<p>No i to by było na tyle. ;-)</p>
<p>Aha, <a href="http://www.flickr.com/photos/marcoos/tags/fosdem2008/">tutaj są zdjęcia</a>. Nie ma ich wiele, bo straciłem cierpliwość do mojego aparatu...</p>
<p>PS. Thanks to Mozilla Foundation and Mozilla Europe (especially to Anne-Julie and Pascal) for sponsoring our trip. :)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Bxs -- a XUL CMS/Data manager]]></title>
<link>http://pausebuttonedit.wordpress.com/?p=4</link>
<pubDate>Tue, 19 Feb 2008 11:42:30 +0000</pubDate>
<dc:creator>pausebuttonedit</dc:creator>
<guid>http://pausebuttonedit.wordpress.com/?p=4</guid>
<description><![CDATA[When my girlfriend&#8217;s gallery started to take off and she needed a content-managed website, I s]]></description>
<content:encoded><![CDATA[<p>When my girlfriend's gallery started to take off and she needed a content-managed website, I started to think in terms of a generalised data-management web application that would look and feel familiar to her and others like her; in effect I wanted to make something that looked and worked something like a cross between Access, Excel and iTunes.</p>
<p>A couple of years (!) later I had something like that working pretty well, built using PHP (on top of the Zend Platform, eventually) on the server side and Mozilla's XUL on the client side.</p>
<p>I looked at a bunch of different stuff before settling on XUL (n.b., this was pre-AIR/Apollo), including the nascent widget engines (YUI Ext etc.) that were starting to appear at the time. I settled on XUL because it was there, fairly mature, fairly well-documented and available cross-platform via the Mozilla browsers.</p>
<p>Another note: this is 'remote' XUL I'm talking about. The app isn't a Firefox plugin -- all the code is stored on the server and delivered to the browser on login to the system.</p>
<p>In the next few posts I'll start to detail some of the issues I came up against building the thing, and some of the solutions I found. </p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Integrating Direct Web Remoting (DWR) in Mozilla Thunderbird]]></title>
<link>http://brainflush.wordpress.com/2008/01/18/integrating-direct-web-remoting-dwr-in-mozilla-thunderbird/</link>
<pubDate>Fri, 18 Jan 2008 09:04:27 +0000</pubDate>
<dc:creator>Matthias</dc:creator>
<guid>http://brainflush.wordpress.com/2008/01/18/integrating-direct-web-remoting-dwr-in-mozilla-thunderbird/</guid>
<description><![CDATA[Direct Web Remoting, or DWR for short, is a Web technology for exposing server-side Java interfaces ]]></description>
<content:encoded><![CDATA[<p><a href="http://www.directwebremoting.org" target="_blank">Direct Web Remoting</a>, or DWR for short, is a Web technology for exposing server-side Java interfaces via a dynamically generated JavaScript API. A specific Servlet will translate incoming JavaScript calls to their Java equivalents which makes integration of applications programmed in client-side JavaScript with Web applications written in server-side Java a no-brainer.</p>
<p>DWR calls are typically dispatched from a JavaScript/JScript program running in a Web browser such as Mozilla Firefox or Microsoft's Internet Explorer, but since all Mozilla products are built upon the <a href="http://en.wikipedia.org/wiki/Gecko_%28layout_engine%29" target="_blank">Gecko</a> layout engine and <a href="http://en.wikipedia.org/wiki/XUL" target="_blank">XUL</a> (which are programmed using JavaScript modules), you can leverage DWR to dispatch remote calls from e.g. a Mozilla Thunderbird extension just as easily. Integrating DWR into a XUL based extension is actually pretty straight forward, but there are couple of subtleties to be aware of.</p>
<p>I will hereafter assume that a Web application called 'MyWebApp' has been deployed on localhost port 8080, that it's up and running, that it exposes an interface called 'MyService' via DWR. Refer to the DWR documentation  if you are unsure how to do that. It is further assumed that the DWR servlet is reached at dwr/ relative to the base URL. All following code examples refer to DWR version 1.1, which unfortunately has already been superseded by version 2.x at the time of this writing. If required at all, changing the code to run with newer versions of DWR should be easy enough however.</p>
<p>In order for your XUL component to be able to access `MyService', add the following lines to your XUL file (e.g. myOverlay.xul):</p>
<blockquote>
<pre>&#60;script type="application/x-javascript"
    src="http://localhost:8080/MyWebApp/dwr/engine.js"/&#62;

&#60;script type="application/x-javascript"
    src="http://localhost:8080/MyWebApp/dwr/util.js"/&#62;

&#60;script type="application/x-javascript"
    src="http://localhost:8080/MyWebApp/dwr/interface/MyService.js"/&#62;</pre>
</blockquote>
<p>Don't go looking for MyService.js in your file system, it's not there. DWR will take care of dynamically creating it once your client requests it from the server. You can find both engine.js and util.js in the dwr.jar file which should reside at WEB-INF/lib of your deployed Web application.</p>
<p>Now you're already prepared to invoke your service. However, when run outside a Web browser, as is the case with e.g. a Thunderbird extension, there is a catch: DWR won't correctly resolve the target URL for your server, because it operates on relative URLs by default. You can fix that problem by modifying the MyService._path variable, which was auto-generated by DWR. Ponder the example program below, which invokes MyService.service() from a JavaScript program running in a Thunderbird extension:</p>
<blockquote>
<pre>function callService() {

    MyService._path = "http://localhost:8080/MyWebApp/dwr";

    MyService.service({
        callback: function(returnData) {
            // perform logic
        },

        errorHandler: function(error) {
            // handle error
        }
    });
}</pre>
</blockquote>
<p>That's it basically; of course you may want to add additional call variables or use another invocation style altogether, but you get the idea.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Mozilla Thunderbird Extension Development - Environment Setup]]></title>
<link>http://brainflush.wordpress.com/2008/01/17/mozilla-thunderbird-extension-development-environment-setup/</link>
<pubDate>Thu, 17 Jan 2008 07:31:07 +0000</pubDate>
<dc:creator>Matthias</dc:creator>
<guid>http://brainflush.wordpress.com/2008/01/17/mozilla-thunderbird-extension-development-environment-setup/</guid>
<description><![CDATA[It took me a while to setup my Thunderbird installation in order to make it ready for convenient ext]]></description>
<content:encoded><![CDATA[<p>It took me a while to setup my Thunderbird installation in order to make it ready for convenient extension development, by which I mean having all the tools and configuration in place. So I thought I'd share the most useful steps you want to perform in order to make your life easier.</p>
<p>You should basically do two things: One, reconfigure Thunderbird to be more developer-friendly, and two, install some cool extensions.</p>
<p>First, I recommend installing the following plugins:</p>
<ol>
<li><a href="http://webdesigns.ms11.net/chromeditp.html" target="_blank">ChromEdit Plus</a> - allows for easy access to your configuration files. Works in Firefox, too.</li>
<li><a href="https://addons.mozilla.org/en-US/thunderbird/addon/216" target="_blank">Venkman</a> - A JavaScript debugger. Must have. For Firefox, I recommend <a href="http://www.getfirebug.com/" target="_blank">Firebug</a> instead.</li>
<li><a href="https://addons.mozilla.org/en-US/thunderbird/addon/1815" target="_blank">Console²</a> - An advanced error console. Can interpret JavaScript commands on-the-fly.</li>
<li><a href="https://addons.mozilla.org/en-US/thunderbird/addon/4453" target="_blank">Chrome List</a> - Lets you inspect chrome packages of all installed components. It's somewhat buggy for me though, sometimes the contents of XUL files are not displayed in the viewer.</li>
</ol>
<p>With these plugins installed, you already have a solid basis to built your hacking on.</p>
<p>Now to the configuration. You can do this with ChromEdit now, or if you haven't installed it, fall back to your favorite text editor. Open the ChromEdit Plus menu, select ChromEdit and navigate to the 'user.js' tab. From here you can edit your <a href="http://kb.mozillazine.org/User.js_file" target="_blank">'user.js' file</a> located in your <a href="http://kb.mozillazine.org/Profile_folder" target="_blank">profile folder</a> (on Linux, it's in your home directory, on Windows, it's in 'Documents and Settings/&#60;username&#62;/Application Data/Thunderbird/Profiles/&#60;long_UUID&#62;' ). If it does not yet exist, and it doesn't by default, go ahead and create it). Add the following lines (it's a JavaScript file, so it's simply JavaScript syntax):</p>
<blockquote><p>user_pref("javascript.options.showInConsole", true);<br />
user_pref("nglayout.debug.disable_xul_cache", true);<br />
user_pref("browser.dom.window.dump.enabled", true);<br />
user_pref("javascript.options.strict", true);</p></blockquote>
<p>The following explanations are taken from the <a href="http://developer.mozilla.org/en/docs/Setting_up_extension_development_environment" target="_blank">MDC</a>:</p>
<blockquote>
<ul>
<li><strong>javascript.options.showInConsole</strong> = <strong>true</strong>. Logs errors in chrome files to the <a title="Error Console" href="http://developer.mozilla.org/en/docs/Error_Console">Error Console</a>.</li>
<li> <strong>nglayout.debug.disable_xul_cache</strong> = <strong>true</strong>. Disables the XUL cache so that changes to windows and dialogs do not require a restart. This assumes you're <a href="http://developer.mozilla.org/en/docs/Setting_up_extension_development_environment#Using_directories_rather_than_JARs">using directories rather than JARs</a>. Changes to XUL overlays will still require reloading of the document overlaid.</li>
<li> <strong>browser.dom.window.dump.enabled</strong> = <strong>true</strong>. Enables the use of the dump() statement to print to the standard console. See <code><a title="window.dump" href="http://developer.mozilla.org/en/docs/DOM:window.dump">window.dump</a></code> for more info. You can also use <code><a title="nsIConsoleService" href="http://developer.mozilla.org/en/docs/nsIConsoleService">nsIConsoleService</a></code> from privileged script.</li>
<li> <strong>javascript.options.strict</strong> = <strong>true</strong>. Enables strict JavaScript warnings in the Error Console. Note that since many people have this setting turned off when developing, you will see lots of warnings for problems with their code in addition to warnings for your own extension. You can filter those with <a class="external text" title="https://addons.mozilla.org/en-US/firefox/addon/1815" rel="nofollow" href="https://addons.mozilla.org/en-US/firefox/addon/1815">Console<sup>2</sup></a>.</li>
</ul>
</blockquote>
<p>In order for the Thunderbird standard console to appear, run Thunderbird with the '-console' command line argument. The dumped statements won't appear in Console² though.</p>
<p>You may also want to refer to <a href="http://developer.mozilla.org/en/docs/Setting_up_extension_development_environment" target="_blank">Setting up extension development environment</a> on MDC as a primer, I particularly recommend the steps outlined for externalizing your development files into a separate folder, so you won`t have to reinstall the plugin each time you change a line of code.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[A standalone Helloworld XUL example (XULRunner)]]></title>
<link>http://visio159.wordpress.com/2008/01/13/a-standalone-helloworld-xul-example-xulrunner/</link>
<pubDate>Sun, 13 Jan 2008 00:39:21 +0000</pubDate>
<dc:creator>visio159</dc:creator>
<guid>http://visio159.wordpress.com/2008/01/13/a-standalone-helloworld-xul-example-xulrunner/</guid>
<description><![CDATA[I am pretty much impressed by firefox extensions but the extensions still requires firefox to be ins]]></description>
<content:encoded><![CDATA[<p>I am pretty much impressed by firefox extensions but the extensions still requires firefox to be installed and run.</p>
<p>So here is the way to create standalone XUL application using XULRunner runtime (its like JRE, java runtime that is used to run JAVA application but here), its required to run XUL applications. Songbird is already utilizing the power of XULRunner and XUL and Miro is catching up.</p>
<p>The link to whole example zipped up is <a href="http://www.esnips.com/doc/74e0c868-8d09-4acf-99ea-dce8f964851d/helloworldXUL" title="download zipped example package" target="_blank">HERE</a></p>
<p>Here is the step by step procedure to set up XULRunner and a HelloWorld example written in XUL.</p>
<ul>
<li>Download XUL zip archive from <a href="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/latest-trunk/xulrunner-1.9b2pre.en-US.win32.zip" title="click to download zip archive" target="_blank">HERE(windows)</a> , others may select the install from <a href="http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/latest-trunk/" title="select the install" target="_blank">HERE</a> according to their operating system.</li>
<li>Extract it to any directory/folder of your convenience, below screenshot shows the patch where I extracted the zip file.</li>
</ul>
<div align="center"><img src="http://i269.photobucket.com/albums/jj44/visio159/11-1.png" border="1" /></div>
<ul>
<li>Next step is to set up the "path" environment variable, the screenshot is provided below</li>
</ul>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/2.jpg" border="1" height="499" width="343" /></div>
<div style="text-align:center;"></div>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/1212.jpg" border="1" height="491" width="433" /></div>
<div style="text-align:center;"></div>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/4.jpg" border="1" height="492" width="432" /></div>
<div style="text-align:center;"></div>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/5.jpg" border="1" height="496" width="437" /></div>
<div style="text-align:center;"></div>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/2-4.png" border="1" /></div>
<div style="text-align:center;"></div>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/3-4.png" vspace="1" /></div>
<div style="text-align:center;"></div>
<ul>
<li>The hierarchy should be like this :</li>
</ul>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/10-1.png" border="1" height="165" width="470" /></div>
<div style="text-align:center;"><font color="#999999">Source:  http://www.xul.fr/install-xul.html</font></div>
<ul>
<li>Now make your application folder (name it helloworld),  as shown in screenshot</li>
</ul>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/4-4.png" border="1" /></div>
<ul>
<li>Make two folders inside it 1) "chrome" 2) "defaults" and a file named "application.ini" (remember extension should be .ini)</li>
</ul>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/5-1.png" border="1" /></div>
<ul>
<li>Inside "chrome" create folder named "content" and a file named "chrome.manifest" (extension should be .manifest)</li>
</ul>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/6-1.png" border="1" height="288" width="419" /></div>
<ul>
<li>Inside "content" create a file named "main.xul" (again the extension should be .xul)</li>
</ul>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/7-1.png" border="1" height="265" width="407" /></div>
<ul>
<li>Now inside "defaults" create a folder named "preferences" and inside it create a file named "prefs.js" (yeah the extension should be .js)</li>
</ul>
<div style="text-align:center;"> <img src="http://i269.photobucket.com/albums/jj44/visio159/8-1.png" border="1" /></div>
<div style="text-align:center;"></div>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/9-1.png" border="1" /></div>
<ul>
<li>I know it was tedious to create that hierarchy but then you are about to learn something thats worth it.</li>
<li>Now write the Following lines into "application.ini"</li>
</ul>
<div style="margin:5px 20px 20px;">
<pre style="border:1px inset;overflow:auto;width:480px;height:194px;text-align:left;margin:0;padding:6px;">[App]

Vendor=Visio

Name=Hello World

Version=1.0

BuildID=20080114

Copyright=Copyright (c) 2008 jit

ID=visio159@wordpress.com[Gecko]

MinVersion=1.8

MaxVersion=1.9.0.*</pre>
</div>
<ul>
<li>And in "chrome.manifest" write: Its basically maps the file URI to chrome URI</li>
</ul>
<div style="margin:5px 20px 20px;">
<pre style="border:1px inset;overflow:auto;width:480px;height:34px;text-align:left;margin:0;padding:6px;">content helloworld file:content/</pre>
</div>
<ul>
<li>In "main.xul" write: The main file that will create the windows and GUI.</li>
</ul>
<div style="margin:5px 20px 20px;">
<pre style="border:1px inset;overflow:auto;width:480px;height:114px;text-align:left;margin:0;padding:6px;">&#60;?xml version="1.0"?&#62;

&#60;?xml-stylesheet href="chrome://global/skin/" type="text/css"?&#62;&#60;window id="main" title="Hello World" width="300" height="300" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&#62;

  &#60;caption label="Hello World"/&#62;

&#60;/window&#62;</pre>
</div>
<ul>
<li> In "prefs.js" write: Silly way to provide the address of main file</li>
</ul>
<div style="margin:5px 20px 20px;">
<pre style="border:1px inset;overflow:auto;width:480px;height:34px;text-align:left;margin:0;padding:6px;">pref("toolkit.defaultChromeURI","chrome://helloworld/content/main.xul");</pre>
</div>
<p>Now the final step is to run the application:</p>
<p><b><font color="#ff0000">Execute the Example:</font></b></p>
<ul>
<li>Open command prompt window</li>
</ul>
<div style="text-align:center;"> <img src="http://i269.photobucket.com/albums/jj44/visio159/9.jpg" border="1" height="480" width="222" /></div>
<div style="text-align:center;"></div>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/10.jpg" border="1" height="217" width="358" /></div>
<div style="text-align:center;"></div>
<ul>
<li> Execute example by providing "application.ini" as an argument to the "xulrunner.exe" as shown:</li>
</ul>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/12-1.png" border="1" /></div>
<div style="text-align:center;"><img src="http://i269.photobucket.com/albums/jj44/visio159/13-1.png" border="1" /></div>
<ul>
<li>Yay the standalone application (which is now pretty much bland) is ready, cheers :)</li>
</ul>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Makefile for Firefox extensions]]></title>
<link>http://dutherenverseauborddelatable.wordpress.com/2007/12/19/makefile-for-firefox-extensions/</link>
<pubDate>Wed, 19 Dec 2007 14:31:42 +0000</pubDate>
<dc:creator>yoric</dc:creator>
<guid>http://dutherenverseauborddelatable.wordpress.com/2007/12/19/makefile-for-firefox-extensions/</guid>
<description><![CDATA[I have just released a script to automate some of the tedious tasks related to Firefox extension dev]]></description>
<content:encoded><![CDATA[<div align="justify">I have just released a script to automate some of the tedious tasks related to Firefox extension development. This script was used in OpenBerg when OpenBerg was written in C++. You may grab it <a href="http://dutherenverseauborddelatable.wordpress.com/downloads/makefile-for-firefox-extensions/">here</a>.</div>
<div align="justify">Je viens de publier un script pour automatiser certaines des tâches liées au développement d'extensions pour Firefox. Ce script était utilisé par OpenBerg lorsque OpenBerg était écrit en C++. Vous pouvez le trouver <a href="http://dutherenverseauborddelatable.wordpress.com/downloads/makefile-for-firefox-extensions/">ici</a>.</div>
]]></content:encoded>
</item>
<item>
<title><![CDATA[UniSmilies - An extension for Firefox]]></title>
<link>http://visio159.wordpress.com/2007/12/18/unismilies-an-extension-for-firefox/</link>
<pubDate>Mon, 17 Dec 2007 21:36:58 +0000</pubDate>
<dc:creator>visio159</dc:creator>
<guid>http://visio159.wordpress.com/2007/12/18/unismilies-an-extension-for-firefox/</guid>
<description><![CDATA[Get the smilies on  people.

Here is the Third version of UniSmilies (simple smiley extesion for fir]]></description>
<content:encoded><![CDATA[<p><font color="#000000">Get the smilies on <img src="http://farm3.static.flickr.com/2018/2107306750_134e5f27e5_o.png" border="0" /> people.</font><br />
<img src="http://farm3.static.flickr.com/2180/2122604477_1f3f245df7_o.png" /><img src="http://farm3.static.flickr.com/2267/2122604803_10327dbcf9_o.png" /><img src="http://farm3.static.flickr.com/2167/2122605989_ed8ea5f692_o.png" /></p>
<p><font color="#000000">Here is the Third version of UniSmilies (simple smiley extesion for firefox).</font></p>
<p><b><font color="Purple">Screen Shots:</font></b><br />
<img src="http://farm3.static.flickr.com/2374/2118906340_6a4d36c6e5_o.gif" border="0" /></p>
<p><img src="http://farm3.static.flickr.com/2154/2118906344_7eb270853f_o.gif" border="0" /></p>
<p><b><font color="DarkRed"> Download updated version 1.12.20</font></b> <font color="#000000">from here:</font><br />
<a href="http://www.esnips.com/doc/5d0094d2-8415-4c66-bc61-6b4435099c43/unismilies-1.12.20" target="_blank">UniSmilies 1.12.20.xpi</a></p>
<p><font color="#000000">Size: 557KB</font></p>
<p><b><font color="DarkRed"> How to Use:</font></b></p>
<ul>
<li><font color="#000000"> Click on the UniSmilies menubutton at the bottom-right side of statusbar.</font></li>
</ul>
<ul>
<li><font color="#000000"> Click on any smiley.</font></li>
</ul>
<ul>
<li><font color="#000000"> Paste on textarea(reply box).</font></li>
</ul>
<ul>
<li><font color="#000000"> Thats it<img src="http://farm3.static.flickr.com/2286/2107305542_22d75ef21a_o.png" border="0" /></font></li>
</ul>
<p><font color="#000000">Works on any OS having Firefox (and presumably the browsers supporting extension based on Gecko engine).</font></p>
<p><img src="http://farm3.static.flickr.com/2193/2106528885_b44c4bde0d_o.png" border="0" /><img src="http://farm3.static.flickr.com/2355/2107305358_394278500c_o.png" border="0" /><img src="http://farm3.static.flickr.com/2192/2106525721_b621e4efee_o.png" border="0" /><img src="http://farm3.static.flickr.com/2076/2106529395_26c0b427da_o.png" border="0" /></p>
<p><font color="Blue"><b>Ver 1.12.20 added Features: (released)</b></font></p>
<ul>
<li><b><font color="Green">intelligent image code selection based on the type of site (currently all forums,orkut and wordpress, tell me abt more sites and will add it)</font></b></li>
<li><b><font color="Green"><font color="DeepSkyBlue">New set of smilies added (tingy blue), large size.<img src="http://farm3.static.flickr.com/2166/2123380816_81e606c333_o.png" border="0" /></font><br />
</font></b></li>
</ul>
<p><font color="Gray"> Ver 1.12.18 added Feature:</font></p>
<ul>
<li><font color="Gray"> HTML, Direct link alongwith BBCode added, now u can post unismilies in orkut and  other direct link websites   <img src="http://farm3.static.flickr.com/2212/2106525125_18fc31648e_o.png" border="0" /></font></li>
</ul>
<p><font color="Gray"> Ver 1.0.0 Features:</font></p>
<ul>
<li><font color="Gray"> Lightweight component</font></li>
</ul>
<ul>
<li><font color="Gray"> Sleek statusbar menu</font></li>
</ul>
<p><font color="Green"><b> Features for next version:</b><br />
</font></p>
<ul>
<li><font color="Red"><font color="Gray">Automatic intelligent selection of type of image code for forums and orkut(other sites will be added soon) - <b>DONE   </b></font><font color="Gray"><img src="http://farm3.static.flickr.com/2212/2106525125_18fc31648e_o.png" border="0" /></font><b><font color="Black"><br />
</font></b></font></li>
<li><font color="#000000">Automated copy paste to the last focused textarea.</font></li>
</ul>
<ul>
<li><font color="Gray"> will include direct link, html link alogwith BBcode links - <b>DONE </b><img src="http://farm3.static.flickr.com/2212/2106525125_18fc31648e_o.png" border="0" /></font></li>
</ul>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Rich Internet Application : JavaFX,Adobe/Flex,Silverlight,Moonlight...]]></title>
<link>http://pvergain.wordpress.com/2007/11/04/rich-internet-application-javafxadobeflexsilevrlightmoonlight/</link>
<pubDate>Sun, 04 Nov 2007 17:18:42 +0000</pubDate>
<dc:creator>patrick</dc:creator>
<guid>http://pvergain.wordpress.com/2007/11/04/rich-internet-application-javafxadobeflexsilevrlightmoonlight/</guid>
<description><![CDATA[Comme d&#8217;habitude un point d&#8217;entrée pour savoir ce qu&#8217;est une application RIA est ]]></description>
<content:encoded><![CDATA[<p>Comme d'habitude un point d'entrée pour savoir ce qu'est une application RIA est l'article de Wikipedia:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Rich_Internet_application" title="RIA">http://en.wikipedia.org/wiki/Rich_Internet_application</a> (<em>"<strong>Rich Internet applications</strong> (RIA) are <a href="http://en.wikipedia.org/wiki/Web_application" title="Web application">Web applications</a> that have the features and functionality of traditional <a href="http://en.wikipedia.org/wiki/Application_software" title="Application software">desktop applications</a>. RIAs typically transfer the processing necessary for the <a href="http://en.wikipedia.org/wiki/User_interface" title="User interface">user interface</a> to the <a href="http://en.wikipedia.org/wiki/Web_client" title="Web client">Web client</a> but keep the bulk of the data (i.e., maintaining the <a href="http://en.wikipedia.org/wiki/Program_state" title="Program state">state</a> of the program, the data etc) back on the <a href="http://en.wikipedia.org/wiki/Application_server" title="Application server">application server</a>.</em></li>
</ul>
<blockquote><p><em>RIAs typically:</em></p>
<ul>
<li><em>run in a <a href="http://en.wikipedia.org/wiki/Web_browser" title="Web browser">Web browser</a>, or do not require <a href="http://en.wikipedia.org/wiki/Installation_%28computer_programs%29" title="Installation (computer programs)">software installation</a></em></li>
<li><em>run locally in a secure environment called a <a href="http://en.wikipedia.org/wiki/Sandbox_%28computer_security%29" title="Sandbox (computer security)">sandbox</a>"</em>)</li>
</ul>
</blockquote>
<p>Le numéro 102 de Programmez! consacre une bonne partie de ses articles à Rich Internet Application.</p>
<p>Comme c'est un monde en pleine effervescence on ne fera qu'énumérer les techniques en cours de développement (voir Articles  p.32, p.36). Les principales solutions techniques pour faire des "clients riches":</p>
<ul>
<li>les <a href="http://en.wikipedia.org/wiki/Ajax_framework#JavaScript" title="Frameworks">frameworks Javascript</a> ("Dojo, jQuery, Prototype/Script.aculo.us, Yahoo UI")</li>
<li>JavaServer Faces (<a href="http://en.wikipedia.org/wiki/JavaServer_Faces" title="JSF">JSF</a>): p.32 H. Darmet ".<em>.avec une extension <a href="http://en.wikipedia.org/wiki/AJAX" title="AJAX">AJAX</a> (comme a4jsf ou <a href="http://www.icefaces.org/main/home/index.jsp" title="ICEFaces">ICEFaces</a>) est la solution reine de type "Ajax Hybride" dans le monde Java. Avantages: productivité (avec Seam), ubiquité, sécurité et robustesse...Prise en compte de l'existant que s'il est JSF"</em></li>
<li><em><a href="http://en.wikipedia.org/wiki/Google_Web_Toolkit" title="Google Web toolkit">Google Web Toolkit</a> (GWT): "...solution de type Ajax total qui favorise les aspects performance, ubiquité, robustesse et sécurité grâce à un ingénieux système de développement en Java..."</em></li>
<li><em><a href="http://en.wikipedia.org/wiki/ASP.NET_AJAX" title="ASP.NET Ajax">ASP.NET AJAX</a> ("...proche de JSF avec une extension AJAX. Solution remarquablement outillée par Visual Studio. La prise en compte d'un existant ASP.NET est très aisée.</em><em>")</em></li>
<li><em><a href="http://fr.wikipedia.org/wiki/Adobe_Flex" title="Adobe flex">Flex</a>(Adobe) : ...est la solution de type "applet like" la plus populaire (on estime aux alentours de 97% le nombre de machines équipées du Flash Player), ce qui rend par conséquent les applications Flex relativement multi plates-formes et facilement déployables). Elle en a tous les avantages qui sont les mêmes que celles d'une architecture "Ajax total". Voir <a href="http://planete-accessibilite.com/#article_pa_2" title="Accessibilite">http://planete-accessibilite.com/#article_pa_2</a></em></li>
<li><em><a href="http://en.wikipedia.org/wiki/Silverlight" title="Silverlight">Silverlight</a> / <a href="http://en.wikipedia.org/wiki/Moonlight_%28runtime%29" title="Moonlight">Moonlight</a> ("...la solution "applet like" du monde .NET...Elle reprend le principe de construction déclarative de l'IHM popularisé par Flex. L'ubiquité est encore assez limitée. L'outillage avec Visual Studio reste le point fort.")</em></li>
<li><em><a href="http://en.wikipedia.org/wiki/JavaFX" title="JavaFX">JavaFX</a> ("..est la solution "applet-like" du monde <a href="http://en.wikipedia.org/wiki/Java_platform#Platform" title="Java">Java.</a> Les avantages et limites sont ceux rencontrés par Silverlight, avec moins de crédibilité et de maturité...<u>page 45</u>. "...JavaFX est un produit finalement mal connu: il est présenté comme une solution RIA, mais c'est en fait une nouvelle solution pour construire des applications Swing qu'elles soient RIA ou non. L'intérêt de JavaFX est donc à la fois ailleurs et plus large...<strong>toute équipe qui développe une application graphique basée sur <a href="http://en.wikipedia.org/wiki/Swing_(Java)" title="Swing">swing</a> devrait s'intéresser à JavaFX</strong>...")</em></li>
<li><em><a href="http://en.wikipedia.org/wiki/OpenLaszlo" title="OpenLaszlo">OpenLaszlo</a> est une plateforme de développement d'applications riches, en open source. Ses applications sont développées via une solution qui produit, à partir du même code source, une application en <a href="http://en.wikipedia.org/wiki/DHTML" title="DHTML">DHTML</a> (HTML, DOM, CSS et Javascript) ou <a href="http://en.wikipedia.org/wiki/Adobe_Flash" title="Adobe/flash">Flash</a>.</em></li>
<li><em><a href="http://fr.wikipedia.org/wiki/XML-based_User_interface_Language" title="XUL">XUL</a>/XULRunner ("</em><strong>XUL</strong>, pour <strong>XML-based User interface Language</strong>, est un langage de description d'<a href="http://fr.wikipedia.org/wiki/Environnement_graphique" title="Environnement graphique">interfaces graphiques</a> basé sur <a href="http://fr.wikipedia.org/wiki/Extensible_markup_language" title="Extensible markup language">XML</a> créé dans le cadre du projet <a href="http://fr.wikipedia.org/wiki/Mozilla" title="Mozilla">Mozilla</a>. XUL se prononce <em>zoul</em> en anglais (pour rimer avec <em>cool</em>, mais aussi en hommage au demi-dieu <em>Zoul</em> dans le film <em><a href="http://fr.wikipedia.org/wiki/S.O.S._Fant%C3%B4mes" title="S.O.S. Fantômes">S.O.S. Fantômes</a></em>). Couplé avec le XULRunner, environnement d'exécution multiplateforme, il forme un couple permettant de créer des Rich Desktop Application<em>")<br />
</em></li>
</ul>
<p>Autres sources:</p>
<ul>
<li><a href="http://blog.aysoon.com/post/Que-sont-les-applications-riches-RIA-Partie-1-Definition-et-usages-195" title="RIA">http://blog.aysoon.com/post/Que-sont-les-applications-riches-RIA-Partie-1-Definition-et-usages-195<br />
</a></li>
<li><a href="http://fdeshayes.net/" title="Deshayes">http://fdeshayes.net/</a></li>
<li><a href="http://www.devx.com/RichInternetApps/Article/35208/1954?pf=true" title="Cours">http://www.devx.com/RichInternetApps/Article/35208/1954?pf=true </a>("Crash Course in Next-Gen RIA: AIR, Silverlight, and JavaFX")</li>
<li><a href="http://en.wikipedia.org/wiki/Adobe_AIR" title="Adobe AIR">Adobe AIR</a> (formerly Adobe Apollo)</li>
<li><a href="http://en.wikipedia.org/wiki/XUL" title="XUL">XUL</a> and <a href="http://en.wikipedia.org/wiki/XULRunner" title="XULRunner">XULRunner</a> from the <a href="http://en.wikipedia.org/wiki/Mozilla_Foundation" title="Mozilla Foundation">Mozilla Foundation</a>.</li>
<li><a href="http://en.wikipedia.org/wiki/Curl_programming_language" title="Curl programming language">Curl</a> 5.0 from <a href="http://www.curl.com/" class="external text" title="http://www.curl.com" rel="nofollow">Curl Inc.</a> for off-line RIA</li>
<li><a href="http://en.wikipedia.org/wiki/Rebol" title="Rebol">Rebol</a> programming language as a Java JVM alternative</li>
<li><a href="http://en.wikipedia.org/wiki/Web_desktop" title="Web desktop">http://en.wikipedia.org/wiki/Web_desktop</a> ("<em>A <strong>web desktop</strong> or <strong>webtop is a </strong></em>network application system for integrating web applications into a web-based workspace <a href="http://en.wikipedia.org/wiki/Virtual_desktop" title="Virtual desktop">It is a </a><a href="http://en.wikipedia.org/wiki/Virtual_desktop" title="Virtual desktop">virtual desktop</a> on the web, running in a <a href="http://en.wikipedia.org/wiki/Web_browser" title="Web browser">web browser</a> as software. <em>.Web desktops often are characterized by an environment similar to that of Windows, Mac, or Linux, but are now considered to have much more functionality being dependent on the internet. Typical benefits include the ability to save work and settings over the internet rather than to the local desktop.</em> is a network application system for integrating web applications into a web-based workspace. It is a ")</li>
<li><a href="http://en.wikipedia.org/wiki/Web_operating_system" title="Web OS">http://en.wikipedia.org/wiki/Web_operating_system</a> ("<em>In <a href="http://en.wikipedia.org/wiki/Metacomputing" title="Metacomputing">metacomputing</a>, </em><em><strong>WebOS</strong> and </em><em><strong>Web operating system</strong> are terms that describe network services for internet scale <a href="http://en.wikipedia.org/wiki/Distributed_computing" title="Distributed computing">distributed computing</a>, as in the <a href="http://en.wikipedia.org/wiki/Web_operating_system#WebOS_Project">WebOS Project</a> at <a href="http://en.wikipedia.org/wiki/University_of_California%2C_Berkeley" title="University of California, Berkeley">UC Berkeley</a> <sup><a href="http://en.wikipedia.org/wiki/Web_operating_system#_note-waapps">[1]</a></sup>, and the <a href="http://en.wikipedia.org/wiki/Web_operating_system#WOS_Project">WOS Project</a> <sup><a href="http://en.wikipedia.org/wiki/Web_operating_system#_note-towos">[2]</a></sup>. In both cases the scale of the </em><em>web operating system extends across the internet, like the <a href="http://en.wikipedia.org/wiki/World_wide_web" title="World wide web">web</a></em>.")</li>
<li><a href="http://en.wikipedia.org/wiki/EyeOS" title="EyeOS">http://en.wikipedia.org/wiki/EyeOS</a>  ("<em><strong>eyeOS</strong> is an <a href="http://en.wikipedia.org/wiki/Open_source" title="Open source">open source</a> (<a href="http://en.wikipedia.org/wiki/GNU_General_Public_License" title="GNU General Public License">GPL</a>) <a href="http://en.wikipedia.org/wiki/Web_operating_system" title="Web operating system">web operating system</a>. It provides a default desktop with some base applications and the ability of developing new applications with the eyeOS Toolkit, the integrated <a href="http://en.wikipedia.org/wiki/Integrated_Development_Environment" title="Integrated Development Environment">IDE</a>, which can be installed through the ports-based eyeSoft system. This allows anyone to create their own repository for eyeOS and distribute their eyeOS Applications automatically to its users. The idea behind eyeOS is to provide a full operating system, web based, which can be accessed from everywhere, with any Internet-capable device</em>")</li>
</ul>
]]></content:encoded>
</item>
<item>
<title><![CDATA[XML Based Web Sites]]></title>
<link>http://bradford1.wordpress.com/2007/11/02/xml-based-web-sites/</link>
<pubDate>Fri, 02 Nov 2007 20:17:29 +0000</pubDate>
<dc:creator>bradford1</dc:creator>
<guid>http://bradford1.wordpress.com/2007/11/02/xml-based-web-sites/</guid>
<description><![CDATA[What is on the horizon for web site design?   Faster less complex pages that will compile universall]]></description>
<content:encoded><![CDATA[<p>What is on the horizon for web site design?   Faster less complex pages that will compile universally for a wider range of platforms including the smart phones?  Will it continue on the same path expanding on html (the worlds most universal language) and css? More web sites utilizing flash for the high speed internet that is growing more saturated every year?  Well in my opinion I would definitely have to say all of the above, but with a little twist.</p>
<p>HTML has been the dominant presentation layer solution for web since its existence.  CSS made it even more powerful.  The combination of JavaScript / CSS / HTML commonly referred to as dynamic html (DHTML) yet again made it even more powerful.    Now what is popular is using XML and JavaScript (AJAX) "behind the scenes" to present more interactive web sites.</p>
<p>Meanwhile, running parallel with HTML - Flash the embedded objects within an HTML page grew fast in popularity when it was announced in 1996 due to the amazing compression it introduced that enabled animations and interactivity.   It has continued to grow in use amongst the web site design industry.  XML and Flash became popular around 2000 and continued to grow in popularity delivering most of the music you hear on the internet via Flash/XML mp3 players.  Flash in my opinion has always been in competition to replace HTML, but never had any real world situations where this technique could be used.  So most developers/designers choose to use hybrid Flash/HTML web sites.  Or typically the wider the audience the more html, the more advanced the audience the more flash.   And don't let me mistake you flash could never replace HTML until only recently.</p>
<p><strong>The Future</strong></p>
<p>MXML came into existence around 2004,  an XML based user interface markup language combined with Javascript to create rich internet applications.  Flex is the framework that compliles the MXML and ActionScript on the fly into Flash or swf files. The beauty for the end-user of these applications is that it loads only once!<br />
Thermo<br />
http://labs.adobe.com/wiki/index.php/Thermo<br />
<img src="http://www.talkingtree.com/images/tabnav_mxml_code.jpg" alt="MXML" border="0" height="392" hspace="0" vspace="0" width="386" /><br />
<strong>XAML</strong> also pronounced ZAML<br />
<img src="http://www.erain.com/products/zam3d/Img/Controller_XAML.gif" alt="XAML Sample Code" border="0" height="360" hspace="0" vspace="0" width="502" /></p>
<p><strong>MXML</strong><br />
OpenLaszlo<br />
CookSwing<br />
SwiXML<br />
SwixNG<br />
Thinlet<br />
Ultrid<br />
Vexi<br />
XAL<br />
XSWT<br />
ZUL<br />
<strong>XAML</strong><br />
<strong>XUL</strong><br />
<strong>XHTML</strong><br />
XFDL<br />
<strong>XForms</strong><br />
Curl 5.0<br />
GladeXML<br />
HTMLR<br />
UIML<br />
PSML<br />
Gul<br />
XWT<br />
QuiX<br />
XML Sapiens<br />
Bindows<br />
BXML<br />
Boxely<br />
VTML<br />
XHPD<br />
XAL<br />
MyXaml<br />
XRC - used by wxWidgets<br />
libavg<br />
GNUstep Renaissance</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[OpenKomodo key bindings]]></title>
<link>http://dafizilla.wordpress.com/2008/01/12/openkomodo-key-bindings/</link>
<pubDate>Fri, 09 Nov 2007 18:39:35 +0000</pubDate>
<dc:creator>dafi</dc:creator>
<guid>http://dafizilla.wordpress.com/2008/01/12/openkomodo-key-bindings/</guid>
<description><![CDATA[OpenKomodo allows users to choose key bindings based on its own taste.
Starting from several system ]]></description>
<content:encoded><![CDATA[<p>OpenKomodo allows users to choose key bindings based on its own taste.</p>
<p>Starting from several system  keysets it is possibile to create new schemes.</p>
<p>Developers can write code using this feature.</p>
<p>You need to</p>
<ul>
<li>overlay chrome://komodo/content/commandsOverlay.xul into chrome.manifest</li>
<li>add "<b>observes</b>" attribute to menuitems</li>
</ul>
<p>Below I show the code that I'll add to <a href="http://dafizilla.sourceforge.net/morekomodo/index.php">Morekomodo</a> ASAP</p>
<p>The overlayed commandsOverlay.xul should contain</p>
<pre>&#60;overlay id="morekomodoCommandOverlay" xmlns="..."&#62;
   &#60;broadcasterset id="broadcasterset_global"&#62;
      &#60;broadcaster
        id="cmd_morekomodo_favorites"
        key="key_cmd_morekomodo_favorites"
        <b>desc</b>="<font color="#ff0000">General</font>: Open Favorites..."
        oncommand="moreKomodo.openFavorites(event);"/&#62;
          &#60;broadcaster
             id="cmd_morekomodo_capitalize"
             key="key_cmd_morekomodo_capitalize"
             desc="<font color="#ff0000">Source Code</font>: Capitalize selected text"
             oncommand="..."/&#62;
   &#60;/broadcasterset&#62;
&#60;/overlay&#62;</pre>
<p>You can notice the desc attribute, it contains a short description about the command.</p>
<p>The string preceding the colon (:) represents the category command, the other the real description.</p>
<p>The XUL &#60;menuitem/&#62;s use the observes attribute to reflect key binding.</p>
<p>The attribute value must match the broadcaster id.</p>
<pre>&#60;menuitem id="morekomodo-openfavorites"
    label="Open favorites..."
    <b>observes</b>="cmd_morekomodo_favorites" /&#62;</pre>
<p>ActiveState has defined a set of categories not all applicable to OpenKomodo.</p>
<p>Developer can define its own category but it's recommended to join already existing one ;-)</p>
<table width="472">
<tr>
<th>Name</th>
<th>OpenKomodo</th>
</tr>
<tr>
<th align="left"><font color="#999999">Breakpoint Manager</font></th>
<td><font color="#999999">no</font></td>
</tr>
<tr>
<th align="left">Code Browser</th>
<td>yes</td>
</tr>
<tr>
<th align="left"><font color="#999999">Debugger</font></th>
<td><font color="#999999">no</font></td>
</tr>
<tr>
<th align="left">Editor</th>
<td>yes</td>
</tr>
<tr>
<th align="left">Find</th>
<td>yes</td>
</tr>
<tr>
<th align="left">General</th>
<td>yes</td>
</tr>
<tr>
<th align="left">Help</th>
<td>yes</td>
</tr>
<tr>
<th align="left"><font color="#999999">HTTP Inspector</font></th>
<td><font color="#999999">no</font></td>
</tr>
<tr>
<th align="left"><font color="#999999">HTTP Inspector Rules</font></th>
<td><font color="#999999">no</font></td>
</tr>
<tr>
<th align="left"><font color="#999999">HTTP Proxy Debugger Editor</font></th>
<td><font color="#999999">no</font></td>
</tr>
<tr>
<th align="left">Macro</th>
<td>yes</td>
</tr>
<tr>
<th align="left">Projects/Toolbox</th>
<td>yes</td>
</tr>
<tr>
<th align="left"><font color="#999999">SCC History</font></th>
<td><font color="#999999">no</font></td>
</tr>
<tr>
<th align="left">Source Code</th>
<td>yes</td>
</tr>
<tr>
<th align="left"><font color="#999999">Source Control</font></th>
<td><font color="#999999">no</font></td>
</tr>
<tr>
<th align="left">Toolbox</th>
<td>yes</td>
</tr>
<tr>
<th align="left">Tools</th>
<td>yes</td>
</tr>
<tr>
<th align="left">User Interface</th>
<td>yes</td>
</tr>
</table>
<p>Another benefit from this technique consists to have key bindings into the list generated by OpenKomodo (ie from Help menu select "List Key Bindings")</p>
]]></content:encoded>
</item>

</channel>
</rss>
