<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
	>
<channel>
	<title>Comments on: GoogleMaté</title>
	<atom:link href="http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/feed/" rel="self" type="application/rss+xml" />
	<link>http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/</link>
	<description>Samples and Thoughts</description>
	<pubDate>Sun, 05 Feb 2012 01:59:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: TimHoff</title>
		<link>http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/comment-page-1/#comment-39</link>
		<dc:creator>TimHoff</dc:creator>
		<pubDate>Tue, 07 Jul 2009 01:25:54 +0000</pubDate>
		<guid isPermaLink="false">http://timothyhoff.com/blog/?p=6#comment-39</guid>
		<description>@KonstantinMiller,

Thanks, yes I'll be posting more in the future.  In the mean-time, there's a lot of great information on the &lt;a href="http://mate.asfusion.com/" rel="nofollow"&gt;asfusion&lt;/a&gt; site.

-TH</description>
		<content:encoded><![CDATA[<p>@KonstantinMiller,</p>
<p>Thanks, yes I&#8217;ll be posting more in the future.  In the mean-time, there&#8217;s a lot of great information on the <a href="http://mate.asfusion.com/" rel="nofollow">asfusion</a> site.</p>
<p>-TH</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: CrisBetewsky</title>
		<link>http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/comment-page-1/#comment-37</link>
		<dc:creator>CrisBetewsky</dc:creator>
		<pubDate>Mon, 06 Jul 2009 19:22:38 +0000</pubDate>
		<guid isPermaLink="false">http://timothyhoff.com/blog/?p=6#comment-37</guid>
		<description>Hello! Thanks for the post. It is really amazing! I will definitely share it with my friends.</description>
		<content:encoded><![CDATA[<p>Hello! Thanks for the post. It is really amazing! I will definitely share it with my friends.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: KonstantinMiller</title>
		<link>http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/comment-page-1/#comment-36</link>
		<dc:creator>KonstantinMiller</dc:creator>
		<pubDate>Mon, 06 Jul 2009 18:25:46 +0000</pubDate>
		<guid isPermaLink="false">http://timothyhoff.com/blog/?p=6#comment-36</guid>
		<description>Hi! I like your srticle and I would like very much to read some more information on this issue. Will you post some more?</description>
		<content:encoded><![CDATA[<p>Hi! I like your srticle and I would like very much to read some more information on this issue. Will you post some more?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: GarykPatton</title>
		<link>http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/comment-page-1/#comment-25</link>
		<dc:creator>GarykPatton</dc:creator>
		<pubDate>Tue, 16 Jun 2009 01:53:25 +0000</pubDate>
		<guid isPermaLink="false">http://timothyhoff.com/blog/?p=6#comment-25</guid>
		<description>I think I will try to recommend this post to my friends and family, cuz it's really helpful.</description>
		<content:encoded><![CDATA[<p>I think I will try to recommend this post to my friends and family, cuz it&#8217;s really helpful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: KattyBlackyard</title>
		<link>http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/comment-page-1/#comment-23</link>
		<dc:creator>KattyBlackyard</dc:creator>
		<pubDate>Mon, 15 Jun 2009 04:13:10 +0000</pubDate>
		<guid isPermaLink="false">http://timothyhoff.com/blog/?p=6#comment-23</guid>
		<description>The article is usefull for me. I’ll be coming back to your blog.</description>
		<content:encoded><![CDATA[<p>The article is usefull for me. I’ll be coming back to your blog.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JaneRadriges</title>
		<link>http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/comment-page-1/#comment-22</link>
		<dc:creator>JaneRadriges</dc:creator>
		<pubDate>Sat, 13 Jun 2009 19:47:30 +0000</pubDate>
		<guid isPermaLink="false">http://timothyhoff.com/blog/?p=6#comment-22</guid>
		<description>Hi, gr8 post thanks for posting. Information is useful!</description>
		<content:encoded><![CDATA[<p>Hi, gr8 post thanks for posting. Information is useful!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: TimHoff</title>
		<link>http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/comment-page-1/#comment-21</link>
		<dc:creator>TimHoff</dc:creator>
		<pubDate>Sat, 13 Jun 2009 17:06:50 +0000</pubDate>
		<guid isPermaLink="false">http://timothyhoff.com/blog/?p=6#comment-21</guid>
		<description>Thanks Kelly,

The project is open source - license: &lt;a href="http://www.mozilla.org/MPL/MPL-1.1.html" rel="nofollow"&gt;Mozilla Public License 1.1&lt;/a&gt;.   I should say though, that this sample application is for example purposes exclusively, and is not intended to be used as a commercial software product.

-TH</description>
		<content:encoded><![CDATA[<p>Thanks Kelly,</p>
<p>The project is open source - license: <a href="http://www.mozilla.org/MPL/MPL-1.1.html" rel="nofollow">Mozilla Public License 1.1</a>.   I should say though, that this sample application is for example purposes exclusively, and is not intended to be used as a commercial software product.</p>
<p>-TH</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kelly Brown</title>
		<link>http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/comment-page-1/#comment-20</link>
		<dc:creator>Kelly Brown</dc:creator>
		<pubDate>Sat, 13 Jun 2009 03:49:56 +0000</pubDate>
		<guid isPermaLink="false">http://timothyhoff.com/blog/?p=6#comment-20</guid>
		<description>I really like your post. Does it copyright protected?</description>
		<content:encoded><![CDATA[<p>I really like your post. Does it copyright protected?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: TimHoff</title>
		<link>http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/comment-page-1/#comment-19</link>
		<dc:creator>TimHoff</dc:creator>
		<pubDate>Sat, 13 Jun 2009 02:06:47 +0000</pubDate>
		<guid isPermaLink="false">http://timothyhoff.com/blog/?p=6#comment-19</guid>
		<description>Thanks for the comment Jason,

There is going to be some duplication in a manager and a presentation model; specifically the properties that you want to inject.  In order to keep the managers and presentation models self-contained and re-usable, it makes sense to have corresponding properties in both places; that are injected.  However, as long as the injected properties are the same type (ArrayCollection, Boolean, etc...), they don't have to be identical; the targetKey and sourceKey of a PropertyInjector can be different.  I chose to make them identical for this sample, so that it would be easy to follow the injection.  If you wanted to use [Bindable] public var, instead of getter/setter, that would reduce the amount of byte-code.  I choose getter/setter though, for performance and unit testing benefits.  

Another thing to point out is that injection is one-way; not a reference.  I think of it as the presentation model having an instance of the model object in the manager.  If you change a model object in a presentation model, it does not automatically change the corresponding model object in the manager; that was injected.  This comes in very handy when dealing with CRUD and multi-instance views.

Any other thoughts are more than welcome.

-TH</description>
		<content:encoded><![CDATA[<p>Thanks for the comment Jason,</p>
<p>There is going to be some duplication in a manager and a presentation model; specifically the properties that you want to inject.  In order to keep the managers and presentation models self-contained and re-usable, it makes sense to have corresponding properties in both places; that are injected.  However, as long as the injected properties are the same type (ArrayCollection, Boolean, etc&#8230;), they don&#8217;t have to be identical; the targetKey and sourceKey of a PropertyInjector can be different.  I chose to make them identical for this sample, so that it would be easy to follow the injection.  If you wanted to use [Bindable] public var, instead of getter/setter, that would reduce the amount of byte-code.  I choose getter/setter though, for performance and unit testing benefits.  </p>
<p>Another thing to point out is that injection is one-way; not a reference.  I think of it as the presentation model having an instance of the model object in the manager.  If you change a model object in a presentation model, it does not automatically change the corresponding model object in the manager; that was injected.  This comes in very handy when dealing with CRUD and multi-instance views.</p>
<p>Any other thoughts are more than welcome.</p>
<p>-TH</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jason Langdon</title>
		<link>http://timothyhoff.com/blog/index.php/2009/06/03/googlemate/comment-page-1/#comment-18</link>
		<dc:creator>Jason Langdon</dc:creator>
		<pubDate>Sat, 13 Jun 2009 01:14:16 +0000</pubDate>
		<guid isPermaLink="false">http://timothyhoff.com/blog/?p=6#comment-18</guid>
		<description>Nice post. I'll definitely be checking out the Air app and the SQLite code that you've included

One question relating to the PM - I've used that in a Mate/Flex project which i've worked on and noticed a good deal of duplication of code. For instance, the following block of code is duplicated in your VideosManager and your VideosPresentationModel:

        private var _searchResults:ArrayCollection = new ArrayCollection();
        
        [Bindable( event="searchResultsChange" )]
        public function get searchResults():ArrayCollection
        {
            return _searchResults;
        }
        
        public function set searchResults( value:ArrayCollection ):void
        {
            var oldValue:ArrayCollection = _searchResults;
            if ( oldValue != value )
            {
                _searchResults = value;
                dispatchEvent( new Event( "searchResultsChange" ) );
            }
        }

I'm not sure I see a good way to reduce duplication when you're just basically injecting properties from the Manager to the PM, but was wondering if anyone else had any thoughts on the matter?</description>
		<content:encoded><![CDATA[<p>Nice post. I&#8217;ll definitely be checking out the Air app and the SQLite code that you&#8217;ve included</p>
<p>One question relating to the PM - I&#8217;ve used that in a Mate/Flex project which i&#8217;ve worked on and noticed a good deal of duplication of code. For instance, the following block of code is duplicated in your VideosManager and your VideosPresentationModel:</p>
<p>        private var _searchResults:ArrayCollection = new ArrayCollection();</p>
<p>        [Bindable( event="searchResultsChange" )]<br />
        public function get searchResults():ArrayCollection<br />
        {<br />
            return _searchResults;<br />
        }</p>
<p>        public function set searchResults( value:ArrayCollection ):void<br />
        {<br />
            var oldValue:ArrayCollection = _searchResults;<br />
            if ( oldValue != value )<br />
            {<br />
                _searchResults = value;<br />
                dispatchEvent( new Event( &#8220;searchResultsChange&#8221; ) );<br />
            }<br />
        }</p>
<p>I&#8217;m not sure I see a good way to reduce duplication when you&#8217;re just basically injecting properties from the Manager to the PM, but was wondering if anyone else had any thoughts on the matter?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

