<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Web Producer - Singer - Photography - MBHNYC</title>
	
	<link>http://www.matthewhensrud.net</link>
	<description />
	<lastBuildDate>Mon, 05 Jul 2010 19:29:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/mbhnyc" /><feedburner:info uri="mbhnyc" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>On detecting idle states in Flex 4</title>
		<link>http://feedproxy.google.com/~r/mbhnyc/~3/RgqrLNBsSBM/</link>
		<comments>http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 16:37:59 +0000</pubDate>
		<dc:creator>mhensrud</dc:creator>
				<category><![CDATA[flex]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[idle]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.matthewhensrud.net/?p=90</guid>
		<description><![CDATA[So I&#8217;m building a B2B dashboard in Flex, and thought I&#8217;d write up a quick post on a problem I didn&#8217;t see many online solutions for &#8211; well, there are solutions, but they all reference weaksauce flex 2, so I thought I&#8217;d go all new and shiny and post this working flex 4 example.
The problem [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;m building a B2B dashboard in Flex, and thought I&#8217;d write up a quick post on a problem I didn&#8217;t see many online solutions for &#8211; well, there are solutions, but they all reference weaksauce flex 2, so I thought I&#8217;d go all new and shiny and post this working flex 4 example.</p>
<p>The problem is simple: How do I detect an Idle user, turn off all timed network requests, and — eventually — log off users silly enough to walk away from my interface?</p>
<div id="attachment_91" class="wp-caption alignnone" style="width: 310px"><br />
<img src="http://www.matthewhensrud.net/wp-content/uploads/2010/07/Bored-Computer-User-300x207.jpg" alt="An idle user" title="Idle User" width="300" height="207" class="size-medium wp-image-91" /><br />
<p class="wp-caption-text">Example: situation this code is meant to save my application from.</p></div>
<p><span id="more-90"></span></p>
<p>So Here&#8217;s a somewhat disjointed code sample.  This isn&#8217;t a working application, and is missing a few helper functions, and, uh, any interactivity whatsoever &#8211; but should get anyone where they need to go.</p>
<p>Tada:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>?xml version<span class="sy0">=</span><span class="st0">&quot;1.0&quot;</span> encoding<span class="sy0">=</span><span class="st0">&quot;utf-8&quot;</span><span class="kw2">?&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;</span>s<span class="sy0">:</span>Application xmlns<span class="sy0">:</span>fx<span class="sy0">=</span><span class="st0">&quot;http://ns.adobe.com/mxml/2009&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; xmlns<span class="sy0">:</span>s<span class="sy0">=</span><span class="st0">&quot;library://ns.adobe.com/flex/spark&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; xmlns<span class="sy0">:</span>mx<span class="sy0">=</span><span class="st0">&quot;library://ns.adobe.com/flex/mx&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; mouseMove<span class="sy0">=</span><span class="st0">&quot;application_mouseMoveHandler(event)&quot;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sy0">&lt;</span>fx<span class="sy0">:</span>Script<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sy0">&lt;!</span><span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">public</span> <span class="kw2">var</span> idleCounter<span class="sy0">:</span>int<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">public</span> <span class="kw2">var</span> sysMan<span class="sy0">:</span>ISystemManager<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">public</span> <span class="kw2">var</span> secondsSinceIdle<span class="sy0">:</span>int <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">//create your timer objects to do, you know, stuff. Below, a function called timer_short</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">//this is my function for handling grabbing a user after a successful login</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;protected <span class="kw2">function</span> getUserByIDResult_resultHandler<span class="br0">&#40;</span>event<span class="sy0">:</span>ResultEvent<span class="br0">&#41;</span><span class="sy0">:</span>void</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; sysMan <span class="sy0">=</span> FlexGlobals<span class="sy0">.</span>topLevelApplication<span class="sy0">.</span>systemManager<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; sysMan<span class="sy0">.</span>addEventListener<span class="br0">&#40;</span>FlexEvent<span class="sy0">.</span>IDLE<span class="sy0">,</span> userIdle<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; session<span class="sy0">.</span>user <span class="sy0">=</span> event<span class="sy0">.</span>result <span class="kw1">as</span> User<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; timer<span class="sy0">.</span>addEventListener<span class="br0">&#40;</span>TimerEvent<span class="sy0">.</span>TIMER<span class="sy0">,</span> timer_short<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; timer<span class="sy0">.</span>start<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; currentState<span class="sy0">=</span><span class="st0">&#39;Main&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw2">private</span> <span class="kw2">function</span> userIdle<span class="br0">&#40;</span>e<span class="sy0">:</span>FlexEvent<span class="br0">&#41;</span><span class="sy0">:</span>void <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; idleCounter<span class="sy0">++;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; trace<span class="br0">&#40;</span>idleCounter<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>idleCounter <span class="sy0">&gt;</span> <span class="nu0">100</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;secondsSinceIdle <span class="sy0">+=</span> <span class="nu0">10</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;idleCounter <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>secondsSinceIdle <span class="sy0">&gt;</span> <span class="nu0">60</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; trace<span class="br0">&#40;</span><span class="st0">&quot;idle longer than 1 minute&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>timer<span class="sy0">.</span>hasEventListener<span class="br0">&#40;</span>TimerEvent<span class="sy0">.</span>TIMER<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;timer<span class="sy0">.</span>removeEventListener<span class="br0">&#40;</span>TimerEvent<span class="sy0">.</span>TIMER<span class="sy0">,</span> timer_short<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>secondsSinceIdle <span class="sy0">&gt;</span> <span class="nu0">180</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; trace<span class="br0">&#40;</span><span class="st0">&quot;idle longer than 3 minutes&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; sysMan<span class="sy0">.</span>removeEventListener<span class="br0">&#40;</span>FlexEvent<span class="sy0">.</span>IDLE<span class="sy0">,</span> userIdle<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; session<span class="sy0">.</span>user <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; currentState<span class="sy0">=</span><span class="st0">&#39;Login&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; Alert<span class="sy0">.</span>show<span class="br0">&#40;</span><span class="st0">&quot;You have been logged out due to laziness and despondency.&quot;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&quot;Alert&quot;</span><span class="sy0">,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;Alert<span class="sy0">.</span>OK<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;protected <span class="kw2">function</span> application_mouseMoveHandler<span class="br0">&#40;</span>event<span class="sy0">:</span>MouseEvent<span class="br0">&#41;</span><span class="sy0">:</span>void</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; secondsSinceIdle <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; idleCounter <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span>timer<span class="sy0">.</span>hasEventListener<span class="br0">&#40;</span>TimerEvent<span class="sy0">.</span>TIMER<span class="br0">&#41;</span> <span class="sy0">&amp;&amp;</span> session<span class="sy0">.</span>user <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;timer<span class="sy0">.</span>addEventListener<span class="br0">&#40;</span>TimerEvent<span class="sy0">.</span>TIMER<span class="sy0">,</span> timer_short<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#93;</span><span class="br0">&#93;</span><span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sy0">&lt;/</span>fx<span class="sy0">:</span>Script<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">&lt;/</span>s<span class="sy0">:</span>Application<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>Also, thanks to <a href="http://www.rlmseo.com/blog/read-more-link-on-wordpress-pages/">Razorlight</a> for some Wordpress assistance getting this page to appear correctly.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/&amp;title=On+detecting+idle+states+in+Flex+4" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/&amp;title=On+detecting+idle+states+in+Flex+4" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/&amp;title=On+detecting+idle+states+in+Flex+4&amp;desc=So%20I%27m%20building%20a%20B2B%20dashboard%20in%20Flex%2C%20and%20thought%20I%27d%20write%20up%20a%20quick%20post%20on%20a%20problem%20I%20didn%27t%20see%20many%20online%20solutions%20for%20-%20well%2C%20there%20are%20solutions%2C%20but%20they%20all%20reference%20weaksauce%20flex%202%2C%20so%20I%20thought%20I%27d%20go%20all%20new%20and%20shiny%20and%20post%20this%20working%20flex%204%20example.%0D%0AThe%20problem%20is%20simple%3A" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/&amp;t=On+detecting+idle+states+in+Flex+4" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-misterwong">
			<a href="http://www.mister-wong.com/addurl/?bm_url=http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/&amp;bm_description=On+detecting+idle+states+in+Flex+4&amp;plugin=sexybookmarks" rel="nofollow" class="external" title="Add this to Mister Wong">Add this to Mister Wong</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/&amp;title=On+detecting+idle+states+in+Flex+4" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/&amp;title=On+detecting+idle+states+in+Flex+4" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/&amp;title=On+detecting+idle+states+in+Flex+4" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=On+detecting+idle+states+in+Flex+4+-+http://bit.ly/cmmu5b&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.matthewhensrud.net/2010/flex/on-detecting-idle-states-in-flex-4/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 2.559 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-08-26 22:50:46 -->
