<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mariush T. - Flex Developer, Blogger &#187; Flex</title>
	<atom:link href="http://mariusht.com/blog/tag/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://mariusht.com/blog</link>
	<description>A blog about Flex Development.</description>
	<lastBuildDate>Tue, 11 Oct 2011 08:56:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>AIR 2.0 Native Process with Java program</title>
		<link>http://mariusht.com/blog/2010/03/17/air-2-0-native-process-with-java-program/</link>
		<comments>http://mariusht.com/blog/2010/03/17/air-2-0-native-process-with-java-program/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 17:25:49 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AIR 2.0]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[NativeProcess]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1915</guid>
		<description><![CDATA[
This application demonstrates how to use AIR 2.0 Native Process with Java program. Air application sends String to Java program, Java program reads it and sends back to AIR app. Before packaging the &#8216;NativeProcessDemo&#8217; application into an AIR file, make sure you have added the following line to application description file &#60;supportedProfiles&#62;extendedDesktop  desktop&#60;/supportedProfiles&#62;. Next, [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="" style="border: 1px solid black" src="http://mariusht.com/files/blog/native_process/Air2NativeProcessJava.gif" width="656" height="200" /></p>
<p>This application demonstrates how to use AIR 2.0 Native Process with Java program. Air application sends String to Java program, Java program reads it and sends back to AIR app. Before packaging the &#8216;NativeProcessDemo&#8217; application into an AIR file, make sure you have added the following line to application description file <em>&#60;supportedProfiles&#62;extendedDesktop  desktop&#60;/supportedProfiles&#62;</em>. Next, use command line tool to package an AIR app in a native installer.</p>
<p><strong>Sample Files:</strong><br />
<a href="http://mariusht.com/files/blog/native_process/NativeProcessDemo.mxml.html">NativeProcessDemo.mxml</a> (MXML, 12 KB),<br />
<a href="http://mariusht.com/files/blog/native_process/HelloWorld.java.html">HelloWorld.java</a> (JAVA, 1 KB)</p>
<p><strong>Related Topics:</strong>
<ul class="topic">
<li><a href="http://help.adobe.com/en_US/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7fd9.html">Creating an AIR application using the command line tools</a></li>
<li><a href="http://www.adobe.com/devnet/air/flex/quickstart/interacting_with_native_process.html">Interacting with a native process</a></li>
<li><a href="http://bishoponvsto.wordpress.com/2010/02/23/adobe-air-2beta-2-to-exe-packaging-air-app-in-windows-executable/">Adobe Air to Exe – Packaging Air app in Windows executable</a></li>
<li><a href="http://help.adobe.com/en_US/air/build/WS789ea67d3e73a8b22388411123785d839c-8000.html">Packaging an AIR application in a native installer</a></li>
<li><a href="http://blog.everythingflex.com/2009/11/17/your-first-air-2-0-exe-file/?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed:+Everythingflex+(EverythingFlex)">Your First AIR 2.0 EXE file</a></li>
<li>
<a href="http://stackoverflow.com/questions/2312512/adobe-flex-air-packaging-air-app-in-native-install">Adobe Flex &#038; Air &#8211; packaging Air app in native install</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2010/03/17/air-2-0-native-process-with-java-program/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Pipe Messages</title>
		<link>http://mariusht.com/blog/2010/01/25/custom-pipe-messages/</link>
		<comments>http://mariusht.com/blog/2010/01/25/custom-pipe-messages/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 02:51:12 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Pipe Message]]></category>
		<category><![CDATA[Pipes Utility]]></category>
		<category><![CDATA[PureMVC]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1831</guid>
		<description><![CDATA[Strongly typed messages are used to communicate between cores in PureMVC MultiCore application with Pipes Utility. Below is a simple example of a custom pipe message class, and a JunctionMediator using the custom message. Message names are defined in the message itself which makes the message handling very easy.
ContactMessage.as
package com.mariusht.contactmanager.common.messages
{
    import com.mariusht.contactmanager.common.model.vo.ContactVO;

 [...]]]></description>
			<content:encoded><![CDATA[<p>Strongly typed messages are used to communicate between cores in PureMVC MultiCore application with Pipes Utility. Below is a simple example of a custom pipe message class, and a JunctionMediator using the custom message. Message names are defined in the message itself which makes the message handling very easy.</p>
<p><span id="more-1831"></span>ContactMessage.as
<pre class="MXML"><span class="ActionScriptpackage">package</span> <span class="ActionScriptDefault_Text">com</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">mariusht</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">contactmanager</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">common</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">messages</span>
<span class="ActionScriptBracket/Brace">{</span>
    <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">mariusht</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">contactmanager</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">common</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">model</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">vo</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">ContactVO</span>;

    <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">org</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">puremvc</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">as3</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">multicore</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">utilities</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">pipes</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">messages</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">Message</span>;

    <span class="ActionScriptReserved">public</span> <span class="ActionScriptclass">class</span> <span class="ActionScriptDefault_Text">ContactMessage</span> <span class="ActionScriptReserved">extends</span> <span class="ActionScriptDefault_Text">Message</span>
    <span class="ActionScriptBracket/Brace">{</span>
        <span class="ActionScriptReserved">protected</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">NAME</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptString">'ContactMessage'</span>;

        <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">ADD_CONTACT</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">NAME</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">'/message/contact/add'</span>;
        <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">CONTACT_ADDED</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">NAME</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">'/message/contact/added'</span>;
        <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">CONTACT_ADD_FAILED</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">NAME</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">'/message/contact/add/failed'</span>;

        <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">UPDATE_CONTACT</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">NAME</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">'/message/contact/update'</span>;
        <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">CONTACT_UPDATED</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">NAME</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">'/message/contact/updated'</span>;
        <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">CONTACT_UPDATE_FAILED</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">NAME</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">'/message/contact/update/failed'</span>;

        <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">REMOVE_CONTACT</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">NAME</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">'/message/contact/remove'</span>;
        <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">CONTACT_REMOVED</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">NAME</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">'/message/contact/removed'</span>;
        <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">CONTACT_REMOVE_FAILED</span>:<span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">NAME</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptString">'/message/contact/remove/failed'</span>;

        <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">ContactMessage</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">type</span>:<span class="ActionScriptDefault_Text">String</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">contact</span>:<span class="ActionScriptDefault_Text">ContactVO</span><span class="ActionScriptOperator">=</span><span class="ActionScriptDefault_Text">nulll</span><span class="ActionScriptBracket/Brace">)</span>
        <span class="ActionScriptBracket/Brace">{</span>
            <span class="ActionScriptComment">// add headers if needed
</span>            <span class="ActionScriptReserved">super</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">type</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptReserved">null</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">contact</span><span class="ActionScriptBracket/Brace">)</span>;
        <span class="ActionScriptBracket/Brace">}</span> 

        <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptReserved">get</span> <span class="ActionScriptDefault_Text">contact</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptDefault_Text">ContactVO</span>
        <span class="ActionScriptBracket/Brace">{</span>
            <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">body</span> <span class="ActionScriptReserved">as</span> <span class="ActionScriptDefault_Text">ContactVO</span>;
        <span class="ActionScriptBracket/Brace">}</span>
    <span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptBracket/Brace">}</span></pre>
<p>JunctionMediator.as</p>
<pre class="MXML"><span class="ActionScriptOperator">...</span>
<span class="ActionScriptReserved">override</span> <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">handlePipeMessage</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">message</span>:<span class="ActionScriptDefault_Text">IPipeMessage</span><span class="ActionScriptBracket/Brace">)</span>:<span class="ActionScriptReserved">void</span>
<span class="ActionScriptBracket/Brace">{</span>
    <span class="ActionScriptReserved">switch</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">message</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">getType</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">)</span>
    <span class="ActionScriptBracket/Brace">{</span>
        <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">ScreenMessage</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">GET</span>:
            <span class="ActionScriptComment">//
</span>            <span class="ActionScriptReserved">break</span>;
        <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">ContactMessage</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">CONTACT_ADDED</span>:
            <span class="ActionScriptDefault_Text">contactsProxy</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">addContact</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">ContactMessage</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">message</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">contact</span> <span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptReserved">break</span>;
        <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">ContactMessage</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">CONTACT_UPDATED</span>:
            <span class="ActionScriptDefault_Text">contactsProxy</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">updateContact</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">ContactMessage</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">message</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">contact</span> <span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptReserved">break</span>;
        <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">ContactMessage</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">CONTACT_REMOVED</span>:
            <span class="ActionScriptDefault_Text">contactsProxy</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">removeContact</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">ContactMessage</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">message</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">contact</span> <span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptReserved">break</span>;
        <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">ItemMessage</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">ITEM_ADDED</span>:
            <span class="ActionScriptDefault_Text">itemsProxy</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">addItem</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">ItemMessage</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">message</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">item</span> <span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptReserved">break</span>;
        <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">ItemMessage</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">ITEM_UPDATED</span>:
            <span class="ActionScriptDefault_Text">itemsProxy</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">updateItem</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">ItemMessage</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">message</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">item</span> <span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptReserved">break</span>;
        <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">ItemMessage</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">ITEM_REMOVED</span>:
            <span class="ActionScriptDefault_Text">itemsProxy</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">removeItem</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">ItemMessage</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">message</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">item</span> <span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptReserved">break</span>;
    <span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptOperator">...</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2010/01/25/custom-pipe-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make async call from Flex/PureMVC application</title>
		<link>http://mariusht.com/blog/2010/01/20/make-async-call-from-flexpuremvc-application/</link>
		<comments>http://mariusht.com/blog/2010/01/20/make-async-call-from-flexpuremvc-application/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 04:09:46 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA['smart vo']]></category>
		<category><![CDATA[async proxy]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[PureMVC]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1779</guid>
		<description><![CDATA[In this example I want to show you how to make asynchronous call to a web service from Flex/PureMVC application.
You can learn: how to call a web service from Proxy, convert returned xml into &#8220;smart VO&#8217;s&#8221;, notify the rest of the application about new data.



]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="border: 1px solid #333333;"src="http://mariusht.com/files/blog/flickr_feed/flickrFeed.jpg" alt="" width="135" height="120" />In this example I want to show you how to make asynchronous call to a web service from Flex/PureMVC application.<br />
You can learn: how to call a web service from Proxy, convert returned xml into &#8220;smart VO&#8217;s&#8221;, notify the rest of the application about new data.
<div style="float: right; margin: 5px 0 15px 5px;">
<input class="btn" type="button" value="View Demo" onClick="window.open('http://mariusht.com/files/blog/flickr_feed/bin-release/')"/>
<input class="btn" type="button" value="View Source" onClick="window.open('http://mariusht.com/files/blog/flickr_feed/bin-release/srcview/')"/></div>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2010/01/20/make-async-call-from-flexpuremvc-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RoundButtonSkin</title>
		<link>http://mariusht.com/blog/2009/12/15/roundbuttonskin/</link>
		<comments>http://mariusht.com/blog/2009/12/15/roundbuttonskin/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 17:57:43 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Button]]></category>
		<category><![CDATA[Ellipse]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[SparkSkin]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1618</guid>
		<description><![CDATA[I have created round button skin for spark button component. RoundButtonSkin has the same shadow, fill, fill lowlight, fill highlight and the border color as ButtonSkin provided by Adobe. A major difference between my skin and Adobe&#8217;s skin is that RoundButtonSkin has a different shape &#8211; Ellipse.
Feel free to use it in your projects.



]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="border: 1px solid #333333;" src="http://mariusht.com/files/blog/round_button_skin/roundButtonSkin_thumb.jpg" alt="" width="135" height="120" />I have created round button skin for spark button component. RoundButtonSkin has the same shadow, fill, fill lowlight, fill highlight and the border color as ButtonSkin provided by Adobe. A major difference between my skin and Adobe&#8217;s skin is that RoundButtonSkin has a different shape &#8211; Ellipse.
<div style="padding-top:13px; float:left"><em><strong>Feel free to use it in your projects.</strong></em></div>
<div style="float: right; margin: 5px 0 15px 5px;">
<input class="btn" type="button" value="View Demo" onClick="window.open('http://mariusht.com/files/blog/round_button_skin/bin-release/')"/>
<input class="btn" type="button" value="View Source" onClick="window.open('http://mariusht.com/files/blog/round_button_skin/bin-release/srcview/')"/></div>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/12/15/roundbuttonskin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a custom application updater</title>
		<link>http://mariusht.com/blog/2009/12/08/creating-a-custom-application-updater/</link>
		<comments>http://mariusht.com/blog/2009/12/08/creating-a-custom-application-updater/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 16:40:20 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[application updater]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Updater UI]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1548</guid>
		<description><![CDATA[In above image you can see the custom application updater interface I have created for my NoteList application. You would see this updater interface only if updated application is available for download. Clicking the &#8216;Download and Upload&#8217; button downloads updated .air file and updates current application.

Below you can see the source code for updating an [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="border: 1px solid #CCCCCC;" src="http://mariusht.com/files/blog/custom_application_updater/customUpdater.jpg" alt="" width="656" height="113" />In above image you can see the custom application updater interface I have created for my <a href="http://mariusht.com/products/notelist/">NoteList</a> application. You would see this updater interface only if updated application is available for download. Clicking the &#8216;Download and Upload&#8217; button downloads updated .air file and updates current application.<br />
<span id="more-1548"></span><br />
Below you can see the source code for updating an AIR app. The following code shows you how to:<br />
1. Load the update descriptor file.</p>
<pre class="MXML"><span class="ActionScriptComment">// load the update-descriptor
</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">loader</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">URLLoader</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">URLLoader</span>;
<span class="ActionScriptDefault_Text">loader</span>.<span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">Event</span>.<span class="ActionScriptDefault_Text">COMPLETE</span>, <span class="ActionScriptDefault_Text">onLoadComplete</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptDefault_Text">loader</span>.<span class="ActionScriptDefault_Text">load</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">URLRequest</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">&apos;http://mariusht.com/files/products/notelist/update.xml&apos;</span><span class="ActionScriptBracket/Brace">))</span>;</pre>
<p>2. Check and see if a user has the latest version of an AIR app installed.</p>
<pre class="MXML"><span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">onLoadComplete</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Event</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
<span class="ActionScriptBracket/Brace">{</span>
    <span class="ActionScriptComment">// ignore xml declaration
</span>    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">str</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">URLLoader</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span>.<span class="ActionScriptDefault_Text">target</span><span class="ActionScriptBracket/Brace">)</span>.<span class="ActionScriptDefault_Text">data</span> <span class="ActionScriptReserved">as</span> <span class="ActionScriptDefault_Text">String</span>;
    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">index</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">str</span>.<span class="ActionScriptDefault_Text">indexOf</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">&apos;&lt;update&apos;</span><span class="ActionScriptBracket/Brace">)</span>;
    <span class="ActionScriptDefault_Text">str</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">str</span>.<span class="ActionScriptDefault_Text">substr</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">index</span>, <span class="ActionScriptDefault_Text">str</span>.<span class="ActionScriptDefault_Text">length</span><span class="ActionScriptBracket/Brace">)</span>;

    <span class="ActionScriptComment">// convert String to XML
</span>    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">remoteAppXML</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XML</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">XML</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">str</span><span class="ActionScriptBracket/Brace">)</span>;
    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">ns</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Namespace</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">remoteAppXML</span>.<span class="ActionScriptDefault_Text">namespace</span><span class="ActionScriptBracket/Brace">()</span>;

    <span class="ActionScriptComment">// get new version number
</span>    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">version</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">remoteAppXML</span>.<span class="ActionScriptDefault_Text">ns</span><span class="ActionScriptOperator">::</span><span class="ActionScriptDefault_Text">version</span>;

    <span class="ActionScriptComment">// get current version number
</span>    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">appXML</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XML</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">NativeApplication</span>.<span class="ActionScriptDefault_Text">nativeApplication</span>.<span class="ActionScriptDefault_Text">applicationDescriptor</span>;
    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">ns</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Namespace</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">appXML</span>.<span class="ActionScriptDefault_Text">namespace</span><span class="ActionScriptBracket/Brace">()</span>;
    <span class="ActionScriptDefault_Text">currentVersion</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">appXML</span>.<span class="ActionScriptDefault_Text">ns</span><span class="ActionScriptOperator">::</span><span class="ActionScriptDefault_Text">version</span>;

    <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">currentVersion</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptDefault_Text">version</span><span class="ActionScriptBracket/Brace">)</span>
    <span class="ActionScriptBracket/Brace">{</span>
        <span class="ActionScriptComment">// download AIR file
</span>    <span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptBracket/Brace">}</span></pre>
<p>3. Download and save the AIR file. Don&#8217;t forget to call Updater.update() function.</p>
<pre class="MXML"><span class="ActionScriptReserved">public</span> <span class="ActionScriptclass">class</span> <span class="ActionScriptDefault_Text">UpdateAppCommand</span> <span class="ActionScriptReserved">extends</span> <span class="ActionScriptDefault_Text">SimpleCommand</span> <span class="ActionScriptReserved">implements</span> <span class="ActionScriptDefault_Text">ICommand</span>
<span class="ActionScriptBracket/Brace">{</span>
    <span class="ActionScriptReserved">override</span> <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">execute</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">note</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">INotification</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
    <span class="ActionScriptBracket/Brace">{</span>
        <span class="ActionScriptComment">// download updated .air file
</span>        <span class="ActionScriptDefault_Text">urlStream</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">URLStream</span><span class="ActionScriptBracket/Brace">()</span>;
        <span class="ActionScriptDefault_Text">fileData</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">ByteArray</span><span class="ActionScriptBracket/Brace">()</span>;
        <span class="ActionScriptDefault_Text">urlStream</span>.<span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">Event</span>.<span class="ActionScriptDefault_Text">COMPLETE</span>, <span class="ActionScriptDefault_Text">loaded</span><span class="ActionScriptBracket/Brace">)</span>;
        <span class="ActionScriptDefault_Text">urlStream</span>.<span class="ActionScriptDefault_Text">load</span><span class="ActionScriptBracket/Brace">(</span>
            <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">URLRequest</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">&apos;http://mariusht.com/files/products/notelist/NoteList.air&apos;</span><span class="ActionScriptBracket/Brace">))</span>;
    <span class="ActionScriptBracket/Brace">}</span> 

    <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">loaded</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Event</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
    <span class="ActionScriptBracket/Brace">{</span>
        <span class="ActionScriptDefault_Text">urlStream</span>.<span class="ActionScriptDefault_Text">readBytes</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">fileData</span>, 0, <span class="ActionScriptDefault_Text">urlStream</span>.<span class="ActionScriptDefault_Text">bytesAvailable</span><span class="ActionScriptBracket/Brace">)</span>;
        <span class="ActionScriptDefault_Text">writeAirFile</span><span class="ActionScriptBracket/Brace">()</span>;
    <span class="ActionScriptBracket/Brace">}</span> 

    <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">writeAirFile</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
    <span class="ActionScriptBracket/Brace">{</span>
        <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">file</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">File</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">File</span>.<span class="ActionScriptDefault_Text">applicationStorageDirectory</span>.<span class="ActionScriptDefault_Text">resolvePath</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">&apos;NoteList.air&apos;</span><span class="ActionScriptBracket/Brace">)</span>;
        <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">fileStream</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">FileStream</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">FileStream</span>;
        <span class="ActionScriptDefault_Text">fileStream</span>.<span class="ActionScriptDefault_Text">open</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">file</span>, <span class="ActionScriptDefault_Text">FileMode</span>.<span class="ActionScriptDefault_Text">WRITE</span><span class="ActionScriptBracket/Brace">)</span>;
        <span class="ActionScriptDefault_Text">fileStream</span>.<span class="ActionScriptDefault_Text">writeBytes</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">fileData</span>, 0, <span class="ActionScriptDefault_Text">fileData</span>.<span class="ActionScriptDefault_Text">length</span><span class="ActionScriptBracket/Brace">)</span>;
        <span class="ActionScriptDefault_Text">fileStream</span>.<span class="ActionScriptDefault_Text">close</span><span class="ActionScriptBracket/Brace">()</span>;

        <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">versionProxy</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">VersionProxy</span> <span class="ActionScriptOperator">=</span>
            <span class="ActionScriptDefault_Text">facade</span>.<span class="ActionScriptDefault_Text">retrieveProxy</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">VersionProxy</span>.<span class="ActionScriptDefault_Text">NAME</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptReserved">as</span> <span class="ActionScriptDefault_Text">VersionProxy</span>;
        <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">updater</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Updater</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Updater</span>;
        <span class="ActionScriptDefault_Text">updater</span>.<span class="ActionScriptDefault_Text">update</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">file</span>, <span class="ActionScriptDefault_Text">versionProxy</span>.<span class="ActionScriptDefault_Text">version</span><span class="ActionScriptBracket/Brace">)</span>;
    <span class="ActionScriptBracket/Brace">}</span> 

    <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">urlStream</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">URLStream</span>;
    <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">fileData</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">ByteArray</span>;</pre>
<p>Related Links:<br />
<a href="http://help.adobe.com/en_US/AIR/1.5/devappsflex/WS5b3ccc516d4fbf351e63e3d118666ade46-7ff2.html">Updating AIR applications (Adobe AIR 1.5 LiveDocs)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/12/08/creating-a-custom-application-updater/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tracking user presence</title>
		<link>http://mariusht.com/blog/2009/10/17/tracking-user-presence/</link>
		<comments>http://mariusht.com/blog/2009/10/17/tracking-user-presence/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 21:52:57 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1449</guid>
		<description><![CDATA[Adobe AIR applications can detect if user is actively using a computer. The NativeApplication object dispatches two events:
userIdle event &#8211; user is not using a computer,
userPresent event &#8211; user is using a computer again.
The following lines of code set the idle threshold to 20 seconds and listen for both the userIdle and userPresent events:
&#60;?xml version="1.0" [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://mariusht.com/files/blog/user_presence/userPresence.jpg" alt="" width="231" height="100" />Adobe AIR applications can detect if user is actively using a computer. The NativeApplication object dispatches two events:<br />
userIdle event &#8211; user is not using a computer,<br />
userPresent event &#8211; user is using a computer again.<br />
The following lines of code set the idle threshold to 20 seconds and listen for both the userIdle and userPresent events:</p>
<pre class="MXML"><span class="MXMLProcessing_Instruction">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
<span class="MXMLComponent_Tag">&lt;mx:WindowedApplication</span><span class="MXMLDefault_Text"> xmlns:mx="</span><span class="MXMLString">http://www.adobe.com/2006/mxml</span><span class="MXMLDefault_Text">" layout="</span><span class="MXMLString">absolute</span><span class="MXMLDefault_Text">"
    creationComplete="</span><span class="ActionScriptDefault_Text">init</span><span class="ActionScriptBracket/Brace">()</span><span class="MXMLDefault_Text">" viewSourceURL="</span><span class="MXMLString">srcview/index.html</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">&gt;</span> 

    <span class="MXMLSpecial_Tag">&lt;mx:Script&gt;</span>
        <span class="ActionScriptOperator">&lt;!</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">CDATA</span><span class="ActionScriptBracket/Brace">[</span>
            <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">init</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
            <span class="ActionScriptBracket/Brace">{</span>
                <span class="ActionScriptDefault_Text">nativeApplication</span>.<span class="ActionScriptDefault_Text">idleThreshold</span> <span class="ActionScriptOperator">=</span> 20;
                <span class="ActionScriptDefault_Text">nativeApplication</span>.<span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">Event</span>.<span class="ActionScriptDefault_Text">USER_IDLE</span>, <span class="ActionScriptDefault_Text">userIdleHandler</span><span class="ActionScriptBracket/Brace">)</span>;
                <span class="ActionScriptDefault_Text">nativeApplication</span>.<span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">Event</span>.<span class="ActionScriptDefault_Text">USER_PRESENT</span>, <span class="ActionScriptDefault_Text">userPresentHandler</span><span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptBracket/Brace">}</span> 

            <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">userIdleHandler</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Event</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
            <span class="ActionScriptBracket/Brace">{</span>
                <span class="ActionScripttrace">trace</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">'idle'</span><span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptBracket/Brace">}</span> 

            <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">userPresentHandler</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Event</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
            <span class="ActionScriptBracket/Brace">{</span>
                <span class="ActionScripttrace">trace</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">'present'</span><span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptBracket/Brace">}</span>
        <span class="ActionScriptBracket/Brace">]]</span><span class="ActionScriptOperator">&gt;</span>
    <span class="MXMLSpecial_Tag">&lt;/mx:Script&gt;</span> 

<span class="MXMLComponent_Tag">&lt;/mx:WindowedApplication&gt;</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/10/17/tracking-user-presence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auto select New Item in Tree component</title>
		<link>http://mariusht.com/blog/2009/04/19/auto-select-new-item-in-tree-component/</link>
		<comments>http://mariusht.com/blog/2009/04/19/auto-select-new-item-in-tree-component/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 17:12:10 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[tree]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=249</guid>
		<description><![CDATA[There are plenty examples out there on how to add and remove leaf nodes from a Tree control at run time, one of my favorite is Working with tree controls tutorial by Adobe.
Now it&#8217;s time to learn more advanced stuff: auto select for new created item. This would be very easy to accomplish with List control. You would probably use [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://mariusht.com/files/blog/autoselect_new_item_in_tree/preview.jpg" alt="" width="297" height="292" />There are plenty examples out there on how to add and remove leaf nodes from a Tree control at run time, one of my favorite is <a href="Working with Tree controls">Working with tree controls</a> tutorial by Adobe.</p>
<p>Now it&#8217;s time to learn more advanced stuff: <strong>auto select for new created item</strong>. This would be very easy to accomplish with List control. You would probably use ArrayCollection as a dataProvider, call addItem(item:Object), keep track of that item index, and then use list.selectedIndex = index. </p>
<p>Unfortunately this is not easy with Tree control. Tree control could have opened and closed nodes. If the nodes in the tree control are collapsed, the selectedIndex is different than when all the nodes are expanded. <strong>Instead of using selectedIndex you want to loop through all nodes to find a</strong><strong> new item&#8217;s index</strong>.</p>
<p><span id="more-249"></span><br />
<a href="http://www.jdoqocy.com/click-3456007-10665044" target="_top">Get Flex Builder for free if you are an unemployed developer</a><br />
<img src="http://www.ftjcfx.com/image-3456007-10665044" border="0" alt="" width="1" height="1" /></p>
<pre class="MXML"><span class="MXMLProcessing_Instruction">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
<span class="MXMLComponent_Tag">&lt;mx:Application</span><span class="MXMLDefault_Text">
    xmlns:mx="</span><span class="MXMLString">http://www.adobe.com/2006/mxml</span><span class="MXMLDefault_Text">"
    layout="</span><span class="MXMLString">absolute</span><span class="MXMLDefault_Text">"
    creationComplete="</span><span class="ActionScriptDefault_Text">onCreationComplete</span><span class="ActionScriptBracket/Brace">()</span><span class="MXMLDefault_Text">" viewSourceURL="</span><span class="MXMLString">srcview/index.html</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">&gt;</span> 

    <span class="MXMLSpecial_Tag">&lt;mx:Script&gt;</span>
        <span class="ActionScriptOperator">&lt;!</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">CDATA</span><span class="ActionScriptBracket/Brace">[</span>
            <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span>.<span class="ActionScriptDefault_Text">collections</span>.<span class="ActionScriptDefault_Text">XMLListCollection</span>;
            <span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptMetadata">Bindable</span><span class="ActionScriptBracket/Brace">]</span>
            <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">company</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XML</span> <span class="ActionScriptOperator">=</span>
              <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">&gt;</span>
                <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">node</span> <span class="ActionScriptDefault_Text">label</span><span class="ActionScriptOperator">=</span>"<span class="ActionScriptDefault_Text">Finance</span>" <span class="ActionScriptDefault_Text">code</span><span class="ActionScriptOperator">=</span>"200"<span class="ActionScriptOperator">&gt;</span>
                    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">node</span> <span class="ActionScriptDefault_Text">label</span><span class="ActionScriptOperator">=</span>"<span class="ActionScriptDefault_Text">John</span> <span class="ActionScriptDefault_Text">H</span>"<span class="ActionScriptOperator">/&gt;</span>
                    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">node</span> <span class="ActionScriptDefault_Text">label</span><span class="ActionScriptOperator">=</span>"<span class="ActionScriptDefault_Text">Sam</span> <span class="ActionScriptDefault_Text">K</span>"<span class="ActionScriptOperator">/&gt;</span>
                <span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">&gt;</span>
                <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">node</span> <span class="ActionScriptDefault_Text">label</span><span class="ActionScriptOperator">=</span>"<span class="ActionScriptDefault_Text">Operations</span>" <span class="ActionScriptDefault_Text">code</span><span class="ActionScriptOperator">=</span>"400"<span class="ActionScriptOperator">&gt;</span>
                    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">node</span> <span class="ActionScriptDefault_Text">label</span><span class="ActionScriptOperator">=</span>"<span class="ActionScriptDefault_Text">Bill</span> <span class="ActionScriptDefault_Text">C</span>"<span class="ActionScriptOperator">/&gt;</span>
                    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">node</span> <span class="ActionScriptDefault_Text">label</span><span class="ActionScriptOperator">=</span>"<span class="ActionScriptDefault_Text">Jill</span> <span class="ActionScriptDefault_Text">W</span>"<span class="ActionScriptOperator">/&gt;</span>
                <span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">&gt;</span>
                <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">node</span> <span class="ActionScriptDefault_Text">label</span><span class="ActionScriptOperator">=</span>"<span class="ActionScriptDefault_Text">Engineering</span>" <span class="ActionScriptDefault_Text">code</span><span class="ActionScriptOperator">=</span>"300"<span class="ActionScriptOperator">&gt;</span>
                    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">node</span> <span class="ActionScriptDefault_Text">label</span><span class="ActionScriptOperator">=</span>"<span class="ActionScriptDefault_Text">Erin</span> <span class="ActionScriptDefault_Text">M</span>"<span class="ActionScriptOperator">/&gt;</span>
                    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">node</span> <span class="ActionScriptDefault_Text">label</span><span class="ActionScriptOperator">=</span>"<span class="ActionScriptDefault_Text">Ann</span> <span class="ActionScriptDefault_Text">B</span>"<span class="ActionScriptOperator">/&gt;</span>
                <span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">&gt;</span>
              <span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">&gt;</span>;

            <span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptMetadata">Bindable</span><span class="ActionScriptBracket/Brace">]</span>
            <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">companyData</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XMLListCollection</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">XMLListCollection</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">company</span>.<span class="ActionScriptDefault_Text">children</span><span class="ActionScriptBracket/Brace">())</span>;

            <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">removeNode</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
            <span class="ActionScriptBracket/Brace">{</span>
                <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XML</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">XML</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">tree</span>.<span class="ActionScriptDefault_Text">selectedItem</span><span class="ActionScriptBracket/Brace">)</span>;
                <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptReserved">null</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptReserved">return</span>;

                <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">children</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XMLList</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">XMLList</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span>.<span class="ActionScriptDefault_Text">parent</span><span class="ActionScriptBracket/Brace">()</span>.<span class="ActionScriptDefault_Text">children</span><span class="ActionScriptBracket/Brace">())</span>;
                <span class="ActionScriptReserved">for</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span><span class="ActionScriptOperator">=</span>0; <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">children</span>.<span class="ActionScriptDefault_Text">length</span><span class="ActionScriptBracket/Brace">()</span>; <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span>
                <span class="ActionScriptBracket/Brace">{</span>
                    <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">children</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">]</span>.@<span class="ActionScriptDefault_Text">label</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptDefault_Text">node</span>.@<span class="ActionScriptDefault_Text">label</span><span class="ActionScriptBracket/Brace">)</span>
                    <span class="ActionScriptBracket/Brace">{</span>
                        <span class="ActionScriptReserved">delete</span> <span class="ActionScriptDefault_Text">children</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">]</span>;
                    <span class="ActionScriptBracket/Brace">}</span>
                <span class="ActionScriptBracket/Brace">}</span>
            <span class="ActionScriptBracket/Brace">}</span> 

            <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">addNode</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
            <span class="ActionScriptBracket/Brace">{</span>
                <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XML</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">/&gt;</span>;
                <span class="ActionScriptDefault_Text">node</span>.@<span class="ActionScriptDefault_Text">label</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">folderNameInput</span>.<span class="ActionScriptDefault_Text">text</span>;

                <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">parentNode</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XML</span>;
                <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">tree</span>.<span class="ActionScriptDefault_Text">selectedItem</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptReserved">null</span><span class="ActionScriptBracket/Brace">)</span>
                    <span class="ActionScriptDefault_Text">companyData</span>.<span class="ActionScriptDefault_Text">addItem</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptBracket/Brace">)</span>;
                <span class="ActionScriptReserved">else</span>
                <span class="ActionScriptBracket/Brace">{</span>
                    <span class="ActionScriptDefault_Text">parentNode</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">XML</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">tree</span>.<span class="ActionScriptDefault_Text">selectedItem</span><span class="ActionScriptBracket/Brace">)</span>;
                    <span class="ActionScriptDefault_Text">parentNode</span>.<span class="ActionScriptDefault_Text">appendChild</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptBracket/Brace">)</span>;
                    <span class="ActionScriptDefault_Text">tree</span>.<span class="ActionScriptDefault_Text">expandItem</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">parentNode</span>, <span class="ActionScriptReserved">true</span><span class="ActionScriptBracket/Brace">)</span>;
                <span class="ActionScriptBracket/Brace">}</span>
                <span class="ActionScriptDefault_Text">folderNameInput</span>.<span class="ActionScriptDefault_Text">text</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptString">''</span>;
                <span class="ActionScriptDefault_Text">selectNode</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptBracket/Brace">}</span> 

            <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_index</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span>;
            <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_isFounded</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Boolean</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">false</span>;
            <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">selectNode</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XML</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
            <span class="ActionScriptBracket/Brace">{</span>
                <span class="ActionScriptDefault_Text">_isFounded</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">false</span>;
                <span class="ActionScriptDefault_Text">_index</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptOperator">-</span>1;
                <span class="ActionScriptReserved">for</span> <span class="ActionScriptReserved">each</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">parentNode</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XML</span> <span class="ActionScriptReserved">in</span> <span class="ActionScriptDefault_Text">companyData</span><span class="ActionScriptBracket/Brace">)</span>
                <span class="ActionScriptBracket/Brace">{</span>
                    <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">tree</span>.<span class="ActionScriptDefault_Text">isItemOpen</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">parentNode</span><span class="ActionScriptBracket/Brace">))</span>
                        <span class="ActionScriptDefault_Text">loopAndFindXml</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span>, <span class="ActionScriptDefault_Text">parentNode</span><span class="ActionScriptBracket/Brace">)</span>;
                    <span class="ActionScriptReserved">else</span> <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(!</span><span class="ActionScriptDefault_Text">_isFounded</span><span class="ActionScriptBracket/Brace">)</span>
                        <span class="ActionScriptDefault_Text">_index</span><span class="ActionScriptOperator">++</span>;
                <span class="ActionScriptBracket/Brace">}</span>
                <span class="ActionScriptDefault_Text">tree</span>.<span class="ActionScriptDefault_Text">selectedIndex</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">_index</span>;
            <span class="ActionScriptBracket/Brace">}</span> 

            <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">loopAndFindXml</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XML</span>, <span class="ActionScriptDefault_Text">parentNode</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">XML</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
            <span class="ActionScriptBracket/Brace">{</span>
                <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_isFounded</span><span class="ActionScriptBracket/Brace">)</span>
                    <span class="ActionScriptReserved">return</span>;
                <span class="ActionScriptDefault_Text">_index</span><span class="ActionScriptOperator">++</span>;
                <span class="ActionScriptComment">//trace('myNode , '+_index+' , '+parentNode.toXMLString());
</span>
                <span class="ActionScriptReserved">for</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">int</span><span class="ActionScriptOperator">=</span>0; <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">parentNode</span>.<span class="ActionScriptDefault_Text">children</span><span class="ActionScriptBracket/Brace">()</span>.<span class="ActionScriptDefault_Text">length</span><span class="ActionScriptBracket/Brace">()</span>; <span class="ActionScriptDefault_Text">i</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">)</span>
                <span class="ActionScriptBracket/Brace">{</span>
                    <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_isFounded</span><span class="ActionScriptBracket/Brace">)</span>
                        <span class="ActionScriptReserved">return</span>;

                    <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">tree</span>.<span class="ActionScriptDefault_Text">isItemOpen</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">parentNode</span>.<span class="ActionScriptDefault_Text">node</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">]))</span>
                    <span class="ActionScriptBracket/Brace">{</span>
                        <span class="ActionScriptComment">//trace('loop');
</span>                        <span class="ActionScriptDefault_Text">loopAndFindXml</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span>, <span class="ActionScriptDefault_Text">parentNode</span>.<span class="ActionScriptDefault_Text">node</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">])</span>;
                    <span class="ActionScriptBracket/Brace">}</span>
                    <span class="ActionScriptReserved">else</span>
                    <span class="ActionScriptBracket/Brace">{</span>
                        <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_isFounded</span><span class="ActionScriptBracket/Brace">)</span>
                            <span class="ActionScriptReserved">return</span>;
                        <span class="ActionScriptDefault_Text">_index</span><span class="ActionScriptOperator">++</span>;
                        <span class="ActionScriptComment">//trace('myNode1 '+_index+' , '+parentNode.node[i].toXMLString());
</span>
                        <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">parentNode</span>.<span class="ActionScriptDefault_Text">node</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptDefault_Text">node</span><span class="ActionScriptBracket/Brace">)</span>
                        <span class="ActionScriptBracket/Brace">{</span>
                            <span class="ActionScriptComment">//trace('found');
</span>                            <span class="ActionScriptDefault_Text">_isFounded</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">true</span>;
                            <span class="ActionScriptReserved">return</span>;
                        <span class="ActionScriptBracket/Brace">}</span>
                    <span class="ActionScriptBracket/Brace">}</span>
                <span class="ActionScriptBracket/Brace">}</span>
            <span class="ActionScriptBracket/Brace">}</span> 

            <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">expandAllTreeNodes</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">tree</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Tree</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
            <span class="ActionScriptBracket/Brace">{</span>
                <span class="ActionScriptDefault_Text">tree</span>.<span class="ActionScriptDefault_Text">expandChildrenOf</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">company</span>, <span class="ActionScriptReserved">true</span><span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptBracket/Brace">}</span> 

            <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">onCreationComplete</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
            <span class="ActionScriptBracket/Brace">{</span>
                <span class="ActionScriptDefault_Text">expandAllTreeNodes</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">tree</span><span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptBracket/Brace">}</span> 

        <span class="ActionScriptBracket/Brace">]]</span><span class="ActionScriptOperator">&gt;</span>
    <span class="MXMLSpecial_Tag">&lt;/mx:Script&gt;</span> 

    <span class="MXMLComponent_Tag">&lt;mx:Tree</span><span class="MXMLDefault_Text"> id="</span><span class="MXMLString">tree</span><span class="MXMLDefault_Text">"
        x="</span><span class="MXMLString">8</span><span class="MXMLDefault_Text">" y="</span><span class="MXMLString">40</span><span class="MXMLDefault_Text">"
        dataProvider="</span><span class="MXMLString">{</span><span class="ActionScriptDefault_Text">companyData</span><span class="MXMLString">}</span><span class="MXMLDefault_Text">"
        labelField="</span><span class="MXMLString">@label</span><span class="MXMLDefault_Text">"
         width="</span><span class="MXMLString">162</span><span class="MXMLDefault_Text">" height="</span><span class="MXMLString">245</span><span class="MXMLDefault_Text">"
    </span><span class="MXMLComponent_Tag">/&gt;</span> 

    <span class="MXMLComponent_Tag">&lt;mx:TextInput</span><span class="MXMLDefault_Text"> id="</span><span class="MXMLString">folderNameInput</span><span class="MXMLDefault_Text">"
        x="</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">" y="</span><span class="MXMLString">11</span><span class="MXMLDefault_Text">"
    </span><span class="MXMLComponent_Tag">/&gt;</span> 

    <span class="MXMLComponent_Tag">&lt;mx:Button</span><span class="MXMLDefault_Text">
        x="</span><span class="MXMLString">178</span><span class="MXMLDefault_Text">" y="</span><span class="MXMLString">11</span><span class="MXMLDefault_Text">"
        label="</span><span class="MXMLString">Add Node</span><span class="MXMLDefault_Text">"
        width="</span><span class="MXMLString">112</span><span class="MXMLDefault_Text">"
        click="</span><span class="ActionScriptDefault_Text">addNode</span><span class="ActionScriptBracket/Brace">()</span><span class="MXMLDefault_Text">"
    </span><span class="MXMLComponent_Tag">/&gt;</span> 

    <span class="MXMLComponent_Tag">&lt;mx:Button</span><span class="MXMLDefault_Text">
        x="</span><span class="MXMLString">178</span><span class="MXMLDefault_Text">" y="</span><span class="MXMLString">41</span><span class="MXMLDefault_Text">"
        label="</span><span class="MXMLString">Remove Node</span><span class="MXMLDefault_Text">"
        click="</span><span class="ActionScriptDefault_Text">removeNode</span><span class="ActionScriptBracket/Brace">()</span><span class="MXMLDefault_Text">"
     width="</span><span class="MXMLString">112</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">/&gt;</span> 

<span class="MXMLComponent_Tag">&lt;/mx:Application&gt;</span></pre>
<p><a href="http://mariusht.com/files/blog/autoselect_new_item_in_tree/">View the Live Demo</a> (right click to view the source)</p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/04/19/auto-select-new-item-in-tree-component/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Missing BitmapData class in code completion &#8211; Flex(FP10)</title>
		<link>http://mariusht.com/blog/2009/04/15/missing-bitmapdata-class-in-code-completion-flexfp10/</link>
		<comments>http://mariusht.com/blog/2009/04/15/missing-bitmapdata-class-in-code-completion-flexfp10/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 04:25:12 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[code completion]]></category>
		<category><![CDATA[Flash Player 10]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=228</guid>
		<description><![CDATA[I&#8217;ve setup my Flex Builder for Flex 3.3 SDK and Flash Player 10 as described in this article. I noticed that BitmapData class doesn&#8217;t show anymore.
Any thoughts on this?

Above Problem Solved. (Updated)
Read the Flex 3.3 SDK
http://www.adobe.com/support/documentation/en/flex/3/releasenotes_flex3_sdk.html
You need to:
1. Download Flex SDK zip file.
2. Uninstall current Flash Player.
3. Install Flash Player from /runtimes/player/10/win/
Thanks to the Flex Community(Michael [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve setup my Flex Builder for Flex 3.3 SDK and Flash Player 10 as described in <a href="http://blog.everythingflex.com/2008/05/20/using-flash-player-10-within-flex-builder/">this article</a>. I noticed that BitmapData class doesn&#8217;t show anymore.</p>
<p>Any thoughts on this?</p>
<p><img src="http://mariusht.com/files/blog/missing_bitmapdata_class_in_fp10/photo.jpg" alt="" width="669" height="307" /></p>
<p><strong>Above Problem Solved.</strong> (Updated)</p>
<p>Read the Flex 3.3 SDK<br />
<a href="http://www.adobe.com/support/documentation/en/flex/3/releasenotes_flex3_sdk.html">http://www.adobe.com/support/documentation/en/flex/3/releasenotes_flex3_sdk.html</a></p>
<p>You need to:<br />
1. Download Flex SDK zip file.<br />
2. Uninstall current Flash Player.<br />
3. Install Flash Player from /runtimes/player/10/win/</p>
<p>Thanks to the Flex Community(Michael Borbor).<br />
<a href="http://www.kqzyfj.com/click-3456007-10426214" target="_top"><br />
<img src="http://www.lduhtrp.net/image-3456007-10426214" width="669" height="82" alt="Adobe" border="0"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/04/15/missing-bitmapdata-class-in-code-completion-flexfp10/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Downloading and Saving Images to the desktop with AIR</title>
		<link>http://mariusht.com/blog/2009/04/15/downloading-and-saving-images-to-the-desktop-with-air/</link>
		<comments>http://mariusht.com/blog/2009/04/15/downloading-and-saving-images-to-the-desktop-with-air/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 00:18:17 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ByteArray]]></category>
		<category><![CDATA[FileReference]]></category>
		<category><![CDATA[FileStream]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[JPEGEncoder]]></category>
		<category><![CDATA[PNGEncoder]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=146</guid>
		<description><![CDATA[
In this example i want to show you how to download remote image(jpg or png) and save it to the desktop.

Load remote file. We use Loader Class and listen for complete event. We call load method and pass URLRequest parameter.
private function loadRemoteImage(url:String):void
{
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://mariusht.com/files/blog/download_save_image/photo.jpg" alt="" width="669" height="407" /></p>
<p>In this example i want to show you how to download remote image(jpg or png) and save it to the desktop.</p>
<p><span id="more-146"></span></p>
<p><img class="alignleft" src="http://mariusht.com/files/blog/download_save_image/1step.jpg" alt="" width="25" height="25" /><strong>Load remote file.</strong> We use Loader Class and listen for complete event. We call load method and pass URLRequest parameter.</p>
<pre class="MXML"><span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">loadRemoteImage</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">url</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">String</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
<span class="ActionScriptBracket/Brace">{</span>
    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">loader</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Loader</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Loader</span><span class="ActionScriptBracket/Brace">()</span>;
    <span class="ActionScriptDefault_Text">loader</span>.<span class="ActionScriptDefault_Text">contentLoaderInfo</span>.<span class="ActionScriptDefault_Text">addEventListener</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">Event</span>.<span class="ActionScriptDefault_Text">COMPLETE</span>, <span class="ActionScriptDefault_Text">completeHandler</span><span class="ActionScriptBracket/Brace">)</span>;
    <span class="ActionScriptDefault_Text">loader</span>.<span class="ActionScriptDefault_Text">load</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">URLRequest</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">url</span><span class="ActionScriptBracket/Brace">))</span>;
<span class="ActionScriptBracket/Brace">}</span></pre>
<p><img class="alignleft" src="http://mariusht.com/files/blog/download_save_image/2step.jpg" alt="" width="25" height="25" /><strong>Create a BitmapData object. </strong>We can access BitmapData object through Bitmap object. In our example Bitmap object is the same as loaderInfo.content.</p>
<p><strong>FOR DEMO PURPOSES ONLY</strong>: Image (&lt;mx:Image id=&#8221;img&#8221;/&gt;) component shows downloaded image.</p>
<pre class="MXML"><span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">completeHandler</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">event</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Event</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
<span class="ActionScriptBracket/Brace">{</span>
    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">loaderInfo</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">LoaderInfo</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">event</span>.<span class="ActionScriptDefault_Text">target</span> <span class="ActionScriptReserved">as</span> <span class="ActionScriptDefault_Text">LoaderInfo</span>;
    <span class="ActionScriptDefault_Text">img</span>.<span class="ActionScriptDefault_Text">source</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">loaderInfo</span>.<span class="ActionScriptDefault_Text">content</span>;
    <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">bitmap</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Bitmap</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">loaderInfo</span>.<span class="ActionScriptDefault_Text">content</span> <span class="ActionScriptReserved">as</span> <span class="ActionScriptDefault_Text">Bitmap</span>;
    <span class="ActionScriptDefault_Text">_bitmapData</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">bitmap</span>.<span class="ActionScriptDefault_Text">bitmapData</span>;
<span class="ActionScriptBracket/Brace">}</span></pre>
<p><img class="alignleft" src="http://mariusht.com/files/blog/download_save_image/3step.jpg" alt="" width="25" height="42" /><strong>Encode image to JPEG or PNG. </strong>Before saving image, we have to take the current BitmapData object and encode to the ByteArray object. This ByteArray object needs to be encoded in the proper format and for this we can use the JPEGEncoder and PNGEncoder. </p>
<pre class="MXML"><span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">saveImage</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptReserved">void</span>
<span class="ActionScriptBracket/Brace">{</span>
<span class="ActionScriptvar">    var</span> <span class="ActionScriptDefault_Text">imgByteArray</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">ByteArray</span>;
<span class="ActionScriptvar">    var</span> <span class="ActionScriptDefault_Text">extension</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">String</span>;
<span class="ActionScriptReserved">    if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">textInput</span>.<span class="ActionScriptDefault_Text">text</span>.<span class="ActionScriptDefault_Text">toLowerCase</span><span class="ActionScriptBracket/Brace">()</span>.<span class="ActionScriptDefault_Text">indexOf</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">'.jpg'</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptOperator">-</span>1<span class="ActionScriptBracket/Brace">)</span>
<span class="ActionScriptBracket/Brace">    {</span>
<span class="ActionScriptComment">        // encode to JPEG
</span>        <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">jpegEncoder</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">JPEGEncoder</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">JPEGEncoder</span><span class="ActionScriptBracket/Brace">(</span>80<span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptDefault_Text">        imgByteArray</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">jpegEncoder</span>.<span class="ActionScriptDefault_Text">encode</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_bitmapData</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptDefault_Text">        extension</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptString">'.jpg'</span>;
<span class="ActionScriptBracket/Brace">    }</span>
<span class="ActionScriptReserved">    else</span> <span class="ActionScriptReserved">if</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">textInput</span>.<span class="ActionScriptDefault_Text">text</span>.<span class="ActionScriptDefault_Text">toLowerCase</span><span class="ActionScriptBracket/Brace">()</span>.<span class="ActionScriptDefault_Text">indexOf</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">'.png'</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">!=</span> <span class="ActionScriptOperator">-</span>1<span class="ActionScriptBracket/Brace">)</span>
<span class="ActionScriptBracket/Brace">    {</span>
<span class="ActionScriptComment">        // encode to PNG
</span>        <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">pngEncoder</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">PNGEncoder</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">PNGEncoder</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptDefault_Text">        imgByteArray</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">pngEncoder</span>.<span class="ActionScriptDefault_Text">encode</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">_bitmapData</span><span class="ActionScriptBracket/Brace">)</span>;
<span class="ActionScriptDefault_Text">        extension</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptString">'.png'</span>;
<span class="ActionScriptBracket/Brace">    }</span>
<span class="ActionScriptReserved">    else</span>
<span class="ActionScriptReserved">        return</span>;

<span class="ActionScriptvar">    ...</span></pre>
<p><img class="alignleft" src="http://mariusht.com/files/blog/download_save_image/4step.jpg" alt="" width="25" height="25" /><strong>Save file to the desktop</strong>. Now that we already have the encoded ByteArray, we just need to save it to a local file. We do this using the File and FileStream classes.</p>
<pre class="MXML"><span class="ActionScriptvar">     ...</span>
<span class="ActionScriptvar">     var</span> <span class="ActionScriptDefault_Text">file</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">File</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">File</span>.<span class="ActionScriptDefault_Text">desktopDirectory</span>.<span class="ActionScriptDefault_Text">resolvePath</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">'test'</span><span class="ActionScriptOperator">+</span><span class="ActionScriptDefault_Text">extension</span><span class="ActionScriptBracket/Brace">)</span>;
     <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">fileStream</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">FileStream</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">FileStream</span><span class="ActionScriptBracket/Brace">()</span>;
     <span class="ActionScriptDefault_Text">fileStream</span>.<span class="ActionScriptDefault_Text">open</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">file</span>, <span class="ActionScriptDefault_Text">FileMode</span>.<span class="ActionScriptDefault_Text">WRITE</span><span class="ActionScriptBracket/Brace">)</span>;
     <span class="ActionScriptDefault_Text">fileStream</span>.<span class="ActionScriptDefault_Text">writeBytes</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">imgByteArray</span><span class="ActionScriptBracket/Brace">)</span>;
     <span class="ActionScriptDefault_Text">fileStream</span>.<span class="ActionScriptDefault_Text">close</span><span class="ActionScriptBracket/Brace">()</span>;
<span class="ActionScriptBracket/Brace">}</span></pre>
<p><a href="http://mariusht.com/files/blog/download_save_image/srcview/index.html" target="_blank">View Full Source Code</a><br />
<a href="http://www.jdoqocy.com/click-3456007-10589132" target="_top"><br />
<img src="http://www.tqlkg.com/image-3456007-10589132" border="0" alt="Flash CS4 Professional" width="669" height="82" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/04/15/downloading-and-saving-images-to-the-desktop-with-air/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flex 3 / ActionScript 3 posters in JPG format</title>
		<link>http://mariusht.com/blog/2009/04/10/flex-3-actionscript-3-posters-in-jpg-format/</link>
		<comments>http://mariusht.com/blog/2009/04/10/flex-3-actionscript-3-posters-in-jpg-format/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 20:31:55 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[poster]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=119</guid>
		<description><![CDATA[
Each file is about 4MB, 2639&#215;3949 pixels. Download posters(zip file)
You can order a set of Flex, AIR, and ActionScript posters(2 feet by 3 feet) from Adobe website.
NOTE: you need to have an Adobe ID and a valid Flex 3 serial number to order them
PDF versions appeared again on http://flex.org/poster/posters.zip

]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Flex 3, ActionScript 3 posters" src="http://mariusht.com/files/blog/flex3actionscript3_posters/posters.jpg" alt="" width="669" height="333" /></p>
<p>Each file is about 4MB, 2639&#215;3949 pixels. <a href="http://mariusht.com/files/blog/flex3actionscript3_posters/posters.zip">Download posters(zip file)</a></p>
<p>You can order a set of Flex, AIR, and ActionScript posters(2 feet by 3 feet) from <a href="https://www.adobe.com/cfusion/entitlement/index.cfm?e=posters&amp;sdid=ZFCT" target="_blank">Adobe website</a>.</p>
<p><strong>NOTE: <span style="font-weight: normal;">you need to have an Adobe ID and a valid Flex 3 serial number to order them</span></strong></p>
<p><strong><span style="font-weight: normal;">PDF versions appeared again on <a class="jive-link-external-small" href="http://flex.org/poster/posters.zip">http://flex.org/poster/posters.zip</a><br />
</span></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/04/10/flex-3-actionscript-3-posters-in-jpg-format/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

