<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-3919727606984245735</id><updated>2010-03-09T22:08:49.962-07:00</updated><title type='text'>Flex Developers &amp; Development | flexdevelopers.com</title><subtitle type='html'></subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.flexdevelopers.com/atom.xml'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-173231912097919747</id><published>2010-02-22T21:27:00.011-07:00</published><updated>2010-02-22T22:07:56.391-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wade Vogt'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex Examples'/><title type='text'>Flex Examples - Binding a Value to a ComboBox</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;When working with&amp;nbsp;the ComboBox component, I have found that I pretty much always want&amp;nbsp;to bind a value to the ComboBox so that it automatically selects a&amp;nbsp;corresponding record in the dataProvider. The most straight forward&amp;nbsp;example of this is with a ComboBox on an address form to select a&amp;nbsp;state. If you load an address into the form, the ComboBox should&amp;nbsp;automatically select the state associated to that address.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;To accomplish this I&amp;nbsp;followed a &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.forta.com/blog/index.cfm/2006/11/22/Flex-ComboBox-With-selectedValue-Support" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;post by Ben Forta&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;to extend the ComboBox, and have made some&amp;nbsp;changes over the years to fine tune it. The principle idea of the&amp;nbsp;approach is to add a selectedValue property to the ComboBox and then&amp;nbsp;loop through the dataProvider to look for a match whenever the&amp;nbsp;selectedValue or the dataProvider is changed. I added dataProperty&amp;nbsp;for specifying the property in the dataProvider that the value should&amp;nbsp;map to, and an additional override to the collectionChangeHandler to&amp;nbsp;catch any updates to the dataProvider.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I settled on naming&amp;nbsp;the component VBComboBox, with VB standing for Value Bound. I have it&amp;nbsp;implemented as an actionscript class in my projects, but wrapped in&amp;nbsp;mxml for this blog post to avoid having to specify a package name.&amp;nbsp;I've included an example of the component at the bottom of this post&amp;nbsp;with viewable source, so I'll just walk though some of the&amp;nbsp;highlights.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;All the “magic”&amp;nbsp;happens in the commitProperties method. This method is executed&amp;nbsp;anytime the properties of the class are invalidated. The setter for&amp;nbsp;the dataProvider in the ComboBox calls invaidateProperties() as does&amp;nbsp;the setter for the selectedValue in VBComboBox. Each setter also sets&amp;nbsp;a flag that the value has changed. The following is a rough breakdown&amp;nbsp;of the functionality that was added.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The first if&amp;nbsp;statement in the commitProperties method checks these flags to see&amp;nbsp;if the dataProvider or selectedValue have changed.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;If a change is&amp;nbsp;detected, then loop through all the objects in the dataProvider.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The if&amp;nbsp;statement in the loop checks the dataProperty (defaulted to “data”)&amp;nbsp;of the current object against the selectedValue. If they match the&amp;nbsp;idx var is set with the current position and the loop is broken.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;The&amp;nbsp;selectedIndex is set to the position that was found or -1. Setting&amp;nbsp;it to -1 if no match is found will cause the prompt value assigned&amp;nbsp;to the ComboBox to be displayed.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="background: #e6e6e6; margin-bottom: 0in;"&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tbody&gt;&lt;tr&gt;   &lt;td align="left" nowrap="nowrap" valign="top"&gt;&lt;code&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;override&amp;nbsp;protected&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: #339966;"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;commitProperties&lt;/span&gt;&lt;span style="color: black;"&gt;()&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;super&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;.commitProperties&lt;/span&gt;&lt;span style="color: black;"&gt;()&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #009900;"&gt;//If&amp;nbsp;the&amp;nbsp;selectedValue&amp;nbsp;and&amp;nbsp;dataProvider&amp;nbsp;are&amp;nbsp;set,&amp;nbsp;find&amp;nbsp;the&amp;nbsp;selectedIndex&amp;nbsp;of&amp;nbsp;the&amp;nbsp;value.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;((&lt;/span&gt;&lt;span style="color: black;"&gt;selectedValueChanged&amp;nbsp;==&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;true&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;amp;&amp;amp;&amp;nbsp;dataProvider&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;||&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;dataProviderChanged&amp;nbsp;==&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;true&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;amp;&amp;amp;&amp;nbsp;selectedValue&amp;nbsp;!=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;undefined&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;dataProviderChanged=&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;false&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;selectedValueChanged=&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;false&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #6699cc;"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;idx:int=-&lt;/span&gt;&lt;span style="color: black;"&gt;1&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #009900;"&gt;//Loop&amp;nbsp;through&amp;nbsp;data&amp;nbsp;provider&amp;nbsp;until&amp;nbsp;a&amp;nbsp;record&amp;nbsp;with&amp;nbsp;the&amp;nbsp;value&amp;nbsp;is&amp;nbsp;found.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: #6699cc;"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;i:int=&lt;/span&gt;&lt;span style="color: black;"&gt;0&lt;/span&gt;&lt;span style="color: black;"&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;dataProvider.length;&amp;nbsp;i++&lt;/span&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;.dataProvider&lt;/span&gt;&lt;span style="color: black;"&gt;[&lt;/span&gt;&lt;span style="color: black;"&gt;i&lt;/span&gt;&lt;span style="color: black;"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;!=&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;null&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;.dataProvider&lt;/span&gt;&lt;span style="color: black;"&gt;[&lt;/span&gt;&lt;span style="color: black;"&gt;i&lt;/span&gt;&lt;span style="color: black;"&gt;]&lt;/span&gt;&lt;span style="color: black;"&gt;.hasOwnProperty&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;dataProperty&lt;/span&gt;&lt;span style="color: black;"&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;.dataProvider&lt;/span&gt;&lt;span style="color: black;"&gt;[&lt;/span&gt;&lt;span style="color: black;"&gt;i&lt;/span&gt;&lt;span style="color: black;"&gt;][&lt;/span&gt;&lt;span style="color: black;"&gt;dataProperty&lt;/span&gt;&lt;span style="color: black;"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;==&amp;nbsp;selectedValue&lt;/span&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;idx=i;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;break&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #009900;"&gt;//Set&amp;nbsp;the&amp;nbsp;selectedIndex&amp;nbsp;with&amp;nbsp;the&amp;nbsp;index&amp;nbsp;found&amp;nbsp;or&amp;nbsp;-1&amp;nbsp;if&amp;nbsp;not&amp;nbsp;found.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;.selectedIndex=idx;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div align="LEFT" style="margin-bottom: 0in;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;There is also an override of the collectionChangeHandler to catch changes to the dataProvider that happen outside of the setter. This can happen records are added, removed, or if the source &amp;nbsp;of an ArrayCollection is reset for example. In this case, the dataProviderChanged flag is set to true, and the properties are invalidated to re-check the selectedValue against the dataProvider.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background: #e6e6e6; margin-bottom: 0in;"&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tbody&gt;&lt;tr&gt;   &lt;td align="left" nowrap="nowrap" valign="top"&gt;&lt;code&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;override&amp;nbsp;protected&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: #339966;"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;collectionChangeHandler&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;event:Event&lt;/span&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;span style="color: black;"&gt;:&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;super&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;.collectionChangeHandler&lt;/span&gt;&lt;span style="color: black;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;event&lt;/span&gt;&lt;span style="color: black;"&gt;)&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;dataProviderChanged=&lt;/span&gt;&lt;span style="color: #0033ff;"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black;"&gt;invalidateProperties&lt;/span&gt;&lt;span style="color: black;"&gt;()&lt;/span&gt;&lt;span style="color: black;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;}&lt;/span&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;To view the entire source, right click on the example and select “View Source”.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="380" src="http://blog.flexdevelopers.com/swfs/20100219/" style="overflow: hidden;" width="450"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-173231912097919747?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/173231912097919747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=173231912097919747' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/173231912097919747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/173231912097919747'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2010/02/flex-examples-binding-value-to-combobox.html' title='Flex Examples - Binding a Value to a ComboBox'/><author><name>Wade Vogt</name><uri>http://www.blogger.com/profile/17159933469273495755</uri><email>wade.vogt@gmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08429283573158500143'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-4374055027470997900</id><published>2010-01-28T13:09:00.007-07:00</published><updated>2010-02-22T21:53:59.752-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Basics - Local Shared Object</title><content type='html'>From Wikipedia, a browser cookie is a "small piece of text stored on a user's computer by a web browser. A cookie consists of one or more name-value pairs containing bits of information".&lt;br /&gt;&lt;br /&gt;A web application uses cookies for session management, personalization and tracking. Most browsers restrict the size of a cookie to 4 kb.&lt;br /&gt;&lt;br /&gt;In a Flex application, storing data on a user's computer for later use is accomplished using Local Shared Objects rather than cookies. A Local Shared Object can store up to 100 kb of data without asking permission of the user. Unlike cookies that are capable of storing only text values, Local Shared Objects can store many data types including Number, String, Boolean, XML, Date, Array &amp; Object. Instances of a custom class can also be stored in a Local Shared Object when the custom class is registered using &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_3.html#198729"&gt;the [RemoteClass] metadata tag&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;Create / retrieve a Local Shared Object&lt;/h3&gt;The process for creating a new Local Shared Object or retrieving an existing Local Shared Object is identical. In both cases, the static method getLocal() is used.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;public static function getLocal(name:String, localPath:String = null, secure:Boolean = false):SharedObject&lt;/div&gt;&lt;br /&gt;First, perform a call to the static method getLocal() of the SharedObject class, and then save the reference in a variable.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myNewLocalSharedObject:SharedObject&amp;nbsp;=&amp;nbsp;SharedObject.getLocal&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myNewLocalSharedObject&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Flash Player will look in a local directory on the user's computer for a Local Shared Object named myNewLocalSharedObject. More specifically, it will look in a directory unique to the SWF's domain for a file named myNewLocalSharedObject.sol. If myNewLocalSharedObject.sol is found, a reference to the existing Local Shared Object is returned. Otherwise, myNewLocalSharedObject.sol is created and a reference is returned to the newly created Local Shared Object.&lt;br /&gt;&lt;br /&gt;To determine whether a new or existing Local Shared Object was returned, query the size property.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myNewLocalSharedObject:SharedObject&amp;nbsp;=&amp;nbsp;SharedObject.getLocal&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myNewLocalSharedObject&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;myNewLocalSharedObject.size&amp;nbsp;&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;trace&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Existing&amp;nbsp;Local&amp;nbsp;Shared&amp;nbsp;Object&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;trace&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;New&amp;nbsp;Local&amp;nbsp;Shared&amp;nbsp;Object&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;The getLocal() method has three parameters. They should be used as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The name parameter is required to assign a name to the Local Shared Object.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The localPath parameter is optional and should be used if you anticipate multiple SWF files from the SAME domain needing access to one Local Shared Object, or if the SWF file responsible for creating the Local Shared Object may be moved to another location within the SAME domain.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The secure parameter is optional and is used to create a secure Local Shared Object. Once created, any subsequent calls to the secure Local Shared Object must be made by a SWF delivered over HTTPS.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Access / update a Local Shared Object&lt;/h3&gt;A Local Shared Object may have many attributes. For example, customer data may include name, age, address and order IDs. Each of these attributes is represented by a property of the Local Shared Object's data property. These values can be accessed, updated or deleted.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;retrieve&amp;nbsp;a&amp;nbsp;reference&amp;nbsp;to&amp;nbsp;the&amp;nbsp;existing&amp;nbsp;Local&amp;nbsp;Shared&amp;nbsp;Object&amp;nbsp;(customerData.sol)&lt;/font&gt;&lt;br/&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;so:SharedObject&amp;nbsp;=&amp;nbsp;SharedObject.getLocal&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;customerData&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;accessing&amp;nbsp;the&amp;nbsp;values&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Local&amp;nbsp;Shared&amp;nbsp;Object&lt;/font&gt;&lt;br/&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;name:String&amp;nbsp;=&amp;nbsp;so.data.name;&lt;/font&gt;&lt;br/&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age:int&amp;nbsp;=&amp;nbsp;so.data.age;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;updating&amp;nbsp;the&amp;nbsp;values&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Local&amp;nbsp;Shared&amp;nbsp;Object&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;so.data.name=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;John&amp;nbsp;Smith&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;so.data.age&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;23&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;so.data.orderIds&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;23456&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;24444&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;25432&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;a&amp;nbsp;custom&amp;nbsp;class&amp;nbsp;must&amp;nbsp;be&amp;nbsp;registered&amp;nbsp;and&amp;nbsp;marked&amp;nbsp;serializable&amp;nbsp;using&amp;nbsp;the&amp;nbsp;[RemoteClass]&amp;nbsp;metadata&amp;nbsp;tag&lt;/font&gt;&lt;br/&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;address:Address&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Address&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;address.street&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;125&amp;nbsp;Foo&amp;nbsp;Lane&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;so.data.address&amp;nbsp;=&amp;nbsp;address;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;deleting&amp;nbsp;values&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Local&amp;nbsp;Shared&amp;nbsp;Object&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;delete&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;so.data.age;&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;delete&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;so.data.orderIds;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;h3&gt;Persist a Local Shared Object&lt;/h3&gt;Use the flush() method to immediately write a Local Shared Object to the user's computer.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;public function flush(minDiskSpace:int = 0):String&lt;/div&gt;&lt;br /&gt;A call to flush() returns one of two possible values, SharedObjectFlushStatus.PENDING or SharedObjectFlushStatus.FLUSHED. If more space is needed on the user's computer to persist the Local Shared Object, SharedObjectFlushStatus.PENDING is returned and a dialog box is presented to the user to obtain permission to allocate more space.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/permission-773956.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 375px; height: 184px;" src="http://blog.flexdevelopers.com/uploaded_images/permission-773954.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When the user selects "Allow" or "Deny" a NetStatusEvent.NET_STATUS event is dispatched targeting the Local Shared Object. Register an event listener to handle this event.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;so.addEventListener&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;NetStatusEvent.NET_STATUS,&amp;nbsp;netStatusHandler&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;If the Local Shared Object is successfully written to the user's computer, SharedObjectFlushStatus.FLUSHED is returned and the user is not notified.&lt;br /&gt;&lt;br /&gt;The flush() method has one parameter. It should be used as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The minDiskSpace parameter is optional and is used to allocate additional space (over 100 kb) on the user's computer for the Local Shared Object. If used, a dialog box is presented to the user asking for permission to allocate additional space.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;writeSharedObject&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;so:SharedObject&amp;nbsp;=&amp;nbsp;SharedObject.getLocal&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;mySO&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;so.data.name&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Jeremy&amp;nbsp;Mitchell&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;try&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;wrap&amp;nbsp;in&amp;nbsp;a&amp;nbsp;try&amp;nbsp;to&amp;nbsp;handle&amp;nbsp;a&amp;nbsp;scenario&amp;nbsp;where&amp;nbsp;local&amp;nbsp;storage&amp;nbsp;has&amp;nbsp;been&amp;nbsp;disallowed&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;so.flush&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;500000&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;e:Error&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;trace&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Local&amp;nbsp;storage&amp;nbsp;has&amp;nbsp;been&amp;nbsp;disabled&amp;nbsp;for&amp;nbsp;this&amp;nbsp;domain&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="example"&gt;Note: The flush() method is not required to persist a Local Shared Object. When the application SWF closes, an attempt is made to persist all Local Shared Objects on the user's computer. However, if adequate space is not allocated for the Local Shared Object, the attempt will fail silently. Use the flush() method to ensure success and recover from any possible failure.&lt;/div&gt;&lt;h3&gt;Delete a Local Shared Object&lt;/h3&gt;To purge the data of a Local Shared Object and delete it from the user's computer call the clear() method.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;public function clear():void&lt;/div&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;so:SharedObject&amp;nbsp;=&amp;nbsp;SharedObject.getLocal&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;loginInfo&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;so.clear&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-4374055027470997900?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/4374055027470997900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=4374055027470997900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/4374055027470997900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/4374055027470997900'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2010/01/flex-basics-local-shared-object.html' title='Flex Basics - Local Shared Object'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-8661463506746443113</id><published>2009-12-07T11:27:00.000-07:00</published><updated>2009-12-08T13:49:50.456-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Examples'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Basics - Creating a Popup Window with PopUpManager</title><content type='html'>Popup windows serve as a handy tool for data collection or display. Popup windows in Flex are frequently implemented as a &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/TitleWindow.html" target="_blank"&gt;TitleWindow&lt;/a&gt; or a subclass of TitleWindow. TitleWindow is a popular choice as it inherits the capabilities of a &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Panel.html" target="_blank"&gt;Panel&lt;/a&gt; (title bar, control bar, border &amp; content area) while adding a nifty close button.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/popup-711326.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 240px;" src="http://blog.flexdevelopers.com/uploaded_images/popup-711323.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With built-in &lt;a href="http://en.wikipedia.org/wiki/Modal_window" target="_blank"&gt;modal&lt;/a&gt; support, popup windows can demand the user's attention or force interaction when necessary. This is possible because windows below a modal popup window cannot receive mouse events until a modal popup window is dismissed. &lt;br /&gt;&lt;br /&gt;The &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/managers/PopUpManager.html" target="_blank"&gt;PopUpManager&lt;/a&gt; class is used to manage popup windows in Flex. You can create, center and remove popup windows by using the &lt;a href="http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f30.html#WS5b3ccc516d4fbf351e63e3d118a9b90204-7f25" target="_blank"&gt;static methods&lt;/a&gt; of the PopUpManager class.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/managers/PopUpManager.html#addPopUp()" target="_blank"&gt;addPopUp()&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;public static function addPopUp(window:IFlexDisplayObject, parent:DisplayObject, modal:Boolean = false, childList:String = null):void&lt;/div&gt;&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/managers/PopUpManager.html#createPopUp()" target="_blank"&gt;createPopUp()&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;public static function createPopUp(parent:DisplayObject, className:Class, modal:Boolean = false, childList:String = null):IFlexDisplayObject&lt;/div&gt;&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/managers/PopUpManager.html#centerPopUp()" target="_blank"&gt;centerPopUp()&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;public static function centerPopUp(popUp:IFlexDisplayObject):void&lt;/div&gt;&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/managers/PopUpManager.html#removePopUp()" target="_blank"&gt;removePopUp()&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;public static function removePopUp(popUp:IFlexDisplayObject):void&lt;/div&gt;&lt;h3&gt;Creating a popup window&lt;/h3&gt;Flex provides two distinct, yet very similar, methods for creating a popup window and placing it on a layer above all other visible windows – addPopUp() and createPopUp(). The difference between each method is subtle and determining which to use is mostly a matter of preference.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: Adobe documentation states that "using the addPopUp() method may be preferable to using the createPopUp() method if you have to pop up a simple dialog box that is never used elsewhere."&lt;/div&gt;Looking closely at each method signature (addPopUp &amp; createPopUp), the difference dictates &lt;span style="font-style:italic;"&gt;how to use&lt;/span&gt; the method rather than &lt;span style="font-style:italic;"&gt;when to use&lt;/span&gt; it. (or so it seems)&lt;br /&gt;&lt;br /&gt;&lt;div class="table"&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;Method characteristic&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;addPopUp()&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span style="font-weight:bold;"&gt;createPopUp()&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Requires a popup window instance as an argument&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Returns a value that can be stored in a variable&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Here are some guidelines I tend to follow:&lt;br /&gt;&lt;br /&gt;&lt;div class="example" style="background-color:#CCDDCC"&gt;&lt;span style="font-style:italic;font-weight:bold;"&gt;If you want to create a quick and dirty simple popup window that you don't plan to reuse, use addPopUp().&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;creationComplete=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;openTitleWindow(event)&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.events.CloseEvent;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.controls.Label;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.events.FlexEvent;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.containers.TitleWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.managers.PopUpManager;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;method&amp;nbsp;to&amp;nbsp;open&amp;nbsp;the&amp;nbsp;TitleWindow&amp;nbsp;on&amp;nbsp;creationComplete&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;openTitleWindow&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;evt:FlexEvent&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;create&amp;nbsp;and&amp;nbsp;configure&amp;nbsp;the&amp;nbsp;TitleWindow&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;tw:TitleWindow&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;TitleWindow&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;tw.title&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Title&amp;nbsp;Goes&amp;nbsp;Here&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;tw.showCloseButton&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;tw.addEventListener&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;Event.CLOSE,&amp;nbsp;closeTitleWindow&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;create&amp;nbsp;and&amp;nbsp;configure&amp;nbsp;a&amp;nbsp;Label&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;label:Label&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Label&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;label.text&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;This&amp;nbsp;is&amp;nbsp;a&amp;nbsp;very&amp;nbsp;simple&amp;nbsp;popup&amp;nbsp;window&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;add&amp;nbsp;the&amp;nbsp;Label&amp;nbsp;to&amp;nbsp;the&amp;nbsp;TitleWindow&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;tw.addChild&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;label&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;open&amp;nbsp;the&amp;nbsp;TitleWindow&amp;nbsp;as&amp;nbsp;a&amp;nbsp;modal&amp;nbsp;popup&amp;nbsp;window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;PopUpManager.addPopUp&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;tw,&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;method&amp;nbsp;to&amp;nbsp;close&amp;nbsp;the&amp;nbsp;TitleWindow&amp;nbsp;targeted&amp;nbsp;by&amp;nbsp;a&amp;nbsp;close&amp;nbsp;event&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;closeTitleWindow&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;evt:CloseEvent&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;PopUpManager.removePopUp&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;TitleWindow&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;evt.target&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="example" style="background-color:#CCDDCC"&gt;&lt;span style="font-style:italic;font-weight:bold;"&gt;If reuse of a popup window is a priority, use createPopUp() and store the returned object in a variable for later use.&lt;/span&gt;&lt;/div&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;creationComplete=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;openPopUpWindow(event)&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;comps.MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.events.FlexEvent;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.managers.PopUpManager;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;declare&amp;nbsp;a&amp;nbsp;variable&amp;nbsp;for&amp;nbsp;the&amp;nbsp;reusable&amp;nbsp;custom&amp;nbsp;PopUp&amp;nbsp;Window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;popup:MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;method&amp;nbsp;to&amp;nbsp;open&amp;nbsp;the&amp;nbsp;PopUp&amp;nbsp;Window&amp;nbsp;on&amp;nbsp;creationComplete&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;openPopUpWindow&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;evt:FlexEvent&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;open&amp;nbsp;the&amp;nbsp;PopUp&amp;nbsp;Window&amp;nbsp;as&amp;nbsp;a&amp;nbsp;modal&amp;nbsp;popup&amp;nbsp;window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;and&amp;nbsp;store&amp;nbsp;it&amp;nbsp;in&amp;nbsp;a&amp;nbsp;variable&amp;nbsp;for&amp;nbsp;later&amp;nbsp;use&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;popup&amp;nbsp;=&amp;nbsp;PopUpManager.createPopUp&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,MyPopUpWindow,&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;as&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;custom&amp;nbsp;popup&amp;nbsp;window&amp;nbsp;component&amp;nbsp;-&amp;nbsp;comps/MyPopUpWindow.mxml&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TitleWindow&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;layout=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;vertical&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;title=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;My&amp;nbsp;Custom&amp;nbsp;PopUp&amp;nbsp;Window&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;showCloseButton=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;true&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Form&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:FormHeading&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;User&amp;nbsp;Login&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:FormItem&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Username&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;un&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:FormItem&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:FormItem&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Password&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;pd&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:FormItem&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ControlBar&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;save&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Login&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;cancel&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Cancel&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:ControlBar&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Form&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:TitleWindow&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;h3&gt;Centering a popup window&lt;/h3&gt;A popup window can be centered in relation to any DisplayObject. When creating a popup window using addPopUp() or createPopUp(), it is important to understand that the parameter named "parent" (datatyped as DisplayObject) will be used to determine the reference point for centering a popup window. In most cases, you’ll want a popup window to be centered over the Application.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;creationComplete=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;openPopUpWindow(event)&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;comps.MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.events.FlexEvent;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.managers.PopUpManager;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;declare&amp;nbsp;a&amp;nbsp;variable&amp;nbsp;for&amp;nbsp;the&amp;nbsp;reusable&amp;nbsp;custom&amp;nbsp;PopUp&amp;nbsp;Window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;popup:MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;method&amp;nbsp;to&amp;nbsp;open&amp;nbsp;the&amp;nbsp;PopUp&amp;nbsp;Window&amp;nbsp;on&amp;nbsp;creationComplete&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;openPopUpWindow&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;evt:FlexEvent&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;open&amp;nbsp;the&amp;nbsp;PopUp&amp;nbsp;Window&amp;nbsp;as&amp;nbsp;a&amp;nbsp;modal&amp;nbsp;popup&amp;nbsp;window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;and&amp;nbsp;store&amp;nbsp;it&amp;nbsp;in&amp;nbsp;a&amp;nbsp;variable&amp;nbsp;for&amp;nbsp;later&amp;nbsp;use&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;popup&amp;nbsp;=&amp;nbsp;PopUpManager.createPopUp&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,MyPopUpWindow,&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;as&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;center&amp;nbsp;the&amp;nbsp;PopUp&amp;nbsp;window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;PopUpManager.centerPopUp&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;popup&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;In the previous example, notice that the DisplayObject used to center the popup window was &lt;span style="font-weight:bold;font-style:italic;"&gt;this&lt;/span&gt;. In this case, &lt;span style="font-weight:bold;font-style:italic;"&gt;this&lt;/span&gt; refers to the Application container, and therefore, the popup window was centered nicely over the Application. In many cases &lt;span style="font-weight:bold;font-style:italic;"&gt;this&lt;/span&gt; will not refer to the Application container (i.e. inside custom components). When opening a popup window from within a custom component, use the following code to ensure the popup window is centered over the Application container and not the custom component.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;popup&amp;nbsp;=&amp;nbsp;&lt;br/&gt;PopUpManager.createPopUp&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;DisplayObject&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.parentApplication&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;,MyPopUpWindow,&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;as&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyPopUpWindow;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;h3&gt;Removing a popup window&lt;/h3&gt;Once our popup window has been created, displayed and optionally centered, there are a couple of options for removing it from display.&lt;br /&gt;&lt;br /&gt;1. A parent removes a popup window from display&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;creationComplete=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;openPopUpWindow(event)&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.events.FlexMouseEvent;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;comps.MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.events.FlexEvent;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.managers.PopUpManager;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;declare&amp;nbsp;a&amp;nbsp;variable&amp;nbsp;for&amp;nbsp;the&amp;nbsp;reusable&amp;nbsp;custom&amp;nbsp;popup&amp;nbsp;window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;popup:MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;method&amp;nbsp;to&amp;nbsp;open&amp;nbsp;the&amp;nbsp;popup&amp;nbsp;window&amp;nbsp;on&amp;nbsp;creationComplete&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;openPopUpWindow&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;evt:FlexEvent&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;open&amp;nbsp;the&amp;nbsp;popup&amp;nbsp;window&amp;nbsp;as&amp;nbsp;a&amp;nbsp;modal&amp;nbsp;popup&amp;nbsp;window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;and&amp;nbsp;store&amp;nbsp;it&amp;nbsp;in&amp;nbsp;a&amp;nbsp;variable&amp;nbsp;for&amp;nbsp;later&amp;nbsp;use&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;popup&amp;nbsp;=&amp;nbsp;PopUpManager.createPopUp&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,MyPopUpWindow,&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;as&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;register&amp;nbsp;event&amp;nbsp;listeners&amp;nbsp;for&amp;nbsp;closing&amp;nbsp;the&amp;nbsp;popup&amp;nbsp;window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;when&amp;nbsp;the&amp;nbsp;popup&amp;nbsp;window&amp;nbsp;close&amp;nbsp;button&amp;nbsp;is&amp;nbsp;clicked...&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;popup.addEventListener&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;Event.CLOSE,&amp;nbsp;closePopUpWindow&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;or&amp;nbsp;when&amp;nbsp;an&amp;nbsp;area&amp;nbsp;outside&amp;nbsp;the&amp;nbsp;popup&amp;nbsp;window&amp;nbsp;is&amp;nbsp;clicked...&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;popup.addEventListener&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;FlexMouseEvent.MOUSE_DOWN_OUTSIDE,&amp;nbsp;closePopUpWindow&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;center&amp;nbsp;the&amp;nbsp;popup&amp;nbsp;window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;PopUpManager.centerPopUp&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;popup&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;method&amp;nbsp;to&amp;nbsp;close&amp;nbsp;the&amp;nbsp;popup&amp;nbsp;window&amp;nbsp;on&amp;nbsp;close&amp;nbsp;or&amp;nbsp;mousedownoutside&amp;nbsp;event&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;closePopUpWindow&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;evt:Event&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;PopUpManager.removePopUp&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;popup&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;2. A popup window removes itself from display&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;creationComplete=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;openPopUpWindow(event)&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.events.FlexMouseEvent;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;comps.MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.events.FlexEvent;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.managers.PopUpManager;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;declare&amp;nbsp;a&amp;nbsp;variable&amp;nbsp;for&amp;nbsp;the&amp;nbsp;reusable&amp;nbsp;custom&amp;nbsp;popup&amp;nbsp;window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;popup:MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;method&amp;nbsp;to&amp;nbsp;open&amp;nbsp;the&amp;nbsp;popup&amp;nbsp;window&amp;nbsp;on&amp;nbsp;creationComplete&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;openPopUpWindow&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;evt:FlexEvent&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;open&amp;nbsp;the&amp;nbsp;popup&amp;nbsp;window&amp;nbsp;as&amp;nbsp;a&amp;nbsp;modal&amp;nbsp;popup&amp;nbsp;window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;and&amp;nbsp;store&amp;nbsp;it&amp;nbsp;in&amp;nbsp;a&amp;nbsp;variable&amp;nbsp;for&amp;nbsp;later&amp;nbsp;use&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;popup&amp;nbsp;=&amp;nbsp;PopUpManager.createPopUp&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,MyPopUpWindow,&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;as&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyPopUpWindow;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;center&amp;nbsp;the&amp;nbsp;popup&amp;nbsp;window&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;PopUpManager.centerPopUp&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;popup&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;custom&amp;nbsp;popup&amp;nbsp;window&amp;nbsp;component&amp;nbsp;-&amp;nbsp;comps/MyPopUpWindow.mxml&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TitleWindow&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;layout=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;vertical&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;title=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;My&amp;nbsp;Custom&amp;nbsp;PopUp&amp;nbsp;Window&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;showCloseButton=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;true&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;close=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;PopUpManager.removePopUp(this)&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.managers.PopUpManager;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Form&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:FormHeading&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;User&amp;nbsp;Login&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:FormItem&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Username&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;un&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:FormItem&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:FormItem&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Password&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;pd&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:FormItem&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ControlBar&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;save&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Login&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;cancel&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Cancel&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:ControlBar&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Form&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:TitleWindow&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;I hope that gives you some ideas about how to use PopUpManager &amp; TitleWindow in your Flex apps. Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-8661463506746443113?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/8661463506746443113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=8661463506746443113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/8661463506746443113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/8661463506746443113'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2009/12/flex-basics-creating-popup-window-with.html' title='Flex Basics - Creating a Popup Window with PopUpManager'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-2718708610693530734</id><published>2009-11-03T11:16:00.001-07:00</published><updated>2009-12-08T13:40:29.905-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Binding'/><title type='text'>Flex Tips - Using Bindable Metadata Events</title><content type='html'>One powerful feature of Flex is &lt;a href="http://blog.flexdevelopers.com/2008/11/flex-basics-data-binding.html"&gt;data binding&lt;/a&gt;. On the surface, data binding is simple to implement.&lt;br /&gt;&lt;br /&gt;1. Mark a class as bindable to activate data binding on all public properties of the class&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;&lt;code&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Or, mark individual properties as bindable&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderNumber:int;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderName:String;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;2. Declare an instance of the class preceded with the [Bindable] metadata tag&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;order:Order&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;3. Use a bindable property as the source of a data binding association. 3 techniques exist:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Wrap the source property in curly brackets&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myLabel&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{order.orderName}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Use a Binding tag&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Binding&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;order.orderName&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;destination=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myLabel.text&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create the data binding association at runtime&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;BindingUtils.bindProperty&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;myLabel,&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;text&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;order,&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;orderName&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;The most common practice includes the use of curly brackets. The following example demonstrates data binding in its simplest form.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;Value&amp;nbsp;object&amp;nbsp;class&amp;nbsp;marked&amp;nbsp;bindable&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderNumber:int;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderName:String;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Application&amp;nbsp;file&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;layout=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;vertical&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;comps.Order;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;order:Order&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;binding&amp;nbsp;#&lt;/font&gt;&lt;font color="#000000"&gt;1&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'Order&amp;nbsp;#:&amp;nbsp;'&amp;nbsp;+&amp;nbsp;order.orderNumber}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;binding&amp;nbsp;#&lt;/font&gt;&lt;font color="#000000"&gt;2&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Text&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'Order&amp;nbsp;Name:&amp;nbsp;'&amp;nbsp;+&amp;nbsp;order.orderName}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:HBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Change&amp;nbsp;Order&amp;nbsp;#&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;click=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;order.orderNumber&amp;nbsp;=&amp;nbsp;Math.floor(Math.random()*50)+1&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;ti&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Enter&amp;nbsp;name...&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;enter=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;order.orderName&amp;nbsp;=&amp;nbsp;ti.text&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:HBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;In most scenarios, this approach is acceptable. However, there are times when another technique is recommended. It involves explicitly defining which event type to dispatch when a source property changes. Let's review what we did previously.&lt;br /&gt;&lt;br /&gt;We marked an entire class as bindable&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;&lt;code&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Or, marked individual properties as bindable&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderNumber:int;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderName:String;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;This is equivalent to:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;event=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;propertyChange&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)]&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Or&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;event=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;propertyChange&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderNumber:int;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;event=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;propertyChange&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderName:String;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;Data binding includes a lot of code generation. This is part of it. When using the [Bindable] metadata tag without explicitly defining the event type, the default event type is used – propertyChange.&lt;br /&gt;&lt;br /&gt;Using the default event type (propertyChange) is fine except when you mark the entire class as bindable and the class contains several public properties (see Cairngorm's ModelLocator class). In this case, each public property will dispatch the same event type (propertyChange) when their value changes. This can be problematic.&lt;br /&gt;&lt;br /&gt;To understand why this is a problem, let's take a closer look at what happens behind the scenes when data binding is used.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: This is a very high-level analysis of the inner-workings of data binding. For a detailed description of data binding, check out &lt;a href="http://tv.adobe.com/watch/360flex-conference/diving-in-the-data-binding-waters-by-michael-labriola/" target="_blank"&gt;Michael Labriola's presentation entitled Diving in the Data Binding Waters&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;To accomplish data binding, here's what is required of you:&lt;br /&gt;&lt;br /&gt;First, mark a class as bindable to activate data binding on all public properties of the class:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;&lt;code&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Or, mark individual properties as bindable&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderNumber:int;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderName:String;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;By doing this, the Flex framework does the following by generating more code:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Turns your class into an "event dispatcher" by implementing IEventDispatcher&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Implements the methods required of the IEventDispatcher interface (addEventListener, removeEventListener, dispatchEvent, etc)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Creates implicit getters and setters for each bindable property&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Converts [Bindable] to [Bindable(event="propertyChange")]&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Adds code to your setter method required to dispatch the propertyChange event when the property value changes.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;Why does the Flex framework do all of this? In a nutshell, so your class can:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Broadcast an event when a bindable property value changes&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Allow interested parties to register an event listener triggered when a bindable property changes&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;But wait, there's more! When you actually use a bindable property as the source of a data binding (via curly brackets, Binding object or BindingUtils.bindProperty), the Flex Framework generates even more code required to:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create an array of Binding objects&lt;br/&gt;&lt;br /&gt;One Binding object is created for each data binding association. Each Binding object is responsible for updating a destination property when the corresponding source property changes.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create an array of PropertyWatcher objects&lt;br/&gt;&lt;br /&gt;One PropertyWatcher object is created for each data binding association. Each PropertyWatcher object is responsible for "listening" for an event to occur that signifies a change in the source property value. The event type is determined by the value defined in the [Bindable] metadata tag. Again, if no type is defined, propertyChange is used.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Failure to specify an event type in the [Bindable] metadata tag forces every public property to dispatch a propertyChange event when their value changes, and, in turn, every PropertyWatcher is "listening" for a propertyChange event. However, only the PropertyWatcher tasked with watching the property that actually changed is required to respond to the event and notify the Binding object responsible for updating the destination property.&lt;br /&gt;&lt;br /&gt;The extra work involved with triggering multiple PropertyWatcher objects when only ONE source property changes can be expensive and can be avoided by simply defining a unique event for each bindable property. The following example demonstrates this technique.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;Value&amp;nbsp;object&amp;nbsp;that&amp;nbsp;dispatches&amp;nbsp;unique&amp;nbsp;events&amp;nbsp;for&amp;nbsp;each&amp;nbsp;bindable&amp;nbsp;property&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;package&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;comps&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;flash.events.Event;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;flash.events.EventDispatcher;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;extends&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;EventDispatcher&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_orderNumber:int;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;event=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;orderNumberChange&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;get&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderNumber&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;:int&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;return&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_orderNumber;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;set&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderNumber&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;value:int&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;_orderNumber&amp;nbsp;!==&amp;nbsp;value&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;_orderNumber&amp;nbsp;=&amp;nbsp;value;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;remember&amp;nbsp;to&amp;nbsp;dispatch&amp;nbsp;the&amp;nbsp;unique&amp;nbsp;event&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;dispatchEvent&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Event&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;orderNumberChange&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_orderName:String;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;event=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;orderNameChange&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;get&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderName&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;:String&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;return&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_orderName;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;set&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;orderName&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;value:String&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;_orderName&amp;nbsp;!==&amp;nbsp;value&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;_orderName&amp;nbsp;=&amp;nbsp;value;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;remember&amp;nbsp;to&amp;nbsp;dispatch&amp;nbsp;the&amp;nbsp;unique&amp;nbsp;event&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;dispatchEvent&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Event&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;orderNameChange&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;))&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;layout=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;vertical&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;comps.Order;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;order:Order&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Order&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;binding&amp;nbsp;#&lt;/font&gt;&lt;font color="#000000"&gt;1&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myLabel&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'Order&amp;nbsp;#:&amp;nbsp;'&amp;nbsp;+&amp;nbsp;order.orderNumber}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;binding&amp;nbsp;#&lt;/font&gt;&lt;font color="#000000"&gt;2&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Text&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'Order&amp;nbsp;Name:&amp;nbsp;'&amp;nbsp;+&amp;nbsp;order.orderName}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:HBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Change&amp;nbsp;Order&amp;nbsp;#&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;click=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;order.orderNumber&amp;nbsp;=&amp;nbsp;Math.floor(Math.random()*50)+1&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;ti&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Enter&amp;nbsp;name...&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;enter=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;order.orderName&amp;nbsp;=&amp;nbsp;ti.text&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:HBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-2718708610693530734?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/2718708610693530734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=2718708610693530734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/2718708610693530734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/2718708610693530734'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2009/11/flex-tips-using-bindable-metadata_03.html' title='Flex Tips - Using Bindable Metadata Events'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-8115514034970391562</id><published>2009-10-05T10:17:00.001-06:00</published><updated>2009-10-13T09:34:11.248-06:00</updated><title type='text'>Adobe Flex Rates - What do you charge?</title><content type='html'>&lt;div style="width:100%;"&gt;&lt;div style="float:left;width:65%;"&gt;&lt;div class="example"&gt;Important: This poll is not limited to Flex developers in the US. Please read the comments associated with this blog entry to get a sense of where the votes are coming from.&lt;/div&gt;Obviously, many factors must be considered when determining a Flex developer's hourly rate. These may include:&lt;ul&gt;&lt;li&gt;Experience (i.e. less than 1yr, 1-2yrs, 2-4yrs, 4+yrs)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Skill level (i.e. junior, intermediate, advanced, expert)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Role (employee, &lt;a href="http://jessewarden.com/2009/10/flex-consulting-chronicles-1-you-are-not-a-contractor.html" target="_blank"&gt;contractor (or subcontractor), consultant&lt;/a&gt;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Responsibilities (i.e. Flex dev only, Flex + Java dev, etc)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Developer's track record&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Additional factors may include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Market size (small, medium, large)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Market forces (supply and demand)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Geography&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Client's budget&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Project urgency&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;The list goes on and on, but it's still interesting to know what other Flex developers are charging. It gives us a basis for our own calculations. So go ahead, take the poll and share with the world. We're all dying to know. Comments encouraged.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: If you're an employee with a salary and benefits, someone once told me your hourly rate can be determined by (salary / annual hours) * 1.4. (annual hours typically equals 2000)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="float:right;margin-top:-19px;"&gt;&lt;script type="text/javascript" language="javascript" charset="utf-8" src="http://static.polldaddy.com/w/28568.js"&gt;&lt;/script&gt;&lt;noscript&gt;&lt;br /&gt;&lt;a href="http://www.polldaddy.com/w.php?p=28568/"&gt;Take Our Poll&lt;/a&gt;&lt;span style="font-size:9px;"&gt;(&lt;a href="http://www.polldaddy.com"&gt;survey&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/noscript&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-8115514034970391562?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/8115514034970391562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=8115514034970391562' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/8115514034970391562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/8115514034970391562'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2009/10/flex-rates-what-do-you-charge.html' title='Adobe Flex Rates - What do you charge?'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-7921808435179030073</id><published>2009-08-22T14:01:00.000-06:00</published><updated>2009-12-28T14:55:48.372-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Screencasts'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex Examples'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Examples - Creating a Custom Event</title><content type='html'>Flex applications consist of a component hierarchy starting with the Application root. Components are built-in or &lt;a href="http://blog.flexdevelopers.com/2009/07/flex-examples-creating-custom-visual.html"&gt;custom&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/outline-772199.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 246px; height: 234px;" src="http://blog.flexdevelopers.com/uploaded_images/outline-772197.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Interaction between components may occur down the component hierarchy (parent to child) or up (child to parent).&lt;br /&gt;&lt;br /&gt;When a parent component interacts with a child component, the parent utilizes the child component's interface (API). This interface includes the component's public properties and methods.&lt;br /&gt;&lt;br /&gt;For example, a parent component may hide a child component by setting its visible property to false.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;parent&amp;nbsp;component&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;doSomething&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;event:MouseEvent&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;lbl.visible&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;false&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;parent&amp;nbsp;(Application) interacting&amp;nbsp;with&amp;nbsp;child (Label)&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;child&amp;nbsp;component&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;lbl&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Hello&amp;nbsp;there&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;child&amp;nbsp;component&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Hide&amp;nbsp;Label&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;click=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;doSomething(event)&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="example"&gt;Note: The Label's visible property is actually marked private but is publicly exposed through an implicit getter and setter.&lt;/div&gt;Conversely, when a component wants to interact with a parent (or ancestor) component, it does so by dispatching events. Events are dispatched to signify an occurrence has taken place and include the details of the occurrence wrapped inside an event object.&lt;br /&gt;&lt;br /&gt;Components may express an interest in a particular event by &lt;span style="font-style:italic;"&gt;registering an event listener&lt;/span&gt;. Event listeners map an event to a method. This method is referred to as an event handler and is designed to perform one or more actions in response to an event. &lt;br /&gt;&lt;br /&gt;Because an event (built-in or custom) propagates down through the display hierarchy during the Capturing phase of the &lt;a href="http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e4f.html" target="_blank"&gt;event flow&lt;/a&gt; and back up during the Bubbling phase, ancestor components have two opportunities to register event listeners.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: Events do not bubble by default. All events extend the flash.events.Event class which requires 3 constructor arguments (type, bubbles and cancelable). Set bubbles to true and override the clone method to activate event bubbling.&lt;/div&gt;In addition to the details of the event (target, currentTarget, type, eventPhase, etc), custom event objects can carry a "payload" used to transfer data. The payload is nothing more than a storage variable declared as a property of the event object. &lt;br /&gt;&lt;br /&gt;In this short video, I will create a custom event designed to carry user information (username / password) captured when the user logs in.&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6OQpOju8lV8&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x2b405b&amp;color2=0x6b8ab6&amp;hd=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/6OQpOju8lV8&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x2b405b&amp;color2=0x6b8ab6&amp;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Correction: In the video, I failed to override the clone method. Without overriding the clone method, a custom event will not be capable of bubbling.&lt;/div&gt;&lt;a href="http://blog.flexdevelopers.com/swfs/20090822/srcview/" target="_blank"&gt;View the source code of the custom event example&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After watching the video, it may still not be obvious why this approach is considered a best practice. Following the principles of encapsulation, we want our components to represent a "black box". We interact with a component via its public interface (API) and it broadcasts information about itself using events. If you find the event and the information it contains to be interesting, listen for the event and act on it.&lt;br /&gt;&lt;br /&gt;Interaction between components in this fashion promotes loose coupling which ultimately provides greater flexibility.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-7921808435179030073?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/7921808435179030073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=7921808435179030073' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/7921808435179030073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/7921808435179030073'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2009/08/flex-examples-creating-custom-event.html' title='Flex Examples - Creating a Custom Event'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-5042881236481304614</id><published>2009-07-31T14:10:00.000-06:00</published><updated>2009-12-01T09:41:34.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Examples'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Examples - Creating a Custom Visual Component</title><content type='html'>The Flex SDK includes a compiler, debugger, profiler and a class library. The Flex Class Library is commonly referred to as the Flex Framework and includes hundreds of ActionScript classes and interfaces used to develop Flex applications.&lt;br /&gt;&lt;br /&gt;The classes serve as the basis for Flex's visual and non-visual components:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Visual component classes:&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blog.flexdevelopers.com/2008/09/flex-basics-containers.html"&gt;Containers&lt;/a&gt; for layout (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/HBox.html" target="_blank"&gt;HBox&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/VBox.html" target="_blank"&gt;VBox&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Canvas.html" target="_blank"&gt;Canvas&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Panel.html" target="_blank"&gt;Panel&lt;/a&gt;) and navigation (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Accordion.html" target="_blank"&gt;Accordion&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/TabNavigator.html" target="_blank"&gt;Tab Navigator&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/ViewStack.html" target="_blank"&gt;ViewStack&lt;/a&gt;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blog.flexdevelopers.com/2008/10/flex-basics-ui-controls.html" target="_blank"&gt;Controls&lt;/a&gt; for data input (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TextInput.html" target="_blank"&gt;TextInput&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TextArea.html" target="_blank"&gt;TextArea&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/DateField.html" target="_blank"&gt;DateField&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/CheckBox.html" target="_blank"&gt;CheckBox&lt;/a&gt;, etc) and data presentation (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/List.html" target="_blank"&gt;List&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/DataGrid.html" target="_blank"&gt;DataGrid&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Tree.html" target="_blank"&gt;Tree&lt;/a&gt;, etc)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Controls for user interaction (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Button.html" target="_blank"&gt;Button&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/LinkBar.html" target="_blank"&gt;LinkBar&lt;/a&gt;, etc)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Components for charting (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/charts/BubbleChart.html" target="_blank"&gt;BubbleChart&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/charts/LineChart.html" target="_blank"&gt;LineChart&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/charts/PieChart.html" target="_blank"&gt;PieChart&lt;/a&gt;, etc)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Non-visual component classes:&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Components for data access (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/rpc/http/mxml/HTTPService.html" target="_blank"&gt;HTTPService&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/rpc/soap/mxml/WebService.html" target="_blank"&gt;WebService&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/rpc/remoting/mxml/RemoteObject.html" target="_blank"&gt;RemoteObject&lt;/a&gt;, etc)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Components for data collection (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ArrayCollection.html" target="_blank"&gt;ArrayCollection&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/XMLListCollection.html" target="_blank"&gt;XMLListCollection&lt;/a&gt;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Components for data validation (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/validators/EmailValidator.html" target="_blank"&gt;EmailValidator&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/validators/NumberValidator.html" target="_blank"&gt;NumberValidator&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/validators/RegExpValidator.html" target="_blank"&gt;RegExpValidator&lt;/a&gt;, etc) and data formatting (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/formatters/DateFormatter.html" target="_blank"&gt;DateFormatter&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/formatters/PhoneFormatter.html" target="_blank"&gt;PhoneFormatter&lt;/a&gt;, etc)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Components for animation effects and state transitions (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/effects/Move.html" target="_blank"&gt;Move&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/effects/Resize.html" target="_blank"&gt;Resize&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/effects/Fade.html" target="_blank"&gt;Fade&lt;/a&gt;, etc)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Skin and Style classes (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/skins/Border.html" target="_blank"&gt;Border&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/skins/ProgrammaticSkin.html" target="_blank"&gt;ProgrammaticSkin&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/styles/CSSStyleDeclaration.html" target="_blank"&gt;CSSStyleDeclaration&lt;/a&gt;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Manager classes (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/managers/BrowserManager.html" target="_blank"&gt;BrowserManager&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/managers/HistoryManager.html" target="_blank"&gt;HistoryManager&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/managers/CursorManager.html" target="_blank"&gt;CursorManager&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/managers/LayoutManager.html" target="_blank"&gt;LayoutManager&lt;/a&gt;, etc)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Utility classes (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/utils/ArrayUtil.html" target="_blank"&gt;ArrayUtil&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/utils/ColorUtil.html" target="_blank"&gt;ColorUtil&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/utils/GraphicsUtil.html" target="_blank"&gt;GraphicsUtil&lt;/a&gt;, etc)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Language feature support classes (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/binding/utils/BindingUtils.html" target="_blank"&gt;BindingUtils&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/binding/utils/ChangeWatcher.html" target="_blank"&gt;ChangeWatcher&lt;/a&gt;, etc)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Shipped with the Flex SDK, most of these classes produce "built-in" components available for use immediately. Utilization only requires instantiation and an understanding of each component's API (the accessible properties and methods and the applicable events, styles and effects). API details are found in the &lt;a href="http://livedocs.adobe.com/flex/3/langref/" target="_blank"&gt;Flex Language Reference&lt;/a&gt; and exposed through Flex Builder's code completion (hit control-space bar while in an MXML tag or after a dot in ActionScript when using dot notation to see the accessible members of the class).&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: Some of these classes are created for you at application start up (i.e. Manager classes) or do not require instantiation for use (i.e. Utility classes).&lt;/div&gt;The following example demonstrates utilization of a built-in Button component by way of a public property (label) and style (color) while registering a handler on the buttonDown event (aka event listener).&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myButton&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Hello&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;color=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;0xFF0000&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;buttonDown=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;doSomething(event)&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;90% of your Flex development will require built-in components. The rest will require custom components.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: The remainder of this entry will focus on visual components. Visual components eligible for participation in the Flex Framework descend from the &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/core/UIComponent.html" target="_blank"&gt;UIComponent&lt;/a&gt; class which descends from the &lt;a href="http://livedocs.adobe.com/flex/3/langref/flash/display/DisplayObject.html" target="_blank"&gt;DisplayObject&lt;/a&gt; class. The DisplayObject class is the base class for all objects that can be placed on the display list.&lt;/div&gt;A custom visual component is required in the following scenarios:&lt;ol&gt;&lt;li&gt;You want to customize the functionality of a built-in visual component to meet your specific requirements&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Nothing in the Flex Class Library comes close to the functionality you want so you need to build a custom visual component from scratch&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You want to package multiple components into one custom visual component for the sake of modularity and/or reusability&lt;/li&gt;&lt;/ol&gt;We'll cover each scenario below:&lt;h3&gt;Scenario #1: You want to customize the functionality of a built-in visual component to meet your specific requirements&lt;/h3&gt;In many instances, built-in components satisfy &lt;span style="font-style:italic;"&gt;most&lt;/span&gt; of your needs. For example, you may need a control to render data as a vertical list while capturing the value of an &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/HSlider.html" target="_blank"&gt;HSlider&lt;/a&gt;'s value property. The HSlider's value property will help determine the font color of each item in the vertical list.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: This custom component was built in a previous blog entry entitled &lt;a href="http://blog.flexdevelopers.com/2009/06/flex-examples-item-renderers-in.html"&gt;Flex Examples - Item Renderers in Practice&lt;/a&gt; to demonstrate a technique used to facilitate real-time communication between a list-based control's item renderer and an external component.&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;Extending the capabilities of a built-in component&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since Flex already provides a control capable of rendering data as a vertical list - List, we'll start with that and extend the functionality to include our new property. This can be done in MXML or ActionScript.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: Extending an existing class for the purpose of customization follows a fundamental object-oriented design principle - The Open-Closed Principle. This principle says that classes should be open for extension, but closed for modification.&lt;/div&gt;First, navigate to the desired package (directory) in Flex Builder where you'd like your custom component to reside.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/comps-777380.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 184px; height: 147px;" src="http://blog.flexdevelopers.com/uploaded_images/comps-777379.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If using MXML...&lt;br /&gt;&lt;br /&gt;From the context menu (right-click), select File &gt; New MXML Component. Set the 'Based on' field to 'List' and give your MXML component a name starting with a capital letter (to distinguish classes from objects, classes start with a capital letter whereas objects (instances of a class) do not).&lt;br /&gt;&lt;br /&gt;The content of your new MXML component is as follows:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:List&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:List&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;We're using a List as our base class (so List is our root tag), and we're going to extend its capabilities by adding any properties and methods we see fit. Here we will add a new property to the List control exposed publicly through a getter and setter.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:List&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_newProperty:Number;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;property&amp;nbsp;accessible&amp;nbsp;via&amp;nbsp;a&amp;nbsp;public&amp;nbsp;getter&amp;nbsp;&amp;amp;&amp;nbsp;setter&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;make&amp;nbsp;it&amp;nbsp;bindable&amp;nbsp;if&amp;nbsp;you&amp;nbsp;anticipate&amp;nbsp;its&amp;nbsp;use&amp;nbsp;as&amp;nbsp;the&amp;nbsp;source&amp;nbsp;of&amp;nbsp;a&amp;nbsp;data&amp;nbsp;binding&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;get&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;newProperty&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;:Number&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;return&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_newProperty;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;set&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;newProperty&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;value:Number&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;_newProperty&amp;nbsp;=&amp;nbsp;value;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:List&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;If using ActionScript... &lt;br /&gt;&lt;br /&gt;Again, from the context menu select File &gt; New ActionScript Class. Set the 'Superclass' field to mx.controls.List (or hit browse and type in List) and give your ActionScript class a name starting with a capital letter. Flex Builder will create your class with the following contents:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;package&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;comps&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.controls.List;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyList&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;extends&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;List&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyList&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;super&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;List is the base class we'd like to extend. Our new class (MyList) inherits the capabilities of a basic List control by extending it while providing an opportunity to customize the properties and methods to meet our needs.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;package&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;comps&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.controls.List;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyList&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;extends&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;List&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_newProperty:Number;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;new&amp;nbsp;property&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyList&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;super&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;getter&amp;nbsp;and&amp;nbsp;setter&amp;nbsp;for&amp;nbsp;our&amp;nbsp;new&amp;nbsp;property&amp;nbsp;marked&amp;nbsp;as&amp;nbsp;bindable&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;get&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;newProperty&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;:Number&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;return&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_newProperty;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;set&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;newProperty&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;value:Number&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;_newProperty=&amp;nbsp;value;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Now we can create an instance of our new, customized list and utilize our new property.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;comps:MyList&amp;nbsp;newProperty=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;2&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Or, we can use it as we intended based on our previous requirements.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Bind&amp;nbsp;to&amp;nbsp;the&amp;nbsp;HSlider&lt;/font&gt;&lt;font color="#000000"&gt;'s&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;value&amp;nbsp;property&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;comps:MyList&amp;nbsp;newProperty=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{myHSlider.value}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;Overriding the behavior of a built-in component&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In addition to extending the capabilities of a built-in component, we can change the way it currently behaves.&lt;br /&gt;&lt;br /&gt;For example, a &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Label.html" target="_blank"&gt;Label&lt;/a&gt; component is a perfect candidate for an &lt;a href="http://blog.flexdevelopers.com/2009/02/flex-basics-item-renderers.html"&gt;Item Renderer&lt;/a&gt;. However, we may want to change the Label's text color when our Label is used as an Item Renderer and certain conditions apply.&lt;br /&gt;&lt;br /&gt;Looking closely at the Label class' source file (ctrl-click a Label tag in Flex Builder) and knowing a thing or two about Item Renderers, we settle on the set data method. This method passes the data for an item to the Item Renderer.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: The Label class is eligible for item rendering based on the implementation of the IDataRenderer interface which enforces implementation of a data property getter and setter method. Without these methods, there would be no way to pass an item's data to the Label instance.&lt;/div&gt;We would like to add some additional logic to the set method to meet our requirements, therefore, we will extend the Label class and override this existing method.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;!---&amp;nbsp;MyLabel.mxml&amp;nbsp;used&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;as&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;an&amp;nbsp;Item&amp;nbsp;Renderer&amp;nbsp;---&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{data.name&amp;nbsp;+&amp;nbsp;'&amp;nbsp;('&amp;nbsp;+&amp;nbsp;data.age&amp;nbsp;+&amp;nbsp;')'}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;override&amp;nbsp;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;set&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;data&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;value:Object&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;this&amp;nbsp;is&amp;nbsp;critical&amp;nbsp;since&amp;nbsp;we&amp;nbsp;only&amp;nbsp;want&amp;nbsp;to&amp;nbsp;inject&amp;nbsp;additional&amp;nbsp;logic&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;super&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.data&amp;nbsp;=&amp;nbsp;value;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;new&amp;nbsp;behavior&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;minAge:Number&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;40&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;data.age&amp;nbsp;&amp;lt;&amp;nbsp;minAge&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;setStyle&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;color&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#000000"&gt;0xFF0000&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;else&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;setStyle&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;color&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#000000"&gt;0x000000&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Label&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="example"&gt;Note: In most cases, it is critical that we preserve the base class' implementation of the method we wish to override. Therefore, in this example, we need to call super.data.&lt;/div&gt;9 times out of 10, you can enhance a built-in component by extending or modifying its capabilities to fit your needs. Extend an existing class, add a new property or method, override an existing method, or even add new styles, effects or events....&lt;br /&gt;&lt;h3&gt;Scenario #2: Nothing in the Flex Class Library comes close to the functionality you want so you need to build a custom visual component from scratch&lt;/h3&gt;On occasion, you may have the need to create a component from scratch. This approach is warranted when nothing is gained by extending the functionality of an existing, built-in component (container or control).&lt;br /&gt;&lt;br /&gt;For example, you may choose to extend a VBox when you wish to "contain" child components while inheriting the built-in top-to-bottom layout capabilities. However, if layout for your component is dynamic and determined by a style setting, the layout rules of a VBox may not always apply.&lt;br /&gt;&lt;br /&gt;As mentioned previously, all visual components eligible for participation in the Flex Framework descend from the UIComponent class. The UIComponent class implements 5 methods required of a visual component. These methods are known as the component lifecycle methods and they include:&lt;ol&gt;&lt;li&gt;createChildren&lt;/li&gt;&lt;br /&gt;&lt;li&gt;commitProperties&lt;/li&gt;&lt;br /&gt;&lt;li&gt;measure&lt;/li&gt;&lt;br /&gt;&lt;li&gt;layoutChrome&lt;/li&gt;&lt;br /&gt;&lt;li&gt;updateDisplayList&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The Flex Framework depends on these methods and every visual Flex component implements them directly or indirectly (through class inheritance).&lt;br /&gt;&lt;br /&gt;Each method plays a particular role and makes a component unique to itself. For components added to the display list, these methods are called by the Flex Framework on application startup and may be called during the lifetime of a component as needed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;createChildren()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Implementation of the createChildren method is required if the visual component is a composite component. Composite components contain child objects. The createChildren method is only called once when the component is added to the display list.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;commitProperties()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By coordinating property changes and ensuring expensive calculations are not performed unnecessarily, the commitProperties method can help developers achieve optimal application performance.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;measure()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The logic required to determine the custom component's default size and, optionally, default minimum size is contained within the measure method.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;layoutChrome()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Container components utilize the layoutChrome method to define border area.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;updateDisplayList()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The sizing and positioning of child components is calculated within the updateDisplayList method.&lt;br /&gt;&lt;br /&gt;For more information, Adobe has provided &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=ascomponents_advanced_3.html" target="_blank"&gt;a more detailed description of each component lifecycle method&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The following example demonstrates the use of a custom visual component. This component consists of 2 child objects - a TextArea and a Button. The TextArea can be enabled/disabled programatically or by clicking the button. The layout can also be changed at runtime using the radio buttons.&lt;br /&gt;&lt;br /&gt;View source is also enabled to provide insight into the structure of the custom component.&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" src="http://blog.flexdevelopers.com/swfs/20090731/" style="overflow:hidden" width="60%" height="200"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;h3&gt;Scenario #3: You want to package multiple components into one custom visual component for the sake of modularity and/or reusability&lt;/h3&gt;Rather than creating an application consisting of one monolithic file, it is common practice to break an application down into pieces. This technique promotes code reuse and better organization.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Creating custom components to encapsulate distinct application views&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Most Flex applications contain multiple views. A view consists of the components required to satisfy a particular task or objective. Each view could be constructed quite easily in the main application file. For example, the following application consist of 2 views - a Login View and a Search View.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;layout=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;vertical&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;login&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;event:MouseEvent&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;vs.selectedIndex&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ViewStack&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;vs&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&amp;nbsp;&amp;lt;!--&amp;nbsp;navigation&amp;nbsp;containers&amp;nbsp;typically&amp;nbsp;manage&amp;nbsp;views&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Login&amp;nbsp;View&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Panel&amp;nbsp;title=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Login&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Form&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:FormItem&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Username&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:FormItem&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:FormItem&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Password&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:FormItem&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Form&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ControlBar&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Login&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;click=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;login(event)&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:ControlBar&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Panel&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Search&amp;nbsp;View&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:VBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:HBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Search&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:HBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:DataGrid/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:VBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;However, as the application inevitably grows, so does the amount of code in the main application file. Before you know it, it is hard to tell where one view ends and another one begins.&lt;br /&gt;&lt;br /&gt;To prevent duplicate code and unwieldy file sizes, consider breaking your application into pieces designed to perform a singular task (for example, "login" is a task represented by a unique view and warrants its own component). This is done by creating custom components like we did before.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;xmlns:views=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;views.*&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;layout=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;vertical&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;login&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;event:Event&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;vs.selectedIndex&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;navigate&amp;nbsp;to&amp;nbsp;the&amp;nbsp;search&amp;nbsp;view&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ViewStack&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;vs&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Login&amp;nbsp;View&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;views:LoginView&amp;nbsp;loggedIn=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;login(event)&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&amp;nbsp;&amp;lt;!--&amp;nbsp;custom&amp;nbsp;component&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Search&amp;nbsp;View&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;views:SearchView/&amp;gt;&amp;nbsp;&amp;lt;!--&amp;nbsp;custom&amp;nbsp;component&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:ViewStack&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;LoginView.mxml&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;extends&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Panel&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Panel&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;this&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;component&amp;nbsp;dispatches&amp;nbsp;a&amp;nbsp;loggedin&amp;nbsp;event&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;that&amp;nbsp;you&amp;nbsp;can&amp;nbsp;now&amp;nbsp;listen&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;in&amp;nbsp;MXML&amp;nbsp;or&amp;nbsp;ActionScript&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Metadata&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Event&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;loggedIn&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,&amp;nbsp;type=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;flash.events.Event&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)]&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Metadata&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Form&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:FormItem&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Username&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:FormItem&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:FormItem&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Password&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:FormItem&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Form&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ControlBar&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Login&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;click=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;dispatchEvent(new&amp;nbsp;Event('loggedIn'))&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:ControlBar&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Panel&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;SearchView.mxml&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;extends&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;VBox&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;?xml&amp;nbsp;version=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;encoding=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;utf-8&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;?&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:VBox&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:HBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Search&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:HBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:DataGrid/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:VBox&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;This becomes essential as your views become more complex (i.e. more internal (child) components, view states, events, etc).&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: Because our Login view was packaged into a LoginView component, access to the application's login method was no longer available. Communication between components should always be accomplished using events, therefore, the LoginView component now dispatches an event. A listener is created in the main application file to handle the event.&lt;/div&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;views:LoginView&amp;nbsp;loggedIn=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;login(event)&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;In this example, we've created two custom components (LoginView and SearchView) for the purpose of packaging multiple components together. We didn't reduce the amout of code but we did reduce clutter, and if we want, we can reuse these components without copying/pasting code.&lt;br /&gt;&lt;br /&gt;Whether you're looking to extend the capabilities of an existing component, create a component from scratch or group components into views, Flex provides the mechanism to do so. Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-5042881236481304614?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/5042881236481304614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=5042881236481304614' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/5042881236481304614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/5042881236481304614'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2009/07/flex-examples-creating-custom-visual.html' title='Flex Examples - Creating a Custom Visual Component'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-1882110482293115743</id><published>2009-06-27T12:19:00.000-06:00</published><updated>2009-12-01T09:42:27.432-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Examples'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><category scheme='http://www.blogger.com/atom/ns#' term='Item Renderer'/><title type='text'>Flex Examples - Item Renderers in Practice</title><content type='html'>List-based controls (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/DataGrid.html" target="_blank"&gt;DataGrid&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/List.html" target="_blank"&gt;List&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TileList.html" target="_blank"&gt;TileList&lt;/a&gt; &amp; &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/HorizontalList.html" target="_blank"&gt;HorizontalList&lt;/a&gt;) render the data assigned to their dataProvider property.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;layout=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;vertical&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ArrayCollection&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;ac&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Array&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;tom&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;12&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;brown&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;sally&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;21&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;green&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;kate&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;16&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;yellow&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;bill&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;22&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;brown&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;chriss&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;23&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;green&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;yarb&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;34&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;yellow&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Array&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:ArrayCollection&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:List&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myList&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;dataProvider=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{ac}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;labelField=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;name&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;With the help of an &lt;a href="http://blog.flexdevelopers.com/2009/02/flex-basics-item-renderers.html"&gt;Item Renderer&lt;/a&gt;, list-based controls can customize the appearance of the data provider's data.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;layout=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;vertical&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ArrayCollection&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;ac&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Array&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;tom&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;12&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;brown&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;sally&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;21&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;green&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;kate&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;16&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;yellow&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;bill&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;22&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;brown&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;chriss&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;23&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;green&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;yarb&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;34&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;yellow&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Array&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:ArrayCollection&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Using&amp;nbsp;an&amp;nbsp;Item&amp;nbsp;Renderer&amp;nbsp;to&amp;nbsp;control&amp;nbsp;the&amp;nbsp;display&amp;nbsp;of&amp;nbsp;data&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:List&amp;nbsp;width=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;100%&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;dataProvider=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{ac}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;itemRenderer=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;com.flexdevelopers.ListIR&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Item&amp;nbsp;Renderer&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;ListIR.mxml&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{data.name&amp;nbsp;+&amp;nbsp;'&amp;nbsp;('&amp;nbsp;+&amp;nbsp;data.age&amp;nbsp;+&amp;nbsp;')'}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;color=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;0xFF0000&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;In addition, the custom appearance can be controlled by conditional logic processed by an Item Renderer. We'll look at this a bit later.&lt;br /&gt;&lt;br /&gt;A single instance of your Item Renderer class (ListIR) is created for each visible item of the list-based control.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/ir1-746173.jpg" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 395px; height: 142px;" src="http://blog.flexdevelopers.com/uploaded_images/ir1-746163.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;As the user scrolls through the items of a list-based control, Item Renderer instances are recycled rather than creating new instances.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Example: When Data Item #1 is removed from the list-based control's display due to a scrolling action, the Item Renderer instance previously used to render Data Item #1 is recycled and used to display the data for Data Item #6.&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/ir2-712733.jpg" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 125px;" src="http://blog.flexdevelopers.com/uploaded_images/ir2-712723.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Item Renderers must directly or indirectly (through class inheritance) implement the IDataRenderer interface which enforces the implementation of 2 very important methods: get data() &amp; set data(). With an implicit getter and setter in place for the data property, the Item Renderer instance can receive a data object passed from the host component (the list-based control) which represents the data for the item it is responsible to render (i.e. Data Item #6).&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Example: If instance #1 of the Item Renderer is rendering the data for Data Item #6, the data for Data Item #6 is passed to instance #1 of the Item Renderer via the Item Renderer's set data setter method.&lt;/div&gt;When an instance of an Item Renderer is recycled due to scrolling, the set data method is called and the applicable data object is passed. This is the point in which conditional logic can be applied to control the appearance of an Item Renderer.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Item&amp;nbsp;Renderer&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;ListIR.mxml&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;with&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;conditional&amp;nbsp;logic&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:HBox&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;minAge:Number&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;21&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;override&amp;nbsp;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;set&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;data&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;value:Object&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;super&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.data&amp;nbsp;=&amp;nbsp;value;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;set&amp;nbsp;the&amp;nbsp;Item&amp;nbsp;Renderer's&amp;nbsp;data&amp;nbsp;object&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;inject&amp;nbsp;additional&amp;nbsp;logic&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;data.age&amp;nbsp;&amp;lt;&amp;nbsp;minAge&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;listLabel.setStyle&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;color&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#000000"&gt;0xFF0000&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;else&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;listLabel.setStyle&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;color&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#000000"&gt;0x000000&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;default&amp;nbsp;value&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;listLabel&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{data.name&amp;nbsp;+&amp;nbsp;'&amp;nbsp;('&amp;nbsp;+&amp;nbsp;data.age&amp;nbsp;+&amp;nbsp;')'}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:HBox&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="example"&gt;Note: It is important to remember that Item Renderers are recycled and as such, their property values may reflect a condition met by the previous "user" of the Item Renderer instance (i.e. the Data Item). Therefore, it is important to reset properties to the default value when conditional logic fails. In the previous example, the reset is accomplished by setting the label's font color back to black (0x000000) when data.age &amp;gt;= 21.&lt;/div&gt;In the previous example, we utilized a property of the data object (data.age) and a hard-coded value (21) to dictate the item's appearance. However, certain scenarios may require access to property values outside of an Item Renderer's scope to determine the appearance.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Example: The value of an HSlider in conjunction with the age property of the data object (data.age) should dictate the font color of each item's label.&lt;/div&gt;&lt;br /&gt;This scenario requires the following:&lt;br /&gt;&lt;br /&gt;1. Create a new public property for the list-based control exposed via a getter and setter&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;By extending an existing class and adding a new public property, our list-based control will have a place to store the value of an external property (i.e. the value of the HSlider's value property).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;MyList.as&amp;nbsp;extends&amp;nbsp;List&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;package&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;com.flexdevelopers&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.controls.List;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#9900cc"&gt;&lt;b&gt;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyList&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;extends&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;List&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_minAge:Number;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;new&amp;nbsp;property&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyList&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;super&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;new&amp;nbsp;property&amp;nbsp;getter&amp;nbsp;and&amp;nbsp;setter&amp;nbsp;methods&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;get&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;minAge&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;:Number&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;return&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_minAge;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;set&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;minAge&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;value:Number&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;_minAge&amp;nbsp;=&amp;nbsp;value;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;2. Bind the new list-based control's public property (MyList.minAge) to the value of the desired external property utilizing Flex's &lt;a href="http://blog.flexdevelopers.com/2008/11/flex-basics-data-binding.html"&gt;data-binding utility&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Data-binding will provide real-time synchronization of the new public property (minAge) with the external property's value (i.e. the HSlider's value property)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;xmlns:comps=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;com.flexdevelopers.*&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;layout=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;vertical&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;com.flexdevelopers.MyList;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ArrayCollection&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;ac&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Array&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;tom&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;12&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;brown&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;sally&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;21&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;green&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;kate&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;16&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;yellow&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;bill&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;22&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;brown&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;chriss&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;23&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;green&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;yarb&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;34&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;hair=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;yellow&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Array&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:ArrayCollection&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;comps:MyList&amp;nbsp;width=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;100%&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;dataProvider=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{ac}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;itemRenderer=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;com.flexdevelopers.ListIR&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;minAge=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{hslider.value}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&amp;nbsp;&amp;lt;!--&amp;nbsp;minAge&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;b&gt;is&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;bound&amp;nbsp;to&amp;nbsp;hslider.value&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:HBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:HSlider&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;hslider&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;minimum=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;10&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;maximum=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;50&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;value=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;20&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;snapInterval=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;liveDragging=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;true&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Minimum&amp;nbsp;Drinking&amp;nbsp;Age:&amp;nbsp;{hslider.value}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:HBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;3. Provide the Item Renderer with access to a ListData object&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;To access the value of our new public property from within an Item Renderer instance, our Item Renderer must implement the IDropInListItemRenderer interface. This ensures a reference to the Item Renderer's owner (the list-based control) is available to the Item Renderer, and consequently, so is our new public property.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;ListIR.mxml&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:HBox&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;strong&gt;&lt;font color="#000000"&gt;&lt;b&gt;implements&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;mx.controls.listClasses.IDropInListItemRenderer&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;/strong&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.controls.listClasses.BaseListData;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mx.controls.listClasses.ListData;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;com.flexdevelopers.MyList;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;property&amp;nbsp;required&amp;nbsp;of&amp;nbsp;IDropInListItemRenderer&amp;nbsp;exposed&amp;nbsp;thru&amp;nbsp;a&amp;nbsp;public&amp;nbsp;getter&amp;nbsp;&amp;amp;&amp;nbsp;setter&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_listData:BaseListData;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;getter&amp;nbsp;&amp;amp;&amp;nbsp;setter&amp;nbsp;methods&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;get&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;listData&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;:BaseListData&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;return&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;_listData;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;set&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;listData&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;value:BaseListData&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;_listData&amp;nbsp;=&amp;nbsp;value;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;override&amp;nbsp;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;set&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;data&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;value:Object&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;super&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.data&amp;nbsp;=&amp;nbsp;value;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;retrieve&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;the&amp;nbsp;list-based&amp;nbsp;control's&amp;nbsp;new&amp;nbsp;public&amp;nbsp;property&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;minAge:Number&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;listData.owner&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;as&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;MyList&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;.minAge;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;data.age&amp;nbsp;&amp;lt;&amp;nbsp;minAge&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;listLabel.setStyle&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;color&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#000000"&gt;0xFF0000&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;else&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;listLabel.setStyle&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;color&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#000000"&gt;0x000000&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;listLabel&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{data.name&amp;nbsp;+&amp;nbsp;'&amp;nbsp;('&amp;nbsp;+&amp;nbsp;data.age&amp;nbsp;+&amp;nbsp;')'}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:HBox&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;4. Make a call to the invalidateList method when the source of our new, bounded public property is changed (i.e. the HSlider value property changes)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;By calling MyList.invalidateList() each time the HSlider value changes, we ensure that the conditional logic of the Item Renderer is re-evaluated. InvalidateList forces each Item Renderer instance of a list-based control to call the data setter method.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;update&amp;nbsp;the&amp;nbsp;new&amp;nbsp;property's&amp;nbsp;setter&amp;nbsp;method&amp;nbsp;to&amp;nbsp;include&amp;nbsp;invalidateList()&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;IMPORTANT:&amp;nbsp;Without&amp;nbsp;calling&amp;nbsp;invalidateList,&amp;nbsp;a&amp;nbsp;change&amp;nbsp;to&amp;nbsp;the&amp;nbsp;HSlider&amp;nbsp;will&amp;nbsp;not&amp;nbsp;impact&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;the&amp;nbsp;appearance&amp;nbsp;of&amp;nbsp;the&amp;nbsp;currently&amp;nbsp;visible&amp;nbsp;list&amp;nbsp;items&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;set&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;minAge&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;value:Number&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;_minAge&amp;nbsp;=&amp;nbsp;value;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;strong&gt;&lt;font color="#000000"&gt;invalidateList&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/strong&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;See it in action (view source is enabled):&lt;br/&gt;&lt;br /&gt;&lt;iframe frameborder="0" src="http://blog.flexdevelopers.com/swfs/20090627/" style="overflow:hidden" width="65%" height="330"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-1882110482293115743?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/1882110482293115743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=1882110482293115743' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/1882110482293115743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/1882110482293115743'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2009/06/flex-examples-item-renderers-in.html' title='Flex Examples - Item Renderers in Practice'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-4688165827936940986</id><published>2009-05-22T08:39:00.000-06:00</published><updated>2009-12-01T09:43:46.184-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Basics - XMLListCollection</title><content type='html'>Depending on the characteristics of a data set, data can be modeled in a linear or hierarchical fashion.&lt;br /&gt;&lt;br /&gt;Linear data (aka flat or list-based data) typically represents the attributes (or properties) of an individual entity (item). &lt;br /&gt;&lt;br /&gt;In turn, multiple items can be aggregated into a list and stored in an &lt;a href="http://livedocs.adobe.com/flex/3/langref/Array.html" target="_blank"&gt;Array&lt;/a&gt;. An Array provides a mechanism for storage, manipulation and retrieval of linear data within a Flex application.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/items-753955-762225.jpg" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 88px;" src="http://blog.flexdevelopers.com/uploaded_images/items-753955-762222.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: Arrays can also store hierarchical data (i.e. objects composed of other objects or simple xml objects) but you'll find linear data to be more common.&lt;/div&gt;Other data sets represent nested levels of information (hierarchical data). ActionScript provides two native datatypes for working with hierarchical data – XML and XMLList. The contents of each can be accessed and manipulated as needed utilizing the public API (properties and methods) corresponding to the supporting ActionScript class – &lt;a href="http://livedocs.adobe.com/flex/3/langref/XML.html" target="_blank"&gt;XML&lt;/a&gt; or &lt;a href="http://livedocs.adobe.com/flex/3/langref/XMLList.html" target="_blank"&gt;XMLList&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.w3schools.com/XML/xml_whatis.asp" target="_blank"&gt;XML&lt;/a&gt; was designed to support the transport, storage and description of hierarchical data using custom markup. The XML class contains methods and properties for working with a single, well-formed XML document.&lt;br /&gt;&lt;br /&gt;As one might guess, an XMLList is simply a list of XML objects. Looking closely at the methods of the XML class, you’ll notice that many operations potentially result in a match against multiple XML nodes (i.e. attributes(), children(), descendants(), etc). With each matching node representing the format of a well-formed XML document, it makes sense to provide a class designed to hold one or more XML objects. That class is the XMLList class.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: XML and XMLList classes support E4X operations that may also return a list of XML objects (XMLList). This includes shorthand operations such as (.) or (..) used for retrieving children or descendant nodes respectively or predicate filtering.&lt;/div&gt;As a Flex developer, your intent, most likely, is to eventually render some, if not all, of your data on the screen. Whether your data is linear or hierarchical in nature, Flex provides the following “data provider” components suited for the task at hand:&lt;ul&gt;&lt;li&gt;List-based controls (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/DataGrid.html" target="_blank"&gt;DataGrid&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/List.html" target="_blank"&gt;List&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TileList.html" target="_blank"&gt;TileList&lt;/a&gt; and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/HorizontalList.html" target="_blank"&gt;HorizontalList&lt;/a&gt;) for linear or flat data structures (Arrays)&lt;/li&gt;&lt;li&gt;Trees and menu-based controls (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Tree.html" target="_blank"&gt;Tree&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Menu.html" target="_blank"&gt;Menu&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/MenuBar.html" target="_blank"&gt;MenuBar&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/PopUpMenuButton.html" target="_blank"&gt;PopUpMenuButton&lt;/a&gt;) for hierarchical data structures (XML or XMLList)&lt;/li&gt;&lt;/ul&gt;Data provider components require a reference to the data for display. This reference is captured in the dataProvider property of the data provider component instance.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;MXML&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;List&amp;nbsp;id=”myList”&amp;nbsp;dataProvider=”&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#000000"&gt;myArray&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#000000"&gt;”&amp;nbsp;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;Tree&amp;nbsp;id=”myTree”&amp;nbsp;dataProvider=”&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;font color="#000000"&gt;myXMLList&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;font color="#000000"&gt;”&amp;nbsp;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;ActionScript&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myList:List&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;List&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myList.dataProvider&amp;nbsp;=&amp;nbsp;myArray;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myTree:Tree&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Tree&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myTree.dataProvider&amp;nbsp;=&amp;nbsp;myXMLList;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;At first glance, this appears to be an acceptable use of data binding. However, using raw data objects (Array, XML and XMLList) as a data provider for a UI control is not considered a best practice.&lt;br /&gt;&lt;br /&gt;Instead, it is recommended that collections are used in place of raw data objects for the following reasons:&lt;ul&gt;&lt;li&gt;Changes to the data stored in a collection are immediately reflected in the UI control&lt;/li&gt;&lt;li&gt;Collections provide a "view" of the underlying data that can be sorted or filtered&lt;/li&gt;&lt;/ul&gt;Therefore, an &lt;a href="http://blog.flexdevelopers.com/2009/03/flex-basics-arraycollection.html"&gt;ArrayCollection&lt;/a&gt; should be used in place of an Array (&lt;a href="http://blog.flexdevelopers.com/2009/03/flex-basics-arraycollection.html" target="_blank"&gt;see related blog entry&lt;/a&gt;) and an &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/XMLListCollection.html" target="_blank"&gt;XMLListCollection&lt;/a&gt; should stand in for an XMLList object.&lt;h2&gt;XMLListCollection&lt;/h2&gt;Similar to an ArrayCollection, XMLListCollection extends the &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html" target="_blank"&gt;ListCollectionView&lt;/a&gt; class which implements the &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ICollectionView.html" target="_blank"&gt;ICollectionView&lt;/a&gt; and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/IList.html" target="_blank"&gt;IList&lt;/a&gt; interfaces. 3 members of the ICollectionView interface play an integral role in the implementing class' ability to support data binding:&lt;ul&gt;&lt;li&gt;2 methods: addEventListener() &amp; dispatchEvent()&lt;/li&gt;&lt;li&gt;1 event: collectionChange&lt;/li&gt;&lt;/ul&gt;When the [Bindable] metadata tag is used with a collection, Flex generates code behind the scenes required to make the collection "bindable". This code is dependent on the ability to register an event handler triggered by a event dispatched when the data object changes (aka event listener). By extending ListCollectionView which implements ICollectionView, XMLListCollection becomes an eligible participant in the data binding game.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;For a more detailed look at the guts of data binding, check out &lt;a href="http://tv.adobe.com/#vi+f15645v1029" target="_blank"&gt;Michael Labriola's presentation entitled Diving in the Data Binding Waters&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;To create an XMLListCollection, 3 techniques are available:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;creating&amp;nbsp;an&amp;nbsp;empty&amp;nbsp;XMLListCollection&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myXMLListCollection:XMLListCollection&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;XMLListCollection&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;passing&amp;nbsp;an&amp;nbsp;existing&amp;nbsp;XMLList&amp;nbsp;into&amp;nbsp;an&amp;nbsp;XMLListCollection&amp;nbsp;via&amp;nbsp;the&amp;nbsp;constructor&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myXMLListCollection:XMLListCollection&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;XMLListCollection&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;myXMLList&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;assigning&amp;nbsp;an&amp;nbsp;existing&amp;nbsp;XMLList&amp;nbsp;to&amp;nbsp;the&amp;nbsp;source&amp;nbsp;property&amp;nbsp;of&amp;nbsp;an&amp;nbsp;XMLListCollection&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myXMLListCollection:XMLListCollection&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;XMLListCollection&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myXMLListCollection.source&amp;nbsp;=&amp;nbsp;myXMLList;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;After being "wrapped" by an XMLListCollection, the majority of the XMLList methods are still available including (but not limited to):&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/XMLListCollection.html#attributes()" target="_blank"&gt;attributes&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/XMLListCollection.html#child()" target="_blank"&gt;child&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/XMLListCollection.html#children()" target="_blank"&gt;children&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/XMLListCollection.html#copy()" target="_blank"&gt;copy&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/XMLListCollection.html#descendants()" target="_blank"&gt;descendants&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/XMLListCollection.html#elements()" target="_blank"&gt;elements&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: E4X shorthand operations also apply to an XMLListCollection&lt;/div&gt;But now your plain old hierarchical data storage container (XMLList) has been infused with new powers including data binding (as mentioned previously) and new properties / methods.&lt;br /&gt;&lt;br /&gt;New properties:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#filterFunction" target="_blank"&gt;filterfunction&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#sort" target="_blank"&gt;sort&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;New methods:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#addAll()" target="_blank"&gt;addAll&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#addAllAt()" target="_blank"&gt;addAllAt&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#addEventListener()" target="_blank"&gt;addEventListener&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#addItem()" target="_blank"&gt;addItem&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#addItemAt()" target="_blank"&gt;addItemAt&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#getItemAt()" target="_blank"&gt;getItemAt&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#getItemIndex()" target="_blank"&gt;getItemIndex&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#refresh()" target="_blank"&gt;refresh&lt;/a&gt; (for use with filterfunction and sort properties)&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Note: These are the same properties and methods employed by an ArrayCollection. Sharing the same super class (ListViewCollection), ArrayCollection and XMLListCollection behave in a very similar manner, however, it is typically the UI control that will dictate the type of collection required as a data provider. Remember, list-based UI controls (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/DataGrid.html" target="_blank"&gt;DataGrid&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/List.html" target="_blank"&gt;List&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TileList.html" target="_blank"&gt;TileList&lt;/a&gt; and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/HorizontalList.html" target="_blank"&gt;HorizontalList&lt;/a&gt;) require linear (or flat) data structures (ArrayCollection) while tree or menu-based controls (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Tree.html" target="_blank"&gt;Tree&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Menu.html" target="_blank"&gt;Menu&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/MenuBar.html" target="_blank"&gt;MenuBar&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/PopUpMenuButton.html" target="_blank"&gt;PopUpMenuButton&lt;/a&gt;) require hierarchical data structures (XMLListCollection).&lt;/div&gt;&lt;br /&gt;In addition to the enhanced API provided by a collection, wrapping an XMLList inside an XMLListCollection provides 2 very powerful features:&lt;ol&gt;&lt;li&gt;filtering&lt;/li&gt;&lt;li&gt;sorting&lt;/li&gt;&lt;/ol&gt;A collection provides a "view" of the underlying data (Array or XMLList) that can be filtered and sorted without affecting the underlying data. It is this "view" in which UI controls are bound to. Alter the "view" using the filterfunction or sort properties along with the refresh() method and the changes are immediately reflected in your UI control.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.flexexamples.com/2007/08/22/sorting-and-filtering-data-in-an-xmllistcollection/" target="_blank"&gt;View Sorting &amp; Filtering an XMLListCollection Example&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-4688165827936940986?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/4688165827936940986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=4688165827936940986' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/4688165827936940986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/4688165827936940986'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2009/05/flex-basics-xmllistcollection.html' title='Flex Basics - XMLListCollection'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-5254776774175550290</id><published>2009-04-28T08:45:00.001-06:00</published><updated>2009-12-01T09:44:53.880-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Principles'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Principles - Application Development</title><content type='html'>I became a developer so I could build things. I was tired of attending misguided meetings, writing requirements documents that nobody read and talking about what a group of uninformed individuals thought needed to be built. I just wanted to build cool stuff and provide immediate value.&lt;br /&gt;&lt;br /&gt;Unfortunately, I quickly learned that application development involves more than writing code. Successful application development is a process involving multiple phases and multiple participants with a range of skills. &lt;br /&gt;&lt;br /&gt;To succeed, it’s important to adopt a development process that works for your team, your company and the types of projects you’re involved with. Without a process, the risk of project failure is high. The ideal process doesn’t get in your way, covers only the necessary bases and gives you the best chance for success.&lt;br /&gt;&lt;br /&gt;In my experience, I’ve found a "front-end first" approach coupled with small design and development cycles (iterations) to be enjoyable, effective and efficient.&lt;br /&gt;&lt;br /&gt;In this blog entry, I will outline the process, tools and platform I use to define, build and deploy &lt;span style="font-weight:bold;font-style:italic;"&gt;small to medium-sized&lt;/span&gt; rich internet applications (RIA) using Adobe Flex, ColdFusion and MySQL. This process is neither revolutionary nor specific to RIA development. In fact, many of the steps I follow may also be applied to traditional web development (HTML, CSS, JavaScript, PHP, ColdFusion, .NET, etc).&lt;br /&gt;&lt;br /&gt;In addition, to effectively demonstrate the process, I will reference the project artifacts created for each phase of a recently completed Flex project: &lt;a href="http://flexwire.flexdevelopers.staxapps.net/console/" target="_blank"&gt;FlexWire Demo App&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;Process&lt;/h3&gt;The steps involved to create an application cross 5 phases:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Application planning&lt;/li&gt;&lt;li&gt;Application user interface (UI) layout and structure&lt;/li&gt;&lt;li&gt;Application design and development&lt;/li&gt;&lt;li&gt;Application testing&lt;/li&gt;&lt;li&gt;Application deployment&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Application Planning&lt;/h3&gt;Entrance criteria: An idea, a directive, an opportunity, a problem, whatever...&lt;br /&gt;&lt;br /&gt;Tool(s): &lt;a href="http://docs.google.com/View?id=df84tgnk_96gg8mn9fv" target="_blank"&gt;Project Profile Form&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It’s difficult to create anything without a basic understanding of the business objectives. During the planning phase, it’s important to identify these objectives at a high-level.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step#1: Define the business objectives&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Example: Provide a mechanism to organize and distribute related news articles to newsletter subscribers via email.&lt;/div&gt;&lt;br /&gt;To satisfy the business objectives, an application must support a range of user and system scenarios. User scenarios help define the functionality required of an application from a user perspective. Think about the tasks involved in achieving the business objectives. These become your user scenarios.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step#2: Define user scenarios&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is important to group or categorize user scenarios in a logical manner to minimize confusion and support the UI layout and structure phase. These categories may turn out to be synonymous with user roles.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Example: Manage Newsletters (user role) - Create Newsletter, Modify Newsletter, Delete Newsletter&lt;/div&gt;&lt;br /&gt;Exit criteria: &lt;a href="http://docs.google.com/View?id=df84tgnk_94dbnvdfgk" target="_blank"&gt;Completed Project Profile Form&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;Application UI layout and structure&lt;/h3&gt;Tool(s): &lt;a href="http://www.balsamiq.com/products/mockups" target="_blank"&gt;Balsamiq Mockups&lt;/a&gt;, &lt;a href="http://writemaps.com/" target="_blank"&gt;writemaps.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After the planning phase, we should have a good understanding of the application’s purpose. However, the UI layout and structure phase will help us flesh out additional requirements while designing each view of the UI.&lt;br /&gt;&lt;br /&gt;A view represents a unique combination of Flex UI components (&lt;a href="http://blog.flexdevelopers.com/2008/09/flex-basics-containers.html"&gt;containers&lt;/a&gt; and &lt;a href="http://blog.flexdevelopers.com/2008/10/flex-basics-ui-controls.html"&gt;controls&lt;/a&gt;) and business logic utilized to perform a group of related tasks. By organizing our user scenarios into logical groupings (i.e. user roles) during the planning phase, the characteristics of each UI view should be somewhat evident.&lt;br /&gt;&lt;br /&gt;Preliminary design of each view is attained through mockups. Iterations occur until each mockup accurately reflects the layout and structure of the proposed view and visually demonstrates the functionality required to perform the desired tasks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step#1: Create UI mockups&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By following this approach, we design the UI while uncovering functional requirements overlooked in the planning phase. New user scenarios discovered during this step should be documented.&lt;br /&gt;&lt;br /&gt;Each mockup should represent a unique view of your UI. However, as the number of permutations increase (through view states or navigation containers), this may not be feasible. Use your best judgment.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Example: FlexWire mockups - &lt;a href="http://blog.flexdevelopers.com/docs/project-newsletters/mockups/newsletters.html" target="_blank"&gt;newsletters view&lt;/a&gt;, &lt;a href="http://blog.flexdevelopers.com/docs/project-newsletters/mockups/issues.html" target="_blank"&gt;issues view&lt;/a&gt;, &lt;a href="http://blog.flexdevelopers.com/docs/project-newsletters/mockups/articles.html" target="_blank"&gt;articles view&lt;/a&gt;, &lt;a href="http://blog.flexdevelopers.com/docs/project-newsletters/mockups/subscriptions.html" target="_blank"&gt;subscriptions view&lt;/a&gt;, &lt;a href="http://blog.flexdevelopers.com/docs/project-newsletters/mockups/categories.html" target="_blank"&gt;categories view&lt;/a&gt;, &lt;a href="http://blog.flexdevelopers.com/docs/project-newsletters/mockups/roles.html" target="_blank"&gt;roles view&lt;/a&gt;, &lt;a href="http://blog.flexdevelopers.com/docs/project-newsletters/mockups/templates.html" target="_blank"&gt;templates view&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Note: It may be necessary to supplement your mockups with notes to provide details that may be difficult to capture in a visual mockup. For example: "The contents of ComboBox #2 (US Cities) depend on the selectedValue of ComboBox #1 (US States)."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In addition to UI mockups, it is important to discuss the relationship of each view to one another. This can often be accomplished by building a simple wireframe. Wireframes may also be used to dictate application workflow if applicable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step#2: Create application wireframe&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once a wireframe is complete with the supporting mockups, we will have a solid understanding of the project’s scope and the flow of the application. Only now can an accurate development estimate be derived.&lt;br /&gt;&lt;br /&gt;&lt;div class="example"&gt;Example: &lt;a href="http://writemaps.com/sitemaps/shareMap/c0fcnit601kd81hzqzzrs1x18ymws1qy5c3uryjvmjuoowkrp8" target="_blank"&gt;FlexWire wireframe&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Exit criteria: wireframe, mockups&lt;br /&gt;&lt;h3&gt;Application design and development&lt;/h3&gt;Tool(s): &lt;a href="http://cfeclipse.org/" target="_blank"&gt;CFEclipse&lt;/a&gt;, &lt;a href="http://www.adobe.com/products/flex/features/flex_builder/" target="_blank"&gt;Flex Builder&lt;/a&gt;, &lt;a href="http://subclipse.tigris.org/" target="_blank"&gt;Subclipse&lt;/a&gt;, &lt;a href="http://dev.mysql.com/downloads/gui-tools/5.0.html" target="_blank"&gt;MySQL Admin&lt;/a&gt;, &lt;a href="http://opensource.adobe.com/wiki/display/flexunit/FlexUnit" target="_blank"&gt;FlexUnit&lt;/a&gt;, &lt;a href="http://mxunit.org/" target="_blank"&gt;MXUnit&lt;/a&gt;, &lt;a href="http://www.stax.net" target="_blank"&gt;Stax.net&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Additional Resources: &lt;a href="http://www.adobe.com/devnet/flex/tourdeflex/" target="_blank"&gt;Tour De Flex&lt;/a&gt;, &lt;a href="http://examples.adobe.com/flex3/consulting/styleexplorer/Flex3StyleExplorer.html" target="_blank"&gt;Flex Style Explorer&lt;/a&gt;, &lt;a href="http://scalenine.com/" target="_blank"&gt;Flex Skins&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/" target="_blank"&gt;Flex Language Reference&lt;/a&gt;, &lt;a href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm" target="_blank"&gt;Cairngorm&lt;/a&gt;, &lt;a href="http://www.transfer-orm.com/" target="_blank"&gt;Transfer&lt;/a&gt;, &lt;a href="http://www.coldspringframework.org/" target="_blank"&gt;ColdSpring&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to our wireframe and mockups, we know what needs to be created and how the features are organized within the application. However, before any code can be written, a suitable application platform must be in place.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step#1: Set up your application platform&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A suitable platform includes a separate environment to support your development, testing and production activities. At a minimum, I would recommend 3 environments:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Development environment (created locally for each designer / developer)&lt;/li&gt;&lt;li&gt;Staging (testing) environment&lt;/li&gt;&lt;li&gt;Production environment&lt;/li&gt;&lt;/ol&gt;To maintain consistent and predictable results, it is important to ensure that each environment is identical from a configuration, code and data perspective.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Note: Environment setup includes, among other things, configuration of a web server, application server and a database server. Initial setup, frequent synchronization and ongoing maintenance of each environment can prove to be very time consuming. I prefer to offload these activities if possible. Maybe you have a server engineer at your disposal. If not, I've found &lt;a href="http://www.stax.net" target="_blank"&gt;Stax.net&lt;/a&gt; to be a great option for quickly and easily setting up and replicating Java server configurations (including ColdFusion) across multiple environments. Stax is a fully-managed platform deployed and hosted on top of Amazon's EC2 cloud computing service.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With each environment in place, a source code repository is required. I won't go into the benefits of source control, however, suffice it to say that without source control you are taking an unnecessary risk while limiting developer productivity. Whether you are working with a team or not, setup a &lt;a href="http://subversion.tigris.org/" target="_blank"&gt;Subversion (SVN)&lt;/a&gt; repository and start importing source code from the start.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/Application_Enviro-756911.jpg" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 385px;" src="http://blog.flexdevelopers.com/uploaded_images/Application_Enviro-756909.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Note: For RIA development, it is only necessary to import source code files into your SVN repository. The files generated from a Flex release build (release build artifacts such as the application SWF and the wrapper HTML) should not be captured in source control.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With a platform in place, a foundation for development must be established. Architectural frameworks provide a starting point for development and enforce consistent development practices. Many architectural frameworks also support an MVC architecture. MVC is a standard for building RIA applications.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step#2: Establish an architectural framework&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Without a framework, developers can spend a lot of time on the “plumbing” of an application. This is no longer necessary as there are a number of free solutions available. For RIA development, I choose to use &lt;a href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm" target="_blank"&gt;Cairngorm&lt;/a&gt; on the client-side and &lt;a href="http://www.coldspringframework.org/" target="_blank"&gt;ColdSpring&lt;/a&gt; &amp; &lt;a href="http://www.transfer-orm.com/" target="_blank"&gt;Transfer&lt;/a&gt; on the server-side.&lt;br /&gt;&lt;br /&gt;With a framework in place, we are ready to finally write some code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step#3: Architect and design the user interface (the V in MVC)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sticking with the "front-end first" approach, build the UI layout and structure by replicating each mockup in Flex using &lt;a href="http://blog.flexdevelopers.com/2008/05/learning-flex-mxml.html"&gt;MXML&lt;/a&gt; and &lt;a href="http://blog.flexdevelopers.com/2008/06/flex-elements-actionscript.html"&gt;ActionScript&lt;/a&gt;. You'll find that most of the code written in this step will include MXML as it is the preferred method for defining application layout and structure. Also, apply any necessary &lt;a href="http://blog.flexdevelopers.com/2008/08/flex-basics-ui-state-transitions.html"&gt;UI effects and transitions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Once the layout and structure of the UI is in place, style and/or skin the user interface via CSS and/or ActionScript. This may involve multiple iterations to secure the right look and feel.&lt;br /&gt;&lt;br /&gt;UI development should occur within the development branch of SVN (typically SVN trunk) - specifically in trunk &gt;&gt; Flex according to this example.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/trunk-780646.jpg" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 120px;" src="http://blog.flexdevelopers.com/uploaded_images/trunk-780645.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While building the UI, additional requirements may be uncovered. This is unavoidable. Be sure to document them as they may have an impact on your delivery schedule.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Note: During this step, use of ActionScript should be limited to view logic (i.e. navigating and/or changing view states) and/or styling/skinning. Business logic should be implemented during the next step. Also, in some instances, your UI may require data to achieve the proper look and feel. Hard-coded data structures can help populate data provider controls (i.e. &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/ComboBox.html" target="_blank"&gt;ComboBox&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/DataGrid.html" target="_blank"&gt;DataGrid&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/List.html" target="_blank"&gt;List&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Tree.html" target="_blank"&gt;Tree&lt;/a&gt;, etc) with little effort.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once the user interface is in place and approval has been obtained, it is time to build out the features of the application.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step#4: Develop and unit test application features (the M&amp;C in MVC and the application services (the service layer))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Each user scenario defined during the planning phase or discovered subsequently represents a feature of your application. Features should be packaged into short iteration cycles (2 weeks or less) and prioritized. It’s important to identify dependencies as well when determining iteration schedules. For example, Feature B depends on Feature A.&lt;br /&gt;&lt;br /&gt;With an iteration schedule in place, feature development can begin. Feature development typically requires use of:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ActionScript and MXML for the controller and model layer within the Flex client&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ColdFusion (or any other server-side scripting language) and SQL for the application service layer (Note: &lt;a href="http://www.transfer-orm.com/" target="_blank"&gt;Transfer&lt;/a&gt; will take care of the majority, if not all, of the SQL required to perform basic CRUD operations)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SQL in the form of &lt;a href="http://en.wikipedia.org/wiki/Data_Definition_Language" target="_blank"&gt;DDL (Data Definition Language)&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Data_Manipulation_Language" target="_blank"&gt;DML (Data Manipulation Language)&lt;/a&gt; required to build and populate the database&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;Each feature will include a set of classes - ActionScript classes and/or ColdFusion classes (CFCs). A unit test for each class is required to validate expected behavior. It is much easier to identify and resolve errors at the class level rather than the feature or application level. &lt;a href="http://opensource.adobe.com/wiki/display/flexunit/FlexUnit" target="_blank"&gt;FlexUnit&lt;/a&gt; and &lt;a href="http://mxunit.org/" target="_blank"&gt;MXUnit&lt;/a&gt; can help with ActionScript and ColdFusion unit testing respectively. Unit tests should be performed locally in the development environment. Once all unit tests are successful, "developer" testing should occur to verify the overall behavior of each new feature.&lt;br /&gt;&lt;br /&gt;The completion of each iteration delivers a set of fully-functional features from the UI all the way to the database. At this point, code should be copied from the development branch (SVN trunk) to a new branch created specifically for the current iteration. The contents of this new branch should be deployed to the staging environment for additional testing (see next phase).&lt;br /&gt;&lt;br /&gt;Each development cycle (iteration) yields a new SVN branch. For example:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/branch-740885.jpg" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 136px;" src="http://blog.flexdevelopers.com/uploaded_images/branch-740884.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Exit criteria: MXML, ActionScript, CSS, CFML, SQL, DDL / DML committed to SVN trunk and copied to an iteration branch; Unit tests and results&lt;br /&gt;&lt;h3&gt;Application testing&lt;/h3&gt;Tool(s): &lt;a href="http://code.google.com/p/flexmonkey/" target="_blank"&gt;FlexMonkey&lt;/a&gt;, &lt;a href="http://sourceforge.net/projects/seleniumflexapi/" target="_blank"&gt;Selenium-Flex API&lt;/a&gt;, &lt;a href="http://trac.edgewall.org/" target="_blank"&gt;Trac&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A former boss of mine once asked me why testing was necessary. He told me "if you built it right in the first place, testing was unnecessary and only a waste of time." Technically, he's correct. Unfortunately, most (if not all) developers rarely get everything "right" out of the gate so I'll dismiss his ignorant comment.&lt;br /&gt;&lt;br /&gt;Although each class has been tested at an atomic level via unit testing and the functionality of each feature has been verified, unforeseen behavior can and does occur once ALL of the pieces are put together. &lt;br /&gt;&lt;br /&gt;Test each feature in the context of the entire application in the staging environment. Also, regression testing is often required to ensure that new functionality does not break existing functionality. Regression testing can be time-consuming and mind-numbing. Therefore, automated test tools are essential. Look into &lt;a href="http://code.google.com/p/flexmonkey/" target="_blank"&gt;FlexMonkey&lt;/a&gt; and the &lt;a href="http://sourceforge.net/projects/seleniumflexapi/" target="_blank"&gt;Selenium-Flex API&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Bugs found in the staging environment will need to be logged in &lt;a href="http://trac.edgewall.org/" target="_blank"&gt;Trac&lt;/a&gt; and fixed immediately. Fixes should be applied directly to the code found in the iteration branch. Once bug fixes are verified and testing of the iteration is complete, merge the changes back into the development branch and create an SVN "tag" (snapshot) representing a clean and functional version of the iteration branch. Each tag represents a candidate for release and, if appropriate, may be deployed to production (see next phase).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Note: Development should never occur within a tag.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/tag-781547.jpg" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 136px;" src="http://blog.flexdevelopers.com/uploaded_images/tag-781544.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Staging is also a good place to perform User Acceptance Testing (UAT) if desired.&lt;br /&gt;&lt;br /&gt;Exit criteria: Test cases and results; a tag for each successfully-tested iteration; bug fixes merged back into the development branch (SVN trunk)&lt;br /&gt;&lt;h3&gt;Application deployment&lt;/h3&gt;Tool(s): &lt;a href="http://ant.apache.org/" target="_blank"&gt;Ant&lt;/a&gt;, &lt;a href="http://maven.apache.org/" target="_blank"&gt;Maven&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With each iteration complete and tested, it is time to deploy your application to production. Automation of this phase can save time and minimize errors. Build scripts (ANT or Maven) can perform the following deployment activities:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Checkout code from the appropriate SVN tag&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Filter out irrelevant files (i.e. SVN core files)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Run SQL scripts (DDL and/or DML) to create the required database structure and generate seed data&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Copy/Move files to the production server&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;Exit criteria: A fully-functional application inline with the user requirements, deployed to a production environment, and backed-up in a source code repository&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Afterthought: In an attempt to redefine the designer / developer workflow, Adobe is proposing an approach to application layout and design involving a designer's use of existing Adobe tools (Photoshop, Illustrator, Fireworks) to generate the design and layout of each view and, with the release of &lt;a href="http://labs.adobe.com/technologies/flashcatalyst/" target="_blank"&gt;Flash Catalyst&lt;/a&gt;, supplement these design assets with visual effects and transitions. The output being the front-end of a Flex application inline with the designers vision, ready for development and abstracted from the application code in the form of design components. I have yet to explore this approach and currently rely on mockups, MXML, publicly-available themes and styles / skins implemented through conventional CSS and ActionScript to create the layout, structure and style of a Flex application. See related blog entry – &lt;a href="http://blog.flexdevelopers.com/2009/01/flex-principles-application-design.html"&gt;Application Design&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Where to go from here:&lt;/span&gt; Go get a beer...or two&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-5254776774175550290?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/5254776774175550290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=5254776774175550290' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/5254776774175550290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/5254776774175550290'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2009/04/flex-principles-application-development.html' title='Flex Principles - Application Development'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-6356928976156660229</id><published>2009-03-13T08:29:00.001-06:00</published><updated>2009-12-01T09:45:42.031-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Basics - ArrayCollection</title><content type='html'>Arguably one of the most useful constructs available to a Flex developer is an &lt;a href="http://livedocs.adobe.com/flex/3/langref/Array.html" target="_blank"&gt;Array&lt;/a&gt;. Designed to store data of various types accessible via a numbered index, the Array class provides a useful mechanism for data storage and retrieval.&lt;br /&gt;&lt;br /&gt;As such, an Array would appear to satisfy the data provider needs of any list-based control. However, it does not. Incompatibility with &lt;a href="http://blog.flexdevelopers.com/2008/11/flex-basics-data-binding.html"&gt;data binding&lt;/a&gt; makes an Array a poor choice of data provider. Fortunately, Flex provides a suitable alternative - &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ArrayCollection.html" target="_blank"&gt;ArrayCollection&lt;/a&gt;. An ArrayCollection provides all the features of an Array plus more.&lt;br /&gt;&lt;br /&gt;To understand an ArrayCollection, one must first understand an Array.&lt;br /&gt;&lt;h3&gt;Array&lt;/h3&gt;From Wikipedia, an Array "is a data structure consisting of a group of elements that are accessed via indexing". Arrays can store simple data types (primitives) such as number, boolean or string or complex data types such as other Arrays or objects.&lt;br /&gt;&lt;br /&gt;In fact, Arrays defined in &lt;a href="http://blog.flexdevelopers.com/2008/06/flex-elements-actionscript.html"&gt;ActionScript&lt;/a&gt; (or &lt;a href="http://blog.flexdevelopers.com/2008/05/learning-flex-mxml.html"&gt;MXML&lt;/a&gt;) are not strongly-typed and can store various types of data.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myArray:Array&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Array&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myArray&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Tom&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;string&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myArray&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;1&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;2&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;number&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myArray&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;2&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Object&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;object&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Array elements can be retrieved or set using array access notation utilizing the zero-based index value of the desired element.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;retrieving&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;an&amp;nbsp;array&amp;nbsp;element&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;name:String&amp;nbsp;=&amp;nbsp;myArray&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;setting&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;an&amp;nbsp;array&amp;nbsp;element&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myArray&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;0&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Bill&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Note: Arrays are designed to use a numbered index. If you intend to retrieve data via a named index (i.e. Associative Array or HashMap), you may want to consider using an object as a data container. Unlike other classes, the &lt;a href="http://livedocs.adobe.com/flex/3/langref/Object.html" target="_blank"&gt;Object&lt;/a&gt; class is dynamic - meaning arbitrary properties can be added to serve as keys.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myObject:Object=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Object&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myObject.name&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Tom&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myObject.age&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;27&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;If your HashMap keys include spaces, use array access notation.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myObject:Object=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Object&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myObject&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;first&amp;nbsp;name&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Tom&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;HashMap values can be retrieved or set using dot notation (if no spaces in the key) or array access notation.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;retrieving&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;an&amp;nbsp;object&amp;nbsp;via&amp;nbsp;an&amp;nbsp;named&amp;nbsp;index&amp;nbsp;using&amp;nbsp;dot&amp;nbsp;notation&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;name:String&amp;nbsp;=&amp;nbsp;myObject.name;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;setting&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;an&amp;nbsp;object&amp;nbsp;property&amp;nbsp;using&amp;nbsp;dot&amp;nbsp;notation&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myObject.name&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Bill&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;retrieving&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;an&amp;nbsp;object&amp;nbsp;via&amp;nbsp;an&amp;nbsp;named&amp;nbsp;index&amp;nbsp;using&amp;nbsp;array&amp;nbsp;access&amp;nbsp;notation&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;firstName:String&amp;nbsp;=&amp;nbsp;myObject&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;first&amp;nbsp;name&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;setting&amp;nbsp;the&amp;nbsp;value&amp;nbsp;of&amp;nbsp;an&amp;nbsp;object&amp;nbsp;property&amp;nbsp;using&amp;nbsp;array&amp;nbsp;access&amp;nbsp;notation&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myObject&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;first&amp;nbsp;name&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Bill&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Arrays are dynamic and, therefore, can be resized simply by adding or removing elements.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;adds&amp;nbsp;an&amp;nbsp;element&amp;nbsp;to&amp;nbsp;the&amp;nbsp;end&amp;nbsp;of&amp;nbsp;an&amp;nbsp;array&amp;nbsp;and&amp;nbsp;increases&amp;nbsp;the&amp;nbsp;array&amp;nbsp;length&amp;nbsp;by&amp;nbsp;one&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myArray.push&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Phil&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;removes&amp;nbsp;the&amp;nbsp;last&amp;nbsp;element&amp;nbsp;from&amp;nbsp;an&amp;nbsp;array&amp;nbsp;and&amp;nbsp;decreases&amp;nbsp;the&amp;nbsp;array&amp;nbsp;length&amp;nbsp;by&amp;nbsp;one&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myArray.pop&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;ActionScript supports two methods for creating Arrays, each with a variety of syntaxes:&lt;br /&gt;&lt;br /&gt;Method #1 – Create an Array by defining (or not defining) the number of elements&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;creates&amp;nbsp;an&amp;nbsp;array&amp;nbsp;with&amp;nbsp;zero&amp;nbsp;elements&amp;nbsp;(this&amp;nbsp;is&amp;nbsp;the&amp;nbsp;default&amp;nbsp;when&amp;nbsp;no&amp;nbsp;argument&amp;nbsp;is&amp;nbsp;passed&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;to&amp;nbsp;the&amp;nbsp;Array&amp;nbsp;constructor&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myArray:Array&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Array&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;creates&amp;nbsp;an&amp;nbsp;array&amp;nbsp;with&amp;nbsp;10&amp;nbsp;elements&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myArray:Array&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Array&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;10&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;creates&amp;nbsp;an&amp;nbsp;array&amp;nbsp;with&amp;nbsp;zero&amp;nbsp;elements&amp;nbsp;using&amp;nbsp;literal&amp;nbsp;notation&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myArray:Array&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Method #2 – Create an array by defining the array elements and their values&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myArray:Array&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Array&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;red&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#000000"&gt;2&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myArray:Array&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;red&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;,&lt;/font&gt;&lt;font color="#000000"&gt;2&lt;/font&gt;&lt;font color="#000000"&gt;]&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Note: The Array class can support both initialization techniques by providing two class constructors. The appropriate constructor is used based on the argument value(s) (or lack thereof).&lt;br /&gt;&lt;br /&gt;Arrays can also be built using MXML:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Array&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myArray&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&amp;nbsp;&amp;lt;!--creates&amp;nbsp;an&amp;nbsp;array&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;with&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;zero&amp;nbsp;elements--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Array&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myArray&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&amp;nbsp;&amp;lt;!--creates&amp;nbsp;an&amp;nbsp;array&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;with&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;three&amp;nbsp;elements--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:String&amp;gt;myString&amp;lt;/mx:String&amp;gt;&amp;nbsp;&amp;lt;!--string--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Number&amp;gt;&lt;/font&gt;&lt;font color="#000000"&gt;98&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Number&amp;gt;&amp;nbsp;&amp;lt;!--floating-point&amp;nbsp;number--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Object&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Phil&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;age=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;27&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&amp;nbsp;&amp;lt;!--object--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Array&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Like everything in Flex, an Array is an object and as such it contains a handful of useful properties and methods.&lt;br /&gt;&lt;br /&gt;One property familiar to all developers is the length property. The length property represents the number of array elements.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myArray:Array&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Array&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;10&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;numberOfArrayElements:uint&amp;nbsp;=&amp;nbsp;myArray.length;&amp;nbsp;&lt;/font&gt;&lt;font color="#009900"&gt;//&amp;nbsp;10&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Note: Although each Array element contains an undefined value in this scenario, the length is still 10.&lt;br /&gt;&lt;br /&gt;The length property can be very handy. One popular technique involves using the length property to dictate the number of loops included in a For Loop.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;i:uint;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;myArray.length;&amp;nbsp;i++&lt;/font&gt;&lt;font color="#000000"&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;trace&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;myArray&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;i&lt;/font&gt;&lt;font color="#000000"&gt;])&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Note: You can truncate an Array by setting the length property to a value less than the number of array elements. This is not true of an ArrayCollection as the length property is read-only.&lt;br /&gt;&lt;br /&gt;By utilizing the methods of the Array class, you can perform a number of operations on the Array elements or the Array itself. Popular Array methods include:&lt;br /&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/Array.html#filter()" target="_blank"&gt;filter&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/Array.html#indexOf()" target="_blank"&gt;indexOf&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/Array.html#join()" target="_blank"&gt;join&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/Array.html#push()" target="_blank"&gt;push&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/Array.html#reverse()" target="_blank"&gt;reverse&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/Array.html#slice()" target="_blank"&gt;slice&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/Array.html#sort()" target="_blank"&gt;sort&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/Array.html#toString()" target="_blank"&gt;toString&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However, despite all of an Array's powerful features, the inability to support data binding is a significant shortcoming. Fortunately, Flex provides an ArrayCollection.&lt;br /&gt;&lt;h3&gt;ArrayCollection&lt;/h3&gt;Per the Flex Language Reference, an ArrayCollection is a "wrapper class that exposes an Array as a collection that can be accessed and manipulated using the methods and properties of the &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ICollectionView.html" target="_blank"&gt;ICollectionView&lt;/a&gt; or &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/IList.html" target="_blank"&gt;IList&lt;/a&gt; interfaces".&lt;br /&gt;&lt;br /&gt;Two members of the ArrayCollection class are integral to the ArrayCollection's ability to support data binding - The &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#event:collectionChange" target="_blank"&gt;collectionChange&lt;/a&gt; event and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#addEventListener()" target="_blank"&gt;addEventListener&lt;/a&gt; method. To participate in data binding, an object must be able to:&lt;br /&gt;&lt;br /&gt;1. dispatch an event when something changes&lt;br /&gt;2. allow other objects to listen and respond to events&lt;br /&gt;&lt;br /&gt;The ArrayCollection satisfies both thanks to the collectionChange event and the addEventListener method and will support data binding when given a compiler directive to do so using the [Bindable] metadata tag.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;creates&amp;nbsp;a&amp;nbsp;bindable&amp;nbsp;ArrayCollection&amp;nbsp;with&amp;nbsp;zero&amp;nbsp;elements&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;Bindable&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;]&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myArrayCollection:ArrayCollection&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ArrayCollection&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;An ArrayCollection can be created in one of three ways:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#009900"&gt;//&amp;nbsp;creating&amp;nbsp;ArrayCollection&amp;nbsp;with&amp;nbsp;zero&amp;nbsp;elements&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myArrayCollection:ArrayCollection&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ArrayCollection&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;passing&amp;nbsp;an&amp;nbsp;existing&amp;nbsp;Array&amp;nbsp;into&amp;nbsp;an&amp;nbsp;ArrayCollection&amp;nbsp;via&amp;nbsp;the&amp;nbsp;constructor&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myArrayCollection:ArrayCollection&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ArrayCollection&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;myArray&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#009900"&gt;//&amp;nbsp;assigning&amp;nbsp;an&amp;nbsp;existing&amp;nbsp;Array&amp;nbsp;to&amp;nbsp;the&amp;nbsp;source&amp;nbsp;property&amp;nbsp;of&amp;nbsp;an&amp;nbsp;ArrayCollection&lt;/font&gt;&lt;br/&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myArrayCollection:ArrayCollection&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ArrayCollection&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myArrayCollection.source&amp;nbsp;=&amp;nbsp;myArray;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Either method successfully wraps an Array inside an ArrayCollection and as such, extends the capabilities of an Array.&lt;br /&gt;&lt;br /&gt;Note: In Flex, ActionScript classes can have optional constructor parameters only. MXML does not enforce required constructor parameters, therefore, if a constructor parameter is required to create a new instance of a class, provide a default value. In the case of an ArrayCollection, the default argument for the source parameter is NULL, hence, an empty ArrayCollection is created when the source parameter is omitted.&lt;br /&gt;&lt;br /&gt;Extending the &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html" target="_blank"&gt;ListCollectionView&lt;/a&gt; class that implements the ICollectionView and IList interfaces, an ArrayCollection inherits a handful of properties, methods and events. Therefore, your plain old Array now has a new set of functionality.&lt;br /&gt;&lt;br /&gt;New properties include (but not limited to):&lt;br /&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#filterFunction" target="_blank"&gt;filterFunction&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#length" target="_blank"&gt;length&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#list" target="_blank"&gt;list&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#sort" target="_blank"&gt;sort&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ArrayCollection.html#source" target="_blank"&gt;source&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;New methods include (but not limited to):&lt;br /&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#addEventListener()" target="_blank"&gt;addEventListener&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#addItem()" target="_blank"&gt;addItem&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#addItemAt()" target="_blank"&gt;addItemAt&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#contains()" target="_blank"&gt;contains&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#getItemAt()" target="_blank"&gt;getItemAt&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#getItemIndex()" target="_blank"&gt;getItemIndex&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#refresh()" target="_blank"&gt;refresh&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#removeAll()" target="_blank"&gt;removeAll&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#removeItemAt()" target="_blank"&gt;removeItemAt&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ListCollectionView.html#setItemAt()" target="_blank"&gt;setItemAt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once an Array is wrapped inside an ArrayCollection, the properties and methods of the Array class are no longer accessible unless you access them through the Array object directly. For example, if you really want to use the Array's push method, you could do the following:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;myArrayCollection.source.push&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;new&amp;nbsp;element&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;This would require using the ArrayCollection's refresh method to trigger data binding.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;myArrayCollection.source.push&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;new&amp;nbsp;element&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myArrayCollection.refresh&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;However, you could always use the ArrayCollection's addItem method instead.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;myArrayCollection.addItem&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;new&amp;nbsp;element&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Realize that every ArrayCollection contains an Array as the data source. If you create an empty ArrayCollection and add elements using the methods of the ArrayCollection rather than assigning an Array to the source property of an ArrayCollection, an Array is created for you.&lt;br /&gt;&lt;br /&gt;Any data manipulation performed on an ArrayCollection will be reflected in the underlying Array and vice-versa, however, it is important to note that manipulating an Array directly will not be reflected inside an ArrayCollection until you perform a refresh of the ArrayCollection using the ArrayCollection's refresh method.&lt;br /&gt;&lt;br /&gt;Using an ArrayCollection in place of or in tandem with an existing Array provides Flex developers with a valuable and responsive data storage and retrieval mechanism.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-6356928976156660229?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/6356928976156660229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=6356928976156660229' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/6356928976156660229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/6356928976156660229'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2009/03/flex-basics-arraycollection.html' title='Flex Basics - ArrayCollection'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-6567425433228543840</id><published>2009-02-13T14:05:00.001-07:00</published><updated>2009-12-01T09:51:52.202-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><category scheme='http://www.blogger.com/atom/ns#' term='Item Renderer'/><title type='text'>Flex Basics - Item Renderer</title><content type='html'>One characteristic of a well-designed Flex application is the ability to present data in a visually-compelling manner. Outside of the database and within the model layer of a Flex application, data is stored in a flat or hierarchical fashion (i.e. &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/ArrayCollection.html" target="_blank"&gt;ArrayCollection&lt;/a&gt; or &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/collections/XMLListCollection.html" target="_blank"&gt;XMLListCollection&lt;/a&gt;). Although a great format for data storage or transport, flat or hierarchical data structures lack significant meaning to the average user.&lt;br /&gt;&lt;br /&gt;Fortunately, Flex provides a handful of &lt;a href="http://blog.flexdevelopers.com/2008/10/flex-basics-ui-controls.html"&gt;UI controls&lt;/a&gt; designed to render flat or hierarchical data in an intuitive, meaningful and compelling manner within the UI. These UI controls include those that extend the &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/listClasses/ListBase.html" target="_blank"&gt;ListBase class&lt;/a&gt; and are commonly referred to as list-based controls. Since a collection of data can also be referred to as a list, the name makes sense.&lt;br /&gt;&lt;br /&gt;List-based controls include &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/DataGrid.html" target="_blank"&gt;DataGrid&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/List.html" target="_blank"&gt;List&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Tree.html" target="_blank"&gt;Tree&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Menu.html" target="_blank"&gt;Menu&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TileList.html" target="_blank"&gt;TileList&lt;/a&gt; and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/HorizontalList.html" target="_blank"&gt;HorizontalList&lt;/a&gt;. Each list-based control contains a public dataprovider property. The value of the dataprovider property represents the data collection (or list) that requires the list-based control to render its contents in the UI.&lt;br /&gt;&lt;br /&gt;Just as a list has items, so does a data collection. An item is analogous with a row or a record in a flat data set or a node within a hierarchical data set (i.e. XML). Data collections contain one or more items. In turn, each item may contain one or more properties.&lt;br /&gt;&lt;br /&gt;The following example illustrates storage of flat data:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/items-753955.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 88px;" src="http://blog.flexdevelopers.com/uploaded_images/items-753951.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By default, list-based controls render the contents (properties) of each item (row or record) as simple text. In many scenarios, a textual rendering is sufficient. In others it is not.&lt;br /&gt;&lt;br /&gt;Let's examine a scenario where you've selected a DataGrid control to render data stored in an ArrayCollection. In this scenario, your ArrayCollection houses a "list" of 10 employees. Each employee "record" has 4 properties - firstName, lastName, age, photo. Each employee property with the exception of the photo property fits nicely with the DataGrid's default textual rendering.&lt;br /&gt;&lt;br /&gt;To customize the rendering format of an item property (i.e. employee photo), utilize the itemrenderer property. Item Renderers control the display of data for each item property. If you do not specify an Item Renderer, the default is used and the item property is displayed as simple text.&lt;br /&gt;&lt;br /&gt;Since simple text is not an acceptable display for the employee photo property in our previous example, a custom Item Renderer is required.&lt;br /&gt;&lt;br /&gt;3 types of custom Item Renderers exist:&lt;br /&gt;&lt;br /&gt;1. Drop-In Item Renderers &lt;br /&gt;2. Inline Item Renderers&lt;br /&gt;3. External Item Renderers&lt;br /&gt;&lt;br /&gt;Each type requires access to the data in which it will render and, therefore, any component acting as an Item Renderer must implement the &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/core/IDataRenderer.html" target="_blank"&gt;IDataRenderer interface&lt;/a&gt;. The IDataRender interface enforces the implementation of a public getter and setter method for the data property. Without these methods, the list-based control that contains the data (host component) cannot pass item data to the component acting as an Item Renderer. &lt;br /&gt;&lt;br /&gt;Fortunately, all &lt;a href="http://blog.flexdevelopers.com/2008/09/flex-basics-containers.html"&gt;Flex containers&lt;/a&gt; and many Flex controls implement the IDataRenderer interface and contain the required data property. To be sure, you may want to check the inheritance tree of the component you are considering as an Item Renderer. The inheritance tree can be found for each Flex component at the &lt;a href="http://livedocs.adobe.com/flex/3/langref/" target="_blank"&gt;Flex 3 Language Reference&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Drop-In Item Renderers&lt;/h3&gt;Several UI controls within the Flex SDK were designed to serve as Drop-In Item Renderers - &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Button.html" target="_blank"&gt;Button&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/CheckBox.html" target="_blank"&gt;CheckBox&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/DateField.html" target="_blank"&gt;DateField&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Image.html" target="_blank"&gt;Image&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Label.html" target="_blank"&gt;Label&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/NumericStepper.html" target="_blank"&gt;NumericStepper&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Text.html" target="_blank"&gt;Text&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TextArea.html" target="_blank"&gt;TextArea&lt;/a&gt;, and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TextInput.html" target="_blank"&gt;TextInput&lt;/a&gt;. These controls all implement the &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/listClasses/IDropInListItemRenderer.html" target="_blank"&gt;IDropInListItemRenderer&lt;/a&gt; interface.&lt;br /&gt;&lt;br /&gt;Drop-In Item Renderers are generic in nature and don't rely on specific data fields to render data. This allows them to be used with a wide range of data sets, hence, the term “drop-in”. Drop-In Item Renderers can be “dropped-in” to any list-based control regardless of the dataprovider’s data properties.&lt;br /&gt;&lt;br /&gt;In our previous example, the employee photo property requires use of a custom Item Renderer to render properly in the UI. In this scenario the Image component satisfies our rendering needs out of the box. Implemented as a Drop-In Item Renderer, the Image component takes any data property regardless of name and uses it as the Image component's source property value. Assuming our employee photo property contains a valid image path, the Image Drop-In Item Renderer will work perfectly and resolve the image path as an image in the UI.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Drop-in&amp;nbsp;Item&amp;nbsp;Renderer:&amp;nbsp;Image&amp;nbsp;control&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:DataGridColumn&amp;nbsp;dataField=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;photo&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;headerText=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Employee&amp;nbsp;Photo&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;itemRenderer=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;mx.controls.Image&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Drop-In Item Renderers are simple and easy to use and satisfy specific use cases nicely. However, they provide no flexibility whatsoever. If your needs are not satisfied by a Drop-In Item Renderer, you must create your own Item Renderer as an inline component or an external component.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Inline Item Renderers&lt;/h3&gt;Generally used for simple item rendering requiring minimal customization, inline Item Renderers are defined as a component nested within the MXML of your list-based control.&lt;br /&gt;&lt;br /&gt;It is important to note that Item Renderers nested within the itemrender property of a list-based control occupy a different scope than the list-based control. Any attempt to reference members (properties or methods) of the parent component from the nested Item Renderer component will result in a compile-time error. However, references to the members of the parent component can be achieved by utilizing the outerDocument object.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:DataGrid&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myGrid&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;dataProvider=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{gridData}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:columns&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:DataGridColumn&amp;nbsp;headerText=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Show&amp;nbsp;Relevance&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:itemRenderer&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Component&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Image&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'assets/images/indicator_'&amp;nbsp;+&amp;nbsp;data.showRelevance&amp;nbsp;+&amp;nbsp;'.png'}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;toolTip=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{(data.showRelevance&amp;nbsp;==&amp;nbsp;1)&amp;nbsp;?&amp;nbsp;'On'&amp;nbsp;:&amp;nbsp;'Off'}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;click=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;outerDocument.toggle()&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Component&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:itemRenderer&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:DataGridColumn&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:columns&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:DataGrid&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Remember, rules of encapsulation still apply. Mark all properties or methods public if you want them accessible by your inline Item Renderer. In the previous example, the toggle() method must have a public access modifier to expose itself to the inline Item Renderer.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;public&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;toggle&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Inline Item Renderers can also be reusable by creating a named component instance outside of the list-based control. This component must have an id property and contain the rendering logic of the Item Renderer. Using data bindings, the component is assigned to the itemrenderer property of one or more data properties of a list-based control.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Reusable&amp;nbsp;inline&amp;nbsp;Item&amp;nbsp;Renderer&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Component&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;ImageRenderer&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:VBox&amp;nbsp;width=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;100%&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;height=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;140&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;horizontalAlign=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;center&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;verticalAlign=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;middle&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Image&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'assets/'+data.image}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{data.image}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:VBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Component&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Used&amp;nbsp;within&amp;nbsp;a&amp;nbsp;list-based&amp;nbsp;control--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:DataGridColumn&amp;nbsp;headerText=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Image&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;dataField=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;image&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;width=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;150&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;itemRenderer=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{ImageRenderer}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;In the previous example, note that the Item Renderer component contains 2 UI controls – Image and Label. When using multiple controls within an Item Renderer, a layout container is required. In this example, a VBox was used.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;External Item Renderers&lt;/h3&gt;As the complexity of your Item Renderer increases, you may want to create a custom MXML component or ActionScript class to encapsulate the Item Renderer. &lt;br /&gt;&lt;br /&gt;Once built, the Item Renderer component is assigned to the itemrenderer property of the appropriate list-based control property. Note that the path to the Item Renderer component is not relative to the current file but rather is relevant to the MXML file containing your Application tags.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Custom&amp;nbsp;Component:&amp;nbsp;ImageRender.mxml&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:VBox&amp;nbsp;width=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;100%&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;height=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;140&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;horizontalAlign=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;center&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;verticalAlign=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;middle&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Image&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'assets/'+data.image}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{data.image}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:VBox&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Used&amp;nbsp;within&amp;nbsp;a&amp;nbsp;list-based&amp;nbsp;control--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:DataGridColumn&amp;nbsp;headerText=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Image&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;dataField=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;image&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;width=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;150&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;itemRenderer=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;components.ImageRenderer&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;There is very little difference between an external Item Renderer and an inline Item Renderer. However, external Item Renderers are ideal for modularity, reuse and maintainability.&lt;br /&gt;&lt;br /&gt;To continue the discussion of Item Renderers and take a much closer look, read &lt;a href="http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html" target="_blank"&gt;Peter Ent's 5 part article entitled Understanding Flex itemRenderers&lt;/a&gt; or see an &lt;a href="http://blog.flexdevelopers.com/2009/06/flex-examples-item-renderers-in.html"&gt;example of an Item Renderer in practice&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-6567425433228543840?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/6567425433228543840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=6567425433228543840' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/6567425433228543840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/6567425433228543840'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2009/02/flex-basics-item-renderers.html' title='Flex Basics - Item Renderer'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-9049013116272771303</id><published>2009-01-11T20:34:00.001-07:00</published><updated>2009-12-01T09:52:39.820-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Principles'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Principles - Application Design</title><content type='html'>Today application developers face an ever-increasing challenge of quickly building robust, feature-rich applications that look great.&lt;br /&gt;&lt;br /&gt;At a high-level, an application has two fundamental components - application design and application functionality. While each represent a broad category of subjects, application design can be summarized as the style and layout of your application while application functionality includes the features offered.&lt;br /&gt;&lt;br /&gt;As developers, we tend to put a lot of emphasis on the features of an application. This is understandable. Developers develop; designers design; and a few exceptional individuals do both. However, in most cases, developers lack design skills and not all projects can afford the luxury of a professional designer. Therefore, developers are left with the arduous task of developing highly-functional applications with attractive and user-friendly interfaces.&lt;br /&gt;&lt;br /&gt;Fortunately, for the design-challenged developer, &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=styles_12.html" target="_blank"&gt;Flex ships with a number of attractive themes&lt;/a&gt; (Aeon Graphical, Haloc, HaloClassic, Ice, Institutional, Smoke, Wooden) consisting of default styles and skins for all of your application components. Furthermore, each style and skin can be customized with relatively little effort using &lt;a href="http://blog.flexdevelopers.com/2008/07/flex-elements-css-explorer.html"&gt;Flex Builder's CSS Explorer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If your design needs are still not met, check out &lt;a href="http://www.scalenine.com/" target="_blank"&gt;ScaleNine's library of Flex themes&lt;/a&gt; or hire a designer with an eye for fonts, colors and the subtle details required to achieve a professional design and differentiate or brand your application.&lt;br /&gt;&lt;br /&gt;Equally important, if not more so, to the style of your application is the layout. Application layout contributes to the usability of your application. Successful applications are usable applications.&lt;br /&gt;&lt;br /&gt;Application layout helps developers:&lt;br /&gt;&lt;br /&gt;1. organize and group functionality relevant to specific business tasks&lt;br /&gt;2. dictate work flow through the use of complimentary application views&lt;br /&gt;3. enforce a standard and consistent display of application components throughout your application&lt;br /&gt;&lt;br /&gt;There are many tools available to help you define the layout of your application. Some are free (or almost free) - pencil / paper, whiteboard, etc; others are not - Visio, Photoshop, etc.&lt;br /&gt;&lt;br /&gt;Unfortunately, with the majority of a developer's time committed to building the features of an application, little time remains to design the layout of an application. Therefore, the layout design process must be efficient.&lt;br /&gt;&lt;br /&gt;To ensure efficiency, I would recommend finding a simple tool designed for one thing - creating layout mock ups. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.balsamiq.com/products/mockups" target="_blank"&gt;Balsamiq Mockups&lt;/a&gt; fits the bill nicely. Mockups provides a clean and intuitive interface designed for creating fast and informal layout mock ups. Plus, it is fun, easy to use and cheap. It was also built using Flex!&lt;br /&gt;&lt;br /&gt;A &lt;a href="http://www.balsamiq.com/products/mockups/desktop" target="_blank"&gt;desktop version of Mockups deployed using AIR&lt;/a&gt; is FREE with the ability to unlock additional features for only $79.&lt;br /&gt;&lt;br /&gt;Referred to as a "fast tracking prototype tool", you'll find all the essential features required to "mock up" your user interface and nail down your application layout...FAST.&lt;br /&gt;&lt;br /&gt;Features include (but not limited to):&lt;br /&gt;&lt;br /&gt;- component look up (quick search)&lt;br /&gt;- component drag &amp; drop&lt;br /&gt;- component positioning&lt;br /&gt;- component resizing&lt;br /&gt;- component formatting&lt;br /&gt;- mock up printing&lt;br /&gt;- mock up importing&lt;br /&gt;- mock up exporting&lt;br /&gt;- mock up saving&lt;br /&gt;&lt;br /&gt;The Mockups interface is comprised primarily of 2 components:&lt;br /&gt;&lt;br /&gt;1. a scrollable library of mock up components&lt;br /&gt;2. a canvas where you will build your layout mock up&lt;br /&gt;&lt;br /&gt;Once complete, your mock ups will look similar to this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flexdevelopers.com/images/mytube.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 500px; height: 446px;" src="http://www.flexdevelopers.com/images/mytube.gif" border="0" alt="" /&gt;&lt;/a&gt;After your layout concepts have been finalized and approved, you must architect the view using &lt;a href="http://blog.flexdevelopers.com/2008/06/flex-elements-flex-builder.html"&gt;Flex Builder&lt;/a&gt;. This involves selecting the appropriate Flex components (&lt;a href="http://blog.flexdevelopers.com/2008/09/flex-basics-containers.html"&gt;containers &lt;/a&gt;and &lt;a href="http://blog.flexdevelopers.com/2008/10/flex-basics-ui-controls.html"&gt;controls&lt;/a&gt;) or building your own custom components. &lt;br /&gt;&lt;br /&gt;Your mock ups will serve as your guide to the placement and positioning of your Flex components.&lt;br /&gt;&lt;br /&gt;Remember, an application is ultimately judged by both its design and its functional capabilities. Neglecting one or the other will most likely result in project failure, so allocate your time wisely and use the right tools for the job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-9049013116272771303?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/9049013116272771303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=9049013116272771303' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/9049013116272771303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/9049013116272771303'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2009/01/flex-principles-application-design.html' title='Flex Principles - Application Design'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-1742268409592204160</id><published>2008-11-23T20:45:00.000-07:00</published><updated>2009-12-01T09:55:14.973-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Binding'/><title type='text'>Flex Basics - Data Binding</title><content type='html'>There are many reasons to choose Flex as your development platform for web-based software applications. Everyone is already familiar with Adobe's claim of a superior user experience delivered via Flex's rich client (aka &lt;a href="http://en.wikipedia.org/wiki/Thick_client" target="_blank"&gt;fat or thick client&lt;/a&gt;). However, developers and project sponsors alike are drawn to features of the Flex SDK which promote rapid development of feature-rich, robust applications.&lt;br /&gt;&lt;br /&gt;Data binding is a great example of one of these features.&lt;br /&gt;&lt;br /&gt;Exposed through the MXML API, data bindings allow developers to "bind" the value of one object property (destination property) to the value of another object property (source property) using &lt;a href="http://www.flexdevelopers.com/2008/05/learning-flex-mxml.html" target="_blank"&gt;MXML&lt;/a&gt; or MXML + inline &lt;a href="http://www.flexdevelopers.com/2008/06/flex-elements-actionscript.html" target="_blank"&gt;ActionScript&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Binding&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;source.text&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;destination=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination.text&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;source&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;OR&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;source&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{source.text}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;By utilizing data bindings, any change to the value of the source property is immediately reflected in the destination property. It is important to note that data bindings are "one way". Source property changes affect the destination property value but not vice versa.&lt;br /&gt;&lt;br /&gt;One benefit of using the &amp;lt;mx:Binding&amp;gt; tag instead of inline ActionScript is the ability to bind a property to multiple source properties. If any of the source properties change so does the destination property.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Binding&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;source.text&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;destination=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination.text&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Binding&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;source2.text&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;destination=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination.text&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;source&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;source2&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;However, both methods allow you to perform operations on a source property value or derive a value from the combination of multiple source properties. &lt;span style="font-style:italic;"&gt;See Binding Expressions discussed later.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Note: a source property can only be identified for data binding if the object to which it belongs has an id property.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Although it is possible to bind the text property of one TextInput control to the text property of another TextInput control as demonstrated in the previous example, data binding is not limited to such a scenario. &lt;br /&gt;&lt;br /&gt;Properties of visual elements may be bound to non-visual elements and vice versa. In fact, an predominant Flex architecture, MVC, relies on the ability to bind visual elements in the "view" to non-visual elements in the "model".&lt;br /&gt;&lt;br /&gt;Also, you could bind the text property of a TextInput control to the selectedIndex property of a ComboBox control if you so choose. &lt;br /&gt;&lt;br /&gt;Data bindings are not limited to the binding of "like" properties or "like" elements.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Note that data bindings are, however, limited to properties of identical data types or scenarios where type casting is possible. For example, you can bind a property with a data type String (i.e. text property) to a property with a data type of Int (i.e. selectedIndex) since an Int can be implicitly cast to a String. However, the reverse is not true - a property with a data type of Int cannot be bound to a property with a data type of String.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Data binding could also be accomplished by using ActionScript to add an event listener to the source object which listens for a specified event and calls a specified event handler method responsible for changing the destination object's property value to the source object's property value.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;creationComplete=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;init()&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;!&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;font color="#000000"&gt;CDATA&lt;/font&gt;&lt;font color="#000000"&gt;[&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;init&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;source.addEventListener&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;KeyboardEvent.KEY_UP,updateValue&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;private&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#339966"&gt;&lt;b&gt;function&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;updateValue&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;event:KeyboardEvent&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;:&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;destination.text&amp;nbsp;=&amp;nbsp;source.text;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;]]&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Script&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;source&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;MXML data binding just allows you to do it easier and with less code.&lt;br /&gt;&lt;br /&gt;While some may refer to such capabilities as nothing more than "&lt;a href="http://en.wikipedia.org/wiki/Syntactic_sugar" target="_blank"&gt;syntactic sugar&lt;/a&gt;", most developers can appreciate the convenience and accessibility demonstrated by Flex's MXML implementation of data bindings.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Keep in mind that using MXML to bind data binds the properties to one another at compile time. If you want to bind data at runtime based on a condition, you will have to use ActionScript.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;font-size:larger;"&gt;Binding Expressions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A data binding is the simplest form of a binding expression.&lt;br /&gt;&lt;br /&gt;More advanced binding expressions combine the use of data bindings with ActionScript operations. Since binding expressions define the value of an MXML attribute, they must return a value and be wrapped in curly braces. Without curly braces, your binding expression will be interpreted as a literal value.&lt;br /&gt;&lt;br /&gt;Binding expression are most commonly used to accomplish the following:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Bind the value of one object property to the property of another object (simple data binding)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;String concatenation that includes one or more binded properties&lt;/li&gt;&lt;li&gt;Calculations on one or more binded properties&lt;/li&gt;&lt;li&gt;Conditional operations on one or more binded properties&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight:bold;"&gt;Simple data binding:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ComboBox&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;c&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;dataProvider=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{myArray}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ViewStack&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;v&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;selectedIndex=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{c.selectedIndex}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Canvas&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Canvas&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Canvas&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;2&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Canvas&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:ViewStack&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;OR&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ComboBox&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;c&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;dataProvider=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{myArray}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Binding&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;c.selectedIndex&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;destination=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;v2.selectedIndex&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:ViewStack&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;v2&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Canvas&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Canvas&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Canvas&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;2&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Canvas&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:ViewStack&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;String concatenation:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;fname&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;lname&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'First&amp;nbsp;Name:&amp;nbsp;'&amp;nbsp;+&amp;nbsp;fname.text}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'Full&amp;nbsp;Name:&amp;nbsp;'&amp;nbsp;+&amp;nbsp;fname.text&amp;nbsp;+&amp;nbsp;'&amp;nbsp;'&amp;nbsp;+&amp;nbsp;lname.text}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;OR&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;fname&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Binding&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'First&amp;nbsp;Name:&amp;nbsp;'&amp;nbsp;+&amp;nbsp;fname.text}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;destination=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination.text&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;Calculations:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:NumericStepper&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;quantity&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;price&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'Total:&amp;nbsp;'&amp;nbsp;+&amp;nbsp;quantity.value&amp;nbsp;*&amp;nbsp;Number(price.text)}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;OR&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:NumericStepper&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;quantity&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:TextInput&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;price&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Binding&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{'Total:&amp;nbsp;'&amp;nbsp;+&amp;nbsp;quantity.value&amp;nbsp;*&amp;nbsp;Number(price.text)}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;destination=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination.text&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;span style="font-weight:bold;"&gt;Conditional:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:NumericStepper&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;quantity&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{(quantity.value&amp;nbsp;%&amp;nbsp;2)&amp;nbsp;?&amp;nbsp;'Odd'&amp;nbsp;:&amp;nbsp;'Even'}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;OR&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:NumericStepper&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;quantity&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Binding&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{(quantity.value&amp;nbsp;%&amp;nbsp;2)&amp;nbsp;?&amp;nbsp;'Odd'&amp;nbsp;:&amp;nbsp;'Even'}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;destination=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination.text&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;destination&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-1742268409592204160?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/1742268409592204160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=1742268409592204160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/1742268409592204160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/1742268409592204160'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2008/11/flex-basics-data-binding.html' title='Flex Basics - Data Binding'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-3616869106924525497</id><published>2008-10-23T21:03:00.001-06:00</published><updated>2009-12-01T09:57:34.047-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Basics - UI Controls</title><content type='html'>A Flex application's user-interface (UI) is composed of two component types &amp;mdash; containers and controls. &lt;a href="http://www.flexdevelopers.com/2008/09/flex-basics-containers.html" target="_blank"&gt;Containers&lt;/a&gt; define application layout and navigation; controls represent a broad category of UI objects required of a fully functional and interactive application.&lt;br /&gt;&lt;br /&gt;Flex user interface controls are found in the &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/package-detail.html" target="_blank"&gt;mx.controls&lt;/a&gt; package of the Flex Class library.&lt;br /&gt;&lt;br /&gt;Similar to the controls found on a traditional "&lt;a href="http://en.wikipedia.org/wiki/Control_panel_(engineering)" target="_blank"&gt;Control Panel&lt;/a&gt;" (gauges, buttons, dials, indicators, etc), most Flex UI controls provide users &lt;span style="font-style:italic;"&gt;control&lt;/span&gt; of your application. &lt;br /&gt;&lt;br /&gt;However, despite the term, some Flex controls are not interactive and provide no &lt;span style="font-style:italic;"&gt;control&lt;/span&gt; whatsoever. Examples of noninteractive controls include &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Label.html" target="_blank"&gt;Label&lt;/a&gt; and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/ProgressBar.html" target="_blank"&gt;ProgressBar&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The remainder are interactive controls and as such "can participate in tabbing and other kinds of keyboard focus manipulation, accept low-level events like keyboard and mouse input, and be disabled so that it does not receive keyboard and mouse input." Interactive controls provide the level of interaction required for users to perform desired tasks or business functions.&lt;br /&gt;&lt;br /&gt;Common control types include text-based controls, button-based controls, and data provider controls (which include both list-based controls and menu-based controls). &lt;br /&gt; &lt;br /&gt;Text-based controls are designed to display text and/or receive text input. Examples include &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Label.html" target="_blank"&gt;Label&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Text.html" target="_blank"&gt;Text&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TextArea.html" target="_blank"&gt;TextArea&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TextInput.html" target="_blank"&gt;TextInput&lt;/a&gt;, and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/RichTextEditor.html" target="_blank"&gt;RichTextEditor&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Button-based controls receive user input in the form of keyboard or mouse events. Examples include &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Button.html" target="_blank"&gt;Button&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/LinkButton.html" target="_blank"&gt;LinkButton&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/CheckBox.html" target="_blank"&gt;CheckBox&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/RadioButton.html" target="_blank"&gt;RadioButton&lt;/a&gt; and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/PopUpButton.html" target="_blank"&gt;PopUpButton&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Data provider controls display data from a variety of sources, both internal and external to your application. All data provider controls require designation of a "data provider".&lt;br /&gt;&lt;br /&gt;List-based controls (a subset of data provider controls) visually represent hierarchical or non-hierarchical (flat) data structures. Examples include &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/ComboBox.html" target="_blank"&gt;ComboBox&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/List.html" target="_blank"&gt;List&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/HorizontalList.html" target="_blank"&gt;HorizontalList&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/DataGrid.html" target="_blank"&gt;DataGrid&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TileList.html" target="_blank"&gt;TileList&lt;/a&gt; and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TileList.html" target="_blank"&gt;Tree&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Menu-based controls (another subset of data provider controls) enable user-initiated  navigation through use of a static menu (always visible) or a popup menu (visibility is initiated by a user or system event). Examples include &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/Menu.html" target="_blank"&gt;Menu&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/MenuBar.html" target="_blank"&gt;MenuBar&lt;/a&gt; and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/PopUpMenuButton.html" target="_blank"&gt;PopUpMenuButton&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All Flex controls subclass (or extend) the &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/core/UIComponent.html" target="_blank"&gt;UIComponent class&lt;/a&gt;, and therefore, inherit the following key behaviors:&lt;br /&gt;&lt;br /&gt;- resizing capabilities&lt;br /&gt;- positioning capabilities&lt;br /&gt;- ability to dispatch events &lt;br /&gt;- ability to accept keyboard focus and mouse input&lt;br /&gt;- ability to control visibility&lt;br /&gt;&lt;br /&gt;Like all Flex UI components, controls can be sized, positioned and styled according to your needs. &lt;br /&gt;&lt;br /&gt;Sizing requires the use of height and width properties - either explicitly (by setting the height and width properties to numeric pixel values) or relatively (using percentage values in relation to the parent container).&lt;br /&gt;&lt;br /&gt;In many instances the positioning of a control is determined by the layout property (horizontal or vertical) of the parent container in conjunction with the hierarchical sequence of the control. For example, if a control represents the 3rd child element of a parent container with the layout property set to horizontal, the control will be positioned 3rd from the left.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Panel&amp;nbsp;title=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Panel&amp;nbsp;Container&amp;nbsp;with&amp;nbsp;Horizontal&amp;nbsp;Layout&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;layout=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;horizontal&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;paddingBottom=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;5&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;paddingLeft=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;5&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;paddingRight=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;5&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;paddingTop=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;5&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;One&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Two&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Three&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Panel&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Application&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.flexdevelopers.com/uploaded_images/panel345443-754355.jpg" target="_blank"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 274px; height: 91px;" src="http://blog.flexdevelopers.com/uploaded_images/panel345443-754355.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However, when the parent container uses absolute positioning, the X and Y properties of the control specify the horizontal and vertical pixel coordinates within the parent container. Absolute positioning enables overlap of controls if necessary.&lt;br /&gt;&lt;br /&gt;Also, the appearance of a control can be customized through the use of styles and skins utilizing the &lt;a href="http://www.flexdevelopers.com/2008/07/flex-elements-css-explorer.html" target="_blank"&gt;CSS Explorer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Fortunately, Flex ships with a number of pre-built controls ready for inclusion in your application. Most controls are accessible via &lt;a href="http://www.flexdevelopers.com/2008/05/learning-flex-mxml.html" target="_blank"&gt;MXML&lt;/a&gt; (or &lt;a href="http://www.flexdevelopers.com/2008/06/flex-elements-actionscript.html" target="_blank"&gt;ActionScript&lt;/a&gt;) during the development phase of your Flex application. MXML provides a mechanism for creating (instantiating) control components (objects) and setting control properties (including registration of event handlers with control events).&lt;br /&gt;&lt;br /&gt;At runtime, the same control properties (including event handlers) are accessible via ActionScript only. ActionScript also provides access to the methods (or functions) of a Flex control. Runtime access to Flex controls provides the dynamic capabilities required of highly interactive and responsive application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-3616869106924525497?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/3616869106924525497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=3616869106924525497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/3616869106924525497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/3616869106924525497'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2008/10/flex-basics-ui-controls.html' title='Flex Basics - UI Controls'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-4990426873877776840</id><published>2008-09-19T15:15:00.000-06:00</published><updated>2009-12-01T09:59:26.246-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Basics - UI Containers</title><content type='html'>Flex containers serve as a mechanism for defining application layout and navigation. Common layout containers include &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/VBox.html" target="_blank"&gt;VBox&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/HBox.html" target="_blank"&gt;HBox&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Canvas.html" target="_blank"&gt;Canvas&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Tile.html" target="_blank"&gt;Tile&lt;/a&gt; and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Form.html" target="_blank"&gt;Form&lt;/a&gt;. Navigation containers include &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Accordion.html" target="_blank"&gt;Accordion&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/TabNavigator.html" target="_blank"&gt;Tab Navigator&lt;/a&gt; and &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/ViewStack.html" target="_blank"&gt;View Stack&lt;/a&gt;. Each container descends from the &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/core/Container.html" target="_blank"&gt;Container&lt;/a&gt; Class, serves a unique purpose and is available for use at the discretion of the application developer.&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin-bottom:0px;"&gt;Layout Containers&lt;/h3&gt;&lt;br /&gt;Layout containers dictate the layout of child elements (containers or controls) through the use of absolute or relative positioning. Absolute positioning requires definition of X and Y coordinates and permits overlap of elements. Relative positioning lays child elements next to each other either horizontally or vertically. Layout containers include:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/core/Application.html" target="_blank"&gt;Application&lt;/a&gt;: default container provided at the root of your Flex application. There is no need to explicitly define the Application container as it comes part of any Flex application courtesy of the &amp;lt;mx:Application&amp;gt; tag. Organizes child containers vertically, horizontally or absolutely depending on the value of the layout attribute (horizontal, vertical or absolute)&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/HBox.html" target="_blank"&gt;HBox&lt;/a&gt;: organizes child containers or controls horizontally&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/VBox.html" target="_blank"&gt;VBox&lt;/a&gt;: organizes child containers or controls vertically&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/HDividedBox.html" target="_blank"&gt;HDividedBox&lt;/a&gt;: similar to an HBox with the distinction of a draggable divider in between each child container&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/VDividedBox.html" target="_blank"&gt;VDividedBox&lt;/a&gt;: similar to an VBox with the distinction of a draggable divider in between each child container&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Canvas.html" target="_blank"&gt;Canvas&lt;/a&gt;: lays out child containers or controls based on absolute positioning (X and Y coordinates)&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Tile.html" target="_blank"&gt;Tile&lt;/a&gt;: lays out child containers or controls in columns or rows depending on the value of the direction attribute (horizontal or vertical)&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Panel.html" target="_blank"&gt;Panel&lt;/a&gt;: Similar to an HBox, VBox or Canvas container depending on the value of the layout attribute (horizontal, vertical or absolute) with the added benefit of a title bar&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Grid.html" target="_blank"&gt;Grid&lt;/a&gt;: similar to an HTML table it allows organization of child containers as rows and columns of cells&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin-bottom:0px;"&gt;Control Containers&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Control containers are used to manage the layout of controls (buttons, combo boxes, etc) only. Control containers include:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/ControlBar.html" target="_blank"&gt;ControlBar&lt;/a&gt;: only for use within a Panel or &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/TitleWindow.html" target="_blank"&gt;TitleWindow&lt;/a&gt; container, the ControlBar manages the layout of controls only (not child containers)&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/ApplicationControlBar.html" target="_blank"&gt;ApplicationControlBar&lt;/a&gt;: one or more ApplicationControlBars may exist in a Flex application, however each must be a direct child of the Application container. Child components are limited to controls.&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin-bottom:0px;"&gt;Navigation Containers&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Navigation containers manage the navigation between containers by controlling the visibility of child containers. This visibility control can either be implemented by a nav bar (&lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/LinkBar.html" target="_blank"&gt;LinkBar&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/TabBar.html" target="_blank"&gt;TabBar&lt;/a&gt;, &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/controls/ToggleButtonBar.html" target="_blank"&gt;ToggleButtonBar&lt;/a&gt;, etc) or by custom event handlers. Navigation containers include:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/Accordion.html" target="_blank"&gt;Accordion&lt;/a&gt;: contains a collection of child containers and manages the visibility of each through the use of accordion headers (similar to nav buttons)&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/ViewStack.html" target="_blank"&gt;View Stack&lt;/a&gt;: contains a collection of child containers stacked on top of each other. A View Stack is not tied to a particular component responsible for managing visibility but many options exist (i.e LinkBar, TabBar, ToggleButtonBar) for the developer's use&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://livedocs.adobe.com/flex/3/langref/mx/containers/TabNavigator.html" target="_blank"&gt;Tab Navigator&lt;/a&gt;: identical to a View Stack except for a built-in navigation feature, TabBar&lt;br /&gt;&lt;br /&gt;Containers may serve as a parent container, a child container or both a parent and child container in relation to another container.&lt;br /&gt;&lt;br /&gt;The following example demonstrates the simultaneous use of a Canvas container as both a a parent container and a child container.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:VBox&amp;nbsp;width=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;100%&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;height=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;54&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Image&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;assets/logo.png&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Canvas&amp;nbsp;height=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;30&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;x=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;9&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;y=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;7&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Manage&amp;nbsp;Athletes&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Label&amp;nbsp;y=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;6&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;text=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;[&amp;nbsp;Log&amp;nbsp;Out&amp;nbsp;]&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;right=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;5&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Canvas&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:VBox&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;In most cases, a layout container is not limited to a certain context. Exceptions include the Application container, the ApplicationControlBar container and the ControlBar container.&lt;br /&gt;&lt;br /&gt;- Application container: as the root of the Flex application, only one instance of the Application container may exist and can ONLY be a parent container.&lt;br /&gt;&lt;br /&gt;- ApplicationControlBar container: as the name suggests, the ApplicationControlBar container defines an area intended to house a control bar for your Flex application. As such, this container can only be defined as a direct child to the Application container.&lt;br /&gt;&lt;br /&gt;- ControlBar container: intended to dock a toolbar to a Panel or TitleWindow container, a ControlBar container must be defined as a direct child to a Panel or TitleWindow container&lt;br /&gt;&lt;br /&gt;All other containers are available for use in any context. For example, a Canvas container may be defined as a child to a parent VBox, HBox, Tile or even another Canvas container.&lt;br /&gt;&lt;br /&gt;Given the hierarchical (parent/child) nature of application layout (containers), best practices suggest the use of &lt;a href="http://www.flexdevelopers.com/2008/05/learning-flex-mxml.html" target="_blank"&gt;MXML&lt;/a&gt; (an XML derivative) instead of &lt;a href="http://www.flexdevelopers.com/2008/06/flex-elements-actionscript.html" target="_blank"&gt;ActionScript&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Toggling between Design mode and Source mode of &lt;a href="http://www.flexdevelopers.com/2008/06/flex-elements-flex-builder.html" target="_blank"&gt;Flex Builder&lt;/a&gt;, the hierarchical nature of your Flex application will be clear. In Design mode, your Flex application is arranged as nested containers and controls. This arrangement represents a hierarchy (or parent / child structure) and can be verified using the Outline View (Window &amp;gt;&amp;gt; Show View &amp;gt;&amp;gt; Outline). In Source mode, your Flex application is represented in MXML which by nature is hierarchical.&lt;br /&gt;&lt;br /&gt;When your Flex application is ultimately translated into ActionScript, another type of hierarchy will emerge - an Object hierarchy. Afterall, a Flex application is nothing more than one Application object composed of other objects composed of other objects...and so on...and MXML is a mapping of your Flex application's object hierarchy to XML.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-4990426873877776840?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/4990426873877776840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=4990426873877776840' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/4990426873877776840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/4990426873877776840'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2008/09/flex-basics-containers.html' title='Flex Basics - UI Containers'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-5709617644053726363</id><published>2008-08-11T21:13:00.001-06:00</published><updated>2009-12-01T10:04:45.229-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Basics - UI State Transitions</title><content type='html'>Software applications contain a large number of unique views. A view is comprised of structural elements and content arranged according to the designer / developer's preference (layout) and rendered on the user's screen.&lt;br /&gt;&lt;br /&gt;Traditional web applications encapsulate each view within an HTML page. In a static website, the number of views correlates directly with the number of HTML pages. For example, a static HTML website with five HTML pages contains five views.&lt;br /&gt;&lt;br /&gt;However, the number of views increases exponentially when dynamic capabilities are introduced into the mix. Dynamic capabilities are typically implemented through the use of server-side scripts (ColdFusion, PHP, JSP, .NET, etc).&lt;br /&gt;&lt;br /&gt;Server-side scripts analyze data against a predefined set of rules (logic) and generate the view elements (HTML) accordingly. Data may include database data, web services data, cookie data, etc. Therefore, web applications dependent on data for presentation as well as content are commonly referred to as "data-driven" web applications. As the data grows and the number of rules increase so does the number of unique views.&lt;br /&gt;&lt;br /&gt;Asynchronous technologies (AJAX) and DOM manipulation via JavaScript (DHTML) also contribute to the increasing number of views.&lt;br /&gt;&lt;br /&gt;Flex applications are no different.&lt;br /&gt;&lt;br /&gt;However, within the Flex framework, the term "View" refers to the User Interface (UI) as a whole and represents an aggregate of all visual permutations of an application. This naming convention mirrors the convention adopted by a popular Flex architecture, MVC (model-view-controller).&lt;br /&gt;&lt;br /&gt;The "View" is comprised of view components (containers &amp; controls) and each structural (or layout) variance to a view component is referred to as a View State. View States apply to all components (controls or containers) that extend the UIComponent class and consequently inherit the &lt;i&gt;states&lt;/i&gt; property. The &lt;i&gt;states&lt;/i&gt; property is an array of View States for that view component. With a default value of NULL, components start out with only one state, the base state. The base state is the root state of the component and consists only of the properties, styles, event handlers and children that you've originally defined for the component. &lt;br /&gt;&lt;br /&gt;Adding View States involves adding one or more State objects to the &lt;i&gt;states&lt;/i&gt; property of the component. Each State object requires a name and optionally the name of another state in which it is based on. Exclusion of the &lt;i&gt;basedOn&lt;/i&gt; property will base  your new state on the base state.&lt;br /&gt;&lt;br /&gt;The purpose of a state is to alter the appearance of a component in response to a user or system-initiated event (i.e. click of a button). Altering the appearance of a component involves the use of overrides via a State. Valid overrides include:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;AddChild&lt;/li&gt;&lt;br /&gt;&lt;li&gt;RemoveChild&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SetEventHandler&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SetProperty&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SetStyle&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;When using MXML to define states, overrides are implied and the override tag is not required.&lt;br /&gt;&lt;br /&gt;The following example demonstrates the use of an event handler to change the View State of the Application container:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Application&amp;nbsp;xmlns:mx=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;http://www.adobe.com/2006/mxml&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;layout=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;absolute&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Define&amp;nbsp;State&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:states&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:State&amp;nbsp;name=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;newButton&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:AddChild&amp;nbsp;relativeTo=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{h1}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;position=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;firstChild&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;buttonNew&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;New&amp;nbsp;Button&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:AddChild&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:State&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:states&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Apply&amp;nbsp;State&amp;nbsp;via&amp;nbsp;event&amp;nbsp;handler&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;b1&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Add&amp;nbsp;a&amp;nbsp;Button&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;click=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;currentState='newButton'&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;The transition from one state to another can be visually enhanced by the use of Transitions. Transitions consist of one or more effects grouped together to play when a state change occurs. Like the &lt;i&gt;states&lt;/i&gt; property of a component (control or container), the &lt;i&gt;transitions&lt;/i&gt; property is also inherited from the UIComponent class and is data-typed as an array of Transition objects.&lt;br /&gt;&lt;br /&gt;Each transition is triggered by a change in a component's state as defined in the &lt;i&gt;fromState&lt;/i&gt; and &lt;i&gt;toState&lt;/i&gt; properties of a Transition object. Valid values include:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;A state name&lt;/li&gt;&lt;br /&gt;&lt;li&gt;An empty string representing the base state&lt;/li&gt;&lt;br /&gt;&lt;li&gt;An asterisk (*) representing a wildcard matching ALL states&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;As previously mentioned, the purpose of a transition is to map one or more visual effects to one or more state changes.&lt;br /&gt;&lt;br /&gt;Effects come in a variety of flavors and as expected extend the Effect class. Effect types include mask effects (MaskEffect class), sound effects (SoundEffect class) and tween effects (TweenEffect class).&lt;br /&gt;&lt;br /&gt;Mask effects include:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Iris&lt;/li&gt;&lt;br /&gt;&lt;li&gt;WipeDown&lt;/li&gt;&lt;br /&gt;&lt;li&gt;WipeLeft&lt;/li&gt;&lt;br /&gt;&lt;li&gt;WipeRight&lt;/li&gt;&lt;br /&gt;&lt;li&gt;WipeUp&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;Tween effects include:&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Blur&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dissolve&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fade&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Glow&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Move&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pause&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Resize&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rotate&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Zoom&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;Sound effects allow you to play an MP3 in response to an event.&lt;br /&gt;&lt;br /&gt;Effects can be played in isolation, sequentially (one after another) or in parallel (at the same time). Multiple effects require the creation of a composite effect (CompositeEffect class). Variations of a composite effect may include sequential effects, parallel effects or a combination of both. In either scenario, the component to apply the effects must be defined (target component). &lt;br /&gt;&lt;br /&gt;Additional control of each effect is provided through the use of the effect properties. Effect properties include duration, alphaFrom, alphaTo, etc. The details of each effect can be found at the &lt;a href="http://livedocs.adobe.com/flex/3/langref/" target="_blank"&gt;Adobe Flex 3 Language Reference&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The following example demonstrates the use of a state transition:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:transitions&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Transition&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myTransition&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;fromState=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;*&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;toState=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Advanced&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Parallel&amp;nbsp;target=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{myVBox}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:WipeDown&amp;nbsp;duration=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;2000&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Dissolve&amp;nbsp;alphaFrom=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;0.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;alphaTo=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1.0&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;duration=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;2000&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Parallel&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Transition&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Transition&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;yourTransition&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;fromState=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Advanced&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;toState=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;*&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Sequence&amp;nbsp;target=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{myButton}&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Zoom&amp;nbsp;duration=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1000&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;zoomHeightTo=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;.9&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;zoomWidthTo=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;.9&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Zoom&amp;nbsp;duration=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1000&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;zoomHeightTo=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;zoomWidthTo=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;1&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Sequence&amp;nbsp;&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:Transition&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;/mx:transitions&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Note that the use of an effect is not limited to a state transition. Effects can be applied to components in the following manner to create behaviors:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Define&amp;nbsp;Effect&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Zoom&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;shrink&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;duration=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;100&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;zoomHeightTo=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;.9&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;zoomWidthTo=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;.9&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#ffffff"&gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;!--&amp;nbsp;Apply&amp;nbsp;Behavior&amp;nbsp;--&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myButton&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Resize&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;mouseDownEffect=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;{shrink}&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;In the previous example, an effect was registered with a trigger (mouseDownEffect) creating a behavior.  Trigger + effect = behavior.&lt;br /&gt;&lt;br /&gt;As always, the implementation of these Flex features can be achieved via MXML or ActionScript. The decision is yours.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-5709617644053726363?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/5709617644053726363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=5709617644053726363' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/5709617644053726363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/5709617644053726363'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2008/08/flex-basics-ui-state-transitions.html' title='Flex Basics - UI State Transitions'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-4451160511480632910</id><published>2008-07-16T13:56:00.001-06:00</published><updated>2009-10-09T11:58:50.773-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Elements - CSS Explorer</title><content type='html'>Skinning and styling a Flex application may be necessary for a number of reasons. The most common reason being the need to satisfy branding requirements. In many instances, styling will be sufficient to establish a unique look and feel for your Flex application, however, we will take a look at both techniques.&lt;br /&gt;&lt;br /&gt;Visual components that extend the UIComponent class have skins. These visual components include buttons, layout containers, form controls, navigation elements, etc. Refer to the &lt;a href="http://livedocs.adobe.com/flex/3/langref/index.html" target="_blank"&gt;Flex 3 language reference&lt;/a&gt; for additional visual components that subclass the UIComponent class. &lt;br /&gt;&lt;br /&gt;A skin represents the visual appearance of a component's state. Many components have only one state while others have many states. Each state has a unique skin. For example, a button component has 8 states (up, over, down, disabled, selected up, selected over, selected down, selected disabled). Each button state has a skin referenced by skin name: upSkin, overSkin, downSkin, disabledSkin, selectedUpSkin, selectedOverSkin, selectedDownSkin, selectedDisabledSkin. &lt;br /&gt;&lt;br /&gt;Each component's state has a default skin. The look and feel of your Flex application's default skins is dictated by the application theme. The default theme, Halo, is a combination of skins and style properties. Additional themes included in the Flex 3 SDK include Aeon Graphical, HaloClassic, Ice, Institutional, Smoke and Wooden.&lt;br /&gt;&lt;br /&gt;More about &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=styles_12.html" target="_blank"&gt;included application themes&lt;/a&gt; can be found at the Adobe Help Resource Center. To modify the theme color of the default theme (Halo) utilize the themeColor attribute of the Application tag. Valid values include haloOrange, haloBlue, haloSilver, haloGreen as well as valid hexadecimal values (i.e. #FF000). The default theme color is haloBlue.&lt;br /&gt;&lt;br /&gt;Custom skins can be applied to components in one of 2 ways:&lt;br /&gt;&lt;br /&gt;- graphically&lt;br /&gt;- programatically&lt;br /&gt;&lt;br /&gt;Graphical skinning is the most common technique and involves associating an image or SWF with a component's skin. This association can be achieved inline via an MXML attribute or through the use of a style declaration (either embedded in an MXML Script tag or referenced externally in a CSS stylesheet).&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00000807.html" target="_blank"&gt;&lt;br /&gt;Programmatic skinning&lt;/a&gt; requires the use of ActionScript and typically requires a developer to create a new class or extend an existing class. If you are comfortable with ActionScript and writing ActionScript classes, you may find programmatic skinning a better approach. The benefits include increased control over component styles and reduced memory usage.&lt;br /&gt;&lt;br /&gt;In addition to skins, components have a wide range of style properties that contribute to their look and feel. Unlike a skin, these style properties are not correlated with a component's state but rather persist across all states of a component. Style properties are defined at the component level in one of 4 ways:&lt;br /&gt;&lt;br /&gt;1. Inline MXML&lt;br /&gt;2. Embedded Script tag&lt;br /&gt;3. External CSS Stylesheet&lt;br /&gt;4. SetStyle() method&lt;br /&gt;&lt;br /&gt;Flex Builder 3's CSS Explorer provides the tools necessary to skin and style components. With both a Design mode and a Source mode, the CSS Explorer facilitates rapid skinning and styling.&lt;br /&gt;&lt;br /&gt;As implied by the name, the CSS Explorer allows a developer to create or modify CSS files. Those familiar with the &lt;a href="http://examples.adobe.com/flex2/consulting/styleexplorer/Flex2StyleExplorer.html" target="_blank"&gt;Flex Style Explorer&lt;/a&gt; have experience with CSS editing for Flex using a WYSIWYG editor. The CSS Explorer is very similar with the added benefit of the ability to create or edit component skins.&lt;br /&gt;&lt;br /&gt;Creating a CSS stylesheet requires nothing more than selecting a component in CSS Explorer, applying the necessary styles, saving the generated CSS and recompiling your Flex application. The process of applying styles is as follows:&lt;br /&gt;&lt;br /&gt;1. Create a CSS file&lt;br /&gt;2. Open the CSS file in Flex Builder 3 (this will launch CSS Explorer)&lt;br /&gt;3. Click on the 'New Style' button&lt;br /&gt;4. Select the component type&lt;br /&gt;5. Modify the component style properties in Design mode (Flex Properties view)&lt;br /&gt;6. View the generated CSS in Source mode&lt;br /&gt;7. Save the CSS file&lt;br /&gt;&lt;br /&gt;In addition to styles, Flex developers can apply skins to a component. The process of creating a skin is as follows:&lt;br /&gt;&lt;br /&gt;1. Create a CSS file&lt;br /&gt;2. Open the CSS file in Flex Builder 3 (this will launch CSS Explorer)&lt;br /&gt;3. Click on the 'New Style' button&lt;br /&gt;4. Select the component type&lt;br /&gt;5. Press the 'Skin' button in Design mode (Flex Properties view)&lt;br /&gt;6. Enter the type of skin (image or SWF)&lt;br /&gt;7. Choose the location of the image or SWF for each applicable component state&lt;br /&gt;8. Refresh Flex Builder to display the changes to your skin(s)&lt;br /&gt;9. Edit the &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_17.html" target="_blank"&gt;scale grid&lt;/a&gt; to prevent distortion of you skin, if necessary&lt;br /&gt;10. View the generated CSS in Source mode&lt;br /&gt;11. Save the CSS file&lt;br /&gt;&lt;br /&gt;Once your skins and / or styles have been defined in your CSS file, simply add a tag similar to the following into your Flex application.&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Script&amp;nbsp;source=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;styles.css&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Now your new look and feel will be applied to your Flex application at compile time. &lt;br /&gt;&lt;br /&gt;To dynamically alter your Flex application's look and feel at runtime, review Ted Patrick's entry on &lt;a href="http://www.onflex.org/ted/2007/01/flex-201-understand-runtime-css.php" target="_blank"&gt;runtime CSS&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-4451160511480632910?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/4451160511480632910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=4451160511480632910' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/4451160511480632910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/4451160511480632910'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2008/07/flex-elements-css-explorer.html' title='Flex Elements - CSS Explorer'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-9448630284169273</id><published>2008-06-23T13:27:00.000-06:00</published><updated>2009-04-14T08:26:43.210-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex builder'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Elements - Application Debugger</title><content type='html'>A familiar activity to all developers involves the undesirable but necessary task of application debugging. Fortunately, Flex Builder provides the tools necessary to easily inspect your code and pinpoint logical or potentially fatal run-time errors.&lt;br /&gt;&lt;br /&gt;Successful debugging hinges on the debugging skills of the developer and the debugging tools available to the developer. The former can be acquired only through experience and education while the latter is both a product of the development platform and the community and / or corporate tooling support. &lt;br /&gt;&lt;br /&gt;Common debugging techniques include tracing (or printing), breakpoint debugging, step-through debugging and watch expressions. Each of these debugging techniques is supported by Flex Builder.&lt;br /&gt;&lt;br /&gt;The Flex Builder Debugging perspective contains a code editor and a set of views designed to aid Flex developers in the debugging process. Flex Builder debugging views include Debug view, Console view, Variables view, Breakpoints view and Expressions view.&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin-bottom:0px;"&gt;Flex Builder Debug View&lt;/h3&gt;Outlines the application call stack. Each function is displayed in order of execution (with the bottom of the list being the first function called). The Debug view serves as the control center of the Flex debugger. It allows a developer to start / stop application execution and step over lines of code and step into and out of functions.&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin-bottom:0px;"&gt;Flex Builder Console View&lt;/h3&gt;Outputs the results of any trace statements added to your code. Also known as "poor man debugging", trace statements are synonymous with print statements or alert statements. Most developers are very familiar with this debugging technique.&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin-bottom:0px;"&gt;Flex Builder Variables View&lt;/h3&gt;Displays variables (simple and complex), their value and data type. By selecting a function in the Debug view, you can inspect the current value of the function's local variables (variables limited in scope to the selected function). Variables outside of the function's scope are also available in the Variables view and are labeled as 'This'.  Variable values are also configurable allowing developers to test alternate scenarios in hope of obtaining the desired outcome.&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin-bottom:0px;"&gt;Flex Builder Breakpoints View&lt;/h3&gt;Displays a list of application breakpoints. Breakpoints allow developers to inspect the state of an application during execution. Breakpoints can be enabled, disabled or removed in the Breakpoints view.&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin-bottom:0px;"&gt;Flex Builder Expressions View&lt;/h3&gt;Allows developers to "watch" specific variables through the life cycle of an application. Variables can be added to the Expressions view by selecting 'Create Watch Expression' in the Variables view for a specific variable.&lt;br /&gt;&lt;br /&gt;A Debug session is initiated by clicking the Debug icon found on the Flex Builder toolbar and (by default) runs against the HTML wrapper of a Flex application. Therefore, a debug session requires the use of a web browser. (Change the default web browser by selecting Window &amp;gt; Preferences, then General &amp;gt; Web Browser.) Once a breakpoint is encountered, execution is halted and focus is returned to Flex Builder. At this point a developer can analyze the state of the application and make any necessary changes. Changes may include code changes in the code editor, variable changes in the Variables view, adding new breakpoints, etc. Execution is resumed by clicking 'Continue' in the Debug view. When another breakpoint is encountered, execution is halted once again. In the interim, developers may choose to step over each line of code, step into or out of a function. As this is done, variable values change accordingly. This process continues until the application has run its course or the developer terminates the Debug session.&lt;br /&gt;&lt;br /&gt;The Flex debugger is not intended to highlight syntax or data type errors. ActionScript is a compiled language (versus interpreted) and those errors are caught by the compiler at compile time. Rather, the Flex debugger provides valuable insight into a Flex application. Debugging is part of the development process and application transparency is necessary to attain project success. The Flex Builder Application Debugger is a vital part of a successful development life cycle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-9448630284169273?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/9448630284169273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=9448630284169273' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/9448630284169273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/9448630284169273'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2008/06/flex-elements-application-debugger.html' title='Flex Elements - Application Debugger'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-1451218706227897426</id><published>2008-06-14T15:14:00.000-06:00</published><updated>2009-04-14T08:26:43.210-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex builder'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Elements - Flex Builder</title><content type='html'>A Flex application is the result of one or more &lt;a href="http://www.flexdevelopers.com/2008/05/learning-flex-mxml.html"&gt;MXML&lt;/a&gt; and / or &lt;a href="http://www.flexdevelopers.com/2008/06/flex-elements-actionscript.html"&gt;ActionScript&lt;/a&gt; files compiled into a SWF and delivered via HTTP to the client's browser. The Flex SDK  provides everything you need to create Flex applications and is available at no cost to you. Armed with a text editor and the Flex SDK, developers can create simple to complex Flex applications.&lt;br /&gt;&lt;br /&gt;The process includes the following steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.adobe.com/products/flex/overview/#section-3" target="_blank"&gt;Download&lt;/a&gt; the Flex SDK&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create a text file with a .MXML extension to serve as your application root file&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create one or more files with a .MXML extension to dictate your application structure and layout&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create one or more files with a .AS extension to encompass your application functionality&lt;/li&gt;&lt;br /&gt;&lt;li&gt;From a command line, launch the Flex compiler to convert your MXML and ActionScript files into a published SWF file&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;More detailed instructions on &lt;a href="http://www.adobe.com/devnet/flex/quickstart/coding_with_mxml_and_actionscript/" target="_blank"&gt;command line Flex development&lt;/a&gt; can be found at &lt;a href="http://www.adobe.com/devnet/flex/" target="_blank"&gt;Adobe - Flex Developer Center&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Another more practical option available to Flex developers includes the use of Adobe's Flex Builder. Flex Builder is a fully-functional IDE (Integrated Development Environment) available as a plugin for the &lt;a href="http://www.eclipse.org/" target="_blank"&gt;Eclipse&lt;/a&gt; open-source platform. A stand-alone version of Flex Builder is also available and includes a customized distribution of Eclipse coupled with the Flex Builder plugin.&lt;br /&gt;&lt;br /&gt;Priced from $250, &lt;a href="http://www.adobe.com/products/flex/" target="_blank"&gt;Flex Builder 3&lt;/a&gt; provides a host of features designed to improve developer productivity and application quality. Features include:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Coding tools (syntax coloring, code completion, code collapse, code refactoring)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Debugging tools (step-through debugger)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;WYSIWYG design tools (prebuilt UI components, drag-and-drop layout manager, application transitions (view states), component property inspector)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Styling / skinning tools (CSS design manager, skin manipulation)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Charting tools&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Testing tools&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Performance monitoring (profiling) tools&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;The Flex Builder IDE is organized into three perspectives:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Flex Development perspective&lt;/li&gt;&lt;li&gt;Flex Debugging perspective&lt;/li&gt;&lt;li&gt;Flex Profiling perspective&lt;/li&gt;&lt;/ol&gt;A Flex Builder perspective is a collection of views and editors utilized to perform a group of related tasks (i.e. development tasks, debugging tasks &amp;amp; performance monitoring (profiling) tasks).&lt;br /&gt;&lt;br /&gt;Editors are provided for MXML, ActionScript &amp;amp; CSS code authoring and editing. The MXML &amp;amp; CSS editors operate in two modes -  source mode &amp;amp; design mode. The ActionScript editor operates in source mode only. Most developers feel comfortable working with the source code of an application, and therefore, spend a lot of time in source mode. Certain tasks (i.e. web service consumption) require the use of Flex Builder's source mode while other tasks encourage the use of Flex Builder's design mode (i.e. UI layout). However, in many cases the choice is a matter of preference as many tasks can be accomplished in either mode (i.e. UI controls instantiation).&lt;br /&gt;&lt;br /&gt;Views encapsulate related functionality required of productive developers. Examples include the ability to visually navigate your application hierarchy (Outline View), display properties for a selected element (Flex Properties View), instantiate containers and controls on-the-fly (Components View), or define application states (States View). Views are also used to organize attributes of a Flex application (i.e. problems, breakpoints, variables, expressions, etc.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flexdevelopers.com/uploaded_images/fd_perspective-790399.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.flexdevelopers.com/uploaded_images/fd_perspective-790389.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As an Eclipse plugin, Flex Builder integrates seamlessly with other complimentary development tools including &lt;a href="http://subclipse.tigris.org/" target="_blank"&gt;Subversion&lt;/a&gt; and CVS (source control), ANT (automated build tool), FTP (file transfer), unit testing and more.&lt;br /&gt;&lt;br /&gt;With Eclipse and Flex Builder 3, developers have the tools necessary to build high quality, robust business applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-1451218706227897426?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/1451218706227897426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=1451218706227897426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/1451218706227897426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/1451218706227897426'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2008/06/flex-elements-flex-builder.html' title='Flex Elements - Flex Builder'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-4333575082437619217</id><published>2008-06-07T14:12:00.000-06:00</published><updated>2009-04-14T08:26:43.210-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Elements - ActionScript</title><content type='html'>The backbone of the Flex Framework is ActionScript 3.0. An object-oriented scripting language based on the ECMAScript standard, ActionScript defines all of the structure / layout and most of the behavior of your Flex application. (CSS is responsible for the formatting / style and a host of server-side scripting languages (ColdFusion, PHP, JSP, .NET, etc) may contribute to your application's behavior.)&lt;br /&gt;&lt;br /&gt;The Flex Framework (or SDK) ships with a &lt;a href="http://livedocs.adobe.com/flex/3/langref/index.html" target="blank"&gt;library of prebuilt ActionScript classes&lt;/a&gt;. These prebuilt classes are organized into packages. A package is a mechanism for organizing ActionScript classes. Each package provides two important benefits:&lt;br /&gt;&lt;br /&gt;1. A logical grouping of related functionality. For example, the package labeled mx.controls.listClasses contains the classes responsible for providing list-based control functionality.&lt;br /&gt;&lt;br /&gt;2. A &lt;a href="http://en.wikipedia.org/wiki/Namespace_%28computer_science%29" target="_blank"&gt;namespace&lt;/a&gt; for an ActionScript class. Without packages, every class name would have to be unique to avoid ambiguity. If every class name must be unique, a developer must know the name of every prebuilt class to avoid naming conflicts when creating custom classes. With packages, a developer is free to name custom classes as he / she likes as long as the name is unique to the package (namespace).&lt;br /&gt;&lt;br /&gt;In most cases your use of prebuilt ActionScript classes will be limited to those found in the mx top level package (i.e. mx.charts.effects or mx.controls.menuClasses). These classes (mx) are specific to Flex applications. However, you'll find that since Flex is a subset of Flash, the ActionScript classes found in the 'flash' top level package can also be leveraged in your Flex application (i.e. flash.net.URLLoader).&lt;br /&gt;&lt;br /&gt;If you have any experience with JavaScript, you'll find ActionScript to be pleasantly familiar. After all, JavaScript and ActionScript are based on the same standard, ECMAScript. Outside of using MXML tags (&lt;a href="http://www.flexdevelopers.com/2008/05/learning-flex-mxml.html"&gt;an abstraction layer for ActionScript&lt;/a&gt;), the following techniques are used to include ActionScript into a Flex application:&lt;br /&gt;&lt;br /&gt;1. Inline ActionScript – typically limited to property assignment or method calls triggered by an event rather than complex business logic, ActionScript can live within an MXML &lt;a href="http://www.w3schools.com/Xml/xml_attributes.asp" target="_blank"&gt;attribute&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt;&amp;lt;mx:Button id="myButton" click="eventHandler()" /&amp;gt;&lt;/pre&gt;2. Nested ActionScript – The &lt;a href="http://www.w3schools.com/dom/dom_nodes.asp" target="_blank"&gt;text node&lt;/a&gt; of an MXML element may contain ActionScript. To avoid the parsing of ActionScript in the text node as XML, place the ActionScript within a &lt;a href="http://www.w3schools.com/XML/xml_cdata.asp" target="_blank"&gt;CDATA block&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt;&amp;lt;mx:Button label="click me"&amp;gt;&lt;br /&gt; &amp;lt;mx:click&amp;gt;&lt;br /&gt;   &amp;lt;![CDATA[&lt;br /&gt;     myFunction('hi there')&lt;br /&gt;   ]]&amp;gt;&lt;br /&gt; &amp;lt;/mx:click&amp;gt;&lt;br /&gt;&amp;lt;/mx:Button&amp;gt;&lt;br /&gt;&lt;/pre&gt;3. MXML Script Tags – As your ActionScript becomes more complex and verbose, an MXML Script tag may be warranted. Again, a CDATA block must be used to prevent parsing of ActionScript as XML.&lt;br /&gt;&lt;pre&gt;&amp;lt;mx:Script&amp;gt;&lt;br /&gt;  &amp;lt;![CDATA[&lt;br /&gt;    import mx.controls.Alert;&lt;br /&gt;&lt;br /&gt;    public function myFunction(message:String):void {&lt;br /&gt;      Alert.show(message);&lt;br /&gt;    }&lt;br /&gt;  ]]&amp;gt;&lt;br /&gt;&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&lt;/pre&gt;4. Adhering to object-oriented principles and guidelines often involves the creation of custom ActionScript classes for use in your Flex application. Custom classes are typically an extension of a prebuilt class and occupy their own file with an .AS extension. Like prebuilt classes, custom classes reside in a package. For custom classes, packages are synonymous with directories. Therefore, a custom class file (i.e. MyClass.as) found in wwwroot/com/flexdevelopers/view could be referenced from your Flex application as:&lt;br /&gt;&lt;pre&gt;com.flexdevelopers.view.MyClass&lt;/pre&gt;The property / methods of a prebuilt or custom class can be utilized by simply importing the class into your application for use:&lt;br /&gt;&lt;pre&gt;import com.flexdeveloper.view.MyClass&lt;br /&gt;&lt;br /&gt;var myObject:MyClass = new MyClass();&lt;br /&gt;var myVariable:String = myObject.myMethod();&lt;/pre&gt;or, by providing a fully-qualified class path in an ActionScript expression / statement:&lt;br /&gt;&lt;pre&gt;if (1==1) { com.flexdeveloper.view.MyClass.myStaticMethod(); }&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-4333575082437619217?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/4333575082437619217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=4333575082437619217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/4333575082437619217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/4333575082437619217'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2008/06/flex-elements-actionscript.html' title='Flex Elements - ActionScript'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-2345578552085988451</id><published>2008-05-31T15:47:00.000-06:00</published><updated>2009-10-09T11:56:03.377-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mxml'/><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex Elements - MXML</title><content type='html'>Arguably, one of the most important parts of the Flex SDK is the &lt;a href="http://livedocs.adobe.com/flex/201/langref/index.html"&gt;Flex Class Library&lt;/a&gt; (ActionScript classes categorized and organized into packages). Consisting of numerous ActionScript classes, the Flex Class Library provides a foundation for rapidly building Flex applications.&lt;br /&gt;&lt;br /&gt;Dubbed a convenience language, MXML provides developers access to the Flex Class Library through an easy-to-use, easy-to-learn, clean and concise syntax. MXML is simply converted to ActionScript at compile time.&lt;br /&gt;&lt;br /&gt;As you may have guessed, MXML follows the convention of XML and, as such, follows the &lt;a href="http://www.w3schools.com/xml/xml_syntax.asp" target="_blank"&gt;basic syntactical rules of XML&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In many scenarios, using MXML in lieu of ActionScript is considered a best practice. The most popular scenario involves the authoring of application / component layout and structure.&lt;br /&gt;&lt;br /&gt;As mentioned earlier, the Flex Class Library is an extensive collection of prebuilt ActionScript classes available for use by your Flex applications. At a very high level, these ActionScript classes provide developers with the ability to accomplish the following:&lt;br /&gt;&lt;br /&gt;- Dictate application / component layout and structure&lt;br /&gt;- Style the application / component&lt;br /&gt;- Provide functionality&lt;br /&gt;- Access / parse data&lt;br /&gt;&lt;br /&gt;MXML provides an alternate method for Flex development which may be suitable for many scenarios (i.e. application / component layout and structure)&lt;br /&gt;&lt;br /&gt;Keep in mind that everything in Flex is derived from an ActionScript class. In other words, every aspect of your Flex application is defined by an instance of an ActionScript class (an object) or by the class itself (static methods, constants, etc). ActionScript is a human-readable, Object-Oriented Programming (OOP) language that when compiled by the Flex compiler is converted into native Flash bytecode and wrapped in a SWF file. This SWF file is ultimately loaded and played by Flash Player 9 embedded in &lt;a href="http://www.adobe.com/products/player_census/flashplayer/version_penetration.html" target="_blank"&gt;most&lt;/a&gt; browsers. Therefore, to build Flex applications, the developer is responsible for the creation and delivery of a collection of ActionScript classes (either prebuilt or custom) to the Flex compiler.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/devnet/flex/articles/flexprimer_02.html" target="_blank"&gt;MXML IS ActionScript&lt;/a&gt;. MXML is nothing more than an alternate approach to instantiating (creating an object / creating an instance of) a prebuilt or custom ActionScript class for use in a Flex application.&lt;br /&gt;&lt;br /&gt;Here is a line of MXML and its ActionScript equivalent.&lt;br /&gt;&lt;br /&gt;Creating an instance of the Button class using MXML:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myButton&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;label=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Hello&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Creating an instance of the Button class using ActionScript:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#6699cc"&gt;&lt;b&gt;var&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;myButton:Button&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#0033ff"&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Button&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;myButton.label&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;Hello&amp;#34;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;The MXML is more concise and cleaner in my opinion. In this example, the XML element name (Button) creates a reference variable (named myButton) with reference to a Button object. In MXML, XML attributes typically define the state of the object by setting properties (or instance variables) of the object. Not bad for one short line of code.&lt;br /&gt;&lt;br /&gt;Also, as MXML is XML, it makes sense for use in scenarios where parent / child relationships are commonly defined. Application / component layout and structure commonly defines parent / child relationships through use of nested containers and controls, and therefore, makes a great candidate for the use of the XML-based MXML.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-2345578552085988451?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/2345578552085988451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=2345578552085988451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/2345578552085988451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/2345578552085988451'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2008/05/learning-flex-mxml.html' title='Flex Elements - MXML'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3919727606984245735.post-8401985751103930919</id><published>2008-05-26T13:48:00.000-06:00</published><updated>2009-10-09T11:53:12.334-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Jeremy Mitchell'/><title type='text'>Flex - Overview</title><content type='html'>Flex is a collection of resources packaged into an SDK (software development kit consisting of the Flex class library (ActionScript classes), the Flex compilers, the debugger, the MXML and ActionScript programming languages, and other utilities) provided by Adobe for use in building expressive and interactive rich internet applications (RIA). By leveraging the Flex SDK and Flex Builder (an Eclipse plugin), developers can create feature-rich, web-based and cross-browser compatible (thanks to Flash Player) applications.&lt;br /&gt;&lt;br /&gt;Most applications of any merit consist of client-side functionality and server-side functionality. Traditional web applications utilize Javascript on the client side and a host of scripting languages (ColdFusion, PHP, JSP, .NET, etc) on the server side. Flex applications follow the same model. In fact, the Flex portion of an application (delivered as a SWF file) closely resembles the HTML / Javascript portion of a traditional web application. Flex takes care of the user interface (UI) or the client-side functionality of a web application. Server-side functionality (database interaction, for example) is still dependent on server-side components written in a traditional scripting language (ColdFusion, PHP, JSP, .NET, etc). However, you'll notice that many functions typically handled on the server (i.e. web service consumption) are now handled in the client thanks to Flex.&lt;br /&gt;&lt;br /&gt;Web applications that depend too heavily on the server have a negative impact on user experience - specifically applications that require a full-page refresh to interact with the server. As the technology has become available, web applications are shifting a significant amount of work from the server to the client. The result is a highly responsive application providing instant user feedback which results in happier users. Flex-based applications and AJAX-based applications are leading the way.&lt;br /&gt;&lt;br /&gt;As developers, one of our goals is to create the files that compose an application. As a whole, these files dictate the layout, structure, style and business logic of an application. In Flex, these files consist primarily of MXML files and ActionScript files (although CSS files play their typical role as stylesheets and Javascript is also available to your Flex app for additional client-side functionality, if necessary).&lt;br /&gt;&lt;br /&gt;Best practices suggest the seperation of layout (or structure), style and business logic when developing web-based applications. The same holds true for Flex apps.&lt;br /&gt;&lt;br /&gt;A properly-defined Flex app might look like the following*:&lt;br /&gt;&lt;br /&gt;- Layout / structure: MXML files and/or ActionScript files&lt;br /&gt;- Style: CSS files&lt;br /&gt;- Client-side business logic: ActionScript files&lt;br /&gt;&lt;br /&gt;However, there are exceptions to every rule, and many scenarios justify the use of inline ActionScript inside MXML (layout/structure) files. Similar to the use of inline Javascript inside HTML files, inline ActionScript can be used to provide client-side functionality such as event handling (event handlers) and data binding. However, it is probably best to limit your use of inline ActionScript to simple statements such as method calls or property assignment rather than complex logic. For example:&lt;br /&gt;&lt;br /&gt;&lt;div align="left" class="code"&gt;&lt;table border="0" cellpadding="3" cellspacing="0"&gt;   &lt;tr&gt;   &lt;td nowrap="nowrap" valign="top" align="left"&gt;    &lt;code&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myButton&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;click=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myObject.myFunction()&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;br/&gt;&lt;font color="#000000"&gt;&amp;lt;mx:Button&amp;nbsp;id=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;myButton&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;click=&lt;/font&gt;&lt;font color="#990000"&gt;&lt;b&gt;&amp;#34;currentState='myState'&amp;#34;&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;/&amp;gt;&lt;/font&gt;&lt;/code&gt;       &lt;/td&gt;   &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;In the first example, a click event dispatched by the myButton instance of the Button class triggers a call to the myFunction method of the myObject instance. In other words, when you click myButton, myFunction is called. The MXML only maps the event to the method. The body of the method may be stored in a separate AS file and, therefore, business logic is successfully separated from layout / structure.&lt;br /&gt;&lt;br /&gt;In the second example, a click event dispatched from myButton triggers a simple property assignment (currentState) required to alter the layout / structure using application states. Since this ActionScript statement impacts the layout / structure of the application, one could argue that it's place belongs in the MXML file used to define layout / structure.&lt;br /&gt;&lt;br /&gt;When our development is complete, the Flex compiler that ships with Flex Builder generates one or more SWF files based on our MXML files and Actionscript files.&lt;br /&gt;&lt;br /&gt;MXML + AS = SWF&lt;br /&gt;&lt;br /&gt;Deploying a Flex application involves the delivery of the SWF file(s) plus an HTML wrapper, the CSS file(s) and any server-side script files (i.e. .CFM, .PHP, etc) to the server. Like traditional web applications, these resources are delivered from the server to the client browser using the customary HTTP request / response fashion.&lt;br /&gt;&lt;br /&gt;Check out the &lt;a href="http://learn.adobe.com/wiki/display/Flex/Animated+overview" target="_blank"&gt;animated overview&lt;/a&gt; of the Flex development life cycle for a nifty visual of the process.&lt;br /&gt;&lt;br /&gt;*Don't forget a complete application usually requires server-side functionality (i.e. database interaction) implemented in the form of server-side scripts (ColdFusion, PHP, JSP, .NET, etc.).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3919727606984245735-8401985751103930919?l=blog.flexdevelopers.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/8401985751103930919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3919727606984245735&amp;postID=8401985751103930919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/8401985751103930919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3919727606984245735/posts/default/8401985751103930919'/><link rel='alternate' type='text/html' href='http://blog.flexdevelopers.com/2008/05/learning-flex-getting-started.html' title='Flex - Overview'/><author><name>Jeremy Mitchell</name><uri>http://www.blogger.com/profile/03959259137206444646</uri><email>jeremy@flexdevelopers.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='00465442113146139610'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>