<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1179039755546714762</id><updated>2012-01-28T02:06:19.275-08:00</updated><category term='Mobile'/><category term='ADOBE FLEx PUSH flex data services'/><category term='Filter function flex'/><category term='FLex Spring tomcat eclipse Dependency injection'/><category term='FLex enterprise capabilities'/><category term='WEB 2'/><category term='Events Flex Bubbling capture Target'/><category term='Flex blazeds tomcat eclipse'/><category term='flex design pattern MVC'/><category term='Flex interviews'/><category term='Adobe Flex Validators mxml actionscript'/><category term='flex builder java'/><category term='Short message service'/><category term='Adobe air run system process outlook'/><category term='reusable itemrenderer flex'/><category term='Flex TabNavigator'/><category term='flex blazeds tomcat eclipse deploy'/><category term='Flex ria security'/><category term='Sort datagrid flex string'/><category term='Mobile phone'/><category term='Adobe Flex Binding'/><category term='Flex object test type'/><category term='itemrenderer communication'/><category term='SEO ADOBE FLEX SEARCH ENGINE OPTIMIZATION'/><category term='ItemEditors datagrid Numeric stepper combobox'/><category term='MObile SMS free GPRS'/><category term='datagrid headers'/><category term='GAIM MEEBO MESSENGER'/><category term='Flex ArrayCollection'/><title type='text'>A BRAND NEW WORLD</title><subtitle type='html'>Flex,JAVA,LCDS,BLAZEDS.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-4121192903032174987</id><published>2010-01-16T06:40:00.000-08:00</published><updated>2010-01-16T06:43:01.609-08:00</updated><title type='text'>Whats up with me?</title><content type='html'>Its been a long time since I have blogged here and a lot of things have happened in between.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From breaking my knee to a painful surgery to a new job to an accident to a new place to live , Life is surely bashing me up!! This post is just to let know that I will be blogging regularly from now on. Like atleast once a week.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt; &lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-4121192903032174987?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/4121192903032174987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=4121192903032174987' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4121192903032174987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4121192903032174987'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2010/01/whats-up-with-me.html' title='Whats up with me?'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-1152641800581219789</id><published>2009-07-08T04:55:00.000-07:00</published><updated>2009-07-08T23:39:18.699-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='itemrenderer communication'/><title type='text'>Communication between itemrenderers</title><content type='html'>&lt;!-- AddThis Button BEGIN --&gt;ItemRenderers has always been my favourite feature in flex. In one of the tasks I took on, I had to communicate between  item renderers to achieve the desired result.&lt;br /&gt;&lt;br /&gt;As usual, flex's event architecture was there to aid me achieve this task.&lt;br /&gt;&lt;br /&gt;So here is the flow&lt;br /&gt;&lt;br /&gt;1.Dispatch an event with bubbles set to true when some user action is performed in the source item renderer or in caase of an inline item renderer call a method using outerDocument like this.&lt;br /&gt;outerDocument.handleFirstColumnChange(data);&lt;br /&gt;&lt;br /&gt;2.Have a listener attached to the event dispatched by the&lt;span style="font-weight: bold;"&gt; source  renderer&lt;/span&gt; on the parent.Now the parent should re-dispatch the event on the datagrid like&lt;br /&gt;datagrid.dispatcEvent(new Event("itemchangeonfirstcolumn"),data.id));&lt;br /&gt;Note:I am passing the id along with this event so that the &lt;span style="font-weight: bold;"&gt;target itemrenderers&lt;/span&gt; can figure out if they are intended to react or not.&lt;br /&gt;&lt;br /&gt;3.Add  a listener on the target itemrenderer and on the handler you can do whatever the target is supposed to do.&lt;br /&gt;&lt;br /&gt;Here is a simple example  The case is that one itemrenderer has to change itself based on a selection done on the other item renderer.&lt;br /&gt;&lt;br /&gt;Right clik-&gt;viewsource for full source code of the example.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.wichor.com/MyTester1.swf" width="400" height="400"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" alt="Bookmark and Share" border="0" width="125" height="16" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;&lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-1152641800581219789?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/1152641800581219789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=1152641800581219789' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1152641800581219789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1152641800581219789'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2009/07/communication-between-itemrenderers.html' title='Communication between itemrenderers'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-673595646784125997</id><published>2009-04-03T04:03:00.000-07:00</published><updated>2009-04-03T04:17:49.264-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='datagrid headers'/><title type='text'>Changing the headers of dataGrid dynamically</title><content type='html'>&lt;!-- AddThis Button BEGIN --&gt;In a recent project I was working on, I came across a situation where I will know the header text for the columns at run time, pulled from a xml document.&lt;br /&gt;&lt;br /&gt;And here is how I did it.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;   private function setHeaderTexts():void {&lt;br /&gt;    var i:Number = 0;&lt;br /&gt;    var columns:ArrayCollection =new ArrayCollection(datagrid.columns);&lt;br /&gt;    for each (var column:DataGridColumn in columns) {&lt;br /&gt;     column.headerText = tempArrayCollection.getItemAt(i).toString();&lt;br /&gt;     //tempArrayCollection is where I store the list of headers from the XML&lt;br /&gt;     i++;&lt;br /&gt;    }&lt;br /&gt;    datagrid.invalidateDisplayList();&lt;br /&gt;   }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Hope it helps!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" alt="Bookmark and Share" border="0" width="125" height="16" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;&lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-673595646784125997?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/673595646784125997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=673595646784125997' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/673595646784125997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/673595646784125997'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2009/04/changing-headers-of-datagrid.html' title='Changing the headers of dataGrid dynamically'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-7625669134752664305</id><published>2009-04-01T22:38:00.000-07:00</published><updated>2009-04-01T23:00:00.239-07:00</updated><title type='text'>Refresh tileList on DataChange</title><content type='html'>&lt;!-- AddThis Button BEGIN --&gt;I happened to come across an issue with tileLists that use a custom itemRenderer.&lt;br /&gt;&lt;br /&gt;The problem is that when I change the data provider, the items in the tileList do not redraw appropriately.&lt;br /&gt;&lt;br /&gt;After some time spent in digging into this, I found out that for some reason the dataChange event in the itemrenderer is not triggered automatically when the data provider changes.&lt;br /&gt;&lt;br /&gt;Note:DataChange event is triggered internally for dataGrids which are bound to a dataProvider, so we wont even notice it,but that is not the case for a tileList.&lt;br /&gt;&lt;br /&gt;The event is triggered only when we call tileList.invalidateList().&lt;br /&gt;&lt;br /&gt;So here is what I did.&lt;span style="font-style: italic;"&gt; Call tileList.invalidateList() every time I change the dataProvider and handle the dataChange event in the itemRenderer and reset the UIControl's properties whatever it may be.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is what the view does.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"&amp;gt;&lt;br /&gt;&amp;lt;mx:Script&amp;gt;&lt;br /&gt; &amp;lt;![CDATA[&lt;br /&gt;  import mx.collections.ArrayCollection;&lt;br /&gt; &lt;br /&gt;  [Bindable]&lt;br /&gt;  private var dataP:ArrayCollection = new ArrayCollection(&lt;br /&gt;              [{isMarried:true, isAnimal:true,name:"Montgomery"},&lt;br /&gt;              {isMarried:false, isAnimal:true,name:"Juneau"},&lt;br /&gt;              {isMarried:true, isAnimal:false,name:"Little Rock"},&lt;br /&gt;              {isMarried:true,isAnimal:true,name:"Ricky Martin"}]);&lt;br /&gt;            &lt;br /&gt;          private function changeFirstElement():void {&lt;br /&gt;           dataP.getItemAt(0).name = "changed";          &lt;br /&gt;           tileList.invalidateList();&lt;br /&gt;          }&lt;br /&gt;            &lt;br /&gt; ]]&amp;gt;&lt;br /&gt;&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:TileList itemRenderer="testItemRenderer" dataProvider="{dataP}"&lt;br /&gt;id="tileList"/&amp;gt;&lt;br /&gt;&amp;lt;mx:Button label="change first element" click="changeFirstElement();"/&amp;gt;&lt;br /&gt;&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;And here is what the itemRenderere does.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" &lt;span style="font-weight: bold;"&gt;dataChange="handleDataChange()"&lt;/span&gt;&lt;br /&gt;creationComplete="handleCreationComplete()"&amp;gt;&lt;br /&gt;&amp;lt;mx:Script&amp;gt;&lt;br /&gt;&amp;lt;![CDATA[&lt;br /&gt;[Bindable]&lt;br /&gt;private var theName:String=new String();&lt;br /&gt;&lt;br /&gt;private function handleCreationComplete():void {&lt;br /&gt; if (data != null &amp;amp;&amp;amp; data.hasOwnProperty("name")) {&lt;br /&gt;  theName =data.name;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;private function handleDataChange():void {&lt;br /&gt; if (data != null &amp;amp;&amp;amp; data.hasOwnProperty("name")) {&lt;br /&gt;  if (theLabel) {&lt;br /&gt;   theName = data.name;&lt;br /&gt;  }&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;]]&amp;gt;&lt;br /&gt;&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&amp;lt;mx:Label text="{theName}" id="theLabel"/&amp;gt;&lt;br /&gt;&amp;lt;/mx:Canvas&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Hope it helps!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" alt="Bookmark and Share" border="0" width="125" height="16" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;&lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-7625669134752664305?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/7625669134752664305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=7625669134752664305' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/7625669134752664305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/7625669134752664305'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2009/04/refresh-tilelist-on-datachange.html' title='Refresh tileList on DataChange'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-4531158333992033772</id><published>2009-04-01T02:29:00.000-07:00</published><updated>2009-04-01T03:35:07.154-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reusable itemrenderer flex'/><title type='text'>Reuse ItemRenderers for Multiple columns</title><content type='html'>&lt;!-- AddThis Button BEGIN --&gt;When dealing with item renderers, one will come across all sorts of problems thrown at . One such case is "how to reuse the same itemrenderer"&lt;br /&gt;&lt;br /&gt;Picture this case. You have a custom itemrenderer,( imagine a check box within a canvas for now) that performs a specific task and you want to reuse it on multiple columns. But how will the itemrenderer know which field in the arrayCollection is to be used to render itself appropriately?&lt;br /&gt;&lt;br /&gt;Alright. Here is the trick.&lt;br /&gt;&lt;br /&gt;There is this interface called IDropInListItemRenderer which your itemrenderer will have to implement to get access to listData which can be typeCasted to DataGridListData. The listData variable will hold reference to the owner of the itemRenderer and the hierarchy upwards. Following is the list of steps one has to follow.&lt;br /&gt;&lt;br /&gt;1.Create the itemRenderer class that implements the IDropInListItemRenderer.&lt;br /&gt;&lt;br /&gt;2.Create an instance variable to buffer the listData , namely _listData.&lt;br /&gt;&lt;br /&gt;3.Override the set/get methods of the listData instance variable . In the setter, buffer the listData onto the instance variable&lt;br /&gt;&lt;br /&gt;Ex:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;private var _listData:DataGridListData;&lt;br /&gt;public function set listData(value:BaseListData):void&lt;br /&gt;    {&lt;br /&gt;        _listData = DataGridListData(value);       &lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note:The importance of this step is that the itemrenderer can use the _listData variable to find out the name of the dataField , using something like &lt;span style="font-weight: bold;"&gt;_listData.dataField&lt;/span&gt;. Once the name of the dataField is acquire, the value for that datfield can be acquired by using &lt;span style="font-weight: bold;"&gt;data[_listData.dataField]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4.Override the updateDisplyList() method to update the status of the checkBox based on the value of the dataField.&lt;br /&gt;&lt;br /&gt;Ex:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  override protected function updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void {&lt;br /&gt;&lt;br /&gt;   super.updateDisplayList(unscaledWidth,unscaledHeight);&lt;br /&gt;   _instanceCheckBox.selected = Boolean(data[_listData.dataField]);&lt;br /&gt;  }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;5. Create the datagrid and use the above created item renderer.&lt;br /&gt;Ex:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;mx:DataGridColumn dataField="isMarried" itemRenderer="sampleItemRenderer"/&amp;gt;&lt;br /&gt;&amp;lt;mx:DataGridColumn dataField="isAnimal" itemRenderer="sampleItemRenderer" /&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Following is the complete code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The view&lt;/span&gt;:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;// View&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"&amp;gt;&lt;br /&gt; &amp;lt;mx:Script&amp;gt;&lt;br /&gt;  &amp;lt;![CDATA[&lt;br /&gt;   import mx.collections.ArrayCollection;&lt;br /&gt;   [Bindable]&lt;br /&gt;   private var dataP:ArrayCollection = new ArrayCollection(&lt;br /&gt;               [{isMarried:true, isAnimal:true,name:"Montgomery"},&lt;br /&gt;               {isMarried:false, isAnimal:true,name:"Juneau"},&lt;br /&gt;               {isMarried:true, isAnimal:false,name:"Little Rock"},&lt;br /&gt;               {isMarried:true,isAnimal:true,name:"Ricky Martin"}]);&lt;br /&gt;  ]]&amp;gt;&lt;br /&gt; &amp;lt;/mx:Script&amp;gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt; &amp;lt;mx:DataGrid dataProvider="{dataP}"&amp;gt;&lt;br /&gt;  &amp;lt;mx:columns&amp;gt;&lt;br /&gt;   &amp;lt;mx:DataGridColumn dataField="isMarried" itemRenderer="sampleItemRenderer"/&amp;gt;&lt;br /&gt;   &amp;lt;mx:DataGridColumn dataField="isAnimal" itemRenderer="sampleItemRenderer" /&amp;gt;&lt;br /&gt;   &amp;lt;mx:DataGridColumn dataField="name"/&amp;gt;&lt;br /&gt;  &amp;lt;/mx:columns&amp;gt;&lt;br /&gt; &amp;lt;/mx:DataGrid&amp;gt;&lt;br /&gt;&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The itemRenderer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package&lt;br /&gt;{&lt;br /&gt; import mx.containers.Canvas;&lt;br /&gt; import mx.controls.CheckBox;&lt;br /&gt; import mx.controls.dataGridClasses.DataGridListData;&lt;br /&gt; import mx.controls.listClasses.BaseListData;&lt;br /&gt; import mx.controls.listClasses.IDropInListItemRenderer;&lt;br /&gt;&lt;br /&gt; public class sampleItemRenderer extends Canvas implements IDropInListItemRenderer&lt;br /&gt; {&lt;br /&gt;  private var _listData:DataGridListData;&lt;br /&gt;  private var _instanceCheckBox:CheckBox = new CheckBox();&lt;br /&gt;  private var _currentDataFieldName:String = new String();&lt;br /&gt;  public function sampleItemRenderer()&lt;br /&gt;  {&lt;br /&gt;   super();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public function get listData():BaseListData&lt;br /&gt;  {&lt;br /&gt;   return _listData;&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  public function set listData(value:BaseListData):void&lt;br /&gt;  {&lt;br /&gt;   _listData = DataGridListData(value);   &lt;br /&gt;  }&lt;br /&gt;  override protected function createChildren():void {&lt;br /&gt;   super.createChildren();&lt;br /&gt;   addChild(_instanceCheckBox);&lt;br /&gt;   &lt;br /&gt;  }&lt;br /&gt;  override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {&lt;br /&gt;   super.updateDisplayList(unscaledWidth,unscaledHeight);&lt;br /&gt;   _instanceCheckBox.selected = Boolean(data[_listData.dataField]);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Hope it helps!&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" alt="Bookmark and Share" border="0" width="125" height="16" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;&lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-4531158333992033772?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/4531158333992033772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=4531158333992033772' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4531158333992033772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4531158333992033772'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2009/04/reuse-itemrenderers-for-multiple.html' title='Reuse ItemRenderers for Multiple columns'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-5992402276383386428</id><published>2009-03-31T23:49:00.000-07:00</published><updated>2009-04-01T22:23:49.567-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Filter function flex'/><title type='text'>Filterfunctions .</title><content type='html'>&lt;!-- AddThis Button BEGIN --&gt;Here is a quick little post on how to use filter functions .&lt;br /&gt;&lt;br /&gt;The primary use of filterfunctions as it implies is to filter data on a data structure such as ArrayCollection which will in turn filter the data displayed on UI controls like datagrid,combobox.&lt;br /&gt;&lt;br /&gt;The filterfunction is called with each item in the arrayCollection as a paramter. Say you have n items in the arrayCollection, the filter function will be called n times with items 0...n passed in as a parameter. The items for which the call returns true are added to the visible list, while the rest are ignored.&lt;br /&gt;&lt;br /&gt;Lets jump in to the sample code.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"&amp;gt;&lt;br /&gt; &amp;lt;mx:Script&amp;gt;&lt;br /&gt;     &amp;lt;![CDATA[&lt;br /&gt;         import mx.collections.ArrayCollection;&lt;br /&gt;         [Bindable]&lt;br /&gt;         private var dataP:ArrayCollection = new ArrayCollection(&lt;br /&gt;             [{type:"1", data:"Montgomery",label:"Montgomery"},&lt;br /&gt;             {type:"2", data:"Juneau",label:"Juneau"},&lt;br /&gt;             {type:"1", data:"Little Rock",label:"Little Rock"},&lt;br /&gt;             {type:"2",data:"test 2",label:"test 2"}]);&lt;br /&gt;    &lt;br /&gt;         private function handleOptionSelect() :void {&lt;br /&gt;             if (selectionCombo.selectedItem.toString() == "ALL") {&lt;br /&gt;                 dataP.filterFunction = null;&lt;br /&gt;             } else {&lt;br /&gt;                 dataP.filterFunction = filterOnTypes;&lt;br /&gt;             }&lt;br /&gt;                 dataP.refresh();           &lt;br /&gt;         }&lt;br /&gt;    &lt;br /&gt;         private function filterOnTypes(item:Object):Boolean {&lt;br /&gt;             if (item.hasOwnProperty("type")) {&lt;br /&gt;                 if (item.type == selectionCombo.selectedItem.toString()) {&lt;br /&gt;                     return true;&lt;br /&gt;                 }&lt;br /&gt;             }&lt;br /&gt;             return false;&lt;br /&gt;         }&lt;br /&gt;            &lt;br /&gt;&lt;br /&gt;     ]]&amp;gt;&lt;br /&gt; &amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;mx:ComboBox change="handleOptionSelect()" id="selectionCombo"&amp;gt;&lt;br /&gt;     &amp;lt;mx:dataProvider&amp;gt;&lt;br /&gt;         &amp;lt;mx:ArrayCollection&amp;gt;&lt;br /&gt;             &amp;lt;mx:Object&amp;gt;ALL&amp;lt;/mx:Object&amp;gt;&lt;br /&gt;             &amp;lt;mx:Object&amp;gt;1&amp;lt;/mx:Object&amp;gt;&lt;br /&gt;             &amp;lt;mx:Object&amp;gt;2&amp;lt;/mx:Object&amp;gt;           &lt;br /&gt;         &amp;lt;/mx:ArrayCollection&amp;gt;&lt;br /&gt;     &amp;lt;/mx:dataProvider&amp;gt;&lt;br /&gt; &amp;lt;/mx:ComboBox&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;mx:DataGrid dataProvider="{dataP}"&amp;gt;&lt;br /&gt;     &amp;lt;mx:columns&amp;gt;&lt;br /&gt;         &amp;lt;mx:DataGridColumn dataField="type"/&amp;gt;&lt;br /&gt;         &amp;lt;mx:DataGridColumn dataField="data"/&amp;gt;&lt;br /&gt;     &amp;lt;/mx:columns&amp;gt;&lt;br /&gt; &amp;lt;/mx:DataGrid&amp;gt;&lt;br /&gt;&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note that the elements in the arrayCollection that do not match the filter criteria removed from the arrayCollection. You can restore the original data set by setting the filter function to null and calling the refresh method again.&lt;br /&gt;&lt;br /&gt;Wondering how the AVM knows the original set? it just stores the original data set in the "source" attribute of the arrayCollection.&lt;br /&gt;&lt;br /&gt;Hope it helps!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bookmark and Share&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" alt="Bookmark and Share" border="0" width="125" height="16" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;&lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-5992402276383386428?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/5992402276383386428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=5992402276383386428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/5992402276383386428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/5992402276383386428'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2009/03/filterfunctions.html' title='Filterfunctions .'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-4809659583879456107</id><published>2009-01-09T02:01:00.000-08:00</published><updated>2009-01-09T22:32:10.739-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ItemEditors datagrid Numeric stepper combobox'/><title type='text'>Complex editors on a datagrid</title><content type='html'>&lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=";font-family:Arial;" &gt;There are times when you want to have a data grid whose cells can have other complex controls like combobox , numeric stepper.To achieve this multi-entity ,entry form t, we use the inline itemEditor field of the datagrid component.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=";font-family:Arial;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=";font-family:Arial;" &gt;The key here is the &lt;b&gt;&lt;span style="font-weight: bold;"&gt;itemEditor&lt;/span&gt;&lt;/b&gt; property of the datagrid column to which you can specify a class ,aka editor or renderer(either flex built in or custom). Now how will flex know which property of the editor or renderer is the user input? . The &lt;b&gt;&lt;span style="font-weight: bold;"&gt;“&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=";font-family:Courier New;color:black;"  &gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;editorDataField”&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt; property specifies which property of the renderer is to be taken as the user input. &lt;b&gt;&lt;span style="font-weight: bold;"&gt;Example&lt;/span&gt;&lt;/b&gt;: value property of a numeric stepper, when numeric stepper is the itemEditor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;One very important thing to notice here is that the dataprovider is also synched with the values committed on the item renderers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;Here is an example that shows how to do this.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:Arial;font-size:100%;color:blue;"   &gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;![CDATA[&lt;br /&gt;&lt;br /&gt;private function showArrayCollection():void {&lt;br /&gt;&lt;br /&gt;resultText.htmlText="";&lt;br /&gt;&lt;br /&gt;for (var i:Number=0;i&amp;lt;stateArray.length;i++) {&lt;br /&gt;&lt;br /&gt;resultText.htmlText+="Name:"+stateArray.getItemAt(i).name;&lt;br /&gt;&lt;br /&gt;resultText.htmlText+=" Age:"+stateArray.getItemAt(i).age;&lt;br /&gt;&lt;br /&gt;resultText.htmlText+="&amp;lt;br&amp;gt;";&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;]]&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;&lt;br /&gt;The data provider for the datagrid.The age property will be synched with the user's input,&lt;br /&gt;&lt;br /&gt;when he selects it from the age property.&lt;br /&gt;&lt;br /&gt;!--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:ArrayCollection id="stateArray"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Object name="Amitha" age="25"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Object name="Priyanka" age="27"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Object name="Krups" age="45"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/mx:ArrayCollection&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:DataGrid x="531" y="82" editable="true" dataProvider="{stateArray}"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:columns&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:DataGridColumn headerText="Name" dataField="name" editable="false"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:DataGridColumn headerText="Age" dataField="age" editable="true"&lt;br /&gt;&lt;br /&gt;itemEditor="mx.controls.NumericStepper" editorDataField="value"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/mx:columns&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/mx:DataGrid&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Button label="show" click="showArrayCollection()"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/mx:Button&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:TextArea width="300" height="300" id="resultText"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/mx:TextArea&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:Arial;font-size:100%;color:blue;"   &gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:Arial;font-size:100%;color:blue;"   &gt;&lt;span style=";font-family:Arial;color:blue;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=";font-family:Arial;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=";font-family:Arial;" &gt;Hope it helps!!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=";font-family:Arial;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style=";font-family:Arial;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-4809659583879456107?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/4809659583879456107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=4809659583879456107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4809659583879456107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4809659583879456107'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2009/01/complex-editors-on-datagrid.html' title='Complex editors on a datagrid'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-5485027548301406539</id><published>2009-01-05T22:26:00.001-08:00</published><updated>2009-01-07T09:35:34.634-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Events Flex Bubbling capture Target'/><title type='text'>Events for DUMMIES</title><content type='html'>&lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;Accept it, we all have used events but never really got to know what goes behind the scenes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;So here in vivid little words, I try to throw some light on this.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;Here goes my “EVENTS for DUMMIES!”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;Flash Player 9 implements an event model based on the World Wide Web Consortium’s (W3C) specification&lt;o:p&gt;&lt;/o:p&gt; entitled Document Object Model Events available at http://www.w3.org/TR/DOM-Level-&lt;o:p&gt;&lt;/o:p&gt;3-Events/events.html. According to this document, the lifecycle of an event that deals with display&lt;o:p&gt;&lt;/o:p&gt; objects consists of three phases: capture, target, and bubbling.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;You have probably heard of these names but never got to know why three phases are used??&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;The reason is simple.W3C recommends so! J&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;• &lt;b&gt;&lt;span style="font-weight: bold;"&gt;Capture&lt;/span&gt;&lt;/b&gt;: During this phase, Flash Player makes a first pass to check every object from the root&lt;o:p&gt;&lt;/o:p&gt; of the display list to the target component to see if any parent component might be interested&lt;o:p&gt;&lt;/o:p&gt; in processing this event. By default, events are ignored by the parents of the target component&lt;o:p&gt;&lt;/o:p&gt; at the capture phase. Its like collecting who and all are interested in the a components events.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;span style="font-weight: bold;font-family:Arial;color:black;"  &gt;Ex:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;span style="font-weight: bold;font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;If component 1 has a code like component2.addEventListener(“eventname”,myfunction);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;Component 1 will be added to a list in this phase.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;• &lt;b&gt;&lt;span style="font-weight: bold;"&gt;Target&lt;/span&gt;&lt;/b&gt;: At this phase, event object properties are set for the target and all registered event&lt;o:p&gt;&lt;/o:p&gt; listeners for this target will get this event.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;Event.name and event.whatever is set now!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;• &lt;b&gt;&lt;span style="font-weight: bold;"&gt;Bubbling&lt;/span&gt;&lt;/b&gt;: Finally, the event flows back from the target component all the way up to the root&lt;o:p&gt;&lt;/o:p&gt; to notify all interested parties identified during the capture phase. Not all events have a bubbling&lt;o:p&gt;&lt;/o:p&gt; phase and you should consult the AS3 language reference for the events you’re interested&lt;o:p&gt;&lt;/o:p&gt; in.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;The three event phases described above don’t apply to the user-defined events because Flash Player&lt;o:p&gt;&lt;/o:p&gt; 9 doesn’t know about parent-child relations between user-defined event objects. But AS3 developers&lt;o:p&gt;&lt;/o:p&gt; can create custom event dispatchers, if they want to arrange event processing in three phases.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;Hope it helps!&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-5485027548301406539?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/5485027548301406539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=5485027548301406539' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/5485027548301406539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/5485027548301406539'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2009/01/events-for-dummies_05.html' title='Events for DUMMIES'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-1874863387911163732</id><published>2008-12-19T01:35:00.001-08:00</published><updated>2009-01-07T09:36:29.709-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sort datagrid flex string'/><title type='text'>Case insensitive SortCompare Function for Strings</title><content type='html'>&lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;Here is a quick post on how to use the sortCompare function to sort strings.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;Here goes the sample.Assuming your dataField is called status.This sortcomparefunction will function insensitive to the case of the strings.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-indent: 0.5in;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 51, 255);font-family:Arial;" &gt;&lt;span style="color: rgb(0, 51, 255); font-weight: bold;font-family:Arial;" &gt;private&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="color: rgb(51, 153, 102);font-family:Arial;" &gt;&lt;span style="color: rgb(51, 153, 102); font-weight: bold;font-family:Arial;" &gt;function&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt; statusSortCompareFunction(obj1:Object,obj2:Object):int {&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;                                                &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 51, 255);font-family:Arial;" &gt;&lt;span style="color: rgb(0, 51, 255); font-weight: bold;font-family:Arial;" &gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt; (!obj1.hasOwnProperty(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="color: rgb(153, 0, 0);font-family:Arial;" &gt;&lt;span style="color: rgb(153, 0, 0); font-weight: bold;font-family:Arial;" &gt;"status"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;)) {&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;              obj1.status = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 51, 255);font-family:Arial;" &gt;&lt;span style="color: rgb(0, 51, 255); font-weight: bold;font-family:Arial;" &gt;null&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;                                          }&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 51, 255);font-family:Arial;" &gt;&lt;span style="color: rgb(0, 51, 255); font-weight: bold;font-family:Arial;" &gt;if&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt; (!obj2.hasOwnProperty(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="color: rgb(153, 0, 0);font-family:Arial;" &gt;&lt;span style="color: rgb(153, 0, 0); font-weight: bold;font-family:Arial;" &gt;"status"&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;)) {&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;                    obj2. status = &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 51, 255);font-family:Arial;" &gt;&lt;span style="color: rgb(0, 51, 255); font-weight: bold;font-family:Arial;" &gt;null&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;                }&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;                                                &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 51, 255);font-family:Arial;" &gt;&lt;span style="color: rgb(0, 51, 255); font-weight: bold;font-family:Arial;" &gt;return&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt; ObjectUtil.stringCompare(obj1.status,obj2.status,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="color: rgb(0, 51, 255);font-family:Arial;" &gt;&lt;span style="color: rgb(0, 51, 255); font-weight: bold;font-family:Arial;" &gt;true&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;);                                                               &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;                                                }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;color:black;"   &gt;&lt;span style=";font-family:Arial;color:black;"  &gt;Hope it helps!&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-family:Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-1874863387911163732?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/1874863387911163732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=1874863387911163732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1874863387911163732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1874863387911163732'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/12/case-insensitive-sortcompare-function.html' title='Case insensitive SortCompare Function for Strings'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-1859953908671687209</id><published>2008-12-04T09:43:00.000-08:00</published><updated>2008-12-04T10:22:58.459-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FLex Spring tomcat eclipse Dependency injection'/><title type='text'>Integrating Spring with Flex on TOMCAT</title><content type='html'>This is a sequel to my &lt;a href="http://techmytongue.blogspot.com/2008/11/set-up-blazeds-on-tomcat-with-eclipse.html"&gt;post &lt;/a&gt;on getting up and running with blazeds/flex/tomcat on eclipse. This little post is going to explain how to integrate your ultra cool flex front end with the spring framework.Checkout &lt;a href="http://www.springframework.org/"&gt;http://www.springframework.org/&lt;/a&gt; if you are not familiar with spring or Dependency injection.&lt;br /&gt;&lt;br /&gt;Alright.Here are the steps.&lt;br /&gt;&lt;br /&gt;1.Setup your blazeds server and client as mentioned in the previous blog &lt;a href="http://techmytongue.blogspot.com/2008/11/set-up-blazeds-on-tomcat-with-eclipse.html"&gt;post&lt;/a&gt;&lt;br /&gt;2.Download the spring framework from http://www.springframework.org. Extract and move the neccessary jars into WEB-INF/lib folder of your server application.&lt;br /&gt;3. Add the spring context param and listener to your web.xml file:&lt;br /&gt;  &lt;br /&gt;         &amp;lt;context-param&amp;gt;&lt;br /&gt;            &amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt;&lt;br /&gt;            &amp;lt;param-value&amp;gt;/WEB-INF/applicationContext.xml&amp;lt;/param-value&amp;gt;&lt;br /&gt;       &amp;lt;/context-param&amp;gt;&lt;br /&gt;  &lt;br /&gt;       &amp;lt;listener&amp;gt;&lt;br /&gt;            &amp;lt;listener-class&amp;gt;org.springframework.web.context.ContextLoaderListener&amp;lt;/listener-class&amp;gt;&lt;br /&gt;       &amp;lt;/listener&amp;gt;&lt;br /&gt;&lt;br /&gt;4.Download the flex spring factory from www.adobe.com. COmpile it and have the class file inside your WEB-INF/classes folder .&lt;br /&gt;&lt;!-- AddThis Button BEGIN --&gt;&lt;br /&gt;5. Add the following configuration to your WEB-INF/flex/services-config.xml file:&lt;br /&gt;&lt;br /&gt;   &amp;lt;factories&amp;gt;&lt;br /&gt;      &amp;lt;factory id="spring" class="flex.samples.factories.SpringFactory" /&amp;gt;&lt;br /&gt;   &amp;lt;/factories&amp;gt;&lt;br /&gt;&lt;br /&gt;6.Define your components in spring's XML file.  Given the above spring&lt;br /&gt;configuration, they would be placed in WEB-INF/applicationContext.xml.  This&lt;br /&gt;file can contain components which are intended to be exposed to flex clients as&lt;br /&gt;remote objects as well as classes to be used as Flex Data Management Services&lt;br /&gt;(FDMS) assembler implementations using the Java adapter.&lt;br /&gt;&lt;br /&gt;7.To be constructed by Spring, your component should have a zero argument constructor so&lt;br /&gt;Spring can construct an instance.  Your applicationContext.xml file might look like:&lt;br /&gt;&lt;br /&gt;   &amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;   &amp;lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&amp;gt;&lt;br /&gt;    &lt;br /&gt;   &amp;lt;beans&amp;gt;&lt;br /&gt;     &amp;lt;bean name="weatherBean" class="dev.weather.WeatherService" singleton="true"/&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;bean name="myAssembler" class="dev.assemblers.MyAssembler" singleton="true"/&amp;gt;&lt;br /&gt;   &amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;br /&gt;8.Add your flex destination configuration for the components you want to expose to&lt;br /&gt;flex clients.  Since these components use the spring factory we define, we add the&lt;br /&gt;additional tag &amp;lt;factory&amp;gt;spring&amp;lt;/factory&amp;gt; and the &amp;lt;source&amp;gt; attribute is used to refer&lt;br /&gt;to the spring component's bean name, not the class name as with the default factory.&lt;br /&gt;&lt;br /&gt;   For Remote object destinations you place your destinations inside of the&lt;br /&gt;&amp;lt;service&amp;gt; tag which refers to the flex.messaging.services.RemotingService,&lt;br /&gt;(by convention this may be in WEB-INF/flex/remoting-config.xml).  For example, your&lt;br /&gt;remote destination configuration might look like:&lt;br /&gt;&lt;br /&gt;   &amp;lt;destination id="WeatherService"&amp;gt;&lt;br /&gt;       &amp;lt;properties&amp;gt;&lt;br /&gt;           &amp;lt;factory&amp;gt;spring&amp;lt;/factory&amp;gt;&lt;br /&gt;           &amp;lt;source&amp;gt;weatherBean&amp;lt;/source&amp;gt;&lt;br /&gt;       &amp;lt;/properties&amp;gt;&lt;br /&gt;   &amp;lt;/destination&amp;gt;&lt;br /&gt;&lt;br /&gt;9.Use a simple client and set your remote object destination to the one you created on your remoting-config.xml&lt;br /&gt;&lt;br /&gt;10.Restart your server.Test. Off you go!!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" alt="Bookmark and Share" width="125" border="0" height="16" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;&lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-1859953908671687209?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/1859953908671687209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=1859953908671687209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1859953908671687209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1859953908671687209'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/12/integrating-spring-with-flex-on-tomcat.html' title='Integrating Spring with Flex on TOMCAT'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-8450627095688229675</id><published>2008-11-30T03:45:00.000-08:00</published><updated>2008-12-01T07:19:11.185-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex blazeds tomcat eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='flex blazeds tomcat eclipse deploy'/><title type='text'>Set up blazeds on tomcat with eclipse for FLEX .</title><content type='html'>Alright,&lt;br /&gt;&lt;br /&gt;This is a quick post on how to setup your first blazeds environment for eclipse on your existing tomcat installation.&lt;br /&gt;&lt;br /&gt;By the end of this short tutorial you will be able to have a simple flex page that can call your remote object using blazeds on tomcat.&lt;br /&gt;&lt;br /&gt;Note:I use eclipse 3.3 with the flex builder plugin installed. Steps will probably remain the same for flex builder with wtp installed too.&lt;br /&gt;&lt;br /&gt;1.Download blazeds from adobe.com. Extract the blazeds.war file onto a folder.I will tell you  how to use this in a few steps.&lt;br /&gt;&lt;br /&gt;2.Create your tomcat server on eclipse. If you had not added your existing tomcat as a runtime in eclipse , this is a good time to do so.&lt;br /&gt;&lt;br /&gt;3.Create a new "Dynamic web project " on eclipse. Call it&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;BlazeAllinOne&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt; Now go back to the folder where you had extracted blazeds.war and copy the META-INF and WEB-INF folders from there to the "Webcontent" folder that eclipse had created in the project. The WEB-INF should include lib,flex,classes,src folders. And most importantly the new web.xml file.&lt;br /&gt;&lt;br /&gt;4.Right click on the project and change the build path such that the java classes will be compiled into the classes folder.RightClick-&gt;properties-&gt;java build path-&gt;Source tab.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pst_eCeDd4M/STKAYMzYciI/AAAAAAAAAL4/sAYqMeAu-8E/s1600-h/1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_pst_eCeDd4M/STKAYMzYciI/AAAAAAAAAL4/sAYqMeAu-8E/s320/1.jpg" alt="" id="BLOGGER_PHOTO_ID_5274419266846224930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;NOtice the "Default output folder" entry that is pointing to the classes folder we copied from blazeds.war&lt;br /&gt;&lt;br /&gt;5.Open the services-config.xml file within WEB-INF/Flex folder and change entries from this&lt;br /&gt;&lt;br /&gt;endpoint url="http://{host}:{port}/{context-root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"&lt;br /&gt;&lt;br /&gt;TO&lt;br /&gt;&lt;br /&gt;endpoint url="http://localhost:8080/BlazeAllinOne/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"&lt;br /&gt;&lt;br /&gt;Note BlazeAllinOne was how my project was deployed. Note.Do not WebContent or anythng after your project's name.&lt;br /&gt;&lt;br /&gt;6.Build your project, if you have not set Build-Automatically on the project menu.By this point you have  generic blazeds-tomcat setup that can invoke remote objects.&lt;br /&gt;&lt;br /&gt;Verify your setup by testing if the amf links are active . Paste the endpoint url you changed on services.xml onto your browser. something like this http://localhost:8080/BlazeAllinOne/messagebroker/amf should return you a blank page and not a 404 or 500 error.&lt;br /&gt;&lt;br /&gt;If you get  404 error,Somethings wrong!&lt;br /&gt;&lt;br /&gt;Now some clarifications. Why did I create a dynamic web project and copy my blazeds files? Because only of its a DWP , eclipse will deploy it in tomcat container. If you had created a simple java project and pointed to your blazeds WEB-INF folder, eclpse will not deploy the app, everytime you start the server through eclipse.&lt;br /&gt;&lt;br /&gt;7.Let us now see how we tie up flex to the server side environment we just created..&lt;br /&gt;&lt;br /&gt;8.Create a simple java classes on your blaze-server project .Something like this&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;package test;&lt;br /&gt;&lt;br /&gt;public class tester {&lt;br /&gt;public String getData() {&lt;br /&gt;return "hi";&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;9.Build the project again. The test.tester.class file should now be generated within the WEB-INF/classes folder.&lt;br /&gt;&lt;br /&gt;10.Open your remoting-config.xml file and create a new destination pointing to the new class.&lt;br /&gt;the entry goes like this&lt;br /&gt;&lt;br /&gt;&amp;lt;destination id="testremote"&amp;gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;lt;source&amp;gt;test.tester&amp;lt;/source&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&amp;lt;/destination&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Now Lets create the client&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;11.NewProject-Flex-select J2ee in application server type.Unselect "Create combined flex/java src folder".Click next&lt;br /&gt;&lt;br /&gt;12.Deselect the  "Use default location for LCDS " and enter the following.&lt;br /&gt;&lt;br /&gt;RootFolder :{youreclipseworkspace}\BlazeAllinOne\WebContent\&lt;br /&gt;Root URL:http://localhost:8080/BlazeAllinOne/&lt;br /&gt;Context_Root:BlazeAllinOne/. Click finish&lt;br /&gt;&lt;br /&gt;13.Create a simple mxml and paste this code&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&amp;gt;&lt;br /&gt;   &amp;lt;mx:RemoteObject id="test" destination="testremote"&amp;gt;&lt;br /&gt;     &lt;br /&gt;   &amp;lt;/mx:RemoteObject&amp;gt;&lt;br /&gt;   &amp;lt;mx:Script&amp;gt;&lt;br /&gt;       &amp;lt;![CDATA[&lt;br /&gt;           import mx.controls.Alert;&lt;br /&gt;           import mx.rpc.events.FaultEvent;&lt;br /&gt;           import mx.rpc.events.ResultEvent;&lt;br /&gt;           private function getData():void {&lt;br /&gt;               test.addEventListener(ResultEvent.RESULT,resultHandler);&lt;br /&gt;               test.addEventListener(FaultEvent.FAULT,faultHandler);&lt;br /&gt;               test.getData();&lt;br /&gt;           }&lt;br /&gt;           private function resultHandler(eve:ResultEvent):void{&lt;br /&gt;               Alert.show(eve.message.body.toString());&lt;br /&gt;           }&lt;br /&gt;           private function faultHandler(eve:FaultEvent):void{&lt;br /&gt;               Alert.show(eve.message.toString());&lt;br /&gt;           }&lt;br /&gt;         &lt;br /&gt;       ]]&amp;gt;&lt;br /&gt;   &amp;lt;/mx:Script&amp;gt;&lt;br /&gt;   &amp;lt;mx:Button label="click" click="getData()"&amp;gt;&lt;br /&gt;     &lt;br /&gt;   &amp;lt;/mx:Button&amp;gt;&lt;br /&gt;&amp;lt;/mx:Application&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt;The remote object destination I use is &lt;span style="font-weight: bold;"&gt;testremote&lt;/span&gt;.The one I created in remoting-config.xml file.&lt;br /&gt;&lt;br /&gt;14.Build all and restart the server if its neccessary. RIght click on your mxml and select "Run as Flex application"&lt;br /&gt;&lt;br /&gt;15.Click on the button. You should be getting a pleasant "hi" from your server setup :-)&lt;br /&gt;&lt;br /&gt;16.Note that you can setup break points on flex and java and debug them parallely.&lt;br /&gt;&lt;br /&gt;There you go. You have the power of flex,blazeds,tomcat on your hands.&lt;br /&gt;&lt;br /&gt;Make the world a better place :-)&lt;br /&gt;&lt;br /&gt;Hope it helps!&lt;br /&gt;&lt;br /&gt;&lt;!-- AddThis Button BEGIN --&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;  &lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-8450627095688229675?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/8450627095688229675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=8450627095688229675' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/8450627095688229675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/8450627095688229675'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/11/set-up-blazeds-on-tomcat-with-eclipse.html' title='Set up blazeds on tomcat with eclipse for FLEX .'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_pst_eCeDd4M/STKAYMzYciI/AAAAAAAAAL4/sAYqMeAu-8E/s72-c/1.jpg' height='72' width='72'/><thr:total>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-3168630142699724685</id><published>2008-11-25T04:20:00.001-08:00</published><updated>2008-12-01T07:21:09.006-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Adobe air run system process outlook'/><title type='text'>What Adobe Air Should be able to do but does'nt!</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 face=Verdana&gt;&lt;span style='font-size:9.0pt; font-family:Verdana'&gt;Alright, after working with adobe air for sometime, I find myself longing for the following features.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 face=Verdana&gt;&lt;span style='font-size:9.0pt; font-family:Verdana'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 face=Verdana&gt;&lt;span style='font-size:9.0pt; font-family:Verdana'&gt;1&lt;b&gt;&lt;span style='font-weight:bold'&gt;.Ability to execute system processes&lt;/span&gt;&lt;/b&gt; - &amp;nbsp;I do understand that this poses a security riskl, but what the hell.? The user is installing AIR as an administrator after all. Adobe should learn from SUN here and do what java does best. Even though java is meant to be cross platform, it does provide developers with options like &lt;font color="#333333"&gt;&lt;span style='color:#333333'&gt;JNI API to use native code whenever required.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:9.0pt;font-family:Verdana;color:#333333'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:9.0pt;font-family:Verdana;color:#333333;font-weight:bold'&gt;2.Ability to add options to context menu on file/folder icons&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:9.0pt;font-family: Verdana;color:#333333'&gt; &amp;#8211; Remember how svn or winzip can add multiple options to context menus that comes when you right click on a file?? This is something I would really love to have in my air application . And no its not there! Cant believe they missed it. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:9.0pt;font-family:Verdana;color:#333333'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:9.0pt;font-family:Verdana;color:#333333;font-weight:bold'&gt;3.AIR can have an API to parse EXCEL/WORD files &lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:9.0pt;font-family:Verdana; color:#333333'&gt;&amp;#8211; What I am trying to say is something like apache POI that helps AIR apps to read and write binary data from files in the files ystem and make sense out of it. Even a bridge between Apache POI and air might do the trick&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:9.0pt;font-family:Verdana;color:#333333'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:9.0pt;font-family:Verdana;color:#333333;font-weight:bold'&gt;4.Auto Sync API&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:9.0pt;font-family:Verdana;color:#333333'&gt; &amp;#8211; Synching the built in sqlite database can be simpler. Some kind of an auto sync api to update the local db will be very helpful .Right now its just possible to detect a change in network connectivity and you are on your own to do what is to be done.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:9.0pt;font-family:Verdana;color:#333333'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:9.0pt;font-family:Verdana;color:#333333'&gt;That&amp;#8217;s it for now. I will add as soon as I find myself wanting more. Still love AIR/FLEX though! J&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 color="#333333" face=Verdana&gt;&lt;span style='font-size:7.0pt;font-family:Verdana;color:#333333'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- AddThis Button BEGIN --&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;  &lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-3168630142699724685?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/3168630142699724685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=3168630142699724685' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/3168630142699724685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/3168630142699724685'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/11/what-adobe-air-should-be-able-to-do-but.html' title='What Adobe Air Should be able to do but does&apos;nt!'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-4919909122661884019</id><published>2008-11-19T01:29:00.000-08:00</published><updated>2008-12-01T07:21:20.858-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex ria security'/><title type='text'>Flex Specific security considerations</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;When it comes to security there is no end to what one can do , but the basic techniques that an attacker remains the same. In case of a RIA built with flex, there are a &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;few important and unique considerations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul style='margin-top:0in' type=disc&gt;  &lt;li class=MsoNormal style='mso-list:l1 level1 lfo2'&gt;&lt;font size=2 face=Arial&gt;&lt;span      style='font-size:10.0pt;font-family:Arial'&gt;It&amp;#8217;s very very simple to      decompile a Flex or Flash file. The file format is public and many      decompilers are already in place. The Same can be said about javascript      too, but the thing is that with flex based RIA&amp;#8217;s a lot of&amp;nbsp; context      and logic is saved on the client side. If you are a fan of saving      sensitive data on client side,watch out! Its too easy to know what you are      doing on the client.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li class=MsoNormal style='mso-list:l1 level1 lfo2'&gt;&lt;font size=2 face=Arial&gt;&lt;span      style='font-size:10.0pt;font-family:Arial'&gt;It&amp;#8217;s equally easy to      monitor requests and results from a Flex app to and from the server. This      and the above make it a breeze to get the URI&amp;#8217;s and expected      parameters for your PHP scripts.Softwarre like ETHEREAL do a great job in      finding out what is being sent and received.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li class=MsoNormal style='mso-list:l1 level1 lfo2'&gt;&lt;font size=2 face=Arial&gt;&lt;span      style='font-size:10.0pt;font-family:Arial'&gt;Most Flex/PHP/JSP architected      applications will expect and return clean, simple XML data. This data can      be parsed easily to see if any security holes can be exploited.Thats why      you will have to seriously consider the binary protocol AMF and start      using its implementation in the form of Blazeds.LCDS or AMFPHP&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Hope it helps!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- AddThis Button BEGIN --&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;  &lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-4919909122661884019?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/4919909122661884019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=4919909122661884019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4919909122661884019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4919909122661884019'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/11/flex-specific-security-considerations.html' title='Flex Specific security considerations'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-4268425077988125482</id><published>2008-11-18T01:59:00.001-08:00</published><updated>2008-12-01T07:21:28.111-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex object test type'/><title type='text'>How to test if an object is of a given type?</title><content type='html'>When dealing with typeCasting its essential to test if the objects are compatible before having a&lt;br /&gt;typecast statement.Forgetting to do this results in fragile code that might throw a type cast error anytime.&lt;br /&gt;Here is an example that shows you how to test this.&lt;br /&gt;Note:A child is a type of parent and the vice versa is not true.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;  &lt;br /&gt;&amp;lt?xml version="1.0" encoding="utf-8"?&amp;gt&lt;br /&gt;&lt;br /&gt;&amp;ltmx:Application&lt;br /&gt;&lt;br /&gt;            creationComplete="test()"&lt;br /&gt;&lt;br /&gt;             xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&amp;gt&lt;br /&gt;&lt;br /&gt;            &amp;ltmx:Script&amp;gt&lt;br /&gt;&lt;br /&gt;                        &amp;lt![CDATA[&lt;br /&gt;&lt;br /&gt;                                    import mx.controls.Alert;&lt;br /&gt;&lt;br /&gt;                                    import mx.events.CollectionEvent;&lt;br /&gt;&lt;br /&gt;                                    import mx.collections.ArrayCollection;&lt;br /&gt;&lt;br /&gt;                                    private function test():void {&lt;br /&gt;&lt;br /&gt;                                                var parent:Parent = new Parent();&lt;br /&gt;&lt;br /&gt;                                                var child:Child = new Child();                                              &lt;br /&gt;&lt;br /&gt;                                                if (child is Parent) {&lt;br /&gt;&lt;br /&gt;                                                            Alert.show("Yes");&lt;br /&gt;&lt;br /&gt;                                                } else {&lt;br /&gt;&lt;br /&gt;                                                            Alert.show("No");&lt;br /&gt;&lt;br /&gt;                                                }&lt;br /&gt;&lt;br /&gt;                                    }&lt;br /&gt;&lt;br /&gt;                        ]]&amp;gt&lt;br /&gt;&lt;br /&gt;            &amp;lt/mx:Script&amp;gt    &lt;br /&gt;&lt;br /&gt;            &amp;lt/mx:Application&amp;gt&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- AddThis Button BEGIN --&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;  &lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-4268425077988125482?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/4268425077988125482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=4268425077988125482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4268425077988125482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4268425077988125482'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/11/how-to-test-if-object-is-of-given-type.html' title='How to test if an object is of a given type?'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-1523764612110815055</id><published>2008-11-18T01:51:00.001-08:00</published><updated>2008-12-01T07:21:39.920-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex object test type'/><title type='text'>Flex - Check if a property exists in an Object</title><content type='html'>When dealing with typeCasting its essential to test if the objects are compatible before having a&lt;br /&gt;typecast statement.Forgetting to do this results in fragile code that might throw a type cast error anytime.&lt;br /&gt;Here is an example that shows you how to test this.&lt;br /&gt; &lt;br /&gt;Note:A child is a type of parent and the vice versa is not true.&lt;br /&gt;&lt;code&gt;&lt;br /&gt; &amp;lt?xml version="1.0" encoding="utf-8"?&amp;gt&lt;br /&gt;&amp;ltmx:Application&lt;br /&gt;            creationComplete="test()"&lt;br /&gt;             xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"&amp;gt&lt;br /&gt;            &amp;ltmx:Script&amp;gt&lt;br /&gt;                        &amp;lt![CDATA[&lt;br /&gt;                                    import mx.controls.Alert;&lt;br /&gt;                                    import mx.events.CollectionEvent;&lt;br /&gt;                                    import mx.collections.ArrayCollection;&lt;br /&gt;&lt;br /&gt;                                    private function test():void {&lt;br /&gt;                                                var parent:Parent = new Parent();&lt;br /&gt;                                                var child:Child = new Child();                                               &lt;br /&gt;&lt;br /&gt;                                                if (child is Parent) {&lt;br /&gt;&lt;br /&gt;                                                            Alert.show("Yes");&lt;br /&gt;&lt;br /&gt;                                                } else {&lt;br /&gt;&lt;br /&gt;                                                            Alert.show("No");&lt;br /&gt;&lt;br /&gt;                                                }&lt;br /&gt;&lt;br /&gt;                                    }&lt;br /&gt;&lt;br /&gt;                        ]]&amp;gt&lt;br /&gt;&lt;br /&gt;            &amp;lt/mx:Script&amp;gt    &lt;br /&gt;&lt;br /&gt;            &amp;lt/mx:Application&amp;gt&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- AddThis Button BEGIN --&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;  &lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-1523764612110815055?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/1523764612110815055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=1523764612110815055' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1523764612110815055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1523764612110815055'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/11/flex-check-if-property-exists-in-object.html' title='Flex - Check if a property exists in an Object'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-8060926108333284739</id><published>2008-11-17T02:54:00.000-08:00</published><updated>2008-12-01T07:21:54.447-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Adobe Flex Binding'/><title type='text'>Understanding [Bindable]</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;One of the most tricky and less understood features of flex is Binding.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Sure binding on first sight, is a very simple concept to grasp , but when one tries to apply it practically , one can have himself pulling his hair out.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Read this before you become a virendar sehwag look alike J.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;My first doubts on the way [Bindable] arouse when I tried to use the bindable variable on an expression .&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;I was just wondering if having an expression based on a bindable variable would recompute itself , whenever the variable changed?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;I had something like this&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;[Bindable]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;private var test:Number = new Number();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;private function changeText():void {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.test=new Number(nameInput.text);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;And I set the value of the bindable variable on button click&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;lt;mx:HBox width=&amp;quot;100%&amp;quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Form&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:FormItem label=&amp;quot;valueOfTest&amp;quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:TextInput id=&amp;quot;nameInput&amp;quot; width=&amp;quot;100&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:FormItem&amp;gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;mx:FormItem label=&amp;quot;Check the Binding effect here&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:TextInput id=&amp;quot;valueAfterChange&amp;quot; text=&amp;quot;{test &amp;gt; 1}&amp;quot; width=&amp;quot;100&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:FormItem&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Button label=&amp;quot;Set&amp;quot; click=&amp;quot;changeText()&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;The value of the second text input did change and the expression was recomputed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Cool enough. When I removed the [Bindable] metatag the value did not change.That was expected~.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;The fact is that the events are not triggered on components that use the variable.Simple.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Now, what if you have an function that is assigned to the text attribute of the second text input?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;See this,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;I changed the second text inputs definition to&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;lt;mx:TextInput id=&amp;quot;valueAfterChange&amp;quot; text=&amp;quot;{getTextForMe() }&amp;quot; width=&amp;quot;100&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;And I added the function which goes like this&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function getTextForMe():Number {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return test + 10;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;My first instinct was that the value would automatically be recomputed , but it did not. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;It turns out that the function should be declared as [Bindable] too, so that the property would be recomputed too.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Bindable]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function getTextForMe():Number {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return test + 10;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Alright so here is the moral of the story. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Have your variables annotated with [Bindable] meta tag whenever the changes to it has to reflect elsewhere. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Changes to variables that are bindable will reflect even if the variable was used in an arithematic expression. I mean any property that uses the bindable variable to compute, its value will be recomputed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;If you are using functions to determine value for&amp;nbsp; any property that uses the bindable variable , have the function declared as bindable. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Hope it helps I did actually stop you from becoming a virendar sehwag llok alike J&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- AddThis Button BEGIN --&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;  &lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-8060926108333284739?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/8060926108333284739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=8060926108333284739' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/8060926108333284739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/8060926108333284739'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/11/understanding-bindable_17.html' title='Understanding [Bindable]'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-3036419778289172737</id><published>2008-11-14T03:14:00.001-08:00</published><updated>2008-12-01T07:22:11.553-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex ArrayCollection'/><title type='text'>Watch for Changes in an ArrayCollection</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;ArrayCollection is one of the most beautiful aspects of flex which makes it what it is.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;u1:p&gt;&amp;nbsp;&lt;/u1:p&gt;When dealing with ArrayCollections, one may want to have some kind of a callback when the items are changed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;This is how you can do it.&lt;u1:p&gt;&lt;/u1:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;The magic lies in&amp;nbsp; flash.events.Event.CollectionEvent. To detect a change just add a listener to the CollectionEvent.COLLECTION_CHANGE on the arrayCollection.&lt;/span&gt;&lt;/font&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Even if your array collection is not bindable, this is a sure shot way to get notified of changes made to the array collection.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;strong&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;NOTE&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/strong&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;:The event will be triggered only when you add or delete items from the array collection and not when it is re assigned or re initialized&amp;nbsp; and not when you change the values of item within.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Here is the example:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br&gt; &amp;lt;mx:Application&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; creationComplete=&amp;quot;setUpListeners()&amp;quot;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;xmlns:mx=&amp;quot;http://www.adobe.com/2006/mxml&amp;quot; layout=&amp;quot;absolute&amp;quot;&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Script&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.controls.Alert;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.events.CollectionEvent;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; import mx.collections.ArrayCollection;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private var testAC:ArrayCollection = new ArrayCollection();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function setUpListeners():void {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; testAC.addEventListener(CollectionEvent.COLLECTION_CHANGE,showChange);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function changeArrayCollection():void{&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var obj:Object = new Object();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; obj.name=nameInput.text;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; obj.age=ageInput.text;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; testAC.addItem(obj);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //var temp:ArrayCollection = new ArrayCollection();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //temp.addItem(new Object());&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //testAC=temp; Will not trigger!&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //Note:testAC=new ArrayCollection(); Will not trigger!&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; private function showChange(eve:CollectionEvent):void {&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Alert.show(&amp;quot;Collection Changed.Operation was of type-&amp;gt;&amp;quot;+ eve.kind&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; + &amp;quot;at location-&amp;gt; &amp;quot; + eve.location);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Script&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:HBox width=&amp;quot;100%&amp;quot;&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Form&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:FormItem label=&amp;quot;name&amp;quot;&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:TextInput id=&amp;quot;nameInput&amp;quot; width=&amp;quot;100&amp;quot;&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:TextInput&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:FormItem label=&amp;quot;age&amp;quot;&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:TextInput id=&amp;quot;ageInput&amp;quot; width=&amp;quot;100&amp;quot;&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:TextInput&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:FormItem&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:Button label=&amp;quot;change&amp;quot; click=&amp;quot;changeArrayCollection()&amp;quot;&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Button&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:Form&amp;gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:HBox&amp;gt;&lt;br&gt; &amp;lt;/mx:Application&amp;gt;&lt;br&gt; &amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Hope it helps!!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=3 face="Times New Roman"&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=3 face="Times New Roman"&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'&gt;&lt;font size=3 face="Times New Roman"&gt;&lt;span style='font-size:12.0pt'&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- AddThis Button BEGIN --&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;  &lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-3036419778289172737?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/3036419778289172737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=3036419778289172737' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/3036419778289172737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/3036419778289172737'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/11/watch-for-changes-in-arraycollection.html' title='Watch for Changes in an ArrayCollection'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-524501158612788871</id><published>2008-11-13T23:11:00.000-08:00</published><updated>2008-12-01T07:22:23.881-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex TabNavigator'/><title type='text'>Hide Show a Tab on Tab Navigator</title><content type='html'>&lt;div class=Section1&gt;  &lt;p&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Right, just a short code-snippet I'd like to share for those who have been searching for a solution for ages (like I have). I was looking for a way to hide specific tabs in a &lt;a href="http://livedocs.adobe.com/flex/2/langref/mx/containers/TabNavigator.html"&gt;TabNavigator&lt;/a&gt; in &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex&lt;/a&gt; 3 without removing a child form the &lt;a href="http://livedocs.adobe.com/flex/2/langref/mx/containers/ViewStack.html"&gt;ViewStack&lt;/a&gt;.&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;This is not possible by simply hiding a child in the viewstack (child.hide = true) or by setting its visibility to false (child.visible = false).&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;With an easy workaround you can set the visiblity of a specific tab to false:&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;code&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family: Arial;font-weight:bold'&gt;tabNavigator&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/code&gt;&lt;span class=sy0&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight: bold'&gt;.&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;code&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;getTabAt&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/code&gt;&lt;span class=br0&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family: Arial;font-weight:bold'&gt;(&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=nu0&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight: bold'&gt;1&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=br0&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;)&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=sy0&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family: Arial;font-weight:bold'&gt;.&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;code&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;visible &lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/code&gt;&lt;span class=sy0&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;=&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;code&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight: bold'&gt; &lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/code&gt;&lt;span class=kw2&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;false&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=sy0&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family: Arial;font-weight:bold'&gt;;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Probably more people have found this solution, but I couldn't find it on the web so here it is.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- AddThis Button BEGIN --&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;  &lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-524501158612788871?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/524501158612788871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=524501158612788871' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/524501158612788871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/524501158612788871'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/11/hide-show-tab-on-tab-navigator.html' title='Hide Show a Tab on Tab Navigator'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-816643346212596630</id><published>2008-11-13T21:00:00.001-08:00</published><updated>2008-12-01T07:22:33.598-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex ArrayCollection'/><title type='text'>How to copy an ArrayCollection</title><content type='html'>&lt;div class=Section1&gt;  &lt;p&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;There are many ways to copy an arrayCOllection to another one.Here is a couple of them&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Initialize the new array with the older arrayCollection's source.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Example&lt;/span&gt;&lt;/font&gt;&lt;/u&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt; :var a : ArrayCollection = new ArrayCollection(array);&lt;u1:p&gt;&lt;/u1:p&gt;&amp;nbsp;&amp;nbsp; var b : ArrayCollection = new ArrayCollection(a.source);&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Use mx.utls.ObjectUtil.Copy&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Example&lt;/span&gt;&lt;/font&gt;&lt;/u&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt; :var arrayCollection1 : ArrayCollection = ObjectUtil.copy(arrayCollection2)&lt;u1:p&gt;&lt;/u1:p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Hope it helps!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- AddThis Button BEGIN --&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;  &lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-816643346212596630?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/816643346212596630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=816643346212596630' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/816643346212596630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/816643346212596630'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/11/how-to-copy-arraycollection_13.html' title='How to copy an ArrayCollection'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-4609624188163009006</id><published>2008-11-13T05:05:00.000-08:00</published><updated>2008-12-01T07:22:44.003-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Adobe Flex Validators mxml actionscript'/><title type='text'>Proper Form Validation in flex</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;Validators in flex have always been a mystery and I happened to encounter one of those really upsetting quirks in one of my projects.What I am talking about is the un invited red borders that get visible when you tab out of fields which have validators assigned.One would expect that the error tooltip would also appear when the red borders come.But you know, flex throws some unpleasant surprises at you at times and this is one such thing.Don't contemplate harrikiri yet :-). Every problem has a solution hidden inside it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;u&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;This is how it looks &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;img width=307 height=183 id="_x0000_i1025" src="cid:image001.gif@01C945BE.A9F8FDE0"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Turns out that the ToolTipManager can help one hiding and showing tooltips as and when requried.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Here is some sample code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;&lt;span style='font-weight:bold'&gt;&amp;lt;mx:FormItem label=&amp;quot;Your name&amp;quot;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:HBox&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;mx:TextInput id=&amp;quot;yourName&amp;quot; change=&amp;quot;onChangeText(event);&amp;quot; focusOut=&amp;quot;onChangeText(event);&amp;quot;/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:HBox&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/mx:FormItem&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial;font-weight:bold'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private function onChangeText(eve:Event):void {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var target:TextInput = eve.currentTarget as TextInput;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in;text-indent:.5in'&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;if (target.text == &amp;quot;&amp;quot;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Has the error message ToolTip already been created?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // (A reference to created ToolTip instances is saved in a hash called errorMessageToolTips.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Create the ToolTip instance.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in;text-indent:.5in'&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pt:Point = new Point(target.x, target.y);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in;text-indent:.5in'&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pt = target.contentToGlobal(pt);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in;text-indent:.5in'&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var errorTip:ToolTip = ToolTipManager.createToolTip(errorMessages[target.name] + &amp;quot; cannot be empty&amp;quot;, pt.x + target.width + 5, pt.y) as ToolTip;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in;text-indent:.5in'&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; errorTip.setStyle(&amp;quot;styleName&amp;quot;, &amp;quot;errorTip&amp;quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:.5in;text-indent:.5in'&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; errorTip.visible=true;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial;font-weight:bold'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Comments Welcome .. As always.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt; font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- AddThis Button BEGIN --&gt;&lt;br /&gt;&lt;a href="http://www.addthis.com/bookmark.php" onclick="addthis_url   = location.href; addthis_title = document.title; return addthis_click(this);" target="_blank"&gt;&lt;img src="http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width="125" height="16" border="0" alt="Bookmark and Share" /&gt;&lt;/a&gt;&lt;script type="text/javascript"&gt;var addthis_pub = "vengu";&lt;/script&gt;&lt;script type="text/javascript" src="http://s7.addthis.com/js/widget.php?v=10"&gt;&lt;/script&gt;  &lt;br /&gt;&lt;!-- AddThis Button END --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-4609624188163009006?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/4609624188163009006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=4609624188163009006' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4609624188163009006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4609624188163009006'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/11/proper-form-validation-in-flex_13.html' title='Proper Form Validation in flex'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-8761705389290910745</id><published>2008-08-27T09:54:00.000-07:00</published><updated>2008-08-27T10:30:21.976-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FLex enterprise capabilities'/><title type='text'>FlEX = UI + LOT MORE!</title><content type='html'>It infuriates me when I hear people say flex is Just another UI technology.Even the most tech savvy people have no clue what flex can do , but  assume that its just about looks .. well good looks.. Though creating a cool UI is a very important part of flex's capablities, it can do much more.. I mean much much more!&lt;br /&gt;&lt;br /&gt;Here is a short summary of capabilities that flex can bring to your next application.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt; Consistent behaviour across browsers:&lt;/span&gt; How many times have we abused bill gates and his IE team for not being standards compliant when it comes to browser behaviour?? The flash runtime is probably the most matured runtime that can run on a browser. Code once written will never require a change no matter which browser you intend to use it on.Please note that by behaviour I am not trying to mean the look and feel alone.Many times HTML based applications just cant work on all intendedd browsers&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;A stateful client :  &lt;/span&gt;Flex allows an application to have a stateful client. When a client understands the state of itself , it saves a lot of server memory wasted in maintaining the state.Imagine something like ebay in which millions are logged in and are amidst a chekout process.  SERVER MEMORY = MONEY and flex can save lots of it when you build your next web application&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Real time data: &lt;/span&gt;This is something that traditional web applications really suck at and flex is pretty darn good at. Flash supports sockets which is the only way to have the server push data on to multiple clients. For enterprise applications flex data services or cocomo can help one achieve PUSH .. Its just impossible to achieve with plain AJAX. Direct web remoting is an option many developers opt to but one review with firebug says its just as good as polling :-)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;MVC: &lt;/span&gt;Flex plays amazingly well in a system that uses MVC or MVP. Adobe backs up this aspect of flex with great support for "Cairngorm" the mvc micro architecture which is very widely used. PureMVC is another option that one would want to check out.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Event Model: &lt;/span&gt;Flex works on an event model that will be very very similar for java swing developers. In flex every communication is done via events. What this really means is that your components don't really have to know anything about the callers. True component reuse :-)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Multimedia:&lt;/span&gt; Youtube got sold for a few billions.. All by leveraging flex/flash multimedia capabilities.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Remoting: &lt;/span&gt;Flex data services and blaze data services helps you bypass the xml/html layer that makes traditional applications horribly slow. The real magic here is the protocol called AMF that makes your apps render server side data in a whizzy.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;WEB TO DESKTOP in a minute: &lt;/span&gt;Your flex applications can be converted into desktop applications and vice versa in a matter of minutes.. Adobe AIR combines the connectivity of web apps with the responseiveness of desktop! Converting you flex applications to desktop application is a matter of changing the root tag from mx:application  to mx:windowedapplication in most cases..&lt;br /&gt;Checkout adobe air &lt;a href="http://www.adobe.com/devnet/air/"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/mx:windowedapplication&gt;&lt;/mx:application&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Compoenent Architecture: &lt;/span&gt;Last but not the least the component architecture built into flex is what makes flex what it is. One can opt to deliver components as closed source(think .swc) if required. Flex components do not suffer from DLL hell or the much talked about JAR hell that traditional apps suffer from&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Now stop saying flex is just about UI!!!!&lt;br /&gt;As always.. Comments are welcome.. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-8761705389290910745?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/8761705389290910745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=8761705389290910745' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/8761705389290910745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/8761705389290910745'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/08/flex-ui-lot-more.html' title='FlEX = UI + LOT MORE!'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-1447500719381484704</id><published>2008-08-24T03:00:00.000-07:00</published><updated>2008-08-25T11:54:05.436-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex design pattern MVC'/><title type='text'>MVC with FLEX</title><content type='html'>There has been a lot of talk about flex being the next generation development tech for enterprise solutions. Whenever one gets to think about the idea of building enterprise solutions , one word can never be ignored "DESIGN PATTERNS". When you think of a MVC implementation with flex Caingorm and pureMVC frameworks are the ones all developement teams will consider.&lt;br /&gt;  I havent used pureMVC but worked with Cairngorm and havent felt too good with it. The problem I face with Cairngorm is that there is need to use observers to detect the change in the model. I mean the the view really has no idea when the  model it consumes would change.&lt;br /&gt;The problem here is when multiple UI components are trying to detect a change  to the model, you have no idea about the order in which the views react. So cairngirm became a  sure shot way of getting into trouble for me.&lt;br /&gt;&lt;br /&gt;So I had to find other approaches. And a different approach find did I. :-) . Here is a brief description of my little MVC implementation.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create an interface that acts a contract between the view and the controller(handler)&lt;/li&gt;&lt;/ol&gt;     2. Have the view implement the interface. This helps you create a handler that doesnt need to know much about the view that is consuming it.&lt;br /&gt;&lt;br /&gt;      Ex: -- &gt; mx:Application implements="com.simplemvc.IsampleInterface"&lt;mx:application implements="com.simplemvc.IsampleInterface"&gt;&lt;mx:application implements="com.test.IsampleInterface"&gt;&lt;br /&gt;&lt;br /&gt;  3.Create a reference to the handler in the view . The handler should also hold a refernce to tghe view. Have something like&lt;br /&gt;&lt;br /&gt;          Ex:--&gt; handler:SampleHandler  id="myHandler" view="{this}" myData="{this.gridData}"&lt;handler:samplehandler id="myHandler" view="{this}" mydata="{this.gridData}"&gt;&lt;br /&gt;     &lt;br /&gt;   &lt;/handler:samplehandler&gt;&lt;handlers:myhandler id="myhand" view="{this}" modelreference="{thearraycollection}/"&gt;&lt;br /&gt;&lt;br /&gt;  4. Call the methods in handlers/controllers when you need to .&lt;br /&gt;         Ex: handler.getData();&lt;br /&gt;&lt;br /&gt;  5.Have the handler call your remote Object/web service/httpservice and call back the view using the reference&lt;br /&gt;      Ex:view.updateCollection(data:ArrayCollection)&lt;br /&gt;&lt;br /&gt;  Checkout the source code &lt;a href="http://www.wichor.com/simpleMVC.zip"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;  Comments welcome.&lt;/handlers:myhandler&gt;&lt;/mx:application&gt;&lt;/mx:application&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-1447500719381484704?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/1447500719381484704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=1447500719381484704' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1447500719381484704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1447500719381484704'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/08/mvc-with-flex.html' title='MVC with FLEX'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-4034832352751781692</id><published>2008-08-11T09:57:00.000-07:00</published><updated>2008-08-11T10:15:40.644-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex builder java'/><title type='text'>How to set Up Flex Builder for JAVA</title><content type='html'>Quick post on how to set up flex builder for editing and debugging java code in parallel.&lt;br /&gt;&lt;br /&gt;You must have flex builder 3 installed for this.&lt;br /&gt;&lt;br /&gt;1.  Install WTP using Help-&gt;Software updates-&gt;Find and Install.&lt;br /&gt;&lt;br /&gt;2. Create a new flex project .&lt;br /&gt;&lt;br /&gt;3. Select the J2ee project type.&lt;br /&gt;&lt;br /&gt;4. Select the create a combined flex using WTP option. Click Next&lt;br /&gt;&lt;br /&gt;5. Select your tomcat home .&lt;br /&gt;&lt;br /&gt;6.Select the location of your flex.war on the next screen. (Note: You can download flex.war and flex data services from adobe.com)&lt;br /&gt;&lt;br /&gt;7. Click finish.&lt;br /&gt;&lt;br /&gt;Flex builder would have create all the necccessary code structure and xml files create for you&lt;br /&gt;&lt;br /&gt;To create a simple remote object project follow this tutorial.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/livecycle/8.2/programLC/programmer/lcds/help.html?content=rpc_remoteobject_2.html"&gt;http://livedocs.adobe.com/livecycle/8.2/programLC/programmer/lcds/help.html?content=rpc_remoteobject_2.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There goes your first java enabled flex project.&lt;br /&gt;&lt;br /&gt;Comments welcome!&lt;br /&gt;&lt;br /&gt;Will be posting on &lt;mx:dataservice&gt; and &lt;mx:remoteobject&gt; soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-4034832352751781692?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/4034832352751781692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=4034832352751781692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4034832352751781692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4034832352751781692'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/08/how-to-set-up-flex-builder-for-java.html' title='How to set Up Flex Builder for JAVA'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-8802425032231499340</id><published>2008-05-29T03:08:00.000-07:00</published><updated>2008-05-29T03:40:08.965-07:00</updated><title type='text'>who is the ideal flex developer? Flash dev or Java dev or DHTML/Ajax dev?</title><content type='html'>Alright!! I know the topic is a little stupid , May be I should-phrase it to  "who should I hire ?"&lt;br /&gt;&lt;br /&gt;Whatever it be , I am just trying to figure out who would be my flex developer ??! . Is it the graphics guy Joe who had done numerous animations for web sites based on flash MX, spendign time on the timelines and frames using action script just a little to prevent the headaches that can happen later &lt;span style="font-weight: bold;"&gt;OR &lt;/span&gt;is it the java guy who was creating windows/Desktop applications with java swings and felt miserable with lack of flexibility (Think UI,colors,themes,god looking apps). Thank you sun! &lt;span style="font-weight: bold;"&gt;OR&lt;/span&gt; Is it the web developer who was toiling and moiling with the ugly browser quirks and the so called Ajax hacks and frameworks that are growing at tons per second.&lt;br /&gt;&lt;br /&gt;Who would I hire If I had to ?&lt;br /&gt;&lt;br /&gt;Well.Lemme try to summarize what command over flex really means and my opinion on who excels in which aspects?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. OOPs principles&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java Guy - It goes without saying that the java guys excels here.The java masters know how to apply a structured  approach to problem solving. Picking up somethign like Cairnghorm will be a piece of cake if one is a proper Java developer. The event model is something that all java developers would find to be very very inituitive. Last but not the least, Java guys are almost always familiar with design pattenrs.Though these folks may have a tendency to write really  large code, they structure the solution properly!! They Scale.&lt;/li&gt;&lt;li&gt; Flash guys - Well ..How Object Oriented is actionscript? Most flash guys of 2000 - 2005 were working with actionscript2.0 which really did not have much to offer from an OO perspective&lt;/li&gt;&lt;li&gt;Web Developer - Web developers are so to hacks that they are never really allowed to do oops with javascript . Thanks to lack of  Mature Object Oriented aspects in javascript, no web developer really knows to crack a tough problem by breaking it into objects, if not rare.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;2. Interface Design&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java Guys: These folks are a little dumb here.. They never value the coolness that a tool like flex can bring to ones interface. They like simple interfaces lot more! Though using mxml will be very easy thanks to their familiarity with xml based frameworks like jsf&lt;/li&gt;&lt;li&gt;Flash Guys: These folks will harness the power of flash animations to the fullest.just try giving them a login page as a sample. You will fall in love with flex on first sight. :-)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Web Developer: These folks can do a decent enough job , but will surely take more time.. Reason. They are so  to frameworks like prototype , SCriptaculous that  it takes a bit of time for em to get rid of that "div" thing :-)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;3. Product Engineering Capablities&lt;br /&gt;&lt;ul&gt;&lt;li&gt;   &lt;br /&gt;&lt;/li&gt;&lt;li&gt;(Will be continued)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-8802425032231499340?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/8802425032231499340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=8802425032231499340' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/8802425032231499340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/8802425032231499340'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/05/who-is-ideal-flex-developer-flash-dev.html' title='who is the ideal flex developer? Flash dev or Java dev or DHTML/Ajax dev?'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-7148885077607507717</id><published>2008-03-28T01:04:00.000-07:00</published><updated>2008-03-28T01:15:50.326-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile phone'/><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Short message service'/><title type='text'>Problems with High end phones</title><content type='html'>&lt;span class="zemanta-img" style="margin: 1em; display: block; float: right;"&gt;&lt;a href="http://commons.wikipedia.org/wiki/Image:Nokia1100_new.jpg" target="_blank"&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/commons/thumb/1/1b/Nokia1100_new.jpg/202px-Nokia1100_new.jpg" style="border: medium none ; display: block;" /&gt;&lt;/a&gt;&lt;span style="margin: 1em 0pt 0pt; display: block;"&gt;Source: &lt;a href="http://commons.wikipedia.org/wiki/Image:Nokia1100_new.jpg" target="_blank"&gt;Wikipedia&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I switched from a low end nokia 1100 to a much advanced Nokia N72 recently.&lt;br /&gt;&lt;br /&gt;Though N series comes power packed with a lot of features, typing SMS on it is a pain.&lt;br /&gt;&lt;br /&gt;Why is it that all these high end phones make life difficult for users?? Another bizzare effect of this is that Application developers who want to develop applications that will require a bit of typing.&lt;br /&gt;&lt;br /&gt;Say for instance mobile versions of EQO,EBuddy, HeySan..&lt;br /&gt;These clowns had made it so painfull to type for a long time on the mobile...&lt;br /&gt;&lt;br /&gt;With the mobile phones market fetting more competitive,&lt;br /&gt;I am sure that the company that makes it easy for one to type sms withiut hurting one's  fingers will have an edge..&lt;br /&gt;&lt;br /&gt;Not the one that targets to make science fictions come ttue with that little device..&lt;br /&gt;&lt;br /&gt;Vengu!&lt;br /&gt;&lt;div id="zemanta-pixie" style="margin: 5px 0pt; width: 100%;"&gt;&lt;a id="zemanta-pixie-a" href="http://www.zemanta.com/" title="Zemified by Zemanta"&gt;&lt;img id="zemanta-pixie-img" src="http://img.zemanta.com/pixie.png?x-id=d9324a61-c478-4de9-9fb2-1ba8af5c9601" style="border: medium none ; float: right;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-7148885077607507717?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/7148885077607507717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=7148885077607507717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/7148885077607507717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/7148885077607507717'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/03/problems-with-high-end-phones.html' title='Problems with High end phones'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-1126571082199085480</id><published>2008-03-27T07:31:00.000-07:00</published><updated>2008-05-15T02:42:09.943-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex interviews'/><title type='text'>Flex Interview Questions</title><content type='html'>&lt;span class="zemanta-img" style="margin: 1em; display: block; float: right;"&gt;&lt;span style="margin: 1em 0pt 0pt; display: block;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;A few interview questions on flex,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Is it possible to make httpService Requests synchronous?&lt;br /&gt;2. I need to load an image from flickr into my application. Do I need a crossdomain.xml file on flickr?&lt;br /&gt;3. What is the difference between httpService and Data Service?&lt;br /&gt;4. How do you generate random numbers within a given limit with actionscript?&lt;br /&gt;5. Have you built any components with actionscript? If so explain how you did it?&lt;br /&gt;6. How do you implement push on a flex applications?&lt;br /&gt;7.I am going to add images into a &lt;mx:image&gt; tag. How will it resize itself?&lt;br /&gt;8. What is a resource Manager??&lt;br /&gt;9.What are the similarities between java and flex&lt;br /&gt;10. What is the dynamic keyword used for?&lt;br /&gt;11.How do you implement push with flex data services?&lt;br /&gt;12. What are the methods called when a UI component  is intialized?&lt;br /&gt;13. How do you implement drag and drop on components that do not support ondrag and ondrop?&lt;br /&gt;14.Can you write to the file system from flex?&lt;br /&gt;15. What is a drag manager?&lt;br /&gt;16 . HOw do you call javascript from Flex?&lt;br /&gt;17. How do you use a repeater?&lt;br /&gt;18. what are three ways to skin a component in flex?&lt;br /&gt;19. How do you use css styles in flex?&lt;br /&gt;20. What is the difference between sealed class and dynamic classes?&lt;br /&gt;21.what is MVC and how do you relate it to flex apps?&lt;br /&gt;22.what is state? what is the difference between states and ViewStack?&lt;br /&gt;23.how does item renderer work? How do I add item renderer at runtime?&lt;br /&gt;24.what keyword allows you to refer to private variables of a class?&lt;br /&gt;25.how polymorphism works on actionscript?&lt;br /&gt;26.how do you overload functions in actionscript?&lt;br /&gt;27.what is dynamic keyword used for?&lt;br /&gt;28.what are sealed classes ?&lt;br /&gt;29 what are runtime shared libraries?&lt;br /&gt;30.What is caringhorm ? how do you use it?Have you worked with Cairnghorn?&lt;br /&gt;31.What keyword allows you to implement abstraction better?&lt;br /&gt;32.What design patterns have you used? in Actionscript and java?&lt;br /&gt;&lt;br /&gt;Try to get answers for these.&lt;br /&gt;You can be me :-)&lt;/mx:image&gt;&lt;fieldset class="zemanta-related" style="margin: 0.5em 0pt 1em; padding: 0pt;"&gt;&lt;legend class="zemanta-title"&gt;Related articles&lt;/legend&gt;&lt;ul class="zemanta-article-ul" style="margin: 1em 0pt 1.5em; padding: 0pt;"&gt;&lt;li class="zemanta-article" style="margin: 0.5em 2em;"&gt;&lt;a title="Open in new window" target="_blank" href="http://blogs.adobe.com/formnation/2008/03/drag_and_drop_support_in_guide.html"&gt;Drag and Drop support in Guide Builder&lt;/a&gt; [via Zemanta]&lt;/li&gt;&lt;/ul&gt;&lt;/fieldset&gt;&lt;div id="zemanta-pixie" style="margin: 5px 0pt; width: 100%;"&gt;&lt;a id="zemanta-pixie-a" href="http://www.zemanta.com/" title="Zemified by Zemanta"&gt;&lt;img id="zemanta-pixie-img" src="http://img.zemanta.com/pixie.png?x-id=ce07eb0d-453a-45db-8b6a-d1405e581577" style="border: medium none ; float: right;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-1126571082199085480?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/1126571082199085480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=1126571082199085480' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1126571082199085480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/1126571082199085480'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/03/flex-interview-questions.html' title='Flex Interview Questions'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-6744052793484528478</id><published>2008-03-14T23:08:00.000-07:00</published><updated>2008-03-15T00:02:34.632-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAIM MEEBO MESSENGER'/><category scheme='http://www.blogger.com/atom/ns#' term='WEB 2'/><title type='text'>How meebo works? (My guess of how they might be doing it!!)</title><content type='html'>We all know how useful and good &lt;a href="http://www.meebo.com/"&gt;meebo &lt;/a&gt;is.&lt;br /&gt;&lt;br /&gt;The web based instant messaging client is a big brand now on its own and has been growing exponentially after it received funding a few months back.&lt;br /&gt;&lt;br /&gt;Just out of curiosity, I started digging into the possible ways that meebo might have been implemented.&lt;br /&gt;&lt;br /&gt;After a few minutes of research I think I have a vague idea of the components involved.&lt;br /&gt;&lt;br /&gt;1. At the heart of meebo's backend is the open source API called &lt;a href="http://swik.net/libgaim"&gt;libgaim &lt;/a&gt;which is under the pidgin project now. So technically  anything that pidgin can support will be supported by meebo too :-)&lt;br /&gt;&lt;br /&gt;2. Wrappers that write to a socket.  The libgaim api sends signals that can be registered to callbacks that handle the signals. I believe the signals are being written to a port.&lt;br /&gt;&lt;br /&gt;3.  Direct Web remoting / Flash based remoting.  This is the layer that perfoms the task of the web based client getting the messages that are being written to the socket from the wrappers that listen to gaim signals.&lt;br /&gt;&lt;br /&gt;4.A small UI layer with Ajax frameworks like dojo/scriptaculous that gives you that cool look and feel.&lt;br /&gt;&lt;br /&gt;Off course there might be hundred of tweaks that meebo would have done , but this I see is the core engine&lt;br /&gt;&lt;br /&gt;There  you go. :-) If you can do this , you can have your own version of meebo for your company, office.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Venkat&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-6744052793484528478?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/6744052793484528478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=6744052793484528478' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/6744052793484528478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/6744052793484528478'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/03/how-meebo-works-my-guess-of-how-they.html' title='How meebo works? (My guess of how they might be doing it!!)'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-4917973084026076878</id><published>2008-02-21T23:58:00.000-08:00</published><updated>2008-02-22T00:08:08.042-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADOBE FLEx PUSH flex data services'/><title type='text'>Push without Flex Data Services</title><content type='html'>We all know that flex data services is good but is it really  neccesary to implement  push on flex page?? As a developer with very little money to spend on tools, I was looking out for alternatives.&lt;br /&gt;&lt;br /&gt;And Alternative I did find!!  The magic is called "XMLSocket"&lt;br /&gt;&lt;br /&gt;Though the xmlsocket implementation is depicted as a way for the client and server to talk with xml , there is nothing potentially stopping us from sending just plain text ...&lt;br /&gt;&lt;br /&gt;So this is how I did it..&lt;br /&gt;&lt;br /&gt;1. Create a java based service that  runs on a port (5976 in my case) that spits out content on the port when ever it is available. (This can easily be replaced by a JMS). This includes setting up a thread to write to the socket whenever data is available.&lt;br /&gt;&lt;br /&gt;2.Open a xml socket to the server from the flash client.&lt;br /&gt;&lt;br /&gt;3. create an ondata handler in the flex part that updates your interface .&lt;br /&gt;&lt;br /&gt;There you have it.. :-)&lt;br /&gt;&lt;br /&gt;I will be posting the code sample and explanation shortly .. watch out.&lt;br /&gt;&lt;br /&gt;Happy flexing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-4917973084026076878?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/4917973084026076878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=4917973084026076878' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4917973084026076878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/4917973084026076878'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2008/02/push-without-flex-data-services.html' title='Push without Flex Data Services'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-8929926282203047467</id><published>2007-12-03T02:11:00.000-08:00</published><updated>2008-01-27T04:08:44.523-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SEO ADOBE FLEX SEARCH ENGINE OPTIMIZATION'/><title type='text'>FEAR NOT FLASH!!</title><content type='html'>Ever since the RIA world was taken over with the advent of tools like Adobe Flex and Adobe AIR, one of the major hassles for developers/businesses in  adopting these flash based technologies has been SEO - Search Engine Optimization.&lt;br /&gt;As many of the search engines cannot really index the contents of a flash widget/resource it left the technology found wanting..&lt;span style="font-weight: bold;"&gt; Well, not any more.&lt;/span&gt;&lt;br /&gt;Gooogle had announced that it can in fact index flash content .&lt;br /&gt;You can read about this on an interview with &lt;b&gt;Michael Marshall&lt;/b&gt; &lt;a href="http://www.searchengineworkshops.com/articles/flash.html"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The key here is the tool developed by adobe called &lt;a href="http://www.macromedia.com/software/flash/download/search_engine/"&gt;swf2html&lt;/a&gt;&lt;br /&gt;As true fans/users of Adobe's flash based development , I would like to welcome this effort from adobe to help folks like us develop with flex fearlessly.&lt;br /&gt;&lt;br /&gt;So go ahead, flex your muscles and flash em all!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-8929926282203047467?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/8929926282203047467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=8929926282203047467' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/8929926282203047467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/8929926282203047467'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2007/12/fear-not-flash.html' title='FEAR NOT FLASH!!'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1179039755546714762.post-7762462603344773203</id><published>2007-12-03T00:01:00.000-08:00</published><updated>2008-01-27T04:07:23.516-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MObile SMS free GPRS'/><title type='text'>Global Messaging System</title><content type='html'>Folks,&lt;br /&gt;&lt;br /&gt;A few weeks earlier, me and my good friend ashraff(affectionately called "dead body") thought of changing the way people use SMS.&lt;br /&gt;Why is it that you have to pay 6rs per international sms, when you have a GPRS enabled phone??&lt;br /&gt;Is there a way to make it cheaper?? Well we thought about it and created solmething which will help you communicate for almose free  (depending on your service provider.) internationally.&lt;br /&gt;&lt;br /&gt;So we came up with a small prototype of what we call GMS (global messaging system) which you can see here(Look it up on your mobile browser and not the PC!!)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://zz121.freewebhosting360.com/index.html"&gt;http://zz121.freewebhosting360.com/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Out of out testing results , we had found that one will be able to send arounf 1000 messages at almost 3 INR.&lt;br /&gt;&lt;br /&gt;The only pre-requisite being that the receiver will need to have a GPRS enabled fone and that he has to have an account with us , and that he should see his messages through his/her mobile browser..&lt;br /&gt;&lt;br /&gt;We have some pretty interesting services lined up with this.. More on my next post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1179039755546714762-7762462603344773203?l=techmytongue.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techmytongue.blogspot.com/feeds/7762462603344773203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1179039755546714762&amp;postID=7762462603344773203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/7762462603344773203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1179039755546714762/posts/default/7762462603344773203'/><link rel='alternate' type='text/html' href='http://techmytongue.blogspot.com/2007/12/starting-up-futurato.html' title='Global Messaging System'/><author><name>Vengu</name><uri>http://www.blogger.com/profile/04090536857754862326</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://bp0.blogger.com/_pst_eCeDd4M/R_ewOmtpivI/AAAAAAAAAHE/zoOvVFQXu9I/S220/DSC00801.JPG'/></author><thr:total>0</thr:total></entry></feed>
