<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>qooxdoo News</title>
	
	<link>http://news.qooxdoo.org</link>
	<description>The qooxdoo news section</description>
	<lastBuildDate>Fri, 06 Nov 2009 20:45:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/qooxdoo/news/content" type="application/rss+xml" /><feedburner:emailServiceId>qooxdoo/news/content</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fqooxdoo%2Fnews%2Fcontent" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fqooxdoo%2Fnews%2Fcontent" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fqooxdoo%2Fnews%2Fcontent" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>The week in qooxdoo (2009-11-06)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/uCjkoMdW_lk/the-week-in-qooxdoo-2009-11-06</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-11-06#comments</comments>
		<pubDate>Fri, 06 Nov 2009 20:45:09 +0000</pubDate>
		<dc:creator>Andreas Ecker</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=2559</guid>
		<description><![CDATA[It has been a busy week while anticipating JSConf this weekend in Berlin. This is going to be a great event, and we're happy to be present there with four members of the qooxdoo core team at 1&#038;1, including a qooxdoo-related talk. But now to some framework activities this week:
Part handling
A conceptual bug in the [...]]]></description>
			<content:encoded><![CDATA[<p>It has been a busy week while anticipating <a href="http://jsconf.eu">JSConf</a> this weekend in Berlin. This is going to be a great event, and we're happy to be present there with four members of the qooxdoo core team at <a href="http://qooxdoo.org/about/developers#initiator_and_maintainer">1&1</a>, including a qooxdoo-related <a href="http://jsconf.eu/2009/speaker/fabian_jakobs_autopsy_of_a_wid.html#entry-3459">talk</a>. But now to some framework activities this week:</p>
<h2>Part handling</h2>
<p>A conceptual <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=3028">bug</a> in the part handling of the generator was fixed that surfaced when using a lot of parts with a lot of packages. It occasionally hit when packages were merged by the generator, to reduce the number of files that constitute the application. It turned out that the merging process didn't heed the load-time dependencies of those classes it was moving around. Consequently, the solution was to track load-time dependencies between packages when doing the merging. A verifier was added to the generator that checks all parts are complete (wrt. class load-time dependencies) at the end of the merging process.</p>
<h2><em>bash</em>: Tab Completion</h2>
<p>A small <em>bash</em> script was added (<em>tool/bin/generator_compspec.bash</em>) that provides tab completion for <em>generator.py</em> invocations. So if you're using <em>bash</em>, either on Linux/Unix variants, Mac OSX or Cygwin/Windows you can use this to type in a project folder <em>./generate.py &lt;TAB&gt;&lt;TAB&gt;</em> to get a list of available generator jobs, or the completion of a job name after a few characters. It's not sophisticated but might help some people working with the command line. Source the file in your <em>.bashrc</em> or <em>.bash_profile</em> to get it working on your shell.</p>
<h2>Bugs</h2>
<p>For a complete list of bugs fixed during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2009-10-31&amp;chfieldto=2009-11-07&amp;chfield=resolution">bugzilla query</a>.</p>
<h2>Google Closure</h2>
<p>Most likely you've already heard the latest buzz: Google <a href="http://googlecode.blogspot.com/2009/11/introducing-closure-tools.html">released</a> a set of tools under the name "Closure". It basically consists of four parts: <a href="http://code.google.com/closure/library">Library</a>, <a href="http://code.google.com/closure/compiler">Compiler</a>, <a href="http://code.google.com/closure/compiler/docs/inspector.html">Inspector</a> and <a href="http://code.google.com/closure/templates">Templates</a>. To summarize in their own words it's <em>"a broad, well-tested, modular, and cross-browser JavaScript library"</em> that comes with <em>"a JavaScript optimizer that compiles web apps down into compact, high-performance JavaScript code"</em>. Sounds familiar? </p>
<p>So lets welcome (yet) another JS library. Just the fact that Google is releasing such a library guarantees a lot of attention (see this section as an indication). Unlike the many widely-used low-level libraries (jQuery, Prototype, etc.), this one is a more comprehensive library with (at least) some tooling. We'll see how well it fares compared to existing - "modern" if you will - libraries/frameworks like Cappuccino, ExtJS, SproutCore, YUI and, of course, qooxdoo. From looking briefly at Google Closure, it somewhat "feels" like Dojo. While there are some sweet spots in Closure (e.g. some of the advanced optimization features of the compiler), frankly, I was rather disappointed. Given five years of qooxdoo exposure, I'm biased for sure, but unlike the unavoidable ecstatic commentors in the blogosphere, there doesn't seem to be <em>all too much</em> new, powerful or elegant stuff in Closure. What is your impression? Many of the modern JS frameworks mentioned above seem to have more individual - if not unique -highlights than Closure apparently does, not only when you look at typical GUI features. YMMV.</p>
<p>IMHO it should be an advantage to qooxdoo - as it is for all JavaScript-based application development - that Google is present now not only with end-user apps, developer-centric web services or its Java-based GWT, but also with a significant piece of open source JavaScript technology. Particularly the tooling aspect will gain much more focus among existing and potentially new web application developers. When compared to the other current JavaScript frameworks the integrated tool chain of qooxdoo is one of its strong points, besides a state-of-the-art GUI toolkit for creating rich internet applications. With JavaScript-based applications being (and even more so becoming) an extremely successful technology, qooxdoo is well-prepared and a mature solution for many challenges, don't you agree?</p>
<h2>The road to qooxdoo 1.0</h2>
<p>Talking of <em>maturity</em> this is to remind you of qooxdoo's ramp down towards the 1.0 release, which is still planned for the end of the year. During the last weeks, actually for several months now, a huge number of bugs have been resolved, enhancements implemented, larger topics and inconsistencies in the framework addressed. The <a href="/automated-framework-testing">testing infrastructure</a>, that was established and improved in the course of the year, became a valuable tool as it helps ensuring a sufficiently high level of software quality. Among all the regular development activities, which we're able to pursue ourselves as full-time framework developers, the input and support of the community, contributors and committers naturally is of great importance. This is especially true for the challenges when approaching a 1.0 release.</p>
<p>We'd like to ask for your dedicated help and support during the next few weeks. For instance, if you encounter issues and inconsistencies that to your knowledge (please <a href="http://bugzilla.qooxdoo.org/query.cgi">scan bugzilla</a> first) aren't recorded or addressed already, please let us know. Pay special attention to all API related issues, as it gets naturally much harder to address those after a 1.0 release, which is supposed to gain much from API stability. Clearly, not all open issues can be resolved for qooxdoo 1.0, or any release after, but we're focused on addressing the most important and relevant <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=framework&target_milestone=0.9&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&bug_severity=minor&bug_severity=trivial&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">defects</a> as well as the most significant <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=framework&target_milestone=0.9&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_severity=enhancement&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=">enhancements</a> in a reasonable manner. Again, when reporting real defects, or requesting  enhancements, please choose qooxdoo's regular <a href="http://bugzilla.qooxdoo.org/enter_bug.cgi">bugtracking</a> over the mailing list. This usually guarantees for the most effective and least redundant workflow without cluttering up the list. </p>
<p>All assignees of a bug are asked to review the issues soon, possibly working closely with the reporters in resolving them. If you happen to be the reporter of a defect or an enhancement, or otherwise interested in the issue being resolved, please feel free to approach the current assignee and offer your help. We regularly perform bug triage to never have a real defect unassigned. That doesn't mean that the assignee is going to work on such an issue promptly. If he/she does or plans to, the status is supposed to be switched from "new" or "reopened" to "assigned". See the <a href="http://qooxdoo.org/documentation/general/bug_handling">bug handling</a> documentation for more info. If you're in doubt, talk to each other.</p>
<p>In the next few days we'll also prepare for the 1.0 copy of the qooxdoo <a href="http://qooxdoo.org/documentation/0.8">manual</a>. Like the rest of the homepage it is just a wiki, so after a simple registration you can collaborate in improving the existing documentation. Everybody is encouraged to review the current articles, i.e. finding, reporting and preferably enhancing/fixing the docs. Language corrections by native English speakers are appreciated. Much of this also applies to the <a href="http://demo.qooxdoo.org/devel/apiviewer">API reference</a>, which is generated from the <a href="http://qooxdoo.org/documentation/0.8/write_api_documentation">JSDocs</a> of the qooxdoo code base. If you identify issues that should be addressed, at least report them, at best fix them yourself. It would make sense to carefully go through a current SVN checkout and review individual namespace packages. After you make the changes to your local copy, a <a href="http://qooxdoo.org/community/bugs#patches">patch file</a> can easily be generated and attached to a corresponding bug report. We'd take care of applying your API corrections asap. Does anybody feel like participating and help coordinating efforts around the wiki and/or API docs?</p>
<p>When preparing the wiki for 1.0 in the next few days, we'd also like to correct a <a href="http://qooxdoo.org/about/roadmap#future_releases">milestone</a> misnaming: being in the ramp down for qooxdoo 1.0 for a while now we decided to rename the formerly planned (but then postponed) 0.9 release to a 1.0-beta pre-release. While there are certainly pros and cons of having another "formal" major release, this renaming matches best the status and progress of previous and current framework development. As with any release, beta or major, we'd appreciate you tried this code base at the time of availability, planned for end of November, in order to spot any open issues. This even more applies to SVN trunk, thus anyone of you that is able to run his/her qooxdoo apps against a recent trunk version, is encouraged to do so. Of course, we can't expect you to do this for your production code, i.e. in its deployed version, but often it might not be much effort for you to have a parallel version built and tested against qooxdoo trunk as well. Besides helping framework development, you'd also help yourself and your investment as being close to the qooxdoo trunk helps you to notice and react to any changes and regressions you'd not be comfortable with in a 1.0 or after.</p>
<p>It would be great if you kept an eye on the mailing list to help other community members with their problems and answer their questions. On a daily basis the members of the core team use to take care of supporting the mailing list. With more users helping out others (and some of you are really excellent in doing so!), the time saved could rather be invested in framework development and the upcoming releases. </p>
<p>Think about all ways you could (even more actively) support qooxdoo. Thanks!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=uCjkoMdW_lk:ltSBU7kFp7I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=uCjkoMdW_lk:ltSBU7kFp7I:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=uCjkoMdW_lk:ltSBU7kFp7I:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=uCjkoMdW_lk:ltSBU7kFp7I:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=uCjkoMdW_lk:ltSBU7kFp7I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=uCjkoMdW_lk:ltSBU7kFp7I:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=uCjkoMdW_lk:ltSBU7kFp7I:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=uCjkoMdW_lk:ltSBU7kFp7I:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=uCjkoMdW_lk:ltSBU7kFp7I:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=uCjkoMdW_lk:ltSBU7kFp7I:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=uCjkoMdW_lk:ltSBU7kFp7I:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/uCjkoMdW_lk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-11-06/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-11-06</feedburner:origLink></item>
		<item>
		<title>Towards Package-local Data</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/zQlG1R25_rU/towards-package-local-data</link>
		<comments>http://news.qooxdoo.org/towards-package-local-data#comments</comments>
		<pubDate>Thu, 05 Nov 2009 15:27:06 +0000</pubDate>
		<dc:creator>Thomas Herchenröder</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Tool Chain]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=2518</guid>
		<description><![CDATA[Besides code a qooxdoo application maintains a fair amount of data that represents some sort of resources. This might be negligible for small to medium size applications, but becomes significant for large apps. The resources fall roughly into two categories,

Internationalization (I18N) Data
like translated strings and locale information (such as currency, date and time formats, asf.)
File [...]]]></description>
			<content:encoded><![CDATA[<p>Besides code a qooxdoo application maintains a fair amount of data that represents some sort of resources. This might be negligible for small to medium size applications, but becomes significant for large apps. The resources fall roughly into two categories,</p>
<ol>
<li><strong>Internationalization (I18N) Data</strong><br />
like translated strings and locale information (such as currency, date and time formats, asf.)</li>
<li><strong>File Resources</strong><br />
mostly images like PNG and GIF graphics, but also static HTML and CSS files, sound and multimedia files, asf.</li>
</ol>
<p>Many of these resources need an internal representation in the qooxdoo app. E.g. translated strings are stored as key:value pairs of maps, and images are stored with their size and location. All this data requires space that shows up in  sizes of application files, as they are transfered from server to browser.</p>
<p>Since version 0.8 qooxdoo stored nearly all of this information in the very first package of an application, the package containing the loader code which would bootstrap the application. For large applications, which lots of graphics and translated strings, this initial package would become very large. It would also defy the idea and benefits gained with application <a href="http://qooxdoo.org/documentation/0.8/parts_overview">parts</a>, as the data would cover <strong>all parts</strong> of the application, whether they were loaded during run time or not.</p>
<p>So we thought about splitting all these resource data out from the loader package and into the packages that actually need them. So the plan is to have translated strings in the package that actually uses them, register image data with them, and so forth. In a first step we now have forked out the static resources (category 2. above), so they would be filed with the requiring package and loaded together with it. This can decrease the size of the loader package dramatically, hence increase transfer speed and startup time of the application, and avoids loading of unnecessary data.</p>
<p>To increase the impact of this measure even more, the merging of packages within parts could use some enhancement too. Hence, a new experimental configuration feature was added to the generator. If you add <em><a href="http://qooxdoo.org/documentation/0.8/generator_config_ref#packages">no-merge-private-package</a> : true</em> to a part's config definition, the one package that is specific to this part (it's always exactly one) will be retained and will not merge however small it might be. This allows you to retain these specific packages, together with all the resources they might require.</p>
<p>This is particular interesting if you define parts that draw a lot of resources, but are rarely used or, even better, where you know only one of several parts will be loaded during run time (alternative parts). A concrete example for this scenario is an application that comes with multiple themes, only one of which will be loaded at run time. Each theme can maintain a large collection of resources besides the theme classes. Having those in separate parts will allow you to load just one of them with all its resource info at run time, without the others blowing up the sum total of loaded packages.</p>
<p>We'll see how this stream of thought will continue. For example, currently it is orthogonal to the splitting out of <a href="/the-week-in-qooxdoo-2009-09-18">I18N data in locale-specific files</a>, but I have the feeling that these concepts will nicely converge.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=zQlG1R25_rU:F6kltssDQsI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=zQlG1R25_rU:F6kltssDQsI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=zQlG1R25_rU:F6kltssDQsI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=zQlG1R25_rU:F6kltssDQsI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=zQlG1R25_rU:F6kltssDQsI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=zQlG1R25_rU:F6kltssDQsI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=zQlG1R25_rU:F6kltssDQsI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=zQlG1R25_rU:F6kltssDQsI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=zQlG1R25_rU:F6kltssDQsI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=zQlG1R25_rU:F6kltssDQsI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=zQlG1R25_rU:F6kltssDQsI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/zQlG1R25_rU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/towards-package-local-data/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/towards-package-local-data</feedburner:origLink></item>
		<item>
		<title>The week in qooxdoo (2009-10-30)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/6IPuVuG89yI/the-week-in-qooxdoo-2009-10-30</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-30#comments</comments>
		<pubDate>Fri, 30 Oct 2009 21:22:01 +0000</pubDate>
		<dc:creator>Andreas Ecker</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=2526</guid>
		<description><![CDATA[Welcome back to another roundup of qooxdoo happenings. 
New generator job
We've added a new generator job named "info" to the GUI and Inline skeletons. Thus a generate.py info will display some environment information about the system, the Python installation and the qooxdoo framework version used to build the skeleton application. This information can be helpful [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome back to another roundup of qooxdoo happenings. </p>
<h2>New generator job</h2>
<p>We've added a new generator job named <i>"info"</i> to the GUI and Inline skeletons. Thus a <code>generate.py info</code> will display some environment information about the system, the Python installation and the qooxdoo framework version used to build the skeleton application. This information can be helpful for troubleshooting, especially for problems related to the build system, so you may want to include it when asking for assistance on the <a href="http://lists.sourceforge.net/lists/listinfo/qooxdoo-devel">qooxdoo-devel mailing list</a>.</p>
<h2>TextField problem with IE8</h2>
<p>An issue previously fixed resurfaced this week. A while ago a <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=2230" target="_blank"> bug report</a> was filed about "unreachable" TextFields in IE8 standard mode, something we thought was already fixed. But another report indicated that a certain widget combination indeed makes the TextField unreachable for mouse interactions. Such a combination is for example a TextField added to a ToolBar. A lengthy debugging session showed that the problem occurs if the parent widget has an image as decorator and the TextField is being laid out in front of it. In this case the image (decorator) got the user interaction and not the TextField.</p>
<p>We fixed the issue in the current qooxdoo trunk, but older versions are affected by this issue. It is possible to solve the issue with the following workaround for the TextField:</p>
<pre id="comment_text_21">// IE8 in standard mode needs some extra love here to receive events.
if (qx.core.Variant.isSet("qx.client", "mshtml"))
{
  textfield.getContentElement().setStyle("backgroundImage",
    "url(" + qx.util.ResourceManager.toUri("qx/static/blank.gif") + ")"
  );
}</pre>
<p>The workaround sets a transparent background image on the TextField to fix the issue.</p>
<h2>Bug fixes</h2>
<p>For a complete list of bugs fixed during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2009-10-24&amp;chfieldto=2009-10-31&amp;chfield=resolution">bugzilla query</a>.</p>
<h2>Simulator</h2>
<p>The <a href="http://qooxdoo.org/contrib/project/simulator/selenium-user-extension/">qooxdoo Selenium user extension</a>'s <i>qxTableClick</i> command can now locate table columns by using their internal ID as well as the column name that's displayed in the column header. See the <a href="http://qooxdoo.org/contrib/project/simulator/qooxdoo-tests-with-selenium#by_rowcolumn_qooxdoo_0.8">Simulator wiki page</a> for details.</p>
<h2>Article</h2>
<p>Recently a well-written <a href="http://internet.magnus.de/webdesign/artikel/workshop-javascript-framework-qooxdoo.html">article</a> appeared in a German online magazine by qooxdoo user and web expert Timo Haberkern. A nice read. Well, maybe not if you need to insert a <http://babelfish.yahoo.com">babelfish</a> into your ear to instantaneously translate German into your own language ...</p>
<h2>Real-life Examples</h2>
<p>Another interesting example of a qooxdoo app was supplied by Mirko Thamm, who added some info about <a href="http://qooxdoo.org/community/real_life_examples#momentasevents_database">momentas</a>, an events database with an appealing GUI using qooxdoo's optional RPC server for PHP.</p>
<h2>RpcConsole</h2>
<p>Talking of RPC, Christian Boulanger continued to extend and polish his RpcConsole contribution we blogged about <a href="http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-23">last week</a>. Straight from his today's post to the mailing list:</p>
<p><i>"I just committed a change to the RpcPhp server trunk that allows service introspection similar to the one found in <a href="http://xmlrpc-c.sourceforge.net/introspection.html">XMLRPC</a>: In contrast to the XMLRPC standard, the methods "listMethods", "methodSignature" and "methodHelp" are not methods of a virtual service "system", but are made available as parts of the service class itself. In PHP, this is achieved by extending the ServiceIntrospection class (which is automatically included by the server) or by implementing methods that forward to the API methods like so:</p>
<pre>
function method_methodSignature( $method ) {
   return new ServiceIntrospection( $this )-&gt;method_methodSignature( $method);
}
</pre>
<p>Thus, you have full control over whether to allow introspection or not. The<br />
details of the implementation can be viewed <a href="http://qooxdoo-contrib.svn.sourceforge.net/viewvc/qooxdoo-contrib/trunk/qooxdoo-contrib/RpcPhp/trunk/services/server/ServiceIntrospection.php?view=markup">here</a>. You can see a demo of the three methods: <a href="http://www.qxtransformer.org/qooxdoo/RpcConsole/trunk/demo/default/build/?serverUrl=http://www.qxtransformer.org/qooxdoo/RpcPhp/trunk/services/&runTest=listMethods">listMethods</a>, <a href="http://www.qxtransformer.org/qooxdoo/RpcConsole/trunk/demo/default/build/?serverUrl=http://www.qxtransformer.org/qooxdoo/RpcPhp/trunk/services/&runTest=methodSignature">methodSignature</a> and <a href="http://www.qxtransformer.org/qooxdoo/RpcConsole/trunk/demo/default/build/?serverUrl=http://www.qxtransformer.org/qooxdoo/RpcPhp/trunk/services/&runTest=methodHelp">methodHelp</a>.</p>
<p>I would like to propose that the other backends implement this simple introspection as well. Of course, I am open to changes to the introspection API in order to achieve interoperability."</i></p>
<p>He'll surely appreciate your comments.<br />
<br/><br />
<a href="http://jsconf.eu/2009/"><img src="http://news.qooxdoo.org/wp-content/uploads/2009/10/jsconf2009eu.png" alt="jsconf2009eu" title="jsconf2009eu" width="200" height="126" class="alignleft size-full wp-image-2531" /></a><br clear="all" /><br />
We are very excited about the upcoming <a href="http://jsconf.eu/2009/">JSConf</a>, November 7-8, 2009 in Berlin. It is supposed to be <i>The</i> European JavaScript Conference of the year. Of course, qooxdoo will be present as well: not only will <a href="http://qooxdoo.org/about/developers#fjakobs">Fabian</a> give a <a href="http://jsconf.eu/2009/speaker/fabian_jakobs_autopsy_of_a_wid.html#entry-3459">talk</a> about some of the inner workings of qooxdoo's GUI toolkit. From the qooxdoo core team also <a href="http://qooxdoo.org/about/developers#aback">Alex</a>, <a href="http://qooxdoo.org/about/developers#jonathan_rass">Jonny</a> and <a href="http://qooxdoo.org/about/developers#martinwittemann">Martin</a> will be at the conference. If you happen to also be at JSConf, they're happy to meet with you and chat. If you couldn't get a ticket, but are in Berlin at that time, maybe we could figure out some after-conference get-together. Let us know.</p>
<h2>WebTech conference</h2>
<p>Much of this also applies to <a href="http://webtechcon.de/">WebTech</a>, a newly introduced German web conference. It takes place on November 16-18, 2009 in Karlsruhe, were the core framework team at <a href="http://qooxdoo.org/about/developers#initiator_and_maintainer">1&1</a> is located. Carsten Lergenmüller, member of a qooxdoo application team, will <a href="http://it-republik.de/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=ipc09&id=12514">talk</a> about qooxdoo in action. If you'll be at the conference or just in town at that time, drop us a note so we could arrange for some decent  qooxdoo beer.</p>
<p>Have a nice weekend and a successful working week!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=6IPuVuG89yI:vHh0kl-TU9o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=6IPuVuG89yI:vHh0kl-TU9o:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=6IPuVuG89yI:vHh0kl-TU9o:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=6IPuVuG89yI:vHh0kl-TU9o:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=6IPuVuG89yI:vHh0kl-TU9o:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=6IPuVuG89yI:vHh0kl-TU9o:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=6IPuVuG89yI:vHh0kl-TU9o:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=6IPuVuG89yI:vHh0kl-TU9o:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=6IPuVuG89yI:vHh0kl-TU9o:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=6IPuVuG89yI:vHh0kl-TU9o:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=6IPuVuG89yI:vHh0kl-TU9o:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/6IPuVuG89yI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-30/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-30</feedburner:origLink></item>
		<item>
		<title>The week in qooxdoo (2009-10-23)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/TwaIFAY_Sr0/the-week-in-qooxdoo-2009-10-23</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-23#comments</comments>
		<pubDate>Fri, 23 Oct 2009 15:52:12 +0000</pubDate>
		<dc:creator>Thomas Herchenröder</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=2460</guid>
		<description><![CDATA[This is another weekly activity report from the qooxdoo realm. Welcome!
Framework
Mouse Capturing
Last week we talked about how to track the mouse position while the cursor is outside of the browser's view port. Since then we have done some more work to bring our implementation of mouse capturing in line with the native Internet Explorer implementation:

Bubbling: [...]]]></description>
			<content:encoded><![CDATA[<p>This is another weekly activity report from the qooxdoo realm. Welcome!</p>
<h2>Framework</h2>
<h3>Mouse Capturing</h3>
<p>Last week we talked about how to track the mouse position while the cursor is outside of the browser's view port. Since then we have done some more work to bring our implementation of mouse capturing in line with the native Internet Explorer implementation:</p>
<ul>
<li><strong>Bubbling</strong>: Captured mouse events are now bubbling.</li>
<li><strong>Container capture</strong>: By default events originating in the capture element are captured and dispatched on the capture element. The <a href="http://msdn.microsoft.com/en-us/library/ms536742%28VS.85%29.aspx">Microsoft API</a> features an optional <em>bContainerCapture</em> parameter to turn this off. If the value of this argument is <em>false</em> events originating in a container are not captured by the container.</li>
</ul>
<h3>Unwanted Scrolling</h3>
<p>When DOM elements are focused using the DOM <em>focus()</em> function, most browser will scroll the focused element into view. This cannot be easily prevented by static CSS and was an ongoing annoyance. Thanks to the work of Tim Buschtöns from the Eclipse RAP project we now have a way to prevent this kind of scrolling for selected widgets. We have added a <a href="http://demo.qooxdoo.org/devel/apiviewer/#qx.html.Element~disableScrolling">disableScrolling</a> method to <em>qx.html.Element</em>, which will block this kind of unwanted scrolling. By default it is active on the application's <a href="http://demo.qooxdoo.org/devel/apiviewer/#qx.ui.root.Application">Root</a> widget and the <a href="http://demo.qooxdoo.org/devel/apiviewer/#qx.ui.window.Desktop">Desktop</a> widget.</p>
<h3>Bugs</h3>
<h4>Dynamic image switch</h4>
<p>One of the latest addition to the trunk was the fix of <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=1909">bug#1909</a> which prevented application developers from changing the source of an image or the scaling dynamically during run time. This nasty bug was finally fixed and you're now able to use the Image widget without worrying when changing the image type or scaling.</p>
<h4>Table</h4>
<p>The Table widget can be scrolled using the mouse wheel. On some computers and a combination of FireFox3, scroll wheel speed and the Windows operating system the Table wouldn't scroll at all or jump directly to top or bottom. This week this issue <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=1739">was finally fixed</a>.</p>
<h4>API Viewer</h4>
<p>The API Viewer got some love, too. We <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=2787">corrected the position</a> of the icons indicating the type of methods and other attributes.</p>
<p>For a complete list of bugs fixed during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2009-10-17&amp;chfieldto=2009-10-24&amp;chfield=resolution">bugzilla query</a>.</p>
<h2>Generator</h2>
<h3>Stack Traces</h3>
<p>Stack traces are an important aid in debugging, and it was a default behaviour of the generator to print a Python stack trace on exit through a fatal error. And it was nice to have this important information right at hand, when it happens. On the other hand, those stack traces confused people and, more importantly, obscured the error message that follows the stack trace, as they easily become large, unwieldy, and packed with internal details that are really only of significance for the developer. Therefore, we have made printing of stack traces into a command-line option of the generator. If you add <em>-s</em> (<em>--stacktrace</em>) to your generator runs, stack traces will be printed on fatal exits. But the default now is not to print them. The downside is: Whenever you encounter a problem with a premature exit of the tool chain, a common response might be in the future <em>"Please re-run with the -s flag"</em>, so be prepared <img src='http://news.qooxdoo.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  .</p>
<h3>File Globs</h3>
<p>There is a new section in the manual on using <a href="http://qooxdoo.org/documentation/0.8/generator_config_articles#file_globs">file globs</a>, i.e. meta characters in file path expressions.</p>
<h2>Community</h2>
<h3>HtmlArea: Undo / Redo support in IE</h3>
<p>The support for Undo/Redo in IE is now again available in the latest trunk version of the HtmlArea. It was broken with the 0.8 update of HtmlArea due to the inability of IE to cope with DOM changes when the native Undo/Redo commands are used. Now the implementation does not use the native commands anymore and you can again use Undo/Redo capabilities in all browsers.</p>
<h3>Simulator Updates</h3>
<p>The <a href="http://qooxdoo.org/contrib/project/simulator/selenium-user-extension/">qooxdoo Selenium user extension</a>'s hierarchical element locator <strong>qxh</strong> will now find <a href="http://qooxdoo.org/documentation/0.8/ui_develop#child_controls">child controls</a> as well as child widgets added by the application developer. This is useful when simulating user interaction with a qooxdoo widget such as the <a href="http://demo.qooxdoo.org/current/apiviewer/#qx.ui.form.ComboBox">ComboBox</a>, which has two child controls, a text field and a button, in addition to any list items added by the developer. Previously, the <em>qxh</em> locator would find the list items but not the child controls, so clicking the button to open the menu or typing in the text field was impossible.<br />
Here's an example of how to select the first entry from a ComboBox menu using the updated <em>qxh</em> locator:</p>
<pre style="padding-left: 30px;">qxselenium.qxClick("qxh=*/qx.ui.form.ComboBox/qx.ui.form.Button");
qxselenium.qxClick("qxh=*/qx.ui.form.ComboBox/child[0]");</pre>
<p>Additionally, we've introduced a new locator with the prefix <strong>qxhv</strong> which works just like the <em>qxh</em> locator, but only considers visible widgets for each step.</p>
<h3>RpcConsole Contrib</h3>
<p>Christian Boulanger has come up with another nifty contribution: A qooxdoo interface to test <a href="http://qooxdoo.org/documentation/0.8/rpc">RPC back-end services</a> interactively. Here's a first screen shot:</p>
<p><img class="aligncenter size-medium wp-image-2465" title="RpcConsole" src="http://news.qooxdoo.org/wp-content/uploads/2009/10/RpcConsole-540x346.png" alt="RpcConsole" width="540" height="346" /></p>
<p>See how you can enter a service, provide request parameters, send the RPC and inspect the response. Many developers working with RPC to communicate with the server will welcome this tool. In his announcement Christian writes that the application</p>
<p style="padding-left: 30px;"><em> "... allows you to test a backend rpc server. It is a very minimal client for the moment, but more functionality is to come - please let me know what you would like to see implemented. Of course, you can also look at the code and tell me what can be improved"</em></p>
<p>Especially people using back-ends other than the PHP RPC are invited to test and share their experience.<em> </em></p>
<p style="padding-left: 30px">
<p>That's it for this week - see you around next time.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=TwaIFAY_Sr0:nwpvPiSI0bk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=TwaIFAY_Sr0:nwpvPiSI0bk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=TwaIFAY_Sr0:nwpvPiSI0bk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=TwaIFAY_Sr0:nwpvPiSI0bk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=TwaIFAY_Sr0:nwpvPiSI0bk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=TwaIFAY_Sr0:nwpvPiSI0bk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=TwaIFAY_Sr0:nwpvPiSI0bk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=TwaIFAY_Sr0:nwpvPiSI0bk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=TwaIFAY_Sr0:nwpvPiSI0bk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=TwaIFAY_Sr0:nwpvPiSI0bk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=TwaIFAY_Sr0:nwpvPiSI0bk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/TwaIFAY_Sr0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-23/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-23</feedburner:origLink></item>
		<item>
		<title>The week in qooxdoo (2009-10-16)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/HJGULP9Y_6U/the-week-in-qooxdoo-2009-10-16</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-16#comments</comments>
		<pubDate>Fri, 16 Oct 2009 17:12:37 +0000</pubDate>
		<dc:creator>Andreas Ecker</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=2449</guid>
		<description><![CDATA[Welcome back to the roll-up of another exciting week in qooxdoo.
Scrolling Menus
For a long time qooxdoo's menu implementation was missing an important feature: If the screen was smaller than a menu required, the menu was cut off and some menu entries could not be selected. This is history. Large menus now use slide bars on-demand [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome back to the roll-up of another exciting week in qooxdoo.</p>
<h2>Scrolling Menus</h2>
<p>For a long time qooxdoo's menu implementation was missing an important feature: If the screen was smaller than a menu required, the menu was cut off and some menu entries could not be selected. This is history. Large menus now use slide bars on-demand to scroll to initially hidden menu entries.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="566" height="561" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="thumb=http://content.screencast.com/users/fjakobs/folders/Jing/media/b6d2d241-bb25-4185-94b9-0b1b43459958/FirstFrame.jpg&amp;containerwidth=566&amp;containerheight=561&amp;content=http://content.screencast.com/users/fjakobs/folders/Jing/media/b6d2d241-bb25-4185-94b9-0b1b43459958/00000007.swf&amp;advseek=true" /><param name="allowFullScreen" value="true" /><param name="scale" value="showall" /><param name="allowScriptAccess" value="always" /><param name="base" value="http://content.screencast.com/users/fjakobs/folders/Jing/media/b6d2d241-bb25-4185-94b9-0b1b43459958/" /><param name="src" value="http://content.screencast.com/users/fjakobs/folders/Jing/media/b6d2d241-bb25-4185-94b9-0b1b43459958/jingswfplayer.swf" /><param name="flashvars" value="thumb=http://content.screencast.com/users/fjakobs/folders/Jing/media/b6d2d241-bb25-4185-94b9-0b1b43459958/FirstFrame.jpg&amp;containerwidth=566&amp;containerheight=561&amp;content=http://content.screencast.com/users/fjakobs/folders/Jing/media/b6d2d241-bb25-4185-94b9-0b1b43459958/00000007.swf&amp;advseek=true" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="566" height="561" src="http://content.screencast.com/users/fjakobs/folders/Jing/media/b6d2d241-bb25-4185-94b9-0b1b43459958/jingswfplayer.swf" base="http://content.screencast.com/users/fjakobs/folders/Jing/media/b6d2d241-bb25-4185-94b9-0b1b43459958/" allowscriptaccess="always" scale="showall" allowfullscreen="true" flashvars="thumb=http://content.screencast.com/users/fjakobs/folders/Jing/media/b6d2d241-bb25-4185-94b9-0b1b43459958/FirstFrame.jpg&amp;containerwidth=566&amp;containerheight=561&amp;content=http://content.screencast.com/users/fjakobs/folders/Jing/media/b6d2d241-bb25-4185-94b9-0b1b43459958/00000007.swf&amp;advseek=true" bgcolor="#FFFFFF" quality="high"></embed></object></p>
<p>While implementing this feature the placement algorithm for menus was improved as well and a new widget was introduced: The little arrow buttons to scroll the menus react on mouse over. It is not necessary to click on them. This widget has been externalized into the HoverButton widget.</p>
<h2>Mouse Capturing</h2>
<p>This week we found the solution for really an annoying problem. The problem was that we didn't receive mouse events during drag operations in IE and Firefox if the cursor left the browser viewport. Thanks to qooxdoo user Petr Kobalíček, who pointed out that other frameworks can handle this situation, this issue could finally be resolved. The details are explained in an <a href="http://news.qooxdoo.org/mouse-capturing">earlier blog post</a> today.</p>
<h2>Scrollbars</h2>
<p>Soon after we had introduced the native scrollbars, we fixed a strange rendering bug only happening in Opera: the browser seems to forget the scroll bars's scroll position and <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=2926">needs some help</a> to render it correctly.<br />
The Scrollbar widget also got a new feature this week: If the scrollbar is too small to display the scrollbar knob at all or to use it reasonably well, the knob <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=2765">is now being hidden</a> automatically.</p>
<h2>Dependency Analysis</h2>
<p>The recent changes to the dependency analysis (see last weeks blog post) led to Python hitting its internal recursion limit in huge projects, so we've increased this limit in the generator from 1,000 to 1,500. Unlikely that you run into problems, but if you do for big projects, please let us know.</p>
<h2>Compiler Hints</h2>
<p>The syntax for <a href="http://qooxdoo.org/documentation/0.8/code_structure">compiler hints</a> like <em>#require, #use</em>, ... has been relaxed to allow leading white space before the '#'.</p>
<h2>Bugs</h2>
<p>For a complete list of bugs fixed during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2009-10-10&amp;chfieldto=2009-10-17&amp;chfield=resolution">bugzilla query</a>.</p>
<h2>SmartTableModel</h2>
<p>Already <a href="/the-week-in-qooxdoo-2009-09-25">mentioned</a> in a previous blog post was Dave Baggett's <a href="http://qooxdoo.org/contrib/project#smarttablemodel">SmartTableModel</a>. Like most of the recent contributions in qooxdoo-contrib, this one has also seen some activities lately, e.g. by Fritz Zaucker, who added another demo. Try his <a href="http://demo.qooxdoo.org/contrib/SmartTableModel/trunk/demo/searchAsYouType/build/">searchAsYouType demo</a>, as well as Dave's <a href="http://demo.qooxdoo.org/contrib/SmartTableModel/trunk/demo/default/build/">default demo</a>.</p>
<p>Bye!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HJGULP9Y_6U:fW9WOXy9foI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HJGULP9Y_6U:fW9WOXy9foI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=HJGULP9Y_6U:fW9WOXy9foI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HJGULP9Y_6U:fW9WOXy9foI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HJGULP9Y_6U:fW9WOXy9foI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=HJGULP9Y_6U:fW9WOXy9foI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HJGULP9Y_6U:fW9WOXy9foI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=HJGULP9Y_6U:fW9WOXy9foI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HJGULP9Y_6U:fW9WOXy9foI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=HJGULP9Y_6U:fW9WOXy9foI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=HJGULP9Y_6U:fW9WOXy9foI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/HJGULP9Y_6U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-16/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-16</feedburner:origLink></item>
		<item>
		<title>Mouse Capturing</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/QtZ-axSp_FE/mouse-capturing</link>
		<comments>http://news.qooxdoo.org/mouse-capturing#comments</comments>
		<pubDate>Fri, 16 Oct 2009 06:59:44 +0000</pubDate>
		<dc:creator>Fabian Jakobs</dc:creator>
				<category><![CDATA[Bugs]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Issues]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=2415</guid>
		<description><![CDATA[Yesterday we have found solution for a really annoying problem. The problem was that we didn't receive mouse events during drag operation in IE and Firefox if the cursor left the browser viewport. This was especially a problem for our scroll bars. Since qooxdoo 0.8 we render scroll bars using qooxdoo widgets. If the scrollbar [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday we have found solution for a <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=2891">really annoying problem</a>. The problem was that we didn't receive mouse events during drag operation in IE and Firefox if the cursor left the browser viewport. This was especially a problem for our scroll bars. Since qooxdoo 0.8 we render scroll bars using qooxdoo widgets. If the scrollbar was near the browser's edge and the user dragged the scroll bar knob outside of the browser window, scrolling just stopped. Thanks to qooxdoo user Petr Kobalíček, who pointed out that other frameworks can handle this situation, this issue could finally be resolved.</p>
<p>You can see the difference in this screen cast:</p>
<p><object width="528" height="467"><param name="movie" value="http://content.screencast.com/users/fjakobs/folders/Jing/media/af2b17df-95e1-4618-a7e7-8471c0290b9d/jingswfplayer.swf"></param><param name="quality" value="high"></param><param name="bgcolor" value="#FFFFFF"></param><param name="flashVars" value="thumb=http://content.screencast.com/users/fjakobs/folders/Jing/media/af2b17df-95e1-4618-a7e7-8471c0290b9d/FirstFrame.jpg&containerwidth=528&containerheight=467&content=http://content.screencast.com/users/fjakobs/folders/Jing/media/af2b17df-95e1-4618-a7e7-8471c0290b9d/00000003.swf&advseek=true"></param><param name="allowFullScreen" value="true"></param><param name="scale" value="showall"></param><param name="allowScriptAccess" value="always"></param><param name="base" value="http://content.screencast.com/users/fjakobs/folders/Jing/media/af2b17df-95e1-4618-a7e7-8471c0290b9d/"></param>
<p><embed src="http://content.screencast.com/users/fjakobs/folders/Jing/media/af2b17df-95e1-4618-a7e7-8471c0290b9d/jingswfplayer.swf" quality="high" bgcolor="#FFFFFF" width="528" height="467" type="application/x-shockwave-flash" allowScriptAccess="always" flashVars="thumb=http://content.screencast.com/users/fjakobs/folders/Jing/media/af2b17df-95e1-4618-a7e7-8471c0290b9d/FirstFrame.jpg&containerwidth=528&containerheight=467&content=http://content.screencast.com/users/fjakobs/folders/Jing/media/af2b17df-95e1-4618-a7e7-8471c0290b9d/00000003.swf&advseek=true" allowFullScreen="true" base="http://content.screencast.com/users/fjakobs/folders/Jing/media/af2b17df-95e1-4618-a7e7-8471c0290b9d/" scale="showall"></embed></object></p>
<p>A basic building block for drag operations in qooxdoo is a concept called mouse capturing. It was fist introduced by Microsoft with Internet Explorer 5 but unfortunately no other browser vendor has implemented it (<a href="http://msdn.microsoft.com/en-us/library/ms537630%28VS.85%29.aspx">MSDN</a>). Mouse capturing allows web developers to tell the browser that all mouse events should be dispatched on the same DOM element. This is especially useful for drag operations or menus, when all mouse events should go to the dragged element even if the mouse cursor is not directly above the element.</p>
<p>This can be easily demonstrated by looking at a simplistic drag and drop implementation:</p>
<pre class="javascript">&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> draggable<span style="color: #66cc66;">&#40;</span>element<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> dragging = <span style="color: #003366; font-weight: bold;">null</span>;
&nbsp;
    addListener<span style="color: #66cc66;">&#40;</span>element, <span style="color: #3366CC;">&quot;mousedown&quot;</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> e = window.<span style="color: #006600;">event</span>;
        dragging = <span style="color: #66cc66;">&#123;</span>
            mouseX: e.<span style="color: #006600;">clientX</span>,
            mouseY: e.<span style="color: #006600;">clientY</span>,
            startX: parseInt<span style="color: #66cc66;">&#40;</span>element.<span style="color: #006600;">style</span>.<span style="color: #006600;">left</span><span style="color: #66cc66;">&#41;</span>,
            startY: parseInt<span style="color: #66cc66;">&#40;</span>element.<span style="color: #006600;">style</span>.<span style="color: #006600;">top</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#125;</span>;
        element.<span style="color: #006600;">setCapture</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    addListener<span style="color: #66cc66;">&#40;</span>element, <span style="color: #3366CC;">&quot;losecapture&quot;</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        dragging = <span style="color: #003366; font-weight: bold;">null</span>;
    <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    addListener<span style="color: #66cc66;">&#40;</span>element, <span style="color: #3366CC;">&quot;mousemove&quot;</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>!dragging<span style="color: #66cc66;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span>;
&nbsp;
        <span style="color: #003366; font-weight: bold;">var</span> e = window.<span style="color: #006600;">event</span>;
        <span style="color: #003366; font-weight: bold;">var</span> top = dragging.<span style="color: #006600;">startY</span> + <span style="color: #66cc66;">&#40;</span>e.<span style="color: #006600;">clientY</span> - dragging.<span style="color: #006600;">mouseY</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #003366; font-weight: bold;">var</span> left = dragging.<span style="color: #006600;">startX</span> + <span style="color: #66cc66;">&#40;</span>e.<span style="color: #006600;">clientX</span> - dragging.<span style="color: #006600;">mouseX</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
        element.<span style="color: #006600;">style</span>.<span style="color: #006600;">top</span> = <span style="color: #66cc66;">&#40;</span>Math.<span style="color: #006600;">max</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">0</span>, top<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #3366CC;">&quot;px&quot;</span>;
        element.<span style="color: #006600;">style</span>.<span style="color: #006600;">left</span> = <span style="color: #66cc66;">&#40;</span>Math.<span style="color: #006600;">max</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">0</span>, left<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #3366CC;">&quot;px&quot;</span>;
    <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>;
&nbsp;
draggable<span style="color: #66cc66;">&#40;</span>document.<span style="color: #006600;">getElementById</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;drag&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p><a href="http://news.qooxdoo.org/wp-content/uploads/2009/10/drag-ie.html" target="_blank">open demo</a> (works only in IE). While dragging try moving the cursor out of the browser window.</p>
<p>In the <em>mousedown</em> handler the current mouse and element position is stored in a drag session and then mouse capturing is started. From this point on all mouse events will be dispatched on the dragged element even if the mouse cursor is not over the element. The mouse can even leave the viewport as long as the mouse button is pressed. Mouse capturing ends when the mouse button is released, an alert box is opened or the browser loses focus. Note that all listeners can be attached directly to the element.</p>
<p>To get the same behavior in non IE browsers is a little bit tricky because none do support mouse capturing. For this reason we cannot attach the <em>mousemove</em> listener to the dragged element. Instead we need to attach it to the <em>document</em>. Since mouse events bubble up the DOM tree the <em>document</em> will receive all move events. One problem with this approach is that while bubbling up an intermediate event listener might manually stop the bubbling by calling <em>stopPropagation</em>. In this case the event would never reach the document and the drag would be broken. To fix this we have to attach the listeners to the event capturing phase. This can be easily confused with mouse capturing but it has nothing to do with it. In the W3C <a href="http://www.w3.org/TR/DOM-Level-2-Events/events.html">DOM event model</a> bubbling events have two phases. First in the capturing phase the event bubbles from the document down to the event target. Afterwards in the bubbling phase it bubbles back from the target to the document. The bubbling phase is much better known because IE doesn't support the capturing phase at all. If the <em>mousemove</em> listener is added to the capturing phase of the <em>document</em> no other listener will be able to block it.</p>
<pre class="javascript">&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> draggable<span style="color: #66cc66;">&#40;</span>element<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> dragging = <span style="color: #003366; font-weight: bold;">null</span>;
&nbsp;
    addListener<span style="color: #66cc66;">&#40;</span>element, <span style="color: #3366CC;">&quot;mousedown&quot;</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>e<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #003366; font-weight: bold;">var</span> e = window.<span style="color: #006600;">event</span> || e;
        dragging = <span style="color: #66cc66;">&#123;</span>
            mouseX: e.<span style="color: #006600;">clientX</span>,
            mouseY: e.<span style="color: #006600;">clientY</span>,
            startX: parseInt<span style="color: #66cc66;">&#40;</span>element.<span style="color: #006600;">style</span>.<span style="color: #006600;">left</span><span style="color: #66cc66;">&#41;</span>,
            startY: parseInt<span style="color: #66cc66;">&#40;</span>element.<span style="color: #006600;">style</span>.<span style="color: #006600;">top</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#125;</span>;
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>element.<span style="color: #006600;">setCapture</span><span style="color: #66cc66;">&#41;</span> element.<span style="color: #006600;">setCapture</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    addListener<span style="color: #66cc66;">&#40;</span>element, <span style="color: #3366CC;">&quot;losecapture&quot;</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        dragging = <span style="color: #003366; font-weight: bold;">null</span>;
    <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    addListener<span style="color: #66cc66;">&#40;</span>document, <span style="color: #3366CC;">&quot;mouseup&quot;</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        dragging = <span style="color: #003366; font-weight: bold;">null</span>;
    <span style="color: #66cc66;">&#125;</span>, <span style="color: #003366; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> dragTarget = element.<span style="color: #006600;">setCapture</span> ? element : document;
&nbsp;
    addListener<span style="color: #66cc66;">&#40;</span>dragTarget, <span style="color: #3366CC;">&quot;mousemove&quot;</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>e<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>!dragging<span style="color: #66cc66;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span>;
&nbsp;
        <span style="color: #003366; font-weight: bold;">var</span> e = window.<span style="color: #006600;">event</span> || e;
        <span style="color: #003366; font-weight: bold;">var</span> top = dragging.<span style="color: #006600;">startY</span> + <span style="color: #66cc66;">&#40;</span>e.<span style="color: #006600;">clientY</span> - dragging.<span style="color: #006600;">mouseY</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #003366; font-weight: bold;">var</span> left = dragging.<span style="color: #006600;">startX</span> + <span style="color: #66cc66;">&#40;</span>e.<span style="color: #006600;">clientX</span> - dragging.<span style="color: #006600;">mouseX</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
        element.<span style="color: #006600;">style</span>.<span style="color: #006600;">top</span> = <span style="color: #66cc66;">&#40;</span>Math.<span style="color: #006600;">max</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">0</span>, top<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #3366CC;">&quot;px&quot;</span>;
        element.<span style="color: #006600;">style</span>.<span style="color: #006600;">left</span> = <span style="color: #66cc66;">&#40;</span>Math.<span style="color: #006600;">max</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">0</span>, left<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> + <span style="color: #3366CC;">&quot;px&quot;</span>;
    <span style="color: #66cc66;">&#125;</span>, <span style="color: #003366; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>;
&nbsp;
draggable<span style="color: #66cc66;">&#40;</span>document.<span style="color: #006600;">getElementById</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;drag&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre>
<p><a href="http://news.qooxdoo.org/wp-content/uploads/2009/10/drag.html" target="_blank">open demo</a></p>
<p>If a mouse button is pressed and dragged out of the browser window, Firefox will continue to fire mouse events on the <em>document</em>. Opera, Safari and Chrome are a little more tolerant and fire the events on the <em>document.documentElement</em> as well. For this reason we must attach the listener to the <em>document</em> and not the <em>document.documentElement</em> or <em>document.body</em>.</p>
<p>Because if its usefulness we emulate the IE mouse capturing behavior in our cross browser event handling layer. The fix for IE was to call the native <em>setCapture</em> method. Since we used the emulated mouse capturing support for IE as well we've lost the side effect of receiving mouse events when the mouse left the browser window. In Firefox we just had to switch the event target from <em>document.documentElement</em> to <em>document</em> in our generic mouse event handler. With both fixes in place, mouse capturing and drag and drop operations now really work as expected on all supported browsers.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=QtZ-axSp_FE:0FlikU84dvk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=QtZ-axSp_FE:0FlikU84dvk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=QtZ-axSp_FE:0FlikU84dvk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=QtZ-axSp_FE:0FlikU84dvk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=QtZ-axSp_FE:0FlikU84dvk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=QtZ-axSp_FE:0FlikU84dvk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=QtZ-axSp_FE:0FlikU84dvk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=QtZ-axSp_FE:0FlikU84dvk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=QtZ-axSp_FE:0FlikU84dvk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=QtZ-axSp_FE:0FlikU84dvk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=QtZ-axSp_FE:0FlikU84dvk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/QtZ-axSp_FE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/mouse-capturing/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/mouse-capturing</feedburner:origLink></item>
		<item>
		<title>The week in qooxdoo (2009-10-09)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/Wn9zP9B_xEE/the-week-in-qooxdoo-2009-10-09</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-09#comments</comments>
		<pubDate>Fri, 09 Oct 2009 19:05:22 +0000</pubDate>
		<dc:creator>Andreas Ecker</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=2388</guid>
		<description><![CDATA[Here's another roundup of qooxdoo happenings. This time we'll start with one of the most important parts of the framework, i.e. the tool chain, more precisely the Generator:
Dependency Analysis
An essential part of the work of the generator is finding dependency relationships between classes. You throw a few classes at it to start with (like the [...]]]></description>
			<content:encoded><![CDATA[<p>Here's another roundup of qooxdoo happenings. This time we'll start with one of the most important parts of the framework, i.e. the tool chain, more precisely the Generator:</p>
<h2>Dependency Analysis</h2>
<p>An essential part of the work of the generator is finding dependency relationships between classes. You throw a few classes at it to start with (like the main application class of your app), and it will work out which other classes are necessary to make the whole application work. If it finds unknown classes in your code it would spill out <em>"! Unknown classes referenced"</em> warnings. But these warnings were not entirely reliable, partly due to stale cache information. If a required class was missing, you could add it to your application and the generator would still produce the same warning. On the other hand, if you removed a class that had been detected before, the generator might silently ignore that it is now missing. This has been fixed, along with other omissions, where the generator e.g. would silently skip existing dependencies in the code, so both the depth of the analysis as well as the reliability of the cache has been increased. The classical <em>#ignore</em> compiler hint is supported again, so you can switch off the "unknown class" warning for global references you know are ok. As a payoff, the new implementation is more demanding in terms of run time. But once the cache has been populated by relevant dependency information, you won't notice any difference.</p>
<h2>Chrome Frame</h2>
<p>You've surely heard the following news: Google published a plug-in called "Chrome Frame" for Microsoft's Internet Explorer 6, 7 and 8. This plug-in makes it possible to use the JavaScript and rendering engine of Google Chrome instead of the Internet Explorer originals. The plug-in can be <a href="http://code.google.com/intl/de/chrome/chromeframe/" target="_blank">downloaded</a> and it comes with <a href="http://code.google.com/intl/de/chrome/chromeframe/developers_guide.html" target="_blank">documentation</a>.</p>
<p>There has been quite some debate and <a href="http://blog.lizardwrangler.com/2009/09/28/browser-soup-and-chrome-frame/">lament</a>, on the net as well as among the qooxdoo community, about the usefulness of Google's approach. While at first it might appear to be a brilliant idea to get rid of IE's deficiencies and inferior performance, it does have some drawbacks. For instance, in a corporate environment, would the system administrators now install such a 3rd party plug-in into IE, given that they didn't upgrade or switch browsers before (for whatever reason)? In other scenarios, though, this might be a chance to keep IE running for some corporate legacy apps, while offering new web 2.0 intranet solutions in the same browser users are already familiar with. Well, who knows how successful Chrome Frame will be in the long run ...</p>
<p>Anyway, when we heard about the plug-in, we had, of course <img src='http://news.qooxdoo.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> , to test Chrome Frame to find out if qooxdoo runs in it without any problems. Therefore we installed the plug-in on one of our test computers and ran the nightly test environment. Good news is: qooxdoo seems to run without any problems. The plug-in behaves like its big brother (i.e. Chrome 4), but appears to be a tiny bit slower.</p>
<p>Due to the positive test results we are currently thinking about adding the following meta tag to the qooxdoo skeleton applications:</p>
<pre><span>&lt;meta</span><span> </span><span>http-equiv</span><span>=</span><span>"X-UA-Compatible"</span><span> </span><span>content</span><span>=</span><span>"chrome=1"</span><span>&gt;</span></pre>
<p>So each custom application, typically built upon those skeletons, would always be rendered with Chrome Frame if the plug-in is installed. Is that something you would expect, so that it's a welcome feature addition? What is your experience with qooxdoo in Chrome Frame? Oops, I just stumbled across a <a href="http://groups.google.com/group/google-chrome-frame/browse_frm/thread/4e3fd92ccb91486c/82f1027cf989ee41">discussion</a> on the Frame mailing list, where qooxdoo user John Spackman reported some potential issues with AJAX calls? Anyway, we'd be glad you all shared your experience and opinion about the meta tag with us.</p>
<h2>Bugfixes</h2>
<p>For a complete list of bugs fixed during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2009-10-03&amp;chfieldto=2009-10-09&amp;chfield=resolution">bugzilla query</a>.</p>
<h2>Community</h2>
<p>Contributions galore... three more additions this week in <a href="http://contrib.qooxdoo.org">qooxdoo-contrib</a> <img src='http://news.qooxdoo.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  , read on ...</p>
<h2>cometd</h2>
<p>This is a wrapper of the client-side part of the well-known <a href="http://cometd.org/">Cometd</a> protocol in qooxdoo, contributed by Christian Boulanger. He says:</p>
<p><em>"[...] ever since Alex Russell coined the term "comet" for a server push technology<br />
for http, I have been fascinated by the idea. Being dissatisfied with the<br />
responsiveness of my app, I have long wanted to use it in qooxdoo - but<br />
without having the full overhead of including yet another javascript<br />
framework like dojo.  I have finally gotten around to porting the client<br />
javascript code to qooxdoo."</em></p>
<p>You can find the top-level hook to this contribution on its entry in the <a href="http://qooxdoo.org/contrib/project#cometd">contributions overview</a>. There is still some code porting to be done, and Christian appreciates support regarding the transport layer. Check the mailing list if you feel like jumping in.</p>
<h2>jqxPlot</h2>
<p>Fritz Zaucker has provided <a href="http://qooxdoo.org/contrib/project#jqxplot">jqxPlot</a>, a demo application to showcase the integration of the <a href="http://www.jqplot.com/">jqPlot</a> plotting library into a qooxdoo application. This is not only interesting for those wanting to bring charting to their qooxdoo apps, but are interested in integrating foreign libraries in general. Have a look at his nice <a href="http://demo.qooxdoo.org/contrib/jqxPlot/trunk/demo/default/build/">online demo</a>.</p>
<p style="text-align: center;"><a href="http://demo.qooxdoo.org/contrib/jqxPlot/trunk/demo/default/build/"><img class="size-medium wp-image-2379 aligncenter" title="jqxPlot" src="http://news.qooxdoo.org/wp-content/uploads/2009/10/jqxPlot-448x400.png" alt="jqxPlot Demo" width="448" height="400" /></a></p>
<p style="text-align: center;">jqxPlot Demo</p>
<h2>CollapsablePanel</h2>
<p>Also from Christian Boulanger, there comes <a href="http://qooxdoo.org/contrib/project#collapsablepanel">CollapsablePanel</a>,  an accordion-style widget which allows you to open multiple items at the same time; this has already received lively feedback on the mailing list. Not only that. Matthew Gregory, another qooxdoo power user and contributor (e.g. of the <a href="http://qooxdoo.org/contrib/project/tileview">TileView</a> widget), helped in advancing Christian's solution based on some previous implementations of his own. There are quite some activities around the CollapsablePanel right now. For the time being, you can check Christian's <a href="http://www.qxtransformer.org/qooxdoo/collapsablepanel/build/">original demo</a> and also the current state of the <a href="http://demo.qooxdoo.org/contrib/CollapsablePanel/trunk/demo/default/build/">improved demo</a>.</p>
<p><img class="size-medium wp-image-2385" title="collapsablePanel" src="http://news.qooxdoo.org/wp-content/uploads/2009/10/collapsablePanel-540x380.png" alt="Collapsable Panel Screenshot" width="540" height="380" /></p>
<p style="text-align: center;">Collapsable Panel Screenshot</p>
<p>With all the new stuff to try out, don’t forget to check back for next week's regular status update.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Wn9zP9B_xEE:C_u--2UGQhk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Wn9zP9B_xEE:C_u--2UGQhk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=Wn9zP9B_xEE:C_u--2UGQhk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Wn9zP9B_xEE:C_u--2UGQhk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Wn9zP9B_xEE:C_u--2UGQhk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=Wn9zP9B_xEE:C_u--2UGQhk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Wn9zP9B_xEE:C_u--2UGQhk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=Wn9zP9B_xEE:C_u--2UGQhk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Wn9zP9B_xEE:C_u--2UGQhk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=Wn9zP9B_xEE:C_u--2UGQhk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=Wn9zP9B_xEE:C_u--2UGQhk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/Wn9zP9B_xEE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-09/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-09</feedburner:origLink></item>
		<item>
		<title>The week in qooxdoo (2009-10-02)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/ubGF_yy6_Uo/the-week-in-qooxdoo-2009-10-02</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-02#comments</comments>
		<pubDate>Sun, 04 Oct 2009 21:35:28 +0000</pubDate>
		<dc:creator>Andreas Ecker</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=2363</guid>
		<description><![CDATA[Lets take a look back at another enjoyable week in qooxdoo:
Native Scroll Bars
Since qooxdoo 0.8 we render the scroll bars as pure qooxdoo widgets. This has the advantage that one has full control over the behavior and theming of scroll bars. Unfortunately, it is not possible to always replace the scroll bars with qooxdoo scroll [...]]]></description>
			<content:encoded><![CDATA[<p>Lets take a look back at another enjoyable week in qooxdoo:</p>
<h2>Native Scroll Bars</h2>
<p>Since qooxdoo 0.8 we render the scroll bars as pure qooxdoo widgets. This has the advantage that one has full control over the behavior and theming of scroll bars. Unfortunately, it is not possible to always replace the scroll bars with qooxdoo scroll bars. Especially the areas that are not fully under control of the layout engine still show the native scroll bars. Examples for that are HTML embed, IFrame and TextArea widgets. Since this mixed look in a more complex app can potentially irritate users we have now added an option to render all scroll bars as native scroll bars. There is a global setting <code>qx.nativeScrollBars</code> which determines the kind of scroll bars used throughout the application.</p>
<div id="attachment_2354" class="wp-caption aligncenter" style="width: 378px"><a href="http://news.qooxdoo.org/wp-content/uploads/2009/10/two_kinds_of_scrollbars.png"><img src="http://news.qooxdoo.org/wp-content/uploads/2009/10/two_kinds_of_scrollbars.png" alt="Both kinds of scroll bars" title="two_kinds_of_scrollbars" width="368" height="431" class="size-full wp-image-2354" /></a><p class="wp-caption-text">Both kinds of scroll bars</p></div>
<h2>Drag and Drop events now bubbling</h2>
<p>We only recently realized that drag and drop events in qooxdoo 0.8.x were not bubbling. This is different to the drag and drop events in qooxdoo 0.7 and the proposed <a href="http://www.whatwg.org/specs/web-apps/current-work/#dnd">drag and drop specification</a> in HTML5. Since there are several uses cases which require bubbling drag and drop events, we have now turned those events into bubbling events. Note that this fix changes behavior and can lead to problems with existing code if draggable or droppable widgets are nested. In these cases the old behavior can be restored by adding <code>stopPropagation()</code> calls to the end of drag and drop event handlers.</p>
<h2>Label API adjustments</h2>
<p>In order to further standardize the API, the methods <code>getContent()</code> and <code>setContent()</code>in <a href="http://demo.qooxdoo.org/current/apiviewer/#qx.bom.Label">qx.bom.Label</a> and <a href="http://demo.qooxdoo.org/current/apiviewer/#qx.html.Label">qx.html.Label</a> have been deprecated in favor of <code>getValue()</code> and <code>setValue()</code>, bringing them in line with <a href="http://demo.qooxdoo.org/current/apiviewer/#qx.ui.basic.Label">qx.ui.basic.Label</a>. Unfortunately, this inconsistency hasn't been noticed earlier, but we felt it needed to be corrected asap to account for all the cleanups in this area made towards 0.8.3.</p>
<h2>SVN trunk cleanup</h2>
<p>Talking of 0.8.3: in that release we had quite a number of API changes as mentioned, and to support the transition of existing code had included a lot of run-time deprecations. While working towards the 1.0 release now, it was time to get rid of all deprecated code and also the legacy sources that were kept in the framework from 0.7.x. It was quite some work but finally and successfully, we got the SVN trunk <a href='http://bugzilla.qooxdoo.org/show_bug.cgi?id=1976#c6' target='_blank'>almost deprecation free</a>, including all the qooxdoo apps and components. The SVN revision before removals is r20219 just in case you'd need it. If you encounter any problems, please do not hesitate to file bug reports, thanks.</p>
<h2>Bugs</h2>
<p>For a complete list of bugs fixed during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2009-09-26&amp;chfieldto=2009-10-03&amp;chfield=resolution">bugzilla query</a>.</p>
<h2>Tartan Blueprint</h2>
<p>Dan Hummon from <a href="http://www.tartansolutions.com">Tartan Solutions</a> has added the <a href="https://qooxdoo-contrib.svn.sourceforge.net/svnroot/qooxdoo-contrib/trunk/qooxdoo-contrib/TartanBlueprint/">Tartan Blueprint</a> contrib. Blueprint is about form serialization to JSON. In his announcement, Dan writes</p>
<p><em>"This is primarily a serialization engine for the creation of forms. We have<br />
created a JSON format that describes forms, scripts and functions on<br />
objects. This is a similar approach to some of the UIDeclaration or<br />
qxTransformer work. I'm hoping to get some feedback on our solution."</em></p>
<p>See <a href="http://www.nabble.com/New-qooxdoo-contrib%3A-Tartan-Blueprint-Serialization-and-WYSIWYG-Form-Designer-ts25622063.html">here</a> for the full announcement. Among other things, Dan has created a specialized <a href="http://sandbox.tartansolutions.com/playground/">Playground</a> application that let's you evaluate Blueprint JSON data immediately. The project's current home page is <a href="http://www.tartansolutions.com/doku.php/open/open">here</a>.</p>
<p>Not surprisingly, but impressive nevertheless, there is a <a href="http://sandbox.tartansolutions.com/designer/">designer</a> component that lets you create forms interactively, and which creates Blueprint JSON in the background. - Way to go, Dan!</p>
<h2>Outlook</h2>
<p>In next week's blog post we'll try to showcase some of the other contributions that have entered <a href="http://contrib.qooxdoo.org">qooxdoo-contrib</a> just recently or are currently being completed. It's great to see so many high-quality contributions for qooxdoo to appear. If you feel like contributing a project yourself, feel free to <a href="http://qooxdoo.org/contrib/join">do so</a>. Keep in mind that it doesn't need to be big, though, just useful for or "colorful" within the qooxdoo community.</p>
<p>That's it for the moment, see you around next week.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=ubGF_yy6_Uo:mzPe8yXQhuY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=ubGF_yy6_Uo:mzPe8yXQhuY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=ubGF_yy6_Uo:mzPe8yXQhuY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=ubGF_yy6_Uo:mzPe8yXQhuY:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=ubGF_yy6_Uo:mzPe8yXQhuY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=ubGF_yy6_Uo:mzPe8yXQhuY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=ubGF_yy6_Uo:mzPe8yXQhuY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=ubGF_yy6_Uo:mzPe8yXQhuY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=ubGF_yy6_Uo:mzPe8yXQhuY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=ubGF_yy6_Uo:mzPe8yXQhuY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=ubGF_yy6_Uo:mzPe8yXQhuY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/ubGF_yy6_Uo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-02/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-10-02</feedburner:origLink></item>
		<item>
		<title>The week in qooxdoo (2009-09-25)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/lgRQaQfhW4U/the-week-in-qooxdoo-2009-09-25</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-09-25#comments</comments>
		<pubDate>Sun, 27 Sep 2009 21:12:59 +0000</pubDate>
		<dc:creator>Andreas Ecker</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=2320</guid>
		<description><![CDATA[Welcome to another summary of activities that took place during the week:
The Ajax Experience
But first, here is some feedback from Fabian's participation at this year's TAE:
"Last week I (Fabian) represented qooxdoo at The Ajax Experience in Boston. On Sunday Dan Hummon, Derrell Lipman and me did a tiny qooxdoo user group meeting in a very [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome to another summary of activities that took place during the week:</p>
<h2>The Ajax Experience</h2>
<p>But first, here is some feedback from Fabian's participation at this year's TAE:</p>
<p><em>"Last week I (Fabian) represented qooxdoo at <a href="http://ajaxexperience.techtarget.com/">The Ajax Experience</a> in Boston. On Sunday Dan Hummon, Derrell Lipman and me did a tiny qooxdoo user group meeting in a very familiar atmosphere at Derrell's home. Thank you Derrell for the invitation, it is always exciting to meet and talk to qooxdoo users and co-developers in person.<br />
You can check out the slides from slideshare. I expect the recorded audio to be published on <a href="http://ajaxian.com/">ajaxian.com</a> later this year."</em></p>
<div style="width:425px;text-align:left" id="__ss_2017622"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/fjakobs/masterin-large-scale-java-script-applications" title="Mastering Large Scale Java Script Applications">Mastering Large Scale Java Script Applications</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=masterinlargescalejavascriptapplications-090918083625-phpapp02&rel=0&stripped_title=masterin-large-scale-java-script-applications" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=masterinlargescalejavascriptapplications-090918083625-phpapp02&rel=0&stripped_title=masterin-large-scale-java-script-applications" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"></div>
</div>
<h2>Commands</h2>
<p>The former commands' main feature was merely an abstraction of keyboard inputs in a central place. But we wanted to extend the feature set of the command to also address requirements that are found in a typical ui layer. Something that has also been brought up before by some qooxdoo users. The main idea was to add some common properties of command-using widgets to the command themselves and let the command configure the referencing widget. Therefore, we moved the original (low-level) command from <code>qx.event.Command</code> to <code>qx.bom.Shortcut</code> to make it more visible in the bom package. The new (ui-level) command, which includes the new properties as mentioned, can be found in <code>qx.ui.core.Command</code>. </p>
<p><del datetime="2009-09-28T09:48:19+00:00">Unfortunately, the <a href='http://demo.qooxdoo.org/devel/demobrowser/#ui~Command.html' target='_blank'>new demo</a>, which is to show you the benefits, is currently broken in the online snapshot of the devel version. Till that is fixed, you may want to check out the SVN trunk version, sorry for any inconvenience.</p>
<p></del>UPDATE: The <a href='http://demo.qooxdoo.org/devel/demobrowser/#ui~Command.html' target='_blank'>new demo</a>, which is to show you the benefits, is online.</p>
<h2>New test jobs</h2>
<p>Two new generator jobs have been introduced: <em>test-inline</em> and <em>test-native</em>. Unlike the regular <em>test</em> job, which creates a test application inheriting from <a href="http://demo.qooxdoo.org/current/apiviewer/#qx.application.Standalone">qx.application.Standalone</a>, these will generate test applications extending <a href="http://demo.qooxdoo.org/current/apiviewer/#qx.application.Inline">qx.application.Inline</a> and <a href="http://demo.qooxdoo.org/current/apiviewer/#qx.application.Native">qx.application.Native</a>, respectively. This allows developers working on Inline or Native applications to run their unit tests in the same kind of application. See the <a href="http://qooxdoo.org/documentation/0.8/frame_apps_testrunner">Test Runner wiki page</a> for details.</p>
<h2>Generator</h2>
<p>A small, but hopefully helpful <a href="http://qooxdoo.org/documentation/0.8/snippets#creating_an_apiviewer_that_covers_all_used_librariescontributions">snippet</a> has entered the wiki, about how to create a customized API viewer that includes the class documentation of additional qooxdoo libraries and contributions you might use in your application. The page about the <a href="http://qooxdoo.org/documentation/0.8/generator_default_jobs">default generator jobs</a> has been revamped, and now includes a section about so called <em>includer jobs</em>, jobs that are not directly runnable by the generator but can be used to customize other default jobs.</p>
<h2>Bugfixes</h2>
<p>Quite a number of bugs were fixed for the MenuBar, e.g. <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=2806" target="_blank">#2806</a>, <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=2813" target="_blank">#2813</a>, <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=2826" target="_blank">#2826</a>, <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=2827" target="_blank">#2827</a>. As usual for a complete list of bugs fixed during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2009-09-19&amp;chfieldto=2009-09-25&amp;chfield=resolution">bugzilla query</a>.</p>
<h2>Smart Table Model</h2>
<p>Dave Baggett has released his <a href="http://qooxdoo.org/contrib/project/smarttablemodel">Smart Table Model</a> contribution. In his announcement he writes:</p>
<p><em>"This should function as a drop-in replacement for the standard Simple model, but offers a bunch of new features that are especially useful for big and/or<br />
complex tables. It was inspired by Dan Hummon's <a href="http://demo.qooxdoo.org/current/apiviewer/#qx.ui.table.model.Filtered">Filtered table model</a>, but is<br />
a complete rewrite from the ground up. Migration to this model should<br />
address all of the filed issues with the existing Filtered table model. The<br />
filtering mechanism works completely differently, however, so if you use<br />
those capabilities you will need to change your code a bit."</em></p>
<p>See <a href="http://n2.nabble.com/Contrib-new-smart-table-model-tp3685667p3685667.html">here</a> for the full announcement.</p>
<h2>WebTech conference</h2>
<p>If you haven't heard about the <a href="http://webtechcon.de">WebTech</a> yet, a newly introduced German web conference, you should <a href="http://entwickler.com/konferenzen/planer/webtech09_zeitplaner.html">check it out</a>: it takes places on November 16 - 18, 2009 in Karlsruhe, were most of the core framework team at <a href="http://qooxdoo.org/about/developers#initiator_and_maintainer">1&1</a> is located. If you are interested in meeting the team (at least some of us will be around), either at the conference or for a decent after-conference beer and chat, just let us know.</p>
<p>That's it for today, see you around next time.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lgRQaQfhW4U:WbBRvxaFawU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lgRQaQfhW4U:WbBRvxaFawU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=lgRQaQfhW4U:WbBRvxaFawU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lgRQaQfhW4U:WbBRvxaFawU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lgRQaQfhW4U:WbBRvxaFawU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=lgRQaQfhW4U:WbBRvxaFawU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lgRQaQfhW4U:WbBRvxaFawU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=lgRQaQfhW4U:WbBRvxaFawU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lgRQaQfhW4U:WbBRvxaFawU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=lgRQaQfhW4U:WbBRvxaFawU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=lgRQaQfhW4U:WbBRvxaFawU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/lgRQaQfhW4U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-09-25/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-09-25</feedburner:origLink></item>
		<item>
		<title>The week in qooxdoo (2009-09-18)</title>
		<link>http://feedproxy.google.com/~r/qooxdoo/news/content/~3/fwjg8683Q5M/the-week-in-qooxdoo-2009-09-18</link>
		<comments>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-09-18#comments</comments>
		<pubDate>Fri, 18 Sep 2009 14:58:20 +0000</pubDate>
		<dc:creator>Thomas Herchenröder</dc:creator>
				<category><![CDATA[Activity Reports]]></category>

		<guid isPermaLink="false">http://news.qooxdoo.org/?p=2286</guid>
		<description><![CDATA[Welcome! It is one week after qooxdoo 0.8.3 saw the light of day, thanks for all the feedback we received so far. Keep it rolling! But, there is a road ahead and there is no standing still, so here we go...
Framework
Data binding
A key feature of the whole qooxdoo data binding layer is the data array, [...]]]></description>
			<content:encoded><![CDATA[<p>Welcome! It is one week after <a href="/qooxdoo-0-8-3-released">qooxdoo 0.8.3</a> saw the light of day, thanks for all the feedback we received so far. Keep it rolling! But, there is a road ahead and there is no standing still, so here we go...</p>
<h2>Framework</h2>
<h3>Data binding</h3>
<p>A key feature of the whole qooxdoo data binding layer is the <em><a href="http://demo.qooxdoo.org/devel/apiviewer/#qx.data.Array">data array</a></em>, an array which fires events on every change. This is so important, because the binding needs to know every change to get all the data synchronized. We improved the array further more and fixed some minor issues. Additionally we experimented a bit with <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Creating_New_Objects/Defining_Getters_and_Setters" target="_blank">defineSetter and defineGetter</a> for accessing the array items. We did get it running, but not very fast. And as long as defining the accessors is not available in all major browsers, we can't use it.</p>
<p>Another focus this week was to fix some issues in the list controller in combination with filtering. Due to the very complex binding structure, it was quite hard to get it working, but we finally managed it how it is supposed to be.</p>
<p>We introduced the modelSelection in the framework last week for all widgets handling a selection. This model selection was not really fitting into the binding landscape so we made <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=2778" target="_blank">some changes</a> to get it into a state where it is easy bindable.</p>
<h3>CSS color "<em>grey" </em>in Internet Explorer</h3>
<p>The bug report <a href="http://bugzilla.qooxdoo.org/show_bug.cgi?id=2766" target="_blank">#2766</a> shows that the British English spelling of the color name <em>"grey"</em>,  which is a valid spelling for our current property system, makes problems in Internet Explorer. But what happens if the British English spelling is used?</p>
<p>If the value is set to the DOM element like</p>
<pre>element.style.cssText = "background-Color: grey;";</pre>
<p>IE6 and IE7 ignore the value and the background color isn't set on the DOM element. Only IE8 shows the background color. Why? Because the British English spelling isn't supported in IE6 and IE7, only the new IE8 supports both spelling forms.</p>
<p>But if the color is set like this</p>
<pre>element.style.backgroundColor = "grey";</pre>
<p>IE6 and IE7 stop with a script error: <em>"Invalid property value"</em>. This stops the script execution which isn't really nice. Therefore, we decided to allow only the <em>gray (American English) </em>spelling, which is supported by all browsers.</p>
<h3>Bugs</h3>
<p>For a complete list of bugs fixed during the last working week, use this <a href="http://bugzilla.qooxdoo.org/buglist.cgi?query_format=advanced&amp;resolution=FIXED&amp;chfieldfrom=2009-09-12&amp;chfieldto=2009-09-19&amp;chfield=resolution">bugzilla query</a>.</p>
<h3>Search in Demobrowser</h3>
<p>With every new feature, qooxdoo's <a href="http://demo.qooxdoo.org/devel/demobrowser/">Demobrowser</a> is getting more and more demos. Currently, we have more than 230 demos available in the app. With that huge amount of demos, it was about time to introduce a <a href="http://demo.qooxdoo.org/devel/demobrowser/" target="_blank">search</a> for the demos.</p>
<h2>Tooling</h2>
<h3>Internationalization Data</h3>
<p>A new experimental feature was added to the generator, to support forking out of <a href="http://qooxdoo.org/documentation/0.8/internationalization">internationalization (I18N) data</a> in a generated application. I18N data for any app, currently translation mappings and CLDR data (like the date format), are by default included in the loader/boot package of the application. For big projects, with a lot of supported locales and a lot of translatable strings, this part of the loader can become really large.</p>
<p>To allow a better handling of the I18N data, and to speed up loading of the initial application package in the browser, we have added a configuration option to fork out this data into separate files. See <a href="http://qooxdoo.org/documentation/0.8/generator_config_articles#packages_key">here</a> for more details.</p>
<h3>Complex Name Spaces</h3>
<p>Increasingly, people are using complex name spaces for their applications. They use things like <em>"org.myorg.webclient"</em> to follow a Java-like notation, or something like <em>"webclient.pro.util"</em> and <em>"webclient.pro.ui"</em> to partition a larger application under a common root. To that end, a <a href="http://qooxdoo.org/documentation/0.8/snippets/using_complex_namespaces">new snippet document</a> was added, which highlights some of the aspects of using complex name spaces in qooxdoo.</p>
<p>So much for today, see you around next time.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fwjg8683Q5M:mjZBOiG_cIQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fwjg8683Q5M:mjZBOiG_cIQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=fwjg8683Q5M:mjZBOiG_cIQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fwjg8683Q5M:mjZBOiG_cIQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fwjg8683Q5M:mjZBOiG_cIQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=fwjg8683Q5M:mjZBOiG_cIQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fwjg8683Q5M:mjZBOiG_cIQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=fwjg8683Q5M:mjZBOiG_cIQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fwjg8683Q5M:mjZBOiG_cIQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?i=fwjg8683Q5M:mjZBOiG_cIQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/qooxdoo/news/content?a=fwjg8683Q5M:mjZBOiG_cIQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/qooxdoo/news/content?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/qooxdoo/news/content/~4/fwjg8683Q5M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-09-18/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://news.qooxdoo.org/the-week-in-qooxdoo-2009-09-18</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 1.817 seconds -->
