<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	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/"
	>

<channel>
	<title>Making Waves Labs &#187; Torbjørn</title>
	<atom:link href="http://labs.makingwaves.com/author/testesen/feed/" rel="self" type="application/rss+xml" />
	<link>http://labs.makingwaves.com</link>
	<description></description>
	<lastBuildDate>Fri, 03 Sep 2010 13:27:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Sizing text AND elements relatively using CSS</title>
		<link>http://labs.makingwaves.com/2010/03/02/sizing-text-and-elements-relatively-using-css/</link>
		<comments>http://labs.makingwaves.com/2010/03/02/sizing-text-and-elements-relatively-using-css/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 14:20:05 +0000</pubDate>
		<dc:creator>Torbjørn</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=796</guid>
		<description><![CDATA[Alternative title: What I&#8217;ve been doing is wrong Different browsers have different &#8220;default&#8221; styles, which makes it a challenge to even make text appear the same way across all of them. When you want to accomplish this, there is a well known CSS trick that I&#8217;ve been using for a long time: html { font-size: [...]]]></description>
			<content:encoded><![CDATA[<p>Alternative title: <strong>What I&#8217;ve been doing is wrong</strong></p>
<p>Different browsers have different &#8220;default&#8221; styles, which makes it a challenge to even make text appear the same way across all of them. When you want to accomplish this, there is a well known CSS trick that I&#8217;ve been using for a long time:<span id="more-796"></span></p>
<pre>html {
    font-size: 100%;
}

body {
    font-size: 62.5%;
}
</pre>
<p>These rules will make 1em = 10px; font-size: 1.2em is the same as 12px. The method is particularly useful on sites where you want to let the user scale all content using links on the page. The links will adjust the base size on the body element which is inherited to all child elements.</p>
<p>This works for font scaling, but as I discovered, it is inaccurate when setting widths and heights of elements. 96em is NOT exactly 960px. I set out on the interwebs to research and found another method in a <a href="http://www.clagnut.com/blog/348/#c1204">comment</a> to an article about font sizes and ems:</p>
<pre>html {
    font-size: 1.25em;
}

body {
    font-size: 50%;
}
</pre>
<p>Apparently, IE doesn&#8217;t allow for percentages with decimals, so 62.5% is floored to 62%. This isn&#8217;t a big deal for text, but when using it for dimensioning other elements, it&#8217;s a deal breaker.</p>
<p>The method above will set 1em = 20px for the html element and then halve this by setting the font size to 50% on the body.</p>
<p>This way is new to me, but after testing it in all major browsers (IE6 included), it seems to work. As you may understand, I&#8217;m not really sure about this, so I&#8217;m reaching out for you here. Do you have experience using any of these methods to set font and element sizes? Or do you have other methods? Will the latter method always work and in all browsers? Please use the comments if you have any input. <img src='http://labs.makingwaves.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2010/03/02/sizing-text-and-elements-relatively-using-css/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Easily format your code in Flex Builder</title>
		<link>http://labs.makingwaves.com/2009/12/11/easily-format-your-code-in-flex-builder/</link>
		<comments>http://labs.makingwaves.com/2009/12/11/easily-format-your-code-in-flex-builder/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 14:04:58 +0000</pubDate>
		<dc:creator>Torbjørn</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=763</guid>
		<description><![CDATA[A quick tip if you&#8217;re using Flex Builder and are missing a quick way to format your code. Flex Formatter is a free open source plugin that adds some very useful buttons to your IDE. These will make ASDoc, format, and code rearrangement just one click away. Get the plugin from SourceForge or read Grant [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-765" title="flex-icon" src="http://labs.makingwaves.com/wp-content/uploads/2009/12/flex-icon1.png" alt="flex-icon" width="150" height="144" />A quick tip if you&#8217;re using Flex Builder and are missing a quick way to format your code. Flex Formatter is a free open source plugin that adds some very useful buttons to your IDE. These will make ASDoc, format, and code rearrangement just one click away.</p>
<p>Get the plugin from <a href="http://code.google.com/p/flexformatter/"></a><a href="http://sourceforge.net/projects/flexformatter/">SourceForge</a> or read <a href="http://www.gskinner.com/blog/archives/2009/12/indispensable_p.html">Grant Skinner&#8217;s installation guide</a> to install it from within Flex Builder.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2009/12/11/easily-format-your-code-in-flex-builder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use geolocation to get your current address from Google maps</title>
		<link>http://labs.makingwaves.com/2009/12/02/use-geolocation-to-get-your-current-address-from-google-maps/</link>
		<comments>http://labs.makingwaves.com/2009/12/02/use-geolocation-to-get-your-current-address-from-google-maps/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 13:51:14 +0000</pubDate>
		<dc:creator>Torbjørn</dc:creator>
				<category><![CDATA[Front-end]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=751</guid>
		<description><![CDATA[Firefox 3.5 as well as many smartphone browsers like Mobile Safari include a JavaScript API to geo-enable your web applications. Using it is pretty simple, and it gives us the ability create a completely new range of services utilizing the user&#8217;s current position. We can use it to position yourself on a graphical map or [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-753" title="geo" src="http://labs.makingwaves.com/wp-content/uploads/2009/12/geo.jpg" alt="geo" width="502" height="214" /></p>
<p>Firefox 3.5 as well as many smartphone browsers like Mobile Safari include a JavaScript API to geo-enable your web applications. Using it is pretty simple, and it gives us the ability create a completely new range of services utilizing the user&#8217;s current position. We can use it to position yourself on a graphical map or use yr.no&#8217;s weather API to get the weather right where you are.</p>
<p><span id="more-751"></span></p>
<p>In the following example, I will try to determine the user&#8217;s address by using Google Maps&#8217; new Reverse Geocoding API. I haven&#8217;t included all my code in this post, but I will share upon request.</p>
<p><a href="http://makingria.com/demo/geo/" target="_blank"><strong>See the demo here</strong></a></p>
<p>Since there&#8217;s still just a few browsers supporting geolocation, we need to check the current browser for the navigator.geolocation object. If it exists, we&#8217;ll call its getCurrentPosition function to get the user&#8217;s latitude and longitude:</p>
<pre>if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(success, fail);
}</pre>
<p>This triggers Firefox&#8217; location notification bar (or the iPhone&#8217;s location dialog) which will ask you for permission to give your location to this web page. After you accept, devices with built-in GPS will give the browser access to these data while other devices will use local WiFi networks and IP address information to try and guess your location.</p>
<p>These values can now be used to retrieve your address from Google Maps:</p>
<pre>http://maps.google.com/maps/geo?q=&lt;lat&gt;,&lt;lon&gt;&amp;output=
   &lt;xml_kml_csv_or_json&gt;&amp;sensor=&lt;true_or_false&gt;&amp;key=&lt;api_key&gt;</pre>
<p>We can either get our results through a direct JavaScript request using JSON or by getting an AJAX result using a server-side script. In my case I&#8217;m using the AJAX approach to let a PHP script retrieve, parse and format the data:</p>
<pre>function success(position) {
    $("#location").load("location.ajax.php?lat=" +
        position.coords.latitude + "&amp;lon=" +
        position.coords.longitude);
}</pre>
<p>Addresses from Google Maps&#8217; Reverse Geocoding API are ordered from best to least matches and categorized by accuracy. In this example, I&#8217;m just printing them all out.</p>
<p><a href="http://makingria.com/demo/geo/" target="_blank"><strong>See the demo here</strong></a></p>
<p><strong><a rel="attachment wp-att-786" href="http://labs.makingwaves.com/2009/12/02/use-geolocation-to-get-your-current-address-from-google-maps/geo-2/">Download geolocation demo source code</a></strong></p>
<h3>References</h3>
<ul>
<li><a href="http://www.mozilla.com/en-US/firefox/geolocation/">Mozilla: Location-Aware Browsing</a></li>
<li><a href="http://hacks.mozilla.org/2009/06/geolocation/">hacks.mozilla.org: geolocation in Firefox 3.5</a></li>
<li><a href="http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding">Google Maps API Services: Reverse Geocoding</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2009/12/02/use-geolocation-to-get-your-current-address-from-google-maps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New Physics Engine in Flash CS5</title>
		<link>http://labs.makingwaves.com/2009/11/04/flash-cs5-physics/</link>
		<comments>http://labs.makingwaves.com/2009/11/04/flash-cs5-physics/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 10:18:23 +0000</pubDate>
		<dc:creator>Torbjørn</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Front-end]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=697</guid>
		<description><![CDATA[Adobe is steadily letting out more details on new features in Flash CS5. In addition to the ability to publish native iPhone applications from Flash, Flash CS5 will also include a new physics engine. In the video above, you can see how they use a single panel to let designers easily add weight and other [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="502" height="406" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/x9y-KIu69dc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=ru&amp;feature=player_embedded&amp;fs=1&amp;start=225" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="502" height="406" src="http://www.youtube.com/v/x9y-KIu69dc&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=ru&amp;feature=player_embedded&amp;fs=1&amp;start=225" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
Adobe is steadily letting out more details on <a href="http://cs5.org/?p=408">new features in Flash CS5</a>. In addition to the ability to publish <a href="http://labs.makingwaves.com/2009/10/20/flash-on-all-mobile-devices/">native iPhone applications from Flash</a>, Flash CS5 will also include a new physics engine. In the video above, you can see how they use a single panel to let designers easily add weight and other properties to their objects. Properties from this panel will be used to &#8220;pre-record&#8221; the movements on the timeline before the movie is published.</p>
<p>I&#8217;m eagerly awaiting to see if the ActionScript part of this engine will provide a full-feautured set of physics tools, or if we still have to use 3rd party tools like <a href="http://box2dflash.sourceforge.net/">Box2DFlashAS3</a> (which is great btw.) for advanced runtime physics.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2009/11/04/flash-cs5-physics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hey, we&#8217;re using CSS3!</title>
		<link>http://labs.makingwaves.com/2009/10/19/css3/</link>
		<comments>http://labs.makingwaves.com/2009/10/19/css3/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 08:03:03 +0000</pubDate>
		<dc:creator>Torbjørn</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Front-end]]></category>

		<guid isPermaLink="false">http://labs.makingwaves.com/?p=526</guid>
		<description><![CDATA[This blog is not just a place for new content. It is also our test bench for presentation. CSS3 is currently a buzz word around front-end developers, and it provides new possibilities to make the path from design to website much more straight-forward and joyful. Even if it&#8217;s still in its early stages, all web [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_578" class="wp-caption alignnone" style="width: 512px"><img class="size-full wp-image-578" title="Screenshot of Making Waves Labs using Safari 4" src="http://labs.makingwaves.com/wp-content/uploads/2009/10/css3labs.png" alt="Screenshot of Making Waves Labs using Safari 4" width="502" height="250" /><p class="wp-caption-text">Screenshot of Making Waves Labs using Safari 4</p></div>
<p>This blog is not just a place for new content. It is also our test bench for presentation. CSS3 is currently a buzz word around front-end developers, and it provides new possibilities to make the path from design to website much more straight-forward and joyful. Even if it&#8217;s still in its early stages, all web browser makers (all except Microsoft) have teamed up to make this a future standard. Opera, Firefox, Safari and Chrome already support a great number of the properties/selectors, and because not everybody will see all features today, CSS3 will degrade gracefully for users with less-than-optimal software.</p>
<p><span id="more-526"></span></p>
<p>We have started off here on Making Waves Labs taking advantage of some of CSS3&#8242;s visual modules; borders, backgrounds, text effects and font-face. Since most of the CSS3 properties are standards in development, the browser makers support them with browser-specific prefixes. Safari and Chrome use -webkit-, Firefox is using -moz-, while Opera has -o-. I am using -webkit- in my examples below.</p>
<h3>Borders</h3>
<p>Making rounded corners and/or drop shadows is a tedious job. It is increasing the desirability of your website significantly, but it&#8217;s time-consuming to make graphics and onion-nested html markup to make it possible. With CSS3 it&#8217;s just a couple of lines of text in the CSS:</p>
<pre>-webkit-border-radius: 10px;
-webkit-box-shadow: 0 5px 10px #ccc;</pre>
<p>Drop-shadows have no alpha property in CSS3, so if you want to make natural looking shadows, you will have to bring the shadow color closer to your background color.</p>
<p>Read on about <a href="http://www.css3.info/preview/rounded-border/">border-radius</a> and <a href="http://www.css3.info/preview/box-shadow/">box-shadow</a>.</p>
<h3>Backgrounds</h3>
<p>Gradient backgrounds are also time-consuming, and sometimes even impossible using previous technology. With CSS3, you can add linear or radial gradients like this:</p>
<p>Gradient backgrounds are currently only supported by Safari 4 and Chrome, but you can add an additional fall-back color for other browsers:</p>
<pre>background: #01a6de; /* fallback */
background: -webkit-gradient(linear, left top, left bottom,
            from(#01a6de), to(#1d7fb0));</pre>
<p>Read on about <a href="http://webkit.org/blog/175/introducing-css-gradients/">CSS gradients</a>.</p>
<h3>Text effects</h3>
<p>You can also add drop-shadows to text. By using a color lighter than your background without blur, you can even emboss your text in the page:</p>
<pre>text-shadow: 0 1px 0 #fff;</pre>
<p>Read on about <a href="http://www.css3.info/preview/text-shadow/">text-shadow</a>.</p>
<h3>Font-face</h3>
<p>The @font-face selector makes the browser render custom fonts natively, regardless if the user has them installed to their OS or not. Be careful though. The font files are located on your server as they are, and not all fonts are licensed for this kind of use. Good sources for free fonts for web are <a href="http://webfonts.info/wiki/index.php?title=Fonts_available_for_%40font-face_embedding">webfonts.info</a> and <a href="http://www.fontsquirrel.com/">Font Squirrel</a>.</p>
<p>@font-face is currently what I find hardest to use, and for two main reasons. Firstly the number of glyphs in the open available fonts can be very limited, and often you don&#8217;t know which letters are included without having to test them yourself. The English alphabet is always there, but if you want to use local letters, you may struggle to find a font that both fits your design and writes well. The second reason is that most of these fonts aren&#8217;t optimized for screen presentation and different browsers render the fonts differently. Even if your OS render text with anti-aliasing, custom fonts may come out blocky and ugly.</p>
<p>Read on about <a href="http://www.css3.info/preview/web-fonts-with-font-face/">@font-face</a>.</p>
<p>This is just scraping the surface of what CSS3 is, and can be. We will continue testing it out and hopefully present the results here. For more updates and information on CSS3, <a href="http://www.css3.info/">css3.info</a> is a great source.</p>
<h3>UPDATE  Oct 22, 2009</h3>
<p>Deep Blue Sky has compiled a summary of <a href="http://www.deepbluesky.com/blog/-/browser-support-for-css3-and-html5_72/">CSS3/HTML5 support in the current browser market</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2009/10/19/css3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Adwords don&#8217;t like Flash&#8217;s Math.random()</title>
		<link>http://labs.makingwaves.com/2009/09/16/making-flash-ads-for-google-adwords/</link>
		<comments>http://labs.makingwaves.com/2009/09/16/making-flash-ads-for-google-adwords/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 14:54:09 +0000</pubDate>
		<dc:creator>Torbjørn</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Front-end]]></category>

		<guid isPermaLink="false">http://www.makingria.com/?p=406</guid>
		<description><![CDATA[After creating Flash ads for Google AdWords, I think I have stumbled upon some tips that will save other developers from a lot of debugging. Browsing Google&#8217;s AdWords documentation, I found these basic requirements for Flash ads: Flash ads must be 50K or smaller in size and utilize Flash versions 4 &#8211; 8. All Flash [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-410" title="Google AdWords" src="http://labs.makingwaves.com/wp-content/uploads/2009/09/gaw.gif" alt="gaw" width="204" height="40" />After creating Flash ads for Google AdWords, I think I have stumbled upon some tips that will save other developers from a lot of debugging. Browsing Google&#8217;s AdWords documentation, I found <a href="http://adwords.google.com/support/aw/bin/answer.py?hl=en&amp;answer=26938">these basic requirements</a> for Flash ads:</p>
<blockquote><p>Flash ads must be 50K or smaller in size and utilize Flash versions 4 &#8211; 8. All Flash ads should support the clickTAG variable.</p></blockquote>
<p>Even if my ads met these requirements, they would not get accepted by the upload tool. The error message I got was <em>&#8220;An error occurred. Please try again later&#8221;</em>. Thank you. Very helpful!</p>
<p>I started eliminating code, and finally after removing all references to <a href="http://code.google.com/p/tweener/">Tweener</a>, it worked! After some more searching, I found another page called <a href="http://adwords.google.com/support/aw/bin/static.py?page=guidelines.cs&amp;topic=16863&amp;subtopic=16870&amp;answer=50417">Follow our requirements for Flash image ads</a>. It seems the Tweener package includes calls to Math.random(), and by Google&#8217;s <em>second</em> requirements page, random numbers are strictly forbidden.</p>
<p><strong>The lesson is: Even if you have found <em>some</em> requirements, it doesn&#8217;t mean you have found them <em>all</em>. And please stay away from Math.random(). <img src='http://labs.makingwaves.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2009/09/16/making-flash-ads-for-google-adwords/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flex &amp; Accessibility</title>
		<link>http://labs.makingwaves.com/2008/01/16/flex-accessibility/</link>
		<comments>http://labs.makingwaves.com/2008/01/16/flex-accessibility/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 14:04:20 +0000</pubDate>
		<dc:creator>Torbjørn</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Front-end]]></category>

		<guid isPermaLink="false">http://www.makingria.com/?p=97</guid>
		<description><![CDATA[During the last days I&#8217;ve been testing accessibility issues in Flex. Screen readers (SR) in particular. The most common SRs in Norway are JAWS, SuperNova, WindowEyes og Blindows. Out of these only JAWS and WindowEyes have Flash Player support. Most of my testing has been with JAWS, which is the most common SR in Norway [...]]]></description>
			<content:encoded><![CDATA[<p>During the last days I&#8217;ve been testing accessibility issues in Flex. Screen readers (SR) in particular. The most common SRs in Norway are JAWS, SuperNova, WindowEyes og Blindows. Out of these only JAWS and WindowEyes have Flash Player support. Most of my testing has been with JAWS, which is the most common SR in Norway and the SR with best Flex compability.</p>
<p>Following is a compilation of procedures, findings and experiences from my tests. No conclusions  are reached yet. I&#8217;ll leave those to a later post.</p>
<p><span id="more-97"></span></p>
<h3>Setup</h3>
<ol>
<li>Download and install <a href="http://www.freedomscientific.com/fs_downloads/morejaws.asp">JAWS 7.0</a>.<br />
JAWS is currently available in version 9.0, but the JAWS scripts for Flex are only supporting version 6.0 and 7.0.</li>
<li>Download and install <a href="http://www.adobe.com/macromedia/accessibility/features/flex/jaws.html">JAWS scripts for Flex</a> (1.5 or 2.0)</li>
<li>Enable accessibility in your Flex compiler:<br />
Edit the flex-config.xml file so that the &lt;accessible&gt; attribute is set to true:<code><br />
&lt;mxml-compiler&gt;<br />
...<br />
&lt;accessible&gt;true&lt;/accessible&gt;<br />
...<br />
&lt;/mxml-compiler&gt;<br />
</code>This file is usually located in:<br />
C:\Program Files\Adobe\Flex Builder 2\Flex SDK 2\frameworks\flex-config.xml</li>
</ol>
<h3>Coding</h3>
<p>Flex-components have built-in support for SRs, but the help text is often not very descriptive, and some components (eg. checkboxes and radiobuttons) aren&#8217;t read at all. Therefore it&#8217;s more safe to prepare every interactive component with a descriptive name for the SR to read.</p>
<p>Following is a function to ease the addition of accessibility text to components:</p>
<p><code>private function addAccessibility(comp:UIComponent, name:String):void {<br />
comp.accessibilityProperties = new AccessibilityProperties();<br />
comp.accessibilityProperties.name = name;<br />
comp.accessibilityProperties.forceSimple = true;<br />
comp.accessibilityProperties.noAutoLabeling = true;<br />
}</code></p>
<p>To make forms best suited for accessibility, use <code>mx:Form</code> for the entire form and <code>mx:FormItem</code>s for every input component:</p>
<p><code>&lt;mx:Form&gt;<br />
&lt;mx:FormItem label="First Name"&gt;<br />
&lt;mx:TextInput id="txtFirstname" /&gt;<br />
&lt;/mx:FormItem&gt;<br />
...<br />
&lt;/mx:Form&gt;</code></p>
<h3>Usage</h3>
<p>Compile your movie and display it in IE with JAWS running in the background. Even if JAWS supports both IE 6.0, IE 7.0, Firefox 2.0 and Netscape® Communicator 4.5, JAWS+Flex/Flash only works in IE. The accessibility technology in Flash Player is built upon Microsoft Active Accessibility (MSAA) which is only available to JAWS from IE.</p>
<p>When the flash movie has loaded, JAWS will start reading through all of the content from start to end. Activate Forms Mode in JAWS by hitting NUM PAD SLASH or ENTER. You can now press TAB to select a button or an input field, JAWS will first try to read the accessibility text associated to the current element. If no such text exists, only the default text is read, describing the label and the type of element.</p>
<h3>Issues</h3>
<ul>
<li>Even if Flex&#8217;s components are made accessible, there&#8217;s a lot of  <a href="http://www.adobe.com/macromedia/accessibility/features/flex/components.html">known issues related to SRs</a>. These problems comes from the SR implementation, not Flex.</li>
<li>SRs don&#8217;t know when content in your movie has changed (new popups, windows, pages, etc), and there&#8217;s no way to tell them.</li>
<li>Bug: You can&#8217;t use form headings <code>&lt;mx:FormHeading label="x"/&gt;</code> for forms. These will erroneously get read as the label to the following input component.</li>
<li>Like stated before, accessibility in Flex is limited to some very strict conditions:
<ul>
<li>OS: MS Windows</li>
<li>Browser: Internet Explorer</li>
<li>Sreen Reader: JAWS version 7.0</li>
</ul>
</li>
</ul>
<h3>Further Reading</h3>
<p><a href="http://www.adobe.com/macromedia/accessibility/features/flex/">Adobe: Flex Accessibility</a><br />
<a href="http://www.webaim.org/techniques/flash/">WebAIM: Creating Accessible Macromedia Flash Content</a></p>
<p>Example applications from Adobe:<br />
<a href="http://flexapps.macromedia.com/flex15/blogreader/blogreader.mxml?accessible=true&amp;versionChecked=true">Blog Reader</a><br />
<a href="http://flexapps.macromedia.com/flex15/explorer/explorer.mxml?accessible=true&amp;versionChecked=true">Explorer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.makingwaves.com/2008/01/16/flex-accessibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
