<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-13973327</id><updated>2011-07-28T15:36:06.026-07:00</updated><title type='text'>All about XUL, XBL, XPCOM etc.</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://xullite.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13973327/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://xullite.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Yogish Baliga</name><uri>http://www.blogger.com/profile/09404441300707972161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13973327.post-115740295833155906</id><published>2006-09-04T13:50:00.000-07:00</published><updated>2006-09-04T13:49:18.370-07:00</updated><title type='text'>Sorting XUL tree using Javascript and XPCOM</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;When I was working on a firefox extension I wanted to display the bookmarks in the sorted order. Bookmarks in firefox are stored in bookmarks.html file, but access to this file is through the rdf datasource called &lt;a href="http://www.xulplanet.com/references/elemref/ref_rdfbookmarks.html"&gt;rdf:bookmarks&lt;/a&gt;. There is no service to sort the content of the rdf datasource. Only way I thought of and is also done in firefox is to have a dummy tree with &lt;a href="http://www.xulplanet.com/references/elemref/ref_XULElement.html#attr_collapsed"&gt;collapsed&lt;/a&gt; flag set to true.&lt;/p&gt;  &lt;p&gt;In the tree element &lt;a href="http://www.xulplanet.com/references/elemref/ref_tree.html#attr_flags"&gt;flags atribute&lt;/a&gt; should be set to &lt;strong&gt;dont-build-conent&lt;/strong&gt;. builder property of tree element is available only when datasources and ref attributes are set. Se datasources attribute to rdf:bookmarks and ref to NC:BookmarksRoot. The builder property of the tree element can be used to sort the tree using the javascript. Here is what you need to do:&lt;/p&gt;  &lt;p&gt;  var tree = document.getElementById( "my-tree" );&lt;/p&gt;  &lt;p&gt;  tree.builder.QueryInterface(Components.interfaces.nsIXULTreeBuilder);&lt;/p&gt;  &lt;p&gt;  tree.builder.sort( document.getElementById( "sort-column" ) );&lt;/p&gt;  &lt;p&gt;Here sort-column should have 2 attributes set. They are sort and sortDirection. sortActive is an optional attribute. This attribute is set by sort method of nsIXULTreeBuilder.&lt;/p&gt;  &lt;p&gt;sort attribute of the treecol element must be set to the resource name, which will populate the content of the corresponding treecell. If a column is populated with the last visit date of the bookmark, set the source attribute to rdf:http://home.netscape.com/NC-rdf#LastVisitDate.&lt;/p&gt;  &lt;p&gt;&amp;lt;treecol id="sort-col-last-visit-date" sort="rdf:http://home.netscape.com/NC-rdf#LastVisitDate" sortDirection="ascending" sortActive="true"/&amp;gt;&lt;br/&gt; &lt;/p&gt;  &lt;p&gt;The sort method does not work as expected. Here is the state diagram of the sort method.&lt;/p&gt;  &lt;p&gt;Initial Sort Direction      Sort Direction After sort method call&lt;/p&gt;  &lt;p&gt;---------------------------------------------------&lt;/p&gt;  &lt;p&gt;   natural                         descending&lt;/p&gt;  &lt;p&gt;   descending                   ascending&lt;/p&gt;  &lt;p&gt;   ascending                     natural&lt;/p&gt;  &lt;p&gt;&lt;br/&gt; &lt;/p&gt;  &lt;p&gt;Here the caller of the sort method should set the value of sortDirection attribute before calling the sort method in-order to get the correct sort order.&lt;/p&gt;  &lt;p&gt;Another way to sort the tree content is to use &lt;a href="http://www.xulplanet.com/references/xpcomref/comps/c_xulxulsortservice1.html"&gt;xul-sort-service of XPCOM&lt;/a&gt;. &lt;br/&gt; &lt;/p&gt;  &lt;p&gt;var sortService = Components.classes["@mozilla.org/xul/xul-sort-service;1"].&lt;/p&gt;  &lt;p&gt;                                 getService(Components.interfaces.nsIXULSortService);&lt;/p&gt;  &lt;p&gt;sortService.sort(tree, "rdf:http://home.netscape.com/NC-rdf#LastVisitDate", "ascending" );&lt;/p&gt;  &lt;p&gt;With this caller need not worry about the treecol and its sortDirection attribute as in the previous case.&lt;/p&gt;  &lt;p&gt;I like to use this to sort the elements. I am yet to test this service for XUL elements other than tree. I will try this service to sort the elements within the list element.&lt;br/&gt; &lt;/p&gt;  &lt;p style="font-size:10px;text-align:right;"&gt;technorati tags:&lt;a href="http://technorati.com/tag/xul" rel="tag"&gt;xul&lt;/a&gt;, &lt;a href="http://technorati.com/tag/firefox" rel="tag"&gt;firefox&lt;/a&gt;, &lt;a href="http://technorati.com/tag/firefoxextension" rel="tag"&gt;firefoxextension&lt;/a&gt;, &lt;a href="http://technorati.com/tag/xpcom" rel="tag"&gt;xpcom&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13973327-115740295833155906?l=xullite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xullite.blogspot.com/feeds/115740295833155906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13973327&amp;postID=115740295833155906' title='44 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13973327/posts/default/115740295833155906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13973327/posts/default/115740295833155906'/><link rel='alternate' type='text/html' href='http://xullite.blogspot.com/2006/09/sorting-xul-tree-using-javascript-and.html' title='Sorting XUL tree using Javascript and XPCOM'/><author><name>Yogish Baliga</name><uri>http://www.blogger.com/profile/09404441300707972161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>44</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13973327.post-111980569227510540</id><published>2005-06-26T10:07:00.000-07:00</published><updated>2005-06-26T10:08:12.280-07:00</updated><title type='text'>Context Menu for XUL Trees</title><content type='html'>Tree widget in XUL is one of the most useful widget. Bookmarks is one of the good example using tree widget. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I found adding context menu to tree widget is the difficult one specially when context menu changes depending on the treerow. The documentation says that having &lt;em&gt;contextmenu&lt;/em&gt; attribute of treecell or treerow set to the &lt;em&gt;id&lt;/em&gt; of &lt;em&gt;popup&lt;/em&gt; element will do the trick. But sadly that is not the case. &lt;em&gt;contextmenu&lt;/em&gt; attribute is applicable only to the first &lt;em&gt;treechildren&lt;/em&gt; element of &lt;em&gt;tree&lt;/em&gt; element. Then the question is how to generate context sensative context popup menu. Answer is pretty easy, but difficult to figure out. I spend quite a lot of time figuring it out. So I thought of making this knowledge useful for the interested group.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Javascript in onpopupshowing attribute of popup element gets called just before popup is actually rendered.&amp;nbsp; This is the place to change the menuitem's in the context popup menu. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;popup id="my_popup" onpopupshowing="changePopup(event);"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ....&amp;nbsp; Menu items ......&lt;br /&gt;&lt;br /&gt;&amp;lt;/popup&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;tree&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;treecols&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- id attribute here is important. Otherwise none of the items are selectable --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;treecol id="a" label="bookmarks" primary="true"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/treecols&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;treechildren contextmenu="my_popup"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;lt;treeitem container="true"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;treerow&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;treecell label="Books" properties="folder"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/treerow&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;treechildren&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;treeitem&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;treerow&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;treecell label="Oreilly" properties="bookmark"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/treerow&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/treeitem&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;treeitem&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;treerow&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;treecell label="Amazon" properties="bookmark"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/treerow&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/treeitem&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt;/treechildren&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/treeitem&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/treechildren&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/tree&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First step of changePopup is to find the row and column number of the treecell. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; var treeElement = event.rangeParent;&amp;nbsp; // returns the reference to tree xul element&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; var row = new Object();&lt;br /&gt;&lt;br /&gt;&amp;nbsp; var col = new Object();&lt;br /&gt;&lt;br /&gt;&amp;nbsp; var childElement = new Object(); &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; treeElement.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, childElement);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After the above step&amp;nbsp; row.value and col.value will have the row and column number of selected treecell element. Now is the tricky part of get the properties of the cell.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; var arrayComp = Components.classes['@mozilla.org/supports-array;1'].createInstance();&lt;br /&gt;&lt;br /&gt;&amp;nbsp; var properties = arrayComp.QueryInterface(Components.interfaces.nsISupportsArray);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; treeElement.view.getCellProperties(row.value, col.value, properties);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;properties variable will get populated with the properties of the selected cell. Each element of this array is an instance of nsIAtom interface.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To get the property names,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; for (count = 0;&amp;nbsp; count &amp;lt; properties.Coun(); ++count) {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var property = properties.GetElementAt(count);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; property.QueryInterface(Components.interfaces.nsIAtom);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Above snippet of code can be used to write a function to check the property of the treecell element, say cellHasProperty(properties, name). &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In changePopup function, this function can be used to determine the menu items of the popup.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; if (cellHashProperty(properties, "folder") {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; showFolderMenu(event.target);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; } else if (cellHasProperty(properties, "bookmark")) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; showBookmarkMenu(event.target);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here event.target refer to popup element. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;view member of treeElement has other methods to get the rowProperties and column properties.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;view member implement &lt;a href="http://lxr.mozilla.org/mozilla/source/layout/xul/base/src/tree/public/nsITreeView.idl"&gt;nsITreeView&lt;/a&gt; interface.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;treeBoxObject member of &lt;a href="http://lxr.mozilla.org/mozilla/source/layout/xul/base/src/tree/public/nsITreeBoxObject.idl"&gt;tree&lt;/a&gt; element implement &lt;a href="http://lxr.mozilla.org/mozilla/source/layout/xul/base/src/tree/public/nsITreeBoxObject.idl"&gt;nsITreeBoxObject&lt;/a&gt; interface.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Some useful annotations of XUL programming can be found &lt;a href="http://xul.andreashalter.ch/"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13973327-111980569227510540?l=xullite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xullite.blogspot.com/feeds/111980569227510540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13973327&amp;postID=111980569227510540' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13973327/posts/default/111980569227510540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13973327/posts/default/111980569227510540'/><link rel='alternate' type='text/html' href='http://xullite.blogspot.com/2005/06/context-menu-for-xul-trees.html' title='Context Menu for XUL Trees'/><author><name>Yogish Baliga</name><uri>http://www.blogger.com/profile/09404441300707972161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13973327.post-111980563727253741</id><published>2005-06-26T10:03:00.000-07:00</published><updated>2005-06-26T10:07:17.276-07:00</updated><title type='text'>XUL trick to create round edge for tab element</title><content type='html'>Again XUL is poorly documented. This time it was for applying CSS for XUL elements. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Mozilla has defined few custom CSS rules for getting the cool round edge for any elementes having borders (-moz-border-radius).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;For tab element using this did not give me the desired result. I was getting native tab look. After trial and error I figured that -moz-appearance should be set to none.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So there is the final CSS rule.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;tab {&lt;br /&gt;&lt;br /&gt;&amp;nbsp; -moz-appearance: none;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;-moz-border-radius: 10px 10px 0px 0px;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;padding: 10px;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Resoruces:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;a href="http://docs.mandragor.org/files/Misc/Mozilla_applications_en/mozilla-chp-4-sect-2.html#mozilla-CHP-4-SECT-2.3"&gt;Mozilla CSS extensions&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;a href="http://xul.andreashalter.ch/download/html/c164.html#INSTALLATION.10752792661075279163"&gt;Tab styling&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;&lt;a href="http://www.xulplanet.com/tutorials/xultu/tabpanel.html"&gt;XUL tab reference&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13973327-111980563727253741?l=xullite.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xullite.blogspot.com/feeds/111980563727253741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13973327&amp;postID=111980563727253741' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13973327/posts/default/111980563727253741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13973327/posts/default/111980563727253741'/><link rel='alternate' type='text/html' href='http://xullite.blogspot.com/2005/06/xul-trick-to-create-round-edge-for-tab.html' title='XUL trick to create round edge for tab element'/><author><name>Yogish Baliga</name><uri>http://www.blogger.com/profile/09404441300707972161</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
