<?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"
	>

<channel>
	<title>Elad Elrom</title>
	<atom:link href="http://elromdesign.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://elromdesign.com/blog</link>
	<description>Developing Web 2.0 Enterprise Architect Applications</description>
	<pubDate>Wed, 23 Jul 2008 06:09:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>ActionScript Modifiers Summary page and ActionScript 4.0 wishlist</title>
		<link>http://elromdesign.com/blog/2008/06/12/actionscript-modifiers-summary-page-and-actionscript-40-wishlist/</link>
		<comments>http://elromdesign.com/blog/2008/06/12/actionscript-modifiers-summary-page-and-actionscript-40-wishlist/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 01:18:02 +0000</pubDate>
		<dc:creator>elad.ny</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[OOP]]></category>

		<category><![CDATA[Action script Modifiers]]></category>

		<category><![CDATA[ActionScript Modifiers Summary]]></category>

		<category><![CDATA[AS Modifiers Summary]]></category>

		<category><![CDATA[AS3.0 Modifiers]]></category>

		<category><![CDATA[Flex Modifiers]]></category>

		<category><![CDATA[Flex Modifiers Summary]]></category>

		<guid isPermaLink="false">http://elromdesign.com/blog/2008/06/12/actionscript-modifiers-summary-page-and-actionscript-40-wishlist/</guid>
		<description><![CDATA[Let’s  talk about some basic Object Oriented programming (OOP) principles - modifiers. Although some modifiers are used often, especially access modifier (private, public, protected and internal), others are rarely used since they are not needed in most cases. With that said, we tend to forget them and end up never using them, even when [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: 10pt">Let’s  talk about some basic <span style="color: #008000"><strong>Object Oriented programming</strong> (<span style="color: #008000">OOP</span>)</span> principles - modifiers. Although some modifiers are used often, especially access modifier (private, public, protected and internal), others are rarely used since they are not needed in most cases. With that said, we tend to forget them and end up never using them, even when they are needed.</span></p>
<p><span style="font-size: 10pt">I  decided to create a useful one page summary that can be revisited every  time you forget the different types of modifiers available in ActionScript 3.0.</span></p>
<p><span style="font-size: 10pt">To begin let’s  split the modifiers into two groups;</span></p>
<ul>
<li><span style="font-size: 10pt"><strong>Access modifier</strong> – is a modifier that  changes the visibility of a class or its members.</span></li>
<li><span style="font-size: 10pt"><strong>AS  3.0 Modifiers </strong>- used to modify declarations of types and type members in AS. </span></li>
</ul>
<p><span style="font-size: 10pt"><br />
</span></p>
<table border="1" cellpadding="0" cellspacing="0" height="172" width="364">
<tr>
<td valign="top" width="115"><span style="font-size: 10pt"><strong>Access    Modifier</strong> </span></td>
<td valign="top" width="144"><span style="font-size: 10pt"><strong>AS    3.0 Modifier</strong></span></td>
</tr>
<tr>
<td valign="top" width="115"><span style="font-size: 10pt">public</span></td>
<td valign="top" width="144"><span style="font-size: 10pt">dynamic</span></td>
</tr>
<tr>
<td valign="top" width="115"><span style="font-size: 10pt">private</span></td>
<td valign="top" width="144"><span style="font-size: 10pt">Final</span></td>
</tr>
<tr>
<td valign="top" width="115"><span style="font-size: 10pt">protected</span></td>
<td valign="top" width="144"><span style="font-size: 10pt">native</span></td>
</tr>
<tr>
<td valign="top" width="115"><span style="font-size: 10pt">internal</span></td>
<td valign="top" width="144"><span style="font-size: 10pt">override</span></td>
</tr>
<tr>
<td valign="top" width="115"><span style="font-size: 10pt"> </span></td>
<td valign="top" width="144"><span style="font-size: 10pt">static</span></td>
</tr>
<tr>
<td valign="top" width="115"><span style="font-size: 10pt"> </span></td>
<td valign="top" width="144"><span style="font-size: 10pt">interface</span></td>
</tr>
<tr>
<td valign="top" width="115"><span style="font-size: 10pt"> </span></td>
<td valign="top" width="144"><span style="font-size: 10pt">abstract *</span></td>
</tr>
</table>
<p><span style="font-size: 10pt"> </span></p>
<p><span style="font-size: 10pt"><strong>Access Modifiers</strong></span></p>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" width="97"><span style="font-size: 10pt"><strong>Modifier</strong> </span></td>
<td valign="top" width="114"><span style="font-size: 10pt"><strong>Used on</strong></span></td>
<td valign="top" width="360"><span style="font-size: 10pt"><strong>Meaning</strong></span></td>
</tr>
<tr>
<td valign="top" width="97"><span style="font-size: 10pt"><a href="http://livedocs.adobe.com/flex/2/langref/statements.html#private">private</a></span></td>
<td valign="top" width="114"><span style="font-size: 10pt">var<br />
const<br />
function<br />
namespace </span></td>
<td valign="top" width="360"><span style="font-size: 10pt">Available to the object    that declares it.</span></td>
</tr>
<tr>
<td valign="top" width="97"><span style="font-size: 10pt"><a href="http://livedocs.adobe.com/flex/2/langref/statements.html#protected">protected</a></span></td>
<td valign="top" width="114"><span style="font-size: 10pt">var<br />
const<br />
function<br />
namespace </span></td>
<td valign="top" width="360"><span style="font-size: 10pt">Available to object    that declares it and subclass.</span></td>
</tr>
<tr>
<td valign="top" width="97"><span style="font-size: 10pt"><a href="http://livedocs.adobe.com/flex/2/langref/statements.html#public">public</a></span></td>
<td valign="top" width="114"><span style="font-size: 10pt">var<br />
const<br />
function<br />
namespace </span></td>
<td valign="top" width="360"><span style="font-size: 10pt">Accessible to any    object.<br />
</span></td>
</tr>
<tr>
<td valign="top" width="97"><span style="font-size: 10pt"><a href="http://livedocs.adobe.com/flex/2/langref/statements.html#internal">internal</a></span></td>
<td valign="top" width="114"><span style="font-size: 10pt">var<br />
const<br />
function<br />
namespace </span></td>
<td valign="top" width="360"><span style="font-size: 10pt">Available to any    object within the same package.</span></td>
</tr>
</table>
<p><span style="font-size: 10pt"><strong>AS 3.0 Modifiers</strong></span></p>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" width="98"><span style="font-size: 10pt"><strong>Modifier</strong> </span></td>
<td valign="top" width="113"><span style="font-size: 10pt"><strong>Used on</strong></span></td>
<td valign="top" width="360"><span style="font-size: 10pt"><strong>Meaning</strong></span></td>
</tr>
<tr>
<td valign="top" width="98"><span style="font-size: 10pt"><a href="http://livedocs.adobe.com/flex/2/langref/statements.html#dynamic">dynamic</a></span></td>
<td valign="top" width="113"><span style="font-size: 10pt">class</span></td>
<td valign="top" width="360"><span style="font-size: 10pt">Properties can be    added at runtime.</span></td>
</tr>
<tr>
<td valign="top" width="98"><span style="font-size: 10pt"><a href="http://livedocs.adobe.com/flex/2/langref/statements.html#final">final</a></span></td>
<td valign="top" width="113"><span style="font-size: 10pt">class<br />
function </span></td>
<td valign="top" width="360"><span style="font-size: 10pt">Cannot be subclassed.<br />
Cannot be overridden dynamically looked up. </span></td>
</tr>
<tr>
<td valign="top" width="98"><span style="font-size: 10pt"><a href="http://livedocs.adobe.com/flex/2/langref/statements.html#native">native</a></span></td>
<td valign="top" width="113"><span style="font-size: 10pt">class<br />
function </span></td>
<td valign="top" width="360"><span style="font-size: 10pt">Flash Player    native code.<br />
Only signature. </span></td>
</tr>
<tr>
<td valign="top" width="98"><span style="font-size: 10pt"><a href="http://livedocs.adobe.com/flex/2/langref/statements.html#override">override</a></span></td>
<td valign="top" width="113"><span style="font-size: 10pt">function</span></td>
<td valign="top" width="360"><span style="font-size: 10pt">Replaces an    inherited method.</span></td>
</tr>
<tr>
<td valign="top" width="98"><span style="font-size: 10pt"><a href="http://livedocs.adobe.com/flex/2/langref/statements.html#static">static</a></span></td>
<td valign="top" width="113"><span style="font-size: 10pt">var<br />
const<br />
function </span></td>
<td valign="top" width="360"><span style="font-size: 10pt">Belongs to the    class, not to instances of the class.</span></td>
</tr>
<tr>
<td valign="top" width="98"><span style="font-size: 10pt"><a href="http://livedocs.adobe.com/flex/2/langref/statements.html#interface">interface</a></span></td>
<td valign="top" width="113"><span style="font-size: 10pt">class</span></td>
<td valign="top" width="360"><span style="font-size: 10pt">Define a set of    methods but not their implementation.</span></td>
</tr>
<tr>
<td valign="top" width="98"><span style="font-size: 10pt">Abstract *</span></td>
<td valign="top" width="113"><span style="font-size: 10pt">class</span></td>
<td valign="top" width="360"><span style="font-size: 10pt">Class includes method    with no implementation. To be overridden later by a subclass.</span></td>
</tr>
</table>
<p><span style="font-size: 10pt">* Keyword is not available </span></p>
<p><span style="font-size: 10pt"> </span></p>
<p><span style="font-size: 10pt">As  default I  highly recommend you to declare your objects as private unless you  need to let other class access the object.  <strong>The goal  is to keep your object as abstracted as possible;</strong> making your code as loosely  coupled to other objects, which will increase the re-usability of the objects.</span></p>
<p><span style="font-size: 10pt">When  developing API’s in Action Script we design and choose from different  modifiers, however when the wrong modifier is used the object can be misused  and the objects become coupled to other objects.</span></p>
<p><u><span style="font-size: 10pt">Here’s  my wish list for AS 4.0;</span></u></p>
<ul>
<li><span style="font-size: 10pt">Action  Script supports the abstract modifier.</span></li>
<li><span style="font-size: 10pt">Action  Script support for static classes to insure they are not being created by  creating an instance reference.</span></li>
<li><span style="font-size: 10pt">Action  Script allow the creation of Private class constructors.</span></li>
</ul>
<p><span style="font-size: 10pt">There  are many scripts out there to add these modifiers but many seem like a hack  than an elegant solution. They basically help you enforce how the modifiers  should act.<br />
<span style="font-size: 10pt">The only  one that I see as a good solution, and not as somewhat of a hack is for  creating Abstract methods and classes, here’s an example of how to create and  implement;</p>
<pre name="code" class="css">

package com.utils
{
    import flash.errors.IllegalOperationError;
    public class AbstractClass
    {
		public function AbstractClass(self:MyAbstractClass)
    	{
    		if(self != this)
    		{
    			throw new IllegalOperationError(”Abstract class did not receive reference to self. MyAbstractClass cannot be instantiated directly.”);
    		}
    	}

		public function method(param:String):void
    	{
    		throw new IllegalOperationError(”abstract function must be overriden”);
    	}
    }
}
</pre>
<p>And here’s how you would implement the class;</p>
<pre name="code" class="css">

package com
{
    public class MyImplementClass extends AbstractClass
    {
	    public function MyImplementClass()
    	{
    		super(this);
    	}

		public override function method():void
    	{
    		trace(&quot;Method&quot;);
    	}
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://elromdesign.com/blog/2008/06/12/actionscript-modifiers-summary-page-and-actionscript-40-wishlist/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Remove border from TextInput or DateField component</title>
		<link>http://elromdesign.com/blog/2008/06/12/remove-border-from-textinput-or-datefield-component/</link>
		<comments>http://elromdesign.com/blog/2008/06/12/remove-border-from-textinput-or-datefield-component/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 00:57:39 +0000</pubDate>
		<dc:creator>elad.ny</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Tips &amp; Tricks]]></category>

		<category><![CDATA[borderless]]></category>

		<category><![CDATA[DateField border]]></category>

		<category><![CDATA[remove border]]></category>

		<category><![CDATA[remove flex shadow]]></category>

		<category><![CDATA[TextInput]]></category>

		<guid isPermaLink="false">http://elromdesign.com/blog/2008/06/12/remove-border-from-textinput-or-datefield-component/</guid>
		<description><![CDATA[If you ever tried to remove the border from text input components such as TextInput or DateField you will find that whatever you do you cannot remove a line that look like a border from your top border.  Anything you try such as:
dropShadowColor : &#8220;0xFFFFFF&#8221;;
dropShadowEnabled : &#8220;false&#8221;;
border-thickness-bottom : 0;
border-thickness-top : 0;
border-thickness-left : 0;
border-thickness-right : [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: 12pt">If you ever tried to remove the border from text input components such as </span><span style="font-size: 12pt; color: #008000">TextInput </span><span style="font-size: 12pt">or </span><span style="font-size: 12pt; color: #008000">DateField </span><span style="font-size: 12pt">you will find that whatever you do you cannot remove a line that look like a border from your top border.  Anything you try such as:</span></p>
<blockquote><p><span style="font-size: 12pt; color: #008000">dropShadowColor : &#8220;0xFFFFFF&#8221;;<br />
dropShadowEnabled : &#8220;false&#8221;;<br />
border-thickness-bottom : 0;<br />
border-thickness-top : 0;<br />
border-thickness-left : 0;<br />
border-thickness-right : 0;</span></p></blockquote>
<p><span style="font-size: 12pt">Or directly on the component such as;</span></p>
<p><span style="font-size: 12pt; color: #008000">borderColor=&#8221;white&#8221; borderThickness=&#8221;0&#8243;</span></p>
<p><span style="font-size: 12pt">You just can&#8217;t get the fu#$%$ borders off!  The reason is that flex assign a border skin: </span><span style="font-size: 12pt; color: #008000">borderSkin=&#8221;mx.skins.halo.HaloBorder&#8221;</span><span style="font-size: 12pt"> which will always going to leave a line on the top corner.</span></p>
<p><span style="font-size: 12pt">The solution is actually simple; create a skin and don&#8217;t draw anything leaving the skin borders empty, that will remove the borders, shadows etc;</span></p>
<p><span style="font-size: 12pt"><code> </code></span></p>
<blockquote><p><span style="font-size: 12pt; color: #008000">package com.skins</span><span style="font-size: 12pt"><br />
</span><span style="font-size: 12pt; color: #008000">{</span><span style="font-size: 12pt"><br />
</span><span style="font-size: 12pt; color: #008000">    import mx.skins.Border;</span><span style="font-size: 12pt"><br />
</span><span style="font-size: 12pt; color: #008000">    </span><span style="font-size: 12pt"><br />
</span><span style="font-size: 12pt; color: #008000">    public class TextInputBorderlessSkin extends Border</span><span style="font-size: 12pt"><br />
</span><span style="font-size: 12pt; color: #008000">    {</span><span style="font-size: 12pt"><br />
</span><span style="font-size: 12pt; color: #008000">        override protected function updateDisplayList(w:Number, h:Number):void</span><span style="font-size: 12pt"><br />
</span><span style="font-size: 12pt; color: #008000">        {</span><span style="font-size: 12pt"><br />
</span><span style="font-size: 12pt; color: #008000">                    super.updateDisplayList(w, h);</span><span style="font-size: 12pt"><br />
</span><span style="font-size: 12pt; color: #008000">        }</span><span style="font-size: 12pt"><br />
</span><span style="font-size: 12pt; color: #008000">    }</span><span style="font-size: 12pt"><br />
</span><span style="font-size: 12pt; color: #008000">} </span><span style="font-size: 12pt"><br />
</span></p></blockquote>
<p><span style="font-size: 12pt">Now you can assign the skin in your CSS to your component text input;<br />
<code><br />
</code></span></p>
<blockquote><p><span style="font-size: 12pt"><code><span style="color: #008000"> .BorderlessTextInput {</span></code></span><br />
<span style="font-size: 12pt"><code><span style="color: #008000">    border-skin: ClassReference(&#8221;com.skins.TextInputBorderlessSkin&#8221;);</span></code></span><br />
<span style="font-size: 12pt"><code><span style="color: #008000"> }</span></code></span></p></blockquote>
<p><span style="font-size: 12pt">Play around with skins in Flex, you’ll have a lot of fun!</span></p>
]]></content:encoded>
			<wfw:commentRss>http://elromdesign.com/blog/2008/06/12/remove-border-from-textinput-or-datefield-component/feed/</wfw:commentRss>
		</item>
		<item>
		<title>An awesome new SMS Mashup Flex Job Board. Come tomorrow for a fascinating Presentation!  Go to NYFlex.org and sign up!</title>
		<link>http://elromdesign.com/blog/2008/04/16/an-awesome-new-sms-mashup-flex-job-board-come-tomorrow-for-a-fascinating-presentation-go-to-nyflexorg-and-sign-up/</link>
		<comments>http://elromdesign.com/blog/2008/04/16/an-awesome-new-sms-mashup-flex-job-board-come-tomorrow-for-a-fascinating-presentation-go-to-nyflexorg-and-sign-up/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 02:06:01 +0000</pubDate>
		<dc:creator>elad.ny</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Public Speaking]]></category>

		<category><![CDATA[Flex developer jobs]]></category>

		<category><![CDATA[Flex Mashup]]></category>

		<category><![CDATA[Flex Mashups]]></category>

		<category><![CDATA[Mashups]]></category>

		<category><![CDATA[SMS Job Posting]]></category>

		<guid isPermaLink="false">http://elromdesign.com/blog/2008/04/16/an-awesome-new-sms-mashup-flex-job-board-come-tomorrow-for-a-fascinating-presentation-go-to-nyflexorg-and-sign-up/</guid>
		<description><![CDATA[In preparation for my presentation on Mashup tomorrow at NY Flex group,  I gave myself a little challenge. What kind of a Mashup application could I build in about five hours of work, without using a designer!
The result is a job board for Flex developers that can be seen below:
Experience the application here:
http://elromdesign.com/blog/Flex/Jobs/

The Mashup [...]]]></description>
			<content:encoded><![CDATA[<p>In preparation for my presentation on Mashup tomorrow at NY Flex group,  I gave myself a little challenge. What kind of a Mashup application could I build in about five hours of work, without using a designer!<br />
The result is a job board for Flex developers that can be seen below:</p>
<p>Experience the application here:<br />
<a href="http://elromdesign.com/blog/Flex/Jobs/" title="Flex Mashup">http://elromdesign.com/blog/Flex/Jobs/</a></p>
<p><a href="http://elromdesign.com/blog/Flex/Jobs/" title="Flex Mashup"></a><a href="http://elromdesign.com/blog/Flex/Jobs/" title="Flex Job Posting Developer Mashup"><img src="http://elromdesign.com/blog/wp-content/flex_mashup.jpg" alt="Flex Mashup" /></a></p>
<p>The Mashup allows you to search for Adobe Flex Developers Jobs based on your Zip code. In addition, you can SMS a job posting to your cell phone. I used two Application Programming Interfaces (APIs), a web service and skin styling.Tomorrow&#8217;s one hour presentation will focus on describing what the buzz around Mashup is all about, how to build your own Mashup in Flex and helpful tools and tips to make your life easy.</p>
<p>If you live in the New York area, sign in at New York Flex Group [http://NYFlex.org] and stop by tomorrow!  We will have a lot of fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://elromdesign.com/blog/2008/04/16/an-awesome-new-sms-mashup-flex-job-board-come-tomorrow-for-a-fascinating-presentation-go-to-nyflexorg-and-sign-up/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Increase memory performance on data structures using HashMapCollection API</title>
		<link>http://elromdesign.com/blog/2008/03/27/boost-memory-performance-on-data-structures-using-hashmapcollection-api/</link>
		<comments>http://elromdesign.com/blog/2008/03/27/boost-memory-performance-on-data-structures-using-hashmapcollection-api/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 08:05:12 +0000</pubDate>
		<dc:creator>elad.ny</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Flex APIs]]></category>

		<category><![CDATA[Action Script HashMap]]></category>

		<category><![CDATA[Action Script HashMap Collection API]]></category>

		<category><![CDATA[Action Script HashMapCollection]]></category>

		<category><![CDATA[Flex HashMap]]></category>

		<category><![CDATA[Hash Table]]></category>

		<category><![CDATA[HashMap]]></category>

		<category><![CDATA[HashMapCollection]]></category>

		<guid isPermaLink="false">http://elromdesign.com/blog/2008/03/27/boost-memory-performance-on-data-structures-using-hashmapcollection-api/</guid>
		<description><![CDATA[Hash map is a data structure that can associates keys with values.  It provides constant time performance for the basic operations of addItem, removeItemAt, getItemValue and other methods.  The main reason for the increase in memory performance is iteration. Unlike ArrayCollection, the HashMapCollection doesn&#8217;t need to loop through in order to find a [...]]]></description>
			<content:encoded><![CDATA[<p>Hash map is a data structure that can associates keys with values.  It provides constant time performance for the basic operations of addItem, removeItemAt, getItemValue and other methods.  The main reason for the increase in memory performance is iteration. Unlike ArrayCollection, the HashMapCollection doesn&#8217;t need to loop through in order to find a key or a value. The HashMapCollection associates a value with a key.HashMap Collection is a great choice when you need to:</p>
<ol>
<li>When you need in-memory data structures.</li>
<li>When you need a pair of key-value data structure.</li>
<li>When you need to Increase performance.</li>
</ol>
<p>Flex and Action Script provides the &#8220;IList&#8221; interface that is implemented by the Array and ArrayCollection. Using array is a great choice when you need to associate an object with an ID, but if you have scenarios where you want to copy a large database structure to the memory or have a key-values pairs you will have to iteration through the array in order to do a lookup.<br />
The API I developed is called &#8220;HashMapCollection&#8221; and it is using naming conventions that are very similar to the &#8220;ListCollectionView&#8221;.</p>
<p>The API is also implementing the change events classes, so you will be able to start using the API right away with much similarity to the &#8220;IList&#8221; methods.</p>
<p>Let&#8217;s take an example.  Say we have list of contacts and phone numbers and we need to store them in the memory, the list was given to us through the SQL database and it has about 10,000 contacts.</p>
<p><img src="http://www.elromdesign.com/blog/Flex/API/uml/contacts.jpg" alt="Action Scriot HashMap Collection example" title="hashmap collection example" style="width: 417px; height: 255px" height="255" width="417" /></p>
<p>Using Array or ArrayCollection will force us to loop through the list until we find the name we are looking for and then get the phone number, that process will put a large expense on Flash player and will basically look as if the program is stuck, since action script is a single thread programming language, which means that the program cannot split itself into more than one simultaneously tasks.</p>
<p>The HashMapCollection doesn&#8217;t need to loop it&#8217;s basically using the following code to find the value:</p>
<blockquote><p><code>map[key] = value;</code></p></blockquote>
<p>I am giving a list of contacts, as an example, but let me make it clear that the HashMapCollection is flexible to use any type of key-value such as;</p>
<p>• Name-UIComponents<br />
• Name-Object<br />
• Name-Array</p>
<p>Below you can find a use-case example of creating a data structure and  modifying the data;</p>
<blockquote><p> <code><br />
private function map():void {</code></p>
<p>var map:IMap = new HashMapCollection();<br />
map.addEventListener(CollectionEvent.COLLECTION_CHANGE, handler);</p>
<p>map.addItem(&#8221;John&#8221;, &#8220;212-452-8086&#8243;);<br />
map.addItem(&#8221;James&#8221;, &#8220;718-345-3455&#8243;);<br />
map.addItem(&#8221;Micheal&#8221;, &#8220;917-782-8822&#8243;);<br />
map.addItem(&#8221;Ron&#8221;, &#8220;212-426-8855&#8243;);<br />
map.addItem(&#8221;Mike&#8221;, &#8220;212-255-2436&#8243;);<br />
map.addItem(&#8221;Jenny&#8221;, &#8220;718-344-2433&#8243;);<br />
map.addItem(&#8221;Jack&#8221;, &#8220;917-222-4352&#8243;);<br />
map.addItem(&#8221;Riki&#8221;, &#8220;981-222-1122&#8243;);<br />
trace(&#8221;\nAll items: &#8220;+map.toString()+&#8221;\n&#8221;);</p>
<p>trace(&#8221;containsKey Jack? &#8220;+map.containsKey(&#8221;Jack&#8221;));<br />
trace(&#8221;containsValue 718-344-2433? &#8220;+map.containsValue(&#8221;718-344-2433&#8243;));<br />
trace(&#8221;getItemKey 718-344-2433: &#8220;+map.getItemKey(&#8221;718-344-2433&#8243;));<br />
trace(&#8221;getItemValue Jenny: &#8220;+map.getItemValue(&#8221;Jenny&#8221;));</p>
<p>map.removeItemAt(&#8221;Riki&#8221;);<br />
trace(&#8221;Remove Riki.&#8221;);<br />
trace(&#8221;getItemValue Riki: &#8220;+map.getItemValue(&#8221;Riki&#8221;));<br />
trace(&#8221;Comapre: &#8220;+map.compare(&#8221;Ron&#8221;, &#8220;212-426-8855&#8243;));</p>
<p>map.removeAll();<br />
trace(&#8221;\nAll items: &#8220;+map.toString()+&#8221;\n&#8221;);</p>
<p>}</p>
<p>private function handler(event:CollectionEvent):void<br />
{<br />
trace(&#8221;Event: &#8220;+event.kind);<br />
}</p></blockquote>
<p>All of this is great, but let me actually prove to you that you gain performance.  I created a small Flex application that creates two data structures; ArrayCollection and HashMapCollection.  Watch the memory monitor and see how Flash Player actaully stopped while it loops and looks for the key in the ArrayCollection.  On the other hand the HashMap doesn&#8217;t add any expense on the Flash player.</p>
<p>All source code contained in this API has been published under the MIT licence and is protected as stated therein.</p>
<p>To see the example and download source code (via right click):<br />
<a href="http://elromdesign.com/blog/Flex/API/HashMapCollection/" title="Action Script HashMap Collection API">http://elromdesign.com/blog/Flex/API/HashMapCollection/</a></p>
<p>To view the ASDOC of all the API:<br />
<a href="http://elromdesign.com/blog/Flex/API/asdoc/">http://elromdesign.com/blog/Flex/API/asdoc/</a></p>
<p>Have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://elromdesign.com/blog/2008/03/27/boost-memory-performance-on-data-structures-using-hashmapcollection-api/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Use singletons discreetly.  Here are some tips to help you decide when to use the singleton pattern.</title>
		<link>http://elromdesign.com/blog/2008/03/23/use-singletons-discreetly-here-are-some-tips-to-help-you-decide-when-to-use-the-singleton-pattern/</link>
		<comments>http://elromdesign.com/blog/2008/03/23/use-singletons-discreetly-here-are-some-tips-to-help-you-decide-when-to-use-the-singleton-pattern/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 04:30:23 +0000</pubDate>
		<dc:creator>elad.ny</dc:creator>
		
		<category><![CDATA[Creational patterns]]></category>

		<category><![CDATA[Design patterns]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Actionscript 3.0 Singleton]]></category>

		<category><![CDATA[Actionscript 3.0 Singleton class]]></category>

		<category><![CDATA[AS3 Singleton]]></category>

		<category><![CDATA[Flex Singleton]]></category>

		<category><![CDATA[Singleton]]></category>

		<guid isPermaLink="false">http://elromdesign.com/blog/2008/03/23/use-singletons-discreetly-here-are-some-tips-to-help-you-decide-when-to-use-the-singleton-pattern/</guid>
		<description><![CDATA[Singleton design pattern should be used discreetly. Many of us are building API&#8217;s and using singletons as a means to create a global object that can be accessed across the application.Here&#8217;s why you should use singleton discreetly:

In many cases, using singleton is an anti-pattern;
The singleton may be considered as an anti Action Script, since Action [...]]]></description>
			<content:encoded><![CDATA[<p>Singleton design pattern should be used discreetly. Many of us are building API&#8217;s and using singletons as a means to create a global object that can be accessed across the application.Here&#8217;s why you should use singleton discreetly:</p>
<ol>
<li>In many cases, using singleton is an anti-pattern;</li>
<li>The singleton may be considered as an anti Action Script, since Action Script 3.0 doesn&#8217;t support private or protected constructor;</li>
<li>With programming, it is usually not recommended to</li>
</ol>
<p>use global objects, since it is hard to test them and the developer has to make assumptions regarding the application and how they will be used.</p>
<p>The main source of the problems is that using the singleton pattern makes the classes tightly coupled instead of loosely coupled, meaning that you can only test a few classes together rather than each of the classes at a time, as you should.</p>
<p>Before I go into a discussion on when is it a good idea to use the singleton pattern, I think it&#8217;s a good idea to show how the singleton is used in Action Script 3.0.</p>
<p><strong>What is the singleton pattern?</strong><br />
The singleton pattern is used to restrict instantiation of a class to one object. The pattern keeps a private constructor to insure that the class was created only once.</p>
<p><strong>Singleton in Action Script 3.0: </strong><br />
Action script does not support the option to declare constructor as private or protected inside of a package, which causes a design pattern problem, since any option you choose will be considered workaround or a &#8220;hack&#8221;.</p>
<p>One popular option is to use the inner classes, meaning creating another class inside of the package to behave as the private constructor, such as in the example below:</p>
<blockquote>
<pre class="code" id="codemain">package {

	<span class="keyword">public</span> <span class="keyword">class </span>Manager
	{
		<span class="comment">/**
		 * var to be used by the singleton pattern to return the instance of the class.
		 */</span>
		<span class="keyword">private</span> <span class="keyword">static</span> var manager : Manager;

		<span class="comment">/**
		 * Internal constructor. Should not be called from outside this class.
		 *
		 * @param enforcer	Enforce the creation of one class only.
		 *
		 */</span>

		<span class="keyword">public</span> function Manager(enforcer:AccessRestriction)
		{
			<span class="comment">// TODO: throw exception
</span>			<span class="keyword">if</span> ( enforcer == null )
			{
				<span class="keyword">throw</span> <span class="keyword">new</span> Error(<span class="literal">"Manager error enforcer input param is undefined"</span> );
			}
		}

		<span class="comment">/**
		 * Method function to retrieve instance of the class
		 *
		 * @return The same instance of the class
		 *
		 */</span>
		<span class="keyword">public</span> <span class="keyword">static</span> function getInstance() : Manager
		{
			<span class="keyword">if</span>( manager == null )
				manager = <span class="keyword">new</span> Manager(<span class="keyword">new</span> AccessRestriction());

			<span class="keyword">return</span> manager
		}
	}
}

<span class="keyword">class </span>AccessRestriction {}</pre>
</blockquote>
<p>To view the source code as text file <a href="http://www.elromdesign.com/blog/Flex/code/Manager.as" target="_blank">click here</a>.</p>
<p><strong>So when should you use the singleton design pattern? </strong><br />
Here&#8217;s a singleton recommended check list:</p>
<ol>
<li>Singleton should be used in cases where only one object is needed to coordinate actions and/or events across the application;</li>
<li>The application will always use the object in the same way;</li>
<li>It doesn&#8217;t really matter to the client what&#8217;s going on in the rest of the application, meaning that the singleton object is independent.</li>
</ol>
<p>If you can confirm the check list, than it&#8217;s a good candidate to use the singleton pattern.</p>
<p>Have fun designing!</p>
]]></content:encoded>
			<wfw:commentRss>http://elromdesign.com/blog/2008/03/23/use-singletons-discreetly-here-are-some-tips-to-help-you-decide-when-to-use-the-singleton-pattern/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Boost Flex performance with Object Pooling Manager API</title>
		<link>http://elromdesign.com/blog/2008/03/15/boost-flex-performance-with-object-pooling-manager-api/</link>
		<comments>http://elromdesign.com/blog/2008/03/15/boost-flex-performance-with-object-pooling-manager-api/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 06:10:32 +0000</pubDate>
		<dc:creator>elad.ny</dc:creator>
		
		<category><![CDATA[Creational patterns]]></category>

		<category><![CDATA[Design patterns]]></category>

		<category><![CDATA[Flex APIs]]></category>

		<category><![CDATA[AS3 chaching]]></category>

		<category><![CDATA[AS3 Object Pooling]]></category>

		<category><![CDATA[Boost Flex performance]]></category>

		<category><![CDATA[cache AS3]]></category>

		<category><![CDATA[Flex object pooling]]></category>

		<category><![CDATA[object pooling]]></category>

		<guid isPermaLink="false">http://elromdesign.com/blog/2008/03/15/boost-flex-performance-with-object-pooling-manager-api/</guid>
		<description><![CDATA[Object Pooling Manager API is an open source API that allows you to create a collection of objects and use them at any given time.  These usable objects can be anything from a UI component to an XML list.  The Object Pooling manager ensures the management of the collections of objects and allows [...]]]></description>
			<content:encoded><![CDATA[<p>Object Pooling Manager API is an open source API that allows you to create a collection of objects and use them at any given time.  These usable objects can be anything from a UI component to an XML list.  The Object Pooling manager ensures the management of the collections of objects and allows the client to keep using them without costing any additional resources.</p>
<p>Flex is a single thread programming language which means that the program cannot split itself into more than one simultaneously tasks and it causes flex to slow down, especially when the cost of initializing a class is high.  Object pooling can be used to manage object caching and boost performance.</p>
<p>A real life example is a book case.  You have a case full of books and you decide to read one of the books.  While you use the book you may stained a page by a coffee and changed the look of the book.  After you are done using the book you return the book to the book case for later usage.</p>
<p>Object pooling works the same way, the object pooling class is singleton to insure you are not pulling more than one reusable object at a time.  At any given time you pick a reusable object, the object is being removed from the collection so the client can change it and place it back for future usage.</p>
<p>The Flex API I developed is based on creating a usable collection of objects, the objects can be any component such as Flex Sprite or Canvas, array, class or anything you want it to be.</p>
<p>The object pooling can boost performance; especially in cases where the resources used to initializing a class instance are high, the number of times the class will be usage is often, and the number of instantiations in use at any single time is low.</p>
<p>All source code contained in this API has been published under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a> and is protected as stated therein.</p>
<p>To see an example and download source code:<br />
<a href="http://elromdesign.com/blog/Flex/API/ObjectPoolManager/">http://elromdesign.com/blog/Flex/API/ObjectPoolManager/</a></p>
<p>To view the ASDOC of all the API:<br />
<a href="http://elromdesign.com/blog/Flex/API/asdoc/">http://elromdesign.com/blog/Flex/API/asdoc/</a></p>
<p><a href="http://elromdesign.com/blog/Flex/API/uml/objectPoolingAS3.gif" title="AS3 UML object pooling"><img src="http://elromdesign.com/blog/Flex/API/uml/objectPoolingAS3.gif" alt="Object Pooling UML" title="Object Pooling UML design diagram" style="width: 790px; height: 478px" height="478" width="790" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://elromdesign.com/blog/2008/03/15/boost-flex-performance-with-object-pooling-manager-api/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Custom cursor API is a great solution for creating sets of custom cursors</title>
		<link>http://elromdesign.com/blog/2008/03/03/custom-cursor-api-is-a-great-solution-for-creating-sets-of-custom-cursors/</link>
		<comments>http://elromdesign.com/blog/2008/03/03/custom-cursor-api-is-a-great-solution-for-creating-sets-of-custom-cursors/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 04:32:56 +0000</pubDate>
		<dc:creator>elad.ny</dc:creator>
		
		<category><![CDATA[Creational patterns]]></category>

		<category><![CDATA[Design patterns]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Flex APIs]]></category>

		<category><![CDATA[CursorManager]]></category>

		<category><![CDATA[Custom cursor API]]></category>

		<category><![CDATA[Flex Cursor]]></category>

		<category><![CDATA[Flex CursorManager]]></category>

		<guid isPermaLink="false">http://elromdesign.com/blog/2008/03/03/custom-cursor-api-is-a-great-solution-for-creating-sets-of-custom-cursors/</guid>
		<description><![CDATA[Custom cursor API is a great solution for creating sets of custom cursors.  Each set is a concrete class that you can set.  In addition, you can implement custom events such as: mouse down, mouse up and custom busy cursor.
CursorManager class is useful for replacing the cursor with a custom cursor or for [...]]]></description>
			<content:encoded><![CDATA[<p>Custom cursor API is a great solution for creating sets of custom cursors.  Each set is a concrete class that you can set.  In addition, you can implement custom events such as: mouse down, mouse up and custom busy cursor.</p>
<p><a href="http://livedocs.adobe.com/labs/flex3/langref/mx/managers/CursorManager.html">CursorManager</a> class is useful for replacing the cursor with a custom cursor or for creating a busy cursor, but what do you do when you want to create a set of custom cursors? You may also be interested in building few sets of custom cursors to be used in different part of the application and keep track of them in one centralized location.<br />
For example you want to create couple of sets of cursors.  One of them will be a custom image, the cursor will change on mouse down and mouse up events and the cursor will have a custom busy image.  That set will be used in one component and another set will be used in a different component.</p>
<p>Custom cursor API is based on creating custom sets of cursors for usage in an application.  You create a concrete class and set all the images, swf or sprite objects you want to assign to that set and the cursor will change according to how you set it in the concrete class.</p>
<p>All source code contained in this API has been published under the <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT licence</a> and is protected as stated therein.</p>
<p>To see an example and download source code:<br />
<a href="http://elromdesign.com/blog/Flex/API/Cursor/" title="AutoSuggest example">http://elromdesign.com/blog/Flex/API/Cursor/</a></p>
<p>To view the ASDOC of the API:<br />
<a href="http://elromdesign.com/blog/Flex/API/asdoc/" target="_blank" title="AutoSuggest API ASDOC">http://elromdesign.com/blog/Flex/API/asdoc/</a></p>
<p><a href="http://elromdesign.com/blog/Flex/API/uml/Cursor.gif"><img src="http://elromdesign.com/blog/Flex/API/uml/Cursor.gif" alt="Cursor UML Class diagram" title="Cursor UML Class diagram" style="width: 1030px; height: 677px" align="bottom" height="677" width="1530" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://elromdesign.com/blog/2008/03/03/custom-cursor-api-is-a-great-solution-for-creating-sets-of-custom-cursors/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SQLStatements Manager API will generate SQL commands for forms and other UI interactions.</title>
		<link>http://elromdesign.com/blog/2008/02/21/sqlstatements-manager-api-will-generate-sql-commands-for-forms-and-other-ui-interactions/</link>
		<comments>http://elromdesign.com/blog/2008/02/21/sqlstatements-manager-api-will-generate-sql-commands-for-forms-and-other-ui-interactions/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 02:59:10 +0000</pubDate>
		<dc:creator>elad.ny</dc:creator>
		
		<category><![CDATA[Creational patterns]]></category>

		<category><![CDATA[Design patterns]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Flex APIs]]></category>

		<category><![CDATA[Flex API]]></category>

		<category><![CDATA[Flex SQL]]></category>

		<category><![CDATA[Flex SQL ColdFusion]]></category>

		<category><![CDATA[Flex SQL Statements]]></category>

		<category><![CDATA[SQLStatements Manager]]></category>

		<guid isPermaLink="false">http://elromdesign.com/blog/2008/02/21/sqlstatements-manager-api-will-generate-sql-commands-for-forms-and-other-ui-interactions/</guid>
		<description><![CDATA[Building a large Flex application that communicates with a remote server through SQL commands create an architect design problem.   What do you do with all the SQL commands? Do you store them in a properties file or create 50-100 ColdFusion files?  What do you do once you want to change some of [...]]]></description>
			<content:encoded><![CDATA[<p>Building a large Flex application that communicates with a remote server through SQL commands create an architect design problem.   What do you do with all the SQL commands? Do you store them in a properties file or create 50-100 ColdFusion files?  What do you do once you want to change some of these SQL commands?</p>
<p>The issue gets even worse once you need to submit few SQL commands for one operation. For example you have a form and once that form submit the client request to sign to a newsletter so you would need two SQL statements.</p>
<p>I created an elegant solution to that problem, utilizing the Abstract Method design pattern.  The &#8220;SQLStatements Manager&#8221; (Flex SQL statements API) will let you create different CRUD (Create, Read, Update and Delete) statements for each form and you have one place where all your SQL commands are located so once it&#8217;s time to change them or update your database design, you don&#8217;t have to go through your entire application looking for all these SQL statements.</p>
<p>Once you have the SQL statement you can submit them to the database in order to process.  I may give an example of implementation of the API using ColdFusion and Cairngorm.</p>
<p>To see an example and download source code:<br />
<a href="http://elromdesign.com/blog/Flex/API/SQLStatementsManager/">http://elromdesign.com/blog/Flex/API/SQLStatementsManager/</a></p>
<p>To view the ASDOC of the API:<br />
<a href="http://elromdesign.com/blog/Flex/API/asdoc/">http://elromdesign.com/blog/Flex/API/asdoc/</a></p>
<p>This API will be in a new Flex 3.0 book I am writing called &#8220;Developing Enterprise Architect Applications.&#8221; <a href="http://elromdesign.com/blog/new-advanced-flex-30-book-developing-enterprise-architect-applications/">click here</a> to read more and pre-order.</p>
<p>All source code contained on this page has been published under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a> and is protected as stated therein.</p>
<p><a href="http://elromdesign.com/blog/Flex/API/uml/SQLStatmentsManager.jpg"><img src="http://elromdesign.com/blog/Flex/API/uml/SQLStatmentsManager.jpg" alt="SQLStatments Manager" title="SQLStatments Manager" style="width: 600px; height: 381px" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://elromdesign.com/blog/2008/02/21/sqlstatements-manager-api-will-generate-sql-commands-for-forms-and-other-ui-interactions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New advanced flex 3.0 book - Developing Enterprise Architect Applications</title>
		<link>http://elromdesign.com/blog/2008/02/18/new-advanced-flex-30-book-developing-enterprise-architect-applications/</link>
		<comments>http://elromdesign.com/blog/2008/02/18/new-advanced-flex-30-book-developing-enterprise-architect-applications/#comments</comments>
		<pubDate>Mon, 18 Feb 2008 06:12:13 +0000</pubDate>
		<dc:creator>elad.ny</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[advanced flex book]]></category>

		<category><![CDATA[Developing Enterprise Architect Applications]]></category>

		<category><![CDATA[Flex 3.0]]></category>

		<category><![CDATA[Flex book]]></category>

		<category><![CDATA[Flex design patterns]]></category>

		<category><![CDATA[Flex Enterprise]]></category>

		<guid isPermaLink="false">http://elromdesign.com/blog/2008/02/18/new-advanced-flex-30-book-developing-enterprise-architect-applications/</guid>
		<description><![CDATA[I am currently in the process of writing as a co-author in a new book by Apress called: &#8220;AdvancED Flex 3&#8243;
This book makes advanced Flex 3 concepts and techniques easy. Ajax, RIA, Web 2.0, mashups, mobile, the most sophisticated Web tools and the coolest interactive Web applications are all covered with practical, visually-oriented recipes.
* Practical, [...]]]></description>
			<content:encoded><![CDATA[<p>I am currently in the process of writing as a co-author in a new book by Apress called: <strong>&#8220;AdvancED Flex 3&#8243;</strong></p>
<p>This book makes advanced Flex 3 concepts and techniques easy. Ajax, RIA, Web 2.0, mashups, mobile, the most sophisticated Web tools and the coolest interactive Web applications are all covered with practical, visually-oriented recipes.</p>
<p>* Practical, how-to approach for advanced results.<br />
* Leverage the tools you know, Java, PHP, Python, Ruby, in combination with Flex.<br />
* Build high-performance Web applications with interactivity that really engages your users</p>
<p>To read more about the book <a href="http://friendsofed.com/book.html?isbn=1430210273">click here</a>.</p>
<p>Additionally, I am in the process of writing the following book:<strong><br />
</strong></p>
<p><strong>Advanced Flex 3.0 - Developing Enterprise Architect Applications. </strong><br />
The book will be published in late 2008.  The book will cover the subject of developing an Enterprise Level Flex Applications from planning to designing and finally testing. It is intended for the experienced Flex developer wishing to expand his/her knowledge and expertise. Developing a large scale Flex application is different than developing a small application and although there is a lot of information, there is not any one resource that covers it all. This book will cover all the best practices and give you the tools you need to develop such a large scale Flex application.</p>
<p>In the next few months I will be giving away some of the API&#8217;s that will be part of the book.  To learn more about the book and signup for the pre-order list <a href="http://elromdesign.com/blog/new-advanced-flex-30-book-developing-enterprise-architect-applications/" title="Advanced Flex 3.0 – Developing Enterprise Architect Applications.">click here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elromdesign.com/blog/2008/02/18/new-advanced-flex-30-book-developing-enterprise-architect-applications/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Create Auto Suggest input box using AutoSuggest open source API</title>
		<link>http://elromdesign.com/blog/2008/02/15/autosuggest/</link>
		<comments>http://elromdesign.com/blog/2008/02/15/autosuggest/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 07:07:01 +0000</pubDate>
		<dc:creator>elad.ny</dc:creator>
		
		<category><![CDATA[Flex]]></category>

		<category><![CDATA[Flex APIs]]></category>

		<guid isPermaLink="false">http://elromdesign.com/blog/?p=22</guid>
		<description><![CDATA[AutoSuggest API can be used to display an Auto Suggest input box.  The separation of the data and view is what makes AutoSuggestion API flexible and easy to modify and fit different applications. The UIAutoSuggest gets &#8220;TextInput&#8221; and &#8220;TileList&#8221; and the &#8220;AbstractAutoSuggest &#8221; keep sorting the list of words based on the user interaction, [...]]]></description>
			<content:encoded><![CDATA[<p>AutoSuggest API can be used to display an Auto Suggest input box.  The separation of the data and view is what makes AutoSuggestion API flexible and easy to modify and fit different applications. The UIAutoSuggest gets &#8220;TextInput&#8221; and &#8220;TileList&#8221; and the &#8220;AbstractAutoSuggest &#8221; keep sorting the list of words based on the user interaction, the data is bindable which allow the TileList and TextInput to be updates on the fly.</p>
<p>This API will be in a new Flex 3.0 book I am writing called &#8220;Developing Enterprise Architect Applications.&#8221; <a href="http://elromdesign.com/blog/new-advanced-flex-30-book-developing-enterprise-architect-applications/" title="http://elromdesign.com/blog/new-advanced-flex-30-book-developing-enterprise-architect-applications/">click here</a> to read more and pre-order.</p>
<p>All source code contained on this page has been published under the <a href="http://www.opensource.org/licenses/mit-license.php" target="_blank">MIT licence</a> and is protected as stated therein.</p>
<p><a href="http://elromdesign.com/blog/Flex/API/uml/AutoSuggest.jpg" title="AutoSuggest API UML Diagram" target="_blank"><img src="http://elromdesign.com/blog/Flex/API/uml/AutoSuggest.jpg" title="AutoSuggest API UML" alt="AutoSuggest API UML" /></a></p>
<p>To see an example and download source code:<br />
<a href="http://elromdesign.com/blog/Flex/API/AutoSuggest/" title="AutoSuggest example">http://elromdesign.com/blog/Flex/API/AutoSuggest/</a></p>
<p>To view the ASDOC of the API:<br />
<a href="http://elromdesign.com/blog/Flex/API/asdoc/" title="AutoSuggest API ASDOC" target="_blank">http://elromdesign.com/blog/Flex/API/asdoc/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://elromdesign.com/blog/2008/02/15/autosuggest/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
