<?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>Dave Keen</title>
	<atom:link href="http://www.actionscriptdeveloper.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.actionscriptdeveloper.co.uk</link>
	<description>Professional and reliable UK based Actionscript development</description>
	<lastBuildDate>Wed, 28 Mar 2012 22:28:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Flextrine 0.9 released</title>
		<link>http://www.actionscriptdeveloper.co.uk/flextrine-09-released/</link>
		<comments>http://www.actionscriptdeveloper.co.uk/flextrine-09-released/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 17:56:12 +0000</pubDate>
		<dc:creator>devdave</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Flextrine]]></category>
		<category><![CDATA[Object Oriented Design]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[0.9]]></category>
		<category><![CDATA[class table inheritance]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[flex database]]></category>
		<category><![CDATA[flex mysql]]></category>
		<category><![CDATA[flex object relational mapper]]></category>
		<category><![CDATA[flex orm]]></category>
		<category><![CDATA[graniteds]]></category>
		<category><![CDATA[itempendingerror]]></category>
		<category><![CDATA[lazy]]></category>
		<category><![CDATA[on-demand]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[single table inheritance]]></category>

		<guid isPermaLink="false">http://www.actionscriptdeveloper.co.uk/flextrine-09-released/</guid>
		<description><![CDATA[I am very proud to announce the release of Flextrine 0.9.&#160; This is a major release with changes across the board; much of the codebase has been improved, optimized and cleaned up, and a host of new features have been added.&#160; Flextrine has also moved from Google Code to Github, and the documentation has been [...]]]></description>
			<content:encoded><![CDATA[</p>
<p>I am very proud to announce the release of Flextrine 0.9.&#160; This is a <strong>major</strong> release with changes across the board; much of the codebase has been improved, optimized and cleaned up, and a host of new features have been added.&#160; Flextrine has also moved from Google Code to Github, and the documentation has been completely updated for the new version and is available on the <a title="Github wiki" href="https://github.com/ccapndave/flextrine/wiki">Github wiki</a>.&#160; Some of the new features are listed below:</p>
<ul>
<li>The ability to run multiple Flextrine applications within a single install – Flextrine will ship with a micro-framework to facilitate this along with a command line tool to create new projects. </li>
<li>Flextrine Manager functions, including entity generation, will become available through the command line (implemented through the Doctrine console tool) to aid in build processes.&#160; The Flextrine Manager has been removed. </li>
<li>Configuration files are YAML instead of PHP. </li>
<li>Support for XML, YAML as well as annotations in entities (this was done mainly to enable the use of the awesome <a title="ORM Designer" href="http://www.orm-designer.com/" target="_blank">ORM Designer</a>) . </li>
<li>Massive performance boosts when updating large objects graphs. </li>
<li>Lazily loaded collection associations can be configured to load on demand, throwing ItemPendingErrors to allow Flex components to react to the updates automatically. </li>
<li>Lazily loaded entities can be configured to load on demand. </li>
<li>Improved DQL querying from Flex including support for named parameters and hydration modes including scalar queries. </li>
<li>Bi-directional associations are now auto-managed by Flextrine, so there is no longer a need to set both sides of the relationship. </li>
<li>An EntityManager::rollback() method that undoes any changes made to the repository. </li>
<li>Class table and single table inheritance. </li>
<li>By default repositories hold weak references so that unused entities are eligible for garbage collection after Configuration::entityTimeToLive has elapsed (configurable globally or per repository). </li>
<li>The option to run Flextrine in PULL mode; this queues up changes but doesn’t apply them to the repositories until a successful return from em.flush() (experimental!) </li>
<li>PagedCollections which load query results as the user scrolls (experimental!) </li>
<li>Integrated support for access control to entities using Zend_Acl (experimental!) </li>
<li>Heaps of bug fixes! </li>
</ul>
<p>Flextrine v0.9 is available from <a href="http://www.flextrine.com">www.flextrine.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.actionscriptdeveloper.co.uk/flextrine-09-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GotoAndSki(”Switzerland”)</title>
		<link>http://www.actionscriptdeveloper.co.uk/gotoandskiswitzerland/</link>
		<comments>http://www.actionscriptdeveloper.co.uk/gotoandskiswitzerland/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 10:18:02 +0000</pubDate>
		<dc:creator>devdave</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[gotoandski]]></category>
		<category><![CDATA[ski]]></category>
		<category><![CDATA[snowboard]]></category>
		<category><![CDATA[snowcode]]></category>

		<guid isPermaLink="false">http://www.actionscriptdeveloper.co.uk/gotoandskiswitzerland/</guid>
		<description><![CDATA[I have just returned from the most awesome Flash/Flex conference which consisted of a bunch of techies all travelling to a tiny village in Switzerland where we spent the days skiing and snowboarding in the Jungfrau, and the evenings having presentations, eating great food and boozing &#160; The setting was incredibly beautiful and the linked [...]]]></description>
			<content:encoded><![CDATA[<p>I have just returned from the most awesome Flash/Flex conference which consisted of a bunch of techies all travelling to a tiny village in Switzerland where we spent the days skiing and snowboarding in the Jungfrau, and the evenings having presentations, eating great food and boozing <img src='http://www.actionscriptdeveloper.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#160; The setting was incredibly beautiful and the linked <a href="http://www.alpineskimaps.com/swit/jungfrau/mapwin.htm" target="_blank">ski area</a> was massive, with loads of cool terrain to play in.&#160; The presentations were interesting and everyone was friendly and very very smart.</p>
<p>If you get the chance get along to the summer conference in Norway or next winter’s one which will once again be in Switzerland.&#160; It sure beats sitting in an office…</p>
<p><a title="GotoAndSki" href="http://www.gotoandski.com/">http://www.gotoandski.com/</a>, and you can see us having fun in the snow at <a href="http://www.flickr.com/groups/gotoandskiswitzerland/">http://www.flickr.com/groups/gotoandskiswitzerland/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.actionscriptdeveloper.co.uk/gotoandskiswitzerland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Work on Flextrine resumes!</title>
		<link>http://www.actionscriptdeveloper.co.uk/work-on-flextrine-resumes/</link>
		<comments>http://www.actionscriptdeveloper.co.uk/work-on-flextrine-resumes/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 09:56:12 +0000</pubDate>
		<dc:creator>devdave</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Freelance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[associations]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[Flextrine]]></category>
		<category><![CDATA[graniteds]]></category>
		<category><![CDATA[lazy]]></category>
		<category><![CDATA[livecycle]]></category>
		<category><![CDATA[load on demand]]></category>
		<category><![CDATA[many to many]]></category>
		<category><![CDATA[many to one]]></category>
		<category><![CDATA[one to many]]></category>
		<category><![CDATA[one to one]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[pimento]]></category>
		<category><![CDATA[speeding up your associations]]></category>

		<guid isPermaLink="false">http://www.actionscriptdeveloper.co.uk/work-on-flextrine-resumes/</guid>
		<description><![CDATA[After a few months break I have started work on Flextrine once again.&#160; During the break I have been working a lot with Doctrine 2 in pure PHP, and have learnt a lot of things to do with both the internals of Doctrine and its practical application in a real world application.&#160; Now that Doctrine [...]]]></description>
			<content:encoded><![CDATA[<p>After a few months break I have started work on Flextrine once again.&#160; During the break I have been working a lot with Doctrine 2 in pure PHP, and have learnt a lot of things to do with both the internals of Doctrine and its practical application in a real world application.&#160; Now that Doctrine 2 has its first stable release its time to start applying some of these lessons to Flextrine.</p>
<p>Here are a few of the things that will be in the upcoming release of Flextrine:</p>
<ul>
<li>The ability to run multiple Flextrine applications within a single install – Flextrine will ship with a micro-framework to facilitate this along with a command line tool to create new projects. </li>
<li>Flextrine Manager functions, including entity generation, will become available through the command line (implemented through the Doctrine console tool) to aid in build processes.&#160; The Flextrine Manager will probably be removed. </li>
<li>Configuration files will be YAML instead of PHP. </li>
<li>Support for XML, YAML as well as annotations in entities (this was done mainly to enable the use of the awesome <a title="ORM Designer" href="http://www.orm-designer.com/" target="_blank">ORM Designer</a>) . </li>
<li>Integrated support for access control to entities using Zend_Acl. </li>
<li>Massive performance boosts when updating large objects graphs. </li>
<li>Lazily loaded collection associations can be configured to load on demand, throwing ItemPendingErrors to allow Flex components to react to the updates automatically. </li>
<li>Lazily loaded entities can also be configured to load on demand. </li>
<li>Improved DQL querying from Flex including support for named parameters. </li>
<li>Bi-directional associations are now auto-managed by Flextrine, so there is no longer a need to set both sides of the relationship. </li>
<li>An EntityManager::rollback() method that undoes any changes made to the repository. </li>
<li>Class table inheritance. </li>
<li>By default repositories hold weak references so that unused entities are eligible for garbage collection after Configuration::entityTimeToLive has elapsed (configurable globally or per repository).</li>
<li>The option to run Flextrine in PULL mode; this queues up changes but doesn’t apply them to the repositories until a successful return from em.flush() (experimental!) </li>
<li>PagedCollections which load query results as the user scrolls (experimental!) </li>
<li>Heaps of bug fixes! </li>
</ul>
<p> Flextrine 0.9 is currently planned for release towards the end of February.   </p>
]]></content:encoded>
			<wfw:commentRss>http://www.actionscriptdeveloper.co.uk/work-on-flextrine-resumes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Running Apache and Wowza/Flash Media Server/Red5 on port 80 at the same time</title>
		<link>http://www.actionscriptdeveloper.co.uk/running-apache-and-wowzaflash-media-serverred5-on-port-80-at-the-same-time/</link>
		<comments>http://www.actionscriptdeveloper.co.uk/running-apache-and-wowzaflash-media-serverred5-on-port-80-at-the-same-time/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 15:48:12 +0000</pubDate>
		<dc:creator>devdave</dc:creator>
				<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Wowza]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[fms]]></category>
		<category><![CDATA[mod_proxy]]></category>
		<category><![CDATA[mod_proxy_http]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[red5]]></category>
		<category><![CDATA[reverse proxy]]></category>
		<category><![CDATA[rtmp]]></category>
		<category><![CDATA[rtmpt]]></category>

		<guid isPermaLink="false">http://www.actionscriptdeveloper.co.uk/running-apache-and-wowzaflash-media-serverred5-on-port-80-at-the-same-time/</guid>
		<description><![CDATA[By default Wowza, Flash Media Server and Red5 run using RTMP over port 1935.  However, a lot of firewalls (especially in corporate environments) will block access to this port.  In an attempt to get around this the RTMPT protocol was developed, which basically wraps up the RTMP stream into a bunch of HTTP requests; these [...]]]></description>
			<content:encoded><![CDATA[<p>By default Wowza, Flash Media Server and Red5 run using RTMP over port 1935.  However, a lot of firewalls (especially in corporate environments) will block access to this port.  In an attempt to get around this the RTMPT protocol was developed, which basically wraps up the RTMP stream into a bunch of HTTP requests; these run over port 80 and are just normal HTTP, so even the most restrictive firewalls should allow this traffic through.</p>
<p>Its usually very easy to use RTMPT with the media server – for example, in Wowza you don’t have to do anything at all except connect using rtmpt:// instead of rtmp:// from your Flash application.</p>
<p>However, there is a potential problem; since Wowza (I will refer to Wowza from here on, but this should be applicable for all the media servers) is now running on port 80 it means that nothing else can run on port 80; and since Apache is likely to be running on port 80 that means its either Apache or Wowza, but not both.  Note that if you can get 2 IP addresses there is no problem; Apache runs on port 80 of one IP address and Wowza on port 80 of the other, and this is of course the ideal solution.  But there are cases when for technical or business reasons its simply not possible to get 2 IP addresses.</p>
<p>So here is the trick getting access to both Apache and Wowza on port 80 of a single IP address:</p>
<p>Leave Wowza running on port 1935, and Apache running on port 80 as normal.  Then:</p>
<ol>
<li>In Apache enable <em>mod_proxy</em> and <em>mod_proxy_http</em></li>
<li>In your &lt;VirtualHost&gt; configuration section of Apache add the following code.  <strong>This does not work in .htaccess</strong></li>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: 'Courier New', courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span style="color: #008000"># Allow FMS to act as a reverse proxy for Wowza traffic over port 80</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">ProxyPass /open http://localhost:1935/open</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">ProxyPassReverse /open http://localhost:1935/open</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">ProxyPass /send http://localhost:1935/send</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">ProxyPassReverse /send http://localhost:1935/send</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">ProxyPass /idle http://localhost:1935/idle</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">ProxyPassReverse /idle http://localhost:1935/idle</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">ProxyPass /close http://localhost:1935/close</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">ProxyPassReverse /close http://localhost:1935/close</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">ProxyPass /fcs http://localhost:1935/fcs</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">ProxyPassReverse /fcs http://localhost:1935/fcs</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span style="color: #0000ff">&lt;</span>Proxy <span style="color: #cc6633">*</span>:80<span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">    Order Allow,Deny</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none">    Allow from all</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span style="color: #0000ff">&lt;</span>/Proxy<span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
</div>
</div>
</ol>
<p>And that’s it!  It works because RTMPT always accesses URLs at /open, /send, /close, /idle or /fcs.  <em>mod_proxy</em> grabs these requests and forwards them onto Wowza on port 1935.  Note that if you have Wowza running on a different IP or URL just change <em>localhost</em> to wherever it is located.</p>
<p>The only thing to remember is that you can’t serve any pages from Apache at /open, /send, /close, /idle or /fcs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.actionscriptdeveloper.co.uk/running-apache-and-wowzaflash-media-serverred5-on-port-80-at-the-same-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flextrine 0.7.3 released</title>
		<link>http://www.actionscriptdeveloper.co.uk/flextrine-073-released/</link>
		<comments>http://www.actionscriptdeveloper.co.uk/flextrine-073-released/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 22:49:38 +0000</pubDate>
		<dc:creator>devdave</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[AMFPHP]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Flextrine]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[associations]]></category>
		<category><![CDATA[brighton]]></category>
		<category><![CDATA[doctrine 2]]></category>
		<category><![CDATA[elevator pitch]]></category>
		<category><![CDATA[entities]]></category>
		<category><![CDATA[flash on the beach]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://www.actionscriptdeveloper.co.uk/flextrine-073-released/</guid>
		<description><![CDATA[The Flextrine releases are flying out hard and fast!&#160; This release gives another batch of bug fixes, enhanced functionality in various areas, better error reporting and lots more API documentation.&#160; Flash on the Beach is just around the corner, and I’m hoping that my presentation will bring a new batch of users into the Flextrine [...]]]></description>
			<content:encoded><![CDATA[<p>The Flextrine releases are flying out hard and fast!&#160; This release gives another batch of bug fixes, enhanced functionality in various areas, better error reporting and lots more API documentation.&#160; Flash on the Beach is just around the corner, and I’m hoping that my presentation will bring a new batch of users into the Flextrine camp.</p>
<p>Pick it up at <a href="http://www.flextrine.com">www.flextrine.com</a></p>
<p><strong>SPOILER ALERT</strong> (only if you are coming to Flash on the Beach) – here is a sneak preview of my slides for the presentation <a title="http://prezi.com/6vrft-2h4sjy/flextrine/" href="http://prezi.com/6vrft-2h4sjy/flextrine/">http://prezi.com/6vrft-2h4sjy/flextrine/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.actionscriptdeveloper.co.uk/flextrine-073-released/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flextrine 0.7 released – now with ZendAMF!</title>
		<link>http://www.actionscriptdeveloper.co.uk/flextrine-07-released-now-with-zendamf/</link>
		<comments>http://www.actionscriptdeveloper.co.uk/flextrine-07-released-now-with-zendamf/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 08:22:45 +0000</pubDate>
		<dc:creator>devdave</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[AMFPHP]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Flextrine]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[associations]]></category>
		<category><![CDATA[doctrine 2]]></category>
		<category><![CDATA[entities]]></category>
		<category><![CDATA[entity]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[gpl]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[persistence]]></category>
		<category><![CDATA[released]]></category>
		<category><![CDATA[zend amf]]></category>
		<category><![CDATA[zendamf]]></category>

		<guid isPermaLink="false">http://www.actionscriptdeveloper.co.uk/flextrine-07-released-now-with-zendamf/</guid>
		<description><![CDATA[After much soul searching I eventually decided to put in the time to convert Flextrine from using AMFPHP to ZendAMF.&#160; There were a few reasons I decided to make this move, but eventually it boiled down to the fact that quite a few people had asked me to do so.&#160; In retrospect it was certainly [...]]]></description>
			<content:encoded><![CDATA[<p>After much soul searching I eventually decided to put in the time to convert Flextrine from using AMFPHP to ZendAMF.&#160; There were a few reasons I decided to make this move, but eventually it boiled down to the fact that quite a few people had asked me to do so.&#160; In retrospect it was certainly the right thing to do – ZendAMF has the green light from Adobe, its licence is LGPL instead of GPL and the cleaner code base means that the changes Flextrine requires can be implemented as overridden classes instead of having to modify the ZendAMF core.&#160; This particularly is great news because it means that you can use Flextrine directly with the standard Zend framework installation, whereas previously you could only use the version of AMFPHP bundled with Flextrine.</p>
<p>Functionally speaking things remain exactly the same, and we continue to approach our stable release alongside Doctrine 2.</p>
<p>The new version of Flextrine can be downloaded from <a href="http://www.flextrine.com">www.flextrine.com</a>.&#160; Note that if you are upgrading from a previous version of Flextrine you will need to regenerate your AS3 entities.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.actionscriptdeveloper.co.uk/flextrine-07-released-now-with-zendamf/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Flextrine 0.6.5 released</title>
		<link>http://www.actionscriptdeveloper.co.uk/flextrine-065-released/</link>
		<comments>http://www.actionscriptdeveloper.co.uk/flextrine-065-released/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 12:46:30 +0000</pubDate>
		<dc:creator>devdave</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[AMFPHP]]></category>
		<category><![CDATA[Flex 3]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Flextrine]]></category>
		<category><![CDATA[Object Oriented Design]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[0.6.5]]></category>
		<category><![CDATA[doctrine 2]]></category>
		<category><![CDATA[explicitType]]></category>
		<category><![CDATA[flex orm]]></category>
		<category><![CDATA[flextrine 0.6.5]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://www.actionscriptdeveloper.co.uk/flextrine-065-released/</guid>
		<description><![CDATA[Another released of Flextrine!&#160; Since 0.6.1 there have been a number of changes to the Flextrine core.&#160; The entity merging algorithm has been altered to take better advantage of Doctrine 2 merging giving us a hefty performance boost (thanks for Benjamin Eberlei at Doctrine for pointing this out), the requirement to use $_explicitType in Doctrine [...]]]></description>
			<content:encoded><![CDATA[<p>Another released of Flextrine!&#160; Since 0.6.1 there have been a number of changes to the Flextrine core.&#160; The entity merging algorithm has been altered to take better advantage of Doctrine 2 merging giving us a hefty performance boost (thanks for Benjamin Eberlei at Doctrine for pointing this out), the requirement to use $_explicitType in Doctrine entities has now been removed, bootstrapping and configuration code has been extended and neatened up and there have been numerous bug fixes at all levels of the application.</p>
<p>My continued thanks to the community for their help in testing and using Flextrine!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.actionscriptdeveloper.co.uk/flextrine-065-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flextrine on Android 2.2 (Froyo)!</title>
		<link>http://www.actionscriptdeveloper.co.uk/flextrine-on-android-22-froyo/</link>
		<comments>http://www.actionscriptdeveloper.co.uk/flextrine-on-android-22-froyo/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 16:16:37 +0000</pubDate>
		<dc:creator>devdave</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[AMFPHP]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Flextrine]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[android 2.2]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[froyo]]></category>
		<category><![CDATA[htc]]></category>
		<category><![CDATA[htc desire]]></category>

		<guid isPermaLink="false">http://www.actionscriptdeveloper.co.uk/flextrine-on-android-22-froyo/</guid>
		<description><![CDATA[Android 2.2 got rolled out for my HTC Desire this afternoon, and I am both pleased and surprised to report that Flextrine runs on it without any problems!]]></description>
			<content:encoded><![CDATA[<p>Android 2.2 got rolled out for my HTC Desire this afternoon, and I am both pleased and surprised to report that Flextrine runs on it without any problems!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.actionscriptdeveloper.co.uk/flextrine-on-android-22-froyo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flextrine Tutorial – CRUD in a simple Flex 4 address book: Conclusion</title>
		<link>http://www.actionscriptdeveloper.co.uk/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-conclusion/</link>
		<comments>http://www.actionscriptdeveloper.co.uk/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-conclusion/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 13:18:02 +0000</pubDate>
		<dc:creator>devdave</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[AMFPHP]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Flextrine]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[conclusion]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[issue]]></category>
		<category><![CDATA[orm]]></category>

		<guid isPermaLink="false">http://www.actionscriptdeveloper.co.uk/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-conclusion/</guid>
		<description><![CDATA[Introduction Setting up the server Creating the entities Creating the database schema Loading the entities Creating new entities Deleting entities Updating entities Conclusion I hope that this tutorial has given you some insight into the power of Flextrine.&#160; In fact there are many areas of Flextrine that we didn’t touch on here including one to [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Introduction" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-introduction/">Introduction</a>  <br /><a title="Setting up the server" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-setting-up-the-server/">Setting up the server</a>  <br /><a title="Creating the entities" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-creating-the-entities/">Creating the entities</a>  <br /><a title="Creating the database schema" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-creating-the-database-schema/">Creating the database schema</a>  <br /><a title="Loading the entities" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-loading-the-entities/">Loading the entities</a>  <br /><a title="Creating new entities" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-creating-new-entities/">Creating new entities</a>  <br /><a title="Deleting entities" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-deleting-entities/">Deleting entities</a>  <br /><a title="Updating entities" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-updating-entities/">Updating entities</a>  <br /><a title="Conclusion" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-conclusion/">Conclusion</a>
<p>I hope that this tutorial has given you some insight into the power of Flextrine.&#160; In fact there are many areas of Flextrine that we didn’t touch on here including one to one and many to many associations, lazy loading, DQL, fetch joins, custom PHP functions and more – check the <a title="Flextrine documentation" href="http://code.google.com/p/flextrine2/wiki/Introduction">documentation</a> for more details.</p>
<p>Both Flextrine and Doctrine 2 are currently in beta; the planned release date for both products is 1st September 2010 by which time I would hope to be able to confidently pronounce Flextrine as stable.&#160; That’s where you come in!&#160; If you find any issues in Flextrine please log them at <a title="http://code.google.com/p/flextrine2/issues/list" href="http://code.google.com/p/flextrine2/issues/list">http://code.google.com/p/flextrine2/issues/list</a> and help me to make Flextrine the best Flex ORM library there is <img src='http://www.actionscriptdeveloper.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.actionscriptdeveloper.co.uk/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-conclusion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flextrine Tutorial – CRUD in a simple Flex 4 address book: Updating entities</title>
		<link>http://www.actionscriptdeveloper.co.uk/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-updating-entities/</link>
		<comments>http://www.actionscriptdeveloper.co.uk/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-updating-entities/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 13:01:52 +0000</pubDate>
		<dc:creator>devdave</dc:creator>
				<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[AMFPHP]]></category>
		<category><![CDATA[Flex 4]]></category>
		<category><![CDATA[Flextrine]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[databinding]]></category>
		<category><![CDATA[doctrine 2]]></category>
		<category><![CDATA[flush]]></category>
		<category><![CDATA[merging]]></category>
		<category><![CDATA[notify]]></category>
		<category><![CDATA[persist]]></category>
		<category><![CDATA[property change]]></category>
		<category><![CDATA[propertychangeevent]]></category>
		<category><![CDATA[updating]]></category>

		<guid isPermaLink="false">http://www.actionscriptdeveloper.co.uk/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-updating-entities/</guid>
		<description><![CDATA[Introduction Setting up the server Creating the entities Creating the database schema Loading the entities Creating new entities Deleting entities Updating entities Conclusion Once an entity is in an EntityRepository (either because it was loaded from the database or it was persisted) it is known as a MANAGED entity.&#160; This means that Flextrine will constantly [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Introduction" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-introduction/">Introduction</a>  <br /><a title="Setting up the server" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-setting-up-the-server/">Setting up the server</a>  <br /><a title="Creating the entities" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-creating-the-entities/">Creating the entities</a>  <br /><a title="Creating the database schema" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-creating-the-database-schema/">Creating the database schema</a>  <br /><a title="Loading the entities" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-loading-the-entities/">Loading the entities</a>  <br /><a title="Creating new entities" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-creating-new-entities/">Creating new entities</a>  <br /><a title="Deleting entities" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-deleting-entities/">Deleting entities</a>  <br /><a title="Updating entities" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-updating-entities/">Updating entities</a>  <br /><a title="Conclusion" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-conclusion/">Conclusion</a>
<p>Once an entity is in an EntityRepository (either because it was loaded from the database or it was persisted) it is known as a <strong>MANAGED</strong> entity.&#160; This means that Flextrine will constantly watch the entity to see if anything changes, and if so will mark the entity for updating on the next flush().</p>
<p>Therefore updating entities is extremely simple – as long as the entity is managed there is literally nothing to do <img src='http://www.actionscriptdeveloper.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Lets create an editor for the ContactGroups (in the same directory as Main.mxml):</p>
<h4>ContactGroupEditor.mxml</h4>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> &lt;?xml version=<span style="color: #006080">&quot;1.0&quot;</span> encoding=<span style="color: #006080">&quot;utf-8&quot;</span>?&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span> &lt;s:Group xmlns:fx=<span style="color: #006080">&quot;http://ns.adobe.com/mxml/2009&quot;</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum3" style="color: #606060">   3:</span>          xmlns:s=<span style="color: #006080">&quot;library://ns.adobe.com/flex/spark&quot;</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum4" style="color: #606060">   4:</span>          xmlns:mx=<span style="color: #006080">&quot;library://ns.adobe.com/flex/mx&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum5" style="color: #606060">   5:</span>     </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum6" style="color: #606060">   6:</span>     &lt;fx:Script&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum7" style="color: #606060">   7:</span>         &lt;![CDATA[</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum8" style="color: #606060">   8:</span>         <span style="color: #0000ff">import</span> vo.ContactGroup;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum9" style="color: #606060">   9:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum10" style="color: #606060">  10:</span>         [Bindable]</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum11" style="color: #606060">  11:</span>         <span style="color: #0000ff">public</span> var contactGroup:ContactGroup;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum12" style="color: #606060">  12:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum13" style="color: #606060">  13:</span>         ]]&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum14" style="color: #606060">  14:</span>     &lt;/fx:Script&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum15" style="color: #606060">  15:</span>     </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum16" style="color: #606060">  16:</span>     &lt;mx:Form labelWidth=<span style="color: #006080">&quot;150&quot;</span> width=<span style="color: #006080">&quot;100%&quot;</span> height=<span style="color: #006080">&quot;100%&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum17" style="color: #606060">  17:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum18" style="color: #606060">  18:</span>         &lt;mx:FormHeading label=<span style="color: #006080">&quot;Edit group&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum19" style="color: #606060">  19:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum20" style="color: #606060">  20:</span>         &lt;mx:FormItem label=<span style="color: #006080">&quot;Name&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum21" style="color: #606060">  21:</span>             &lt;s:TextInput text=<span style="color: #006080">&quot;@{contactGroup.name}&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum22" style="color: #606060">  22:</span>         &lt;/mx:FormItem&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum23" style="color: #606060">  23:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum24" style="color: #606060">  24:</span>     &lt;/mx:Form&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum25" style="color: #606060">  25:</span>     </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum26" style="color: #606060">  26:</span> &lt;/s:Group&gt;</pre>
<p><!--CRLF--></div>
</div>
<p>The component takes a <em>contactGroup</em> and provides a TextInput that edits its <em>name</em> attribute using Flex 4 two-way databinding.&#160; In fact you need to be careful with two-way databinding on some components (e.g. DateChooser) as it can cause unnecessary updates, but it works fine for Spark’s TextInput.</p>
<p>Now we need to add the ContactGroupEditor into Main.mxml:</p>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> ...</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span> &lt;s:VGroup width=<span style="color: #006080">&quot;100%&quot;</span> height=<span style="color: #006080">&quot;100%&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum3" style="color: #606060">   3:</span>             &lt;!-- The editors --&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum4" style="color: #606060">   4:</span>             &lt;local:ContactGroupEditor contactGroup=<span style="color: #006080">&quot;{tree.selectedItem as ContactGroup}&quot;</span> enabled=<span style="color: #006080">&quot;{tree.selectedItem is ContactGroup}&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum5" style="color: #606060">   5:</span> ...</pre>
<p><!--CRLF--></div>
</div>
<p>And that’s it for the group editor.&#160; When we select a <em>ContactGroup</em> in the tree, the <em>ContactGroupEditor</em> becomes enabled, and the selected item is passed to the editor’s <em>contactGroup</em> attribute.&#160; Flex updates the <em>contactGroup</em>’s <em>name</em> attribute when we change it in the editor and Flextrine automatically picks up on the change and marks the entity for updating.&#160; On the next flush() the changes will be written to the database.</p>
<p>Now for the ContactEditor.</p>
<h3>ContactEditor.mxml</h3>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> &lt;?xml version=<span style="color: #006080">&quot;1.0&quot;</span> encoding=<span style="color: #006080">&quot;utf-8&quot;</span>?&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span> &lt;s:Group xmlns:fx=<span style="color: #006080">&quot;http://ns.adobe.com/mxml/2009&quot;</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum3" style="color: #606060">   3:</span>          xmlns:s=<span style="color: #006080">&quot;library://ns.adobe.com/flex/spark&quot;</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum4" style="color: #606060">   4:</span>          xmlns:mx=<span style="color: #006080">&quot;library://ns.adobe.com/flex/mx&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum5" style="color: #606060">   5:</span>     </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum6" style="color: #606060">   6:</span>     &lt;fx:Script&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum7" style="color: #606060">   7:</span>         &lt;![CDATA[</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum8" style="color: #606060">   8:</span>         <span style="color: #0000ff">import</span> org.davekeen.flextrine.orm.EntityManager;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum9" style="color: #606060">   9:</span>         <span style="color: #0000ff">import</span> vo.ContactGroup;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum10" style="color: #606060">  10:</span>         <span style="color: #0000ff">import</span> vo.Contact;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum11" style="color: #606060">  11:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum12" style="color: #606060">  12:</span>         [Bindable]</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum13" style="color: #606060">  13:</span>         <span style="color: #0000ff">public</span> var contact:Contact;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum14" style="color: #606060">  14:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum15" style="color: #606060">  15:</span>         ]]&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum16" style="color: #606060">  16:</span>     &lt;/fx:Script&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum17" style="color: #606060">  17:</span>     </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum18" style="color: #606060">  18:</span>     &lt;mx:Form labelWidth=<span style="color: #006080">&quot;150&quot;</span> width=<span style="color: #006080">&quot;100%&quot;</span> height=<span style="color: #006080">&quot;100%&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum19" style="color: #606060">  19:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum20" style="color: #606060">  20:</span>         &lt;mx:FormHeading label=<span style="color: #006080">&quot;Edit contact&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum21" style="color: #606060">  21:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum22" style="color: #606060">  22:</span>         &lt;mx:FormItem label=<span style="color: #006080">&quot;Name&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum23" style="color: #606060">  23:</span>             &lt;s:TextInput text=<span style="color: #006080">&quot;@{contact.name}&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum24" style="color: #606060">  24:</span>         &lt;/mx:FormItem&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum25" style="color: #606060">  25:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum26" style="color: #606060">  26:</span>         &lt;mx:FormItem label=<span style="color: #006080">&quot;Telephone number&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum27" style="color: #606060">  27:</span>             &lt;s:TextInput text=<span style="color: #006080">&quot;@{contact.telephoneNumber}&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum28" style="color: #606060">  28:</span>         &lt;/mx:FormItem&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum29" style="color: #606060">  29:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum30" style="color: #606060">  30:</span>         &lt;mx:FormItem label=<span style="color: #006080">&quot;Birthday&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum31" style="color: #606060">  31:</span>             &lt;mx:DateChooser selectedDate=<span style="color: #006080">&quot;{contact.birthday}&quot;</span> change=<span style="color: #006080">&quot;contact.birthday = event.currentTarget.selectedDate&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum32" style="color: #606060">  32:</span>         &lt;/mx:FormItem&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum33" style="color: #606060">  33:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum34" style="color: #606060">  34:</span>         &lt;mx:FormItem label=<span style="color: #006080">&quot;Group&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum35" style="color: #606060">  35:</span>             &lt;s:DropDownList dataProvider=<span style="color: #006080">&quot;{EntityManager.getInstance().getRepository(ContactGroup).entities}&quot;</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum36" style="color: #606060">  36:</span>                             selectedItem=<span style="color: #006080">&quot;{contact.contactGroup}&quot;</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum37" style="color: #606060">  37:</span>                             change=<span style="color: #006080">&quot;contact.setContactGroup(event.currentTarget.selectedItem);&quot;</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum38" style="color: #606060">  38:</span>                             labelField=<span style="color: #006080">&quot;name&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum39" style="color: #606060">  39:</span>         &lt;/mx:FormItem&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum40" style="color: #606060">  40:</span>         </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum41" style="color: #606060">  41:</span>     &lt;/mx:Form&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum42" style="color: #606060">  42:</span>     </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum43" style="color: #606060">  43:</span> &lt;/s:Group&gt;</pre>
<p><!--CRLF--></div>
</div>
<p>The contact editor is marginally more complicated, but still fairly simple.&#160; A few points:</p>
<ul>
<li>Note is that as mentioned above we don’t use two-way databinding on any component apart from TextInput. </li>
<li>Although it is perfectly legal to retrieve the singleton EntityManager in the ContactEditor as we have done in the DropDownList dataProvider, in a real application we probably wouldn’t do this as it breaks encapsulation.&#160; I’ve done it here for the sake of simplicity <img src='http://www.actionscriptdeveloper.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </li>
</ul>
<p>Finally we need to add the editor to Main.mxml:</p>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> ...</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum3" style="color: #606060">   3:</span> &lt;s:VGroup width=<span style="color: #006080">&quot;100%&quot;</span> height=<span style="color: #006080">&quot;100%&quot;</span>&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum4" style="color: #606060">   4:</span>     &lt;!-- The editors --&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum5" style="color: #606060">   5:</span>     &lt;local:ContactGroupEditor contactGroup=<span style="color: #006080">&quot;{tree.selectedItem as ContactGroup}&quot;</span> enabled=<span style="color: #006080">&quot;{tree.selectedItem is ContactGroup}&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum6" style="color: #606060">   6:</span>     &lt;mx:HRule width=<span style="color: #006080">&quot;100%&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum7" style="color: #606060">   7:</span>     &lt;local:ContactEditor contact=<span style="color: #006080">&quot;{tree.selectedItem as Contact}&quot;</span> enabled=<span style="color: #006080">&quot;{tree.selectedItem is Contact}&quot;</span> /&gt;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum8" style="color: #606060">   8:</span> ...</pre>
<p><!--CRLF--></div>
</div>
<p>An that’s it!&#160; A simple but fully functioning, database aware Flex application.</p>
<p>And now, <a title="Conclusion" href="/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-conclusion/">the thrilling conclusion</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.actionscriptdeveloper.co.uk/flextrine-tutorial-crud-in-a-simple-flex-4-address-book-updating-entities/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

