<?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; PureMVC</title>
	<atom:link href="http://mariusht.com/blog/tag/puremvc/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>MemberDatabase &#8211; AIR application (Flex/PureMVC)</title>
		<link>http://mariusht.com/blog/2010/03/23/memberdatabase-air-application-flex-puremvc/</link>
		<comments>http://mariusht.com/blog/2010/03/23/memberdatabase-air-application-flex-puremvc/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 20:02:19 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[SQLite]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=2008</guid>
		<description><![CDATA[
This demo illustrates how you can use Flex, PureMVC and Adobe AIR local SQL database to create simple member management system. With the Member Database you can store unlimited number of members, sort any information in the database and export data to xml file.



Sample Files:
MemberDatabase.zip (ZIP, 647 KB)
]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://mariusht.com/files/blog/member_database/memberdatabase.gif" class="aligncenter" width="656" height="364" /></p>
<p>This demo illustrates how you can use Flex, PureMVC and Adobe AIR local SQL database to create simple member management system. With the Member Database you can store unlimited number of members, sort any information in the database and export data to xml file.</p>
<div style="float: right; margin: 5px 0 15px 5px;">
<input class="btn" type="button" value="Install App" onClick="window.open('http://mariusht.com/files/blog/member_database/install/')"/>
<input class="btn" type="button" value="View Source" onClick="window.open('http://mariusht.com/files/blog/member_database/srcview/')"/></div>
<p><strong>Sample Files:</strong><br />
<a href="http://mariusht.com/files/blog/member_database/MemberDatabase.zip">MemberDatabase.zip</a> <span style="color: #808080;">(ZIP, 647 KB)</span></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2010/03/23/memberdatabase-air-application-flex-puremvc/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>PureMVC StateMachine lockable door demo</title>
		<link>http://mariusht.com/blog/2009/07/14/puremvc-statemachine-lockable-door-demo/</link>
		<comments>http://mariusht.com/blog/2009/07/14/puremvc-statemachine-lockable-door-demo/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 15:06:31 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[StateMachine]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1225</guid>
		<description><![CDATA[I created and slightly modified Lockable Door application mentioned in StateMachine presentation by Cliff Hall. Application have 3 states OPENED, CLOSED and LOCKED, makes use of entry, exit guards and also sends CHANGED annoucement(notification) for specific(CLOSED) state. This demo is great for beginners learning PureMVC StateMachine Utility.

FSM for Lockable Door
&#60;fsm initial={LockableDoor.STATE_CLOSED}&#62;
    &#60;state [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="" src="http://mariusht.com/files/blog/lockable_door/fsmDiagram.jpg" class="alignleft" width="172" height="75" />I created and slightly modified Lockable Door application mentioned in <a href="http://puremvc.tv/#P003/">StateMachine presentation by Cliff Hall</a>. Application have 3 states OPENED, CLOSED and LOCKED, makes use of entry, exit guards and also sends CHANGED annoucement(notification) for specific(CLOSED) state. This demo is great for beginners learning PureMVC StateMachine Utility.</p>
<p><span id="more-1225"></span><br />
FSM for Lockable Door</p>
<pre class="MXML"><span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">fsm</span> <span class="ActionScriptDefault_Text">initial</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_CLOSED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">&gt;</span>
    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">state</span> <span class="ActionScriptDefault_Text">name</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_CLOSED</span><span class="ActionScriptBracket/Brace">}</span>
        <span class="ActionScriptDefault_Text">exiting</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{A</span><span class="ActionScriptDefault_Text">pplicationFacade</span>.<span class="ActionScriptDefault_Text">EXITING_CLOSED_STATE</span><span class="ActionScriptBracket/Brace">}</span>
        <span class="ActionScriptDefault_Text">changed</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{A</span><span class="ActionScriptDefault_Text">pplicationFacade</span>.<span class="ActionScriptDefault_Text">CHANGED_CLOSED_STATE</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">&gt;</span>
        <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">transition</span> <span class="ActionScriptDefault_Text">action</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">ACTION_OPEN</span><span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_OPENED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">/&gt;</span>
        <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">transition</span> <span class="ActionScriptDefault_Text">action</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">ACTION_LOCK</span><span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_LOCKED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">/&gt;</span>
    <span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">state</span><span class="ActionScriptOperator">&gt;</span>
    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">state</span> <span class="ActionScriptDefault_Text">name</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_LOCKED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">&gt;</span>
        <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">transition</span> <span class="ActionScriptDefault_Text">action</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">ACTION_UNLOCK</span><span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_CLOSED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">/&gt;</span>
    <span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">state</span><span class="ActionScriptOperator">&gt;</span>
    <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">state</span> <span class="ActionScriptDefault_Text">name</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_OPENED</span><span class="ActionScriptBracket/Brace">}</span>
        <span class="ActionScriptDefault_Text">entering</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{A</span><span class="ActionScriptDefault_Text">pplicationFacade</span>.<span class="ActionScriptDefault_Text">ENTERING_OPENED_STATE</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">&gt;</span>
        <span class="ActionScriptOperator">&lt;</span><span class="ActionScriptDefault_Text">transition</span> <span class="ActionScriptDefault_Text">action</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">ACTION_CLOSE</span><span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptDefault_Text">target</span><span class="ActionScriptOperator">=</span><span class="ActionScriptBracket/Brace">{</span><span class="ActionScriptDefault_Text">LockableDoor</span>.<span class="ActionScriptDefault_Text">STATE_CLOSED</span><span class="ActionScriptBracket/Brace">}</span><span class="ActionScriptOperator">/&gt;</span>
    <span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">state</span><span class="ActionScriptOperator">&gt;</span>
<span class="ActionScriptOperator">&lt;/</span><span class="ActionScriptDefault_Text">fsm</span><span class="ActionScriptOperator">&gt;</span></pre>
<p><br/>FSM Diagram for Lockable Door<br />
<img alt="" src="http://mariusht.com/files/blog/lockable_door/lockableDoorDiagram.jpg" class="alignnone" width="669" height="250" /><br />
<br/>Lockable Door demo</p>
<div style="width:667px; height:280px; border:solid #666 1px"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="LockableDoor" width="667" height="280" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> </p>
<param name="movie" value="http://mariusht.com/files/blog/lockable_door/demo/LockableDoor.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
			<embed src="http://mariusht.com/files/blog/lockable_door/demo/LockableDoor.swf" quality="high" bgcolor="#ffffff"</p>
<p>				width="667" height="280" name="LockableDoor" align="middle"</p>
<p>				play="true"</p>
<p>				loop="false"</p>
<p>				quality="high"</p>
<p>				allowScriptAccess="sameDomain"</p>
<p>				type="application/x-shockwave-flash"</p>
<p>				pluginspage="http://www.adobe.com/go/getflashplayer"><br />
			</embed><br />
	</object></div>
<div style="margin-top:7px;"><a href="http://mariusht.com/files/blog/lockable_door/demo/srcview/index.html"><img src="http://mariusht.com/assets/viewsrcBtn.gif" /></a>
<div style="float:right; padding-right:342px"><a href="http://mariusht.com/files/blog/lockable_door/demo/srcview/LockableDoor.zip"><img src="http://mariusht.com/assets/downloadsrcBtn.gif" /></a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/07/14/puremvc-statemachine-lockable-door-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transition between States in PureMVC StateMachine Utility</title>
		<link>http://mariusht.com/blog/2009/07/14/transition-between-states-in-puremvc-statemachine-utility/</link>
		<comments>http://mariusht.com/blog/2009/07/14/transition-between-states-in-puremvc-statemachine-utility/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 15:03:59 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[StateMachine]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1177</guid>
		<description><![CDATA[Below you can see what&#8217;s happening when transition between states occurs. First your application sends a StateMachine.ACTION Notification that triggers the StateMachine to begin a transition. Any state specific exiting or entering guard(Commands or Mediators) defined for the current and target state are notified. If transition is not cancelled the current state is changed to the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://mariusht.com/files/blog/state_machine_utility/flow.jpg" alt="" width="170" height="70" />Below you can see what&#8217;s happening when transition between states occurs. First your application sends a StateMachine.ACTION Notification that triggers the StateMachine to begin a transition. Any state specific exiting or entering guard(Commands or Mediators) defined for the current and target state are notified. If transition is not cancelled the current state is changed to the target state and any state specific CHANGED annoucement is sent. And finally a generic annoucement of the CHANGED is sent.</p>
<p><span id="more-1177"></span><br />
<img class="alignnone" src="http://mariusht.com/files/blog/state_machine_utility/transition.jpg" alt="" width="669" height="500" /></p>
<p><strong>Useful Resources</strong>:<br />
<a href="http://puremvc.org/content/view/104/1/">Get your FSM on!</a><br />
<a href="http://puremvc.tv/#P003/">StateMachine Utility overview presentation by Cliff Hall</a><br />
<a href="http://mariusht.com/blog/2009/07/14/puremvc-statemachine-lockable-door-demo/">Lockable Door demo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/07/14/transition-between-states-in-puremvc-statemachine-utility/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Module to Module communication</title>
		<link>http://mariusht.com/blog/2009/07/08/module-to-module-communication/</link>
		<comments>http://mariusht.com/blog/2009/07/08/module-to-module-communication/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 17:04:01 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[modules]]></category>
		<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Pipes]]></category>
		<category><![CDATA[PureMVC]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=1183</guid>
		<description><![CDATA[This example is implemented using PureMVC and demonstrates how to load dynamically, connect and communicate Modules that have been implemented using the PureMVC framework.GreenModule communicates with BlueModule directly through pipe(no need for sending messages to Shell/Application and from Shell back to the Module). The same happens for BlueModule-GreenModule communication, messages are sent through pipe.
View and study [...]]]></description>
			<content:encoded><![CDATA[<p>This example is implemented using PureMVC and demonstrates how to load dynamically, connect and communicate Modules that have been implemented using the PureMVC framework.<img class="alignnone" src="http://mariusht.com/files/blog/module_to_module_comm/mm_comm.jpg" alt="" width="669" height="300" />GreenModule communicates with BlueModule directly through pipe(no need for sending messages to Shell/Application and from Shell back to the Module). The same happens for BlueModule-GreenModule communication, messages are sent through pipe.</p>
<p><a href="http://mariusht.com/files/blog/module_to_module_comm/demo/srcview/" target="_blank">View and study Source Code</a><br />
<span id="more-1183"></span><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="669" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">
<param name="name" value="ModuleToModuleSC1" />
<param name="bgcolor" value="#869ca7" />
<param name="align" value="middle" />
<param name="src" value="http://mariusht.com/files/blog/module_to_module_comm/demo/ModuleToModuleSC1.swf" />
<param name="quality" value="high" /><embed type="application/x-shockwave-flash" width="669" height="350" src="http://mariusht.com/files/blog/module_to_module_comm/demo/ModuleToModuleSC1.swf" quality="high" align="middle" bgcolor="#869ca7" name="ModuleToModuleSC1"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/07/08/module-to-module-communication/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Connecting Module to Shell &#8211; simplified diagram</title>
		<link>http://mariusht.com/blog/2009/06/24/connecting-module-to-shell-simplified-diagram/</link>
		<comments>http://mariusht.com/blog/2009/06/24/connecting-module-to-shell-simplified-diagram/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 21:30:39 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[Pipes]]></category>
		<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=991</guid>
		<description><![CDATA[I had a hard time to understand Flex/PureMVC-Multicore version with Pipes utility especially when simple demos on the web use TeeSplit and Pipe to connect single module to application (diagram at the top-left). It didn&#8217;t really make sense to have TeeSplit for only one Pipe/Module. It makes more sense to add Tees(TeeSpit, TeeMerge) only when [...]]]></description>
			<content:encoded><![CDATA[<p>I had a hard time to understand Flex/PureMVC-Multicore version with Pipes utility especially when simple demos on the web use TeeSplit and Pipe to connect single module to application (diagram at the top-left). It didn&#8217;t really make sense to have TeeSplit for only one Pipe/Module. It makes more sense to add Tees(TeeSpit, TeeMerge) only when you go to the next level of having the application collaborate with multiple modules (diagram at the bottom).</p>
<hr />
<img class="alignnone" src="http://mariusht.com/files/blog/connecting_shell_to_module/shell_to_module.jpg" alt="" width="669" height="170" /></p>
<hr style="border: 1px solid #EBEBEB;" />
<img class="alignnone" src="http://mariusht.com/files/blog/connecting_shell_to_module/shell_to_modules.jpg" alt="" width="669" height="170" /></p>
<hr />
<span id="more-991"></span>Below code shows how to connect single module to application. <a href="http://mariusht.com/files/blog/connecting_shell_to_module/single_module/ShellJunctionMediator.as.html">ShellJunctionMediator.as</a> </p>
<pre class="MXML"><span class="ActionScriptpackage">package</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">mariusht</span>.<span class="ActionScriptDefault_Text">shellModuleDemo</span>.<span class="ActionScriptDefault_Text">shell</span>.<span class="ActionScriptDefault_Text">view</span>
<span class="ActionScriptBracket/Brace">{</span>
    <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">mariusht</span>.<span class="ActionScriptDefault_Text">shellModuleDemo</span>.<span class="ActionScriptDefault_Text">common</span>.<span class="ActionScriptDefault_Text">IPipeAwareModule</span>;
    <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">mariusht</span>.<span class="ActionScriptDefault_Text">shellModuleDemo</span>.<span class="ActionScriptDefault_Text">common</span>.<span class="ActionScriptDefault_Text">PipeAwareModuleConstants</span>;
    <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">com</span>.<span class="ActionScriptDefault_Text">mariusht</span>.<span class="ActionScriptDefault_Text">shellModuleDemo</span>.<span class="ActionScriptDefault_Text">shell</span>.<span class="ActionScriptDefault_Text">ShellFacade</span>;

    <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">org</span>.<span class="ActionScriptDefault_Text">puremvc</span>.<span class="ActionScriptDefault_Text">as3</span>.<span class="ActionScriptDefault_Text">multicore</span>.<span class="ActionScriptDefault_Text">interfaces</span>.<span class="ActionScriptDefault_Text">INotification</span>;
    <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">org</span>.<span class="ActionScriptDefault_Text">puremvc</span>.<span class="ActionScriptDefault_Text">as3</span>.<span class="ActionScriptDefault_Text">multicore</span>.<span class="ActionScriptDefault_Text">utilities</span>.<span class="ActionScriptDefault_Text">pipes</span>.<span class="ActionScriptDefault_Text">plumbing</span>.<span class="ActionScriptDefault_Text">Junction</span>;
    <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">org</span>.<span class="ActionScriptDefault_Text">puremvc</span>.<span class="ActionScriptDefault_Text">as3</span>.<span class="ActionScriptDefault_Text">multicore</span>.<span class="ActionScriptDefault_Text">utilities</span>.<span class="ActionScriptDefault_Text">pipes</span>.<span class="ActionScriptDefault_Text">plumbing</span>.<span class="ActionScriptDefault_Text">JunctionMediator</span>;
    <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">org</span>.<span class="ActionScriptDefault_Text">puremvc</span>.<span class="ActionScriptDefault_Text">as3</span>.<span class="ActionScriptDefault_Text">multicore</span>.<span class="ActionScriptDefault_Text">utilities</span>.<span class="ActionScriptDefault_Text">pipes</span>.<span class="ActionScriptDefault_Text">plumbing</span>.<span class="ActionScriptDefault_Text">Pipe</span>;

    <span class="ActionScriptReserved">public</span> <span class="ActionScriptclass">class</span> <span class="ActionScriptDefault_Text">ShellJunctionMediator</span> <span class="ActionScriptReserved">extends</span> <span class="ActionScriptDefault_Text">JunctionMediator</span>
    <span class="ActionScriptBracket/Brace">{</span>
        <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">NAME</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptString">&apos;ShellJunctionMediator&apos;</span>;

        <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">ShellJunctionMediator</span><span class="ActionScriptBracket/Brace">()</span>
        <span class="ActionScriptBracket/Brace">{</span>
            <span class="ActionScriptReserved">super</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">NAME</span>, <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Junction</span><span class="ActionScriptBracket/Brace">())</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">listNotificationInterests</span><span class="ActionScriptBracket/Brace">()</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span>
        <span class="ActionScriptBracket/Brace">{</span>
            <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">interests</span><span class="ActionScriptOperator">:</span><span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">super</span>.<span class="ActionScriptDefault_Text">listNotificationInterests</span><span class="ActionScriptBracket/Brace">()</span>;
            <span class="ActionScriptDefault_Text">interests</span>.<span class="ActionScriptDefault_Text">push</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">ShellFacade</span>.<span class="ActionScriptDefault_Text">MODULE_ADDED</span><span class="ActionScriptBracket/Brace">)</span>;
            <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">interests</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">handleNotification</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="ActionScriptReserved">switch</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">note</span>.<span class="ActionScriptDefault_Text">getName</span><span class="ActionScriptBracket/Brace">())</span>
            <span class="ActionScriptBracket/Brace">{</span>
                <span class="ActionScriptReserved">case</span> <span class="ActionScriptDefault_Text">ShellFacade</span>.<span class="ActionScriptDefault_Text">MODULE_ADDED</span><span class="ActionScriptOperator">:</span>
                    <span class="ActionScriptDefault_Text">connectModule</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">note</span>.<span class="ActionScriptDefault_Text">getBody</span><span class="ActionScriptBracket/Brace">()</span> <span class="ActionScriptReserved">as</span> <span class="ActionScriptDefault_Text">IPipeAwareModule</span><span class="ActionScriptBracket/Brace">)</span>;
                    <span class="ActionScriptReserved">break</span>;
            <span class="ActionScriptBracket/Brace">}</span>
        <span class="ActionScriptBracket/Brace">}</span>

        <span class="ActionScriptReserved style1">private</span> <span class="ActionScriptfunction style1">function</span> <span class="ActionScriptDefault_Text style1">connectModule</span><span class="ActionScriptBracket/Brace style1">(</span><span class="ActionScriptDefault_Text style1">module</span><span class="ActionScriptOperator style1">:</span><span class="ActionScriptDefault_Text style1">IPipeAwareModule</span><span class="ActionScriptBracket/Brace style1">)</span><span class="ActionScriptOperator style1">:</span><span class="ActionScriptReserved style1">void</span>
        <span class="ActionScriptBracket/Brace style1">{</span>
            <span class="ActionScriptvar style1">var</span> <span class="ActionScriptDefault_Text style1">pipe</span><span class="ActionScriptOperator style1">:</span><span class="ActionScriptDefault_Text style1">Pipe</span> <span class="ActionScriptOperator style1">=</span> <span class="ActionScriptReserved style1">new</span> <span class="ActionScriptDefault_Text style1">Pipe</span><span class="ActionScriptBracket/Brace style1">()</span><span class="style1">;
            junction.registerPipe</span><span class="ActionScriptBracket/Brace style1">(</span><span class="ActionScriptDefault_Text style1">PipeAwareModuleConstants</span><span class="style1">.SHELL_TO_MODULE_PIPE,
                Junction.OUTPUT, pipe</span><span class="ActionScriptBracket/Brace style1">)</span><span class="style1">;

            module.acceptInputPipe</span><span class="ActionScriptBracket/Brace style1">(</span><span class="ActionScriptDefault_Text style1">PipeAwareModuleConstants</span><span class="style1">.SHELL_TO_MODULE_PIPE, pipe</span><span class="ActionScriptBracket/Brace style1">)</span><span class="style1">;
        }</span>
    <span class="ActionScriptBracket/Brace">}</span>
<span class="ActionScriptBracket/Brace">}</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/06/24/connecting-module-to-shell-simplified-diagram/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PureMVC actors and their responsibilities</title>
		<link>http://mariusht.com/blog/2009/05/28/puremvc-actors-and-their-responsibilities/</link>
		<comments>http://mariusht.com/blog/2009/05/28/puremvc-actors-and-their-responsibilities/#comments</comments>
		<pubDate>Thu, 28 May 2009 21:58:39 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PureMVC]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=621</guid>
		<description><![CDATA[
Model(Proxies) contains the data and business logic.
View(Mediators) presents the user interface components.
Controller(Commands) handles the user input and manipulates the model.

&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;MEDIATOR&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
Send Notifications
facade.sendNotification is used in mediator for communicate with other mediators or to trigger a Command. sendNotification also works to send information from one mediator to another.
SliderMediator.as
Listen for Notifications
Mediator takes notes of interest and responds by [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://mariusht.com/files/blog/puremvc_actors/puremvc_actors.jpg" alt="" width="656" height="358" /></p>
<p><strong>Model(Proxies)</strong> contains the data and business logic.<br />
<strong>View(Mediators)</strong> presents the user interface components.<br />
<strong>Controller(Commands)</strong> handles the user input and manipulates the model.</p>
<p><span id="more-621"></span></p>
<p><strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;MEDIATOR&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</strong><br />
<strong>Send Notifications</strong><br />
facade.sendNotification is used in mediator for communicate with other mediators or to trigger a Command. sendNotification also works to send information from one mediator to another.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/view/SliderMediator.as.html">SliderMediator.as</a></p>
<p><strong>Listen for Notifications</strong><br />
Mediator takes notes of interest and responds by setting data on the component or calling methods on it to change its state.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/view/ApplicationMediator.as.html">ApplicationMediator.as</a></p>
<p><strong>Listen for UI events, Turn events into Notifications</strong><br />
The Mediator listens for events fired by your view components and then transforms those into notifications when required.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/view/DateFieldMediator.as.html">DateFieldMediator.as</a></p>
<p><strong>Set data on the component</strong><br />
The Mediator set the data on the view component and the component bind locally to that data.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/view/ApplicationMediator1.as.html">ApplicationMediator.as</a></p>
<p><strong>Call methods on the component</strong><br />
The mediator call the methods on the view component to change its state.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/view/VideoMediator.as.html">VideoMediator.as</a></p>
<p><strong>Occasionally create mediators for the view component&#8217;s children</strong><br />
A Mediator might create another Mediator, for instance if a Mediator&#8217;s child is a ViewStack, which defers the creation of its children until you navigate to them. The same happens to a Window component in AIR. You wait until window is created, and then add mediators for the window children components.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/view/ColorfulViewStackMediator.as.html">ColorfulViewStackMediator.as</a>, <a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexampleinair/view/LoginWindowMediator.as.html">LoginWindowMediator.as</a></p>
<p><strong>May retrieve and interact with the methods and properties exposed by the Proxy</strong><br />
The mediator may do simple updates directly to the model on behalf of the view component.<br />
If you&#8217;d be making the same proxy calls from multiple mediators, it can be worthwhile to refactor those calls into commands.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/view/BlueViewMediator.as.html">BlueViewMediator.as</a>, <a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/model/vo/CarVO.as.html">CarVO.as</a>, <a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/model/CarsProxy.as.html">CarsProxy.as</a></p>
<p><a href="http://forums.puremvc.org/index.php?topic=476">When to trigger Commands and when to simply manipulate Proxies directly from a Mediator</a></p>
<p><strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;COMMAND&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</strong><br />
<strong>Send Notifications</strong><br />
Command can send Notification to mediators or to trigger other Command.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/org/controller/StartupCommand.as.html">StartupCommand.as</a></p>
<p><strong>May register, retrieve and remove another Proxy or Mediator</strong><br />
Command may register, retrieve and remove another Proxy or Mediator at runtime.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/controller/ViewPrepCommand.as.html">ViewPrepCommand.as</a></p>
<p><strong>Gather data from multiple Proxies, Manipulate data before display</strong><br />
If there is some complicated transformation of the Model data or it is being assembled from multiple Proxies, then we would usually call that &#8216;Business Logic&#8217; and push it into a Command.</p>
<p><strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;PROXY&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</strong><br />
<strong>Send but do not receive Notifications</strong><br />
Proxies may send Notifications for various reasons, such as a remote service Proxy alerting the system that it has received a result or a Proxy whose data has been updated sending a change Notification.<br />
They don&#8217;t listen for notifications, but are instead retrieved and manipulated by commands and/or mediators.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/model/RssProxy1.as.html">RssProxy.as</a></p>
<p><strong>May interact with Proxies</strong><br />
There&#8217;s no problem at all with a proxy registering, retrieving or removing another Proxy. You can let the proxies know about each other and form their own hierarchies.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/model/CarOwnersProxy.as.html">CarOwnersProxy.as</a></p>
<p><strong>Call Service</strong><br />
The proxy should be calling the service and retrieve the data from it.<br />
<a href="http://mariusht.com/files/blog/puremvc_actors/source/com/mariusht/puremvcexample/model/RssProxy.as.html">RssProxy.as</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/05/28/puremvc-actors-and-their-responsibilities/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PureMVC in a week</title>
		<link>http://mariusht.com/blog/2009/05/21/puremvc-in-a-week/</link>
		<comments>http://mariusht.com/blog/2009/05/21/puremvc-in-a-week/#comments</comments>
		<pubDate>Thu, 21 May 2009 13:16:58 +0000</pubDate>
		<dc:creator>Mariush T.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PureMVC]]></category>

		<guid isPermaLink="false">http://mariusht.com/blog/?p=667</guid>
		<description><![CDATA[I decided to take my flex development to the next level and learn PureMVC framework in a week. 
I will be:
- studying framework documentation.
- reading blogs, tutorials and forum posts.
- learning from source codes.

Documentation:
PureMVC_Implementation_Idioms_and_Best_Practices.pdf
PureMVC Forum posts:
First project with PureMVC
Having difficulties changing views
User Manager Demo (PureMVC+WebORB+PHP+MySQL)
Notification, &#8220;type&#8221; property?
Popup Window
Multiple delegate service parameters in different views
Document-Based Application: [...]]]></description>
			<content:encoded><![CDATA[<p>I decided to take my flex development to the next level and learn <a href="http://puremvc.org/">PureMVC framework</a> in a week. </p>
<p><img class="alignleft" src="http://mariusht.com/files/blog/puremvc_in_a_week/puremvc.jpg" alt="" width="315" height="75" />I will be:<br />
- studying framework documentation.<br />
- reading blogs, tutorials and <a href="http://forums.puremvc.org/">forum</a> posts.<br />
- learning from source codes.</p>
<p><span id="more-667"></span></p>
<p><strong>Documentation:</strong><br />
<a href="http://puremvc.org/pages/docs/current/PureMVC_Implementation_Idioms_and_Best_Practices.pdf">PureMVC_Implementation_Idioms_and_Best_Practices.pdf</a></p>
<p><strong>PureMVC Forum posts:</strong><br />
<a href="http://forums.puremvc.org/index.php?topic=21.0">First project with PureMVC</a><br />
<a href="http://forums.puremvc.org/index.php?topic=621.0">Having difficulties changing views</a><br />
<a href="http://forums.puremvc.org/index.php?topic=639.0">User Manager Demo (PureMVC+WebORB+PHP+MySQL)</a><br />
<a href="http://forums.puremvc.org/index.php?topic=1059.0">Notification, &#8220;type&#8221; property?</a><br />
<a href="http://forums.puremvc.org/index.php?topic=105.0">Popup Window</a><br />
<a href="http://forums.puremvc.org/index.php?topic=964.0">Multiple delegate service parameters in different views</a><br />
<a href="http://forums.puremvc.org/index.php?topic=1000.0">Document-Based Application: is PureMVC the way to go?</a><br />
<a href="http://forums.puremvc.org/index.php?topic=1072.0">creating and destroying mediators at runtime</a><br />
<a href="http://forums.puremvc.org/index.php?topic=596.0">Registering Multiple Instances of one Mediator and Proxy: A Best Practice</a><br />
<a href="http://forums.puremvc.org/index.php?topic=980.0">Remote Objects</a><br />
<a href="http://forums.puremvc.org/index.php?topic=476">Yo Cliff! Why the connection between the mediator and the proxy?</a><br />
<a href="http://forums.puremvc.org/index.php?topic=697.0">Does mediator sendNotification to proxy or they can call directly ?</a><br />
<a href="http://forums.puremvc.org/index.php?topic=745.0">Accessing properties on components from Commands</a></p>
<p><strong>Blogs:</strong><br />
<a href="http://www.as3dp.com/2007/12/27/minimalist-mvc-example-using-the-puremvc-framework/">Minimalist MVC example using the PureMVC</a><br />
<a href="http://www.websector.de/blog/2007/12/25/10-tips-for-working-with-puremvc/">10 tips for working with PureMVC</a><br />
<a href="http://www.actionscriptdeveloper.co.uk/puremvc-tutorial-flex-puremvc-jabber-and-xiff-3-introduction/">Flex, PureMVC, Jabber and XIFF 3</a><br />
<a href="http://ricozuniga.com/2008/06/27/puremvc-notifications/">PureMVC Notifications</a><br />
<a href="http://flashenabledblog.com/2008/07/22/tutorials-puremvc-roundup/">PureMVC Roundup</a><br />
<a href="http://www.nutrixinteractive.com/blog/?p=69">Flex, Coldfusion and MySQL PureMVC style</a><br />
<a href="http://www.thetechlabs.com/tutorials/xml/creating-an-air-rss-reader-application-from-scratch-with-flex-puremvc/">Creating an AIR RSS Reader Application from Scratch with Flex and PureMVC</a><br />
<a href="http://hubflanger.com/building-a-flash-site-using-puremvc/">Building a flash site using PureMVC</a><br />
<a href="http://www.dehats.com/drupal/?q=node/26">From Cairngorm to PureMVC : a quick comparison</a><br />
<a href="http://blog.log2e.com/2008/05/19/getting-started-with-the-puremvc-startup-manager-introduction/">Getting started with the PureMVC Startup Manager &#8211; Introduction</a></p>
<p><strong>Other:</strong><br />
<a href="http://www.slideshare.net/chaocai/puremvc-introduction">PureMVC Introduction(slideshow)</a><br />
<a href="http://tv.adobe.com/#vi+f1472v1038">Intro to PureMVC(video)</a><br />
<a href="http://www.asserttrue.com/articles/2007/10/17/silvafug-application-frameworks-presentation">We prefer PureMVC because&#8230;(presentation)</a></p>
<p><span style="text-decoration: underline;">NOTES:</span><br />
<em>Thus Proxies send but do not receive notifications, while Mediators and Commands may retrieve and interact with Proxies directly.</em></p>
<p><em>Boilerplate code: creating Mediators and Proxies can be quite tedious &#8211; I find my spirits drop a notch whenever I need to create one of them.. &#8220;Ok, let&#8217;s do this thing! Woo! Create New Class.. Must extend some class and implement some interface.. and define my static NAME constant.. and.. ah.. create a getter to cast my view.. and.. override onRegister to hook up my view listeners.. and override listNotificationInterests.. and handleNotification.. and viola! I can start coding!&#8221; Actually, that&#8217;s first time I&#8217;ve listed it our for myself &#8211; should keep that for next time</em></p>
<div class="alignright" style="width: 240px;"><a href="http://www.amazon.com/gp/product/0201633612?ie=UTF8&#038;tag=martfledev-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0201633612"><img src="http://mariusht.com/files/blog/puremvc_in_a_week/design_patterns_book.jpg" alt="" width="240" height="240" /></a>
<div align="center"><strong>Highly recommended.</strong></div>
<div align="center">(Buy from Amazon)</div>
</div>
<p><em>&#8230;the mediator to do jus that; mediate. Take events from the component and turn them into notifications for the rest of the system, or to take notes of interest and respond by setting data on the component or calling methods on it to change its state or otherwise alert it of the system&#8217;s desires where it is concerned. And occasionally to create mediators for the view component&#8217;s chindren. That&#8217;s about it for mediator responsibilities.</em></p>
<p><em>Now, constants common to the model itself define on the proxies (such as ProductProxy.PRODUCT_RETRIEVED) or in a separate class (such as CommonConstants.PRODUCT_RETRIEVED).</em></p>
<p><em>Sounds about right on the creation, but on destruction, a better way to go is that the ContentMediator removes the subpage from its view component&#8217;s hierarchy. This will cause the subpage component to send a REMOVED event which its mediator should listen for and respond to by removing its listeners, nulling its viewComponent reference (freeing the subpage for GC) and finally removing itself with &#8216;facade.removeMediator(this.getMediatorName());&#8217;</em></p>
<p><em>Why make a model class that reflects dynamic properties of the view? The Model is for data about the domain, not the View. the view component (stage, button or whatever) is in charge of holding its properties, so query it (through a mediator) if you need to know its properties.<br />
The only time you&#8217;d want to store these properties in a Proxy is if you will be persisting them (in which case those properties are now actually part of the domain). &#8211; by Cliff</em></p>
<p><em>Your mediators for your view components just feed data to the components and listen for events from them. For instance a mediator can set the currentState property of a component that causes it to change state, which might lead to a visual transition. This is best encapsulated in the component itself rather than orchestrated by other actors. &#8211; by Cliff</em></p>
<p><em>For application wide state management have a look at the StateMachine Utility. This differs from Flex view states in that it isn&#8217;t pertaining to a particular component&#8217;s composition, but rather to the state of the entire system. So in the &#8216;logging in&#8217; state you might be displaying a login panel. When the user enters the info and clicks a login button, the component sends an event that the mediator is listening for. The mediator takes the values either from the event if it is a custom event, or simply interrogates its login component for the info (expose a getCredentials method or top-level props like username and password). Then the mediator may retrieve a LoginProxy that makes the login call and later sends an appropriate notification when it gets a result or fault. If it&#8217;s a good result, this may then lead to a command kicking the state machine into its next state, lets say the &#8216;display products&#8217; state. An interested mediator may hear the &#8216;changed&#8217; notification sent when the state machine reaches its &#8216;display products&#8217; state, causing it to remove the login box and display products.<br />
by Cliff, topic: <a href="http://forums.puremvc.org/index.php?topic=1097.0">need advice for rewrite existing flex app using puremvc</a></em></p>
<p><em>Certainly do expose value objects to your view components. The primary benefit of a value object is to act as a data carrier to shuttle data across the tiers of your app&#8230;That said, obviously its a good thing to work out your  domain model first, since constant churn in VO definition can cause you to be changing code all over the app across all tiers. The domain model is a cross-cutting dependency that is impossible to minimize.<br />
by Cliff, topic: <a href="http://forums.puremvc.org/index.php?topic=918.0">quick VO clarification-is it good practice to expose a VO to a views?</a></em></p>
<p>Above notes are just pieces of comments from <a href="http://forums.puremvc.org/">PureMVC forum</a>.<br />
<strong>I encourage you to read many posts from that forum.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://mariusht.com/blog/2009/05/21/puremvc-in-a-week/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

