<?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>lejnieks &#187; Actionscript</title>
	<atom:link href="http://www.lejnieks.com/tag/actionscript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lejnieks.com</link>
	<description></description>
	<lastBuildDate>Fri, 29 Jan 2010 19:22:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Skinning Checkbox with Error State</title>
		<link>http://www.lejnieks.com/2009/04/06/skinning-checkbox-with-error-state/</link>
		<comments>http://www.lejnieks.com/2009/04/06/skinning-checkbox-with-error-state/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 17:19:06 +0000</pubDate>
		<dc:creator>klejnieks</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Skinning]]></category>

		<guid isPermaLink="false">http://lejnieks.com/?p=59</guid>
		<description><![CDATA[Similar to skinning a combobox with an error state, there may be times where you need to show the error state for a checkbox without showing its error string. main.css CheckBox &#123; icon : ClassReference&#40;&#34;com.lejnieks.poc.ui.skins.CheckboxBorderSkin&#34;&#41;; error-color : #FF0000; fillColors : #fdfdfd, #e2e3e3, #e6f5ff, #e6f5ff; borderColor : #374149; outerBorderColor : #77848D; themeColor : #77848d; icon-color : [...]]]></description>
			<content:encoded><![CDATA[<p>Similar to skinning a combobox with an error state, there may be times where you need to show the error state for a checkbox without showing its error string.</p>
<p><span id="more-66"></span></p>
<p><strong>main.css</strong></p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">CheckBox
<span style="color: #00AA00;">&#123;</span>
	<span style="color: #993333;">icon</span>			<span style="color: #00AA00;">:</span>	ClassReference<span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;com.lejnieks.poc.ui.skins.CheckboxBorderSkin&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	error-<span style="color: #000000; font-weight: bold;">color</span>		<span style="color: #00AA00;">:</span>	<span style="color: #cc00cc;">#FF0000</span><span style="color: #00AA00;">;</span>
	fillColors		<span style="color: #00AA00;">:</span> 	<span style="color: #cc00cc;">#fdfdfd</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#e2e3e3</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#e6f5ff</span><span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#e6f5ff</span><span style="color: #00AA00;">;</span>
	borderColor		<span style="color: #00AA00;">:</span> 	<span style="color: #cc00cc;">#374149</span><span style="color: #00AA00;">;</span>
	outerBorderColor	<span style="color: #00AA00;">:</span>	<span style="color: #cc00cc;">#77848D</span><span style="color: #00AA00;">;</span>
	themeColor		<span style="color: #00AA00;">:</span> 	<span style="color: #cc00cc;">#77848d</span><span style="color: #00AA00;">;</span>
	icon-<span style="color: #000000; font-weight: bold;">color</span>		<span style="color: #00AA00;">:</span>	<span style="color: #cc00cc;">#2A2A2A</span><span style="color: #00AA00;">;</span>
	disabled-icon-<span style="color: #000000; font-weight: bold;">color</span>	<span style="color: #00AA00;">:</span>	<span style="color: #cc00cc;">#7A7A7A</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">color</span>			<span style="color: #00AA00;">:</span> 	<span style="color: #cc00cc;">#DEEEF9</span><span style="color: #00AA00;">;</span>
	textSelectedColor	<span style="color: #00AA00;">:</span> 	<span style="color: #cc00cc;">#DEEEF9</span><span style="color: #00AA00;">;</span>
	textRollOverColor	<span style="color: #00AA00;">:</span> 	<span style="color: #cc00cc;">#DEEEF9</span><span style="color: #00AA00;">;</span>
	fontFamily		<span style="color: #00AA00;">:</span> 	Tahoma<span style="color: #00AA00;">;</span>
	fontSize		<span style="color: #00AA00;">:</span> 	<span style="color: #cc66cc;">10</span><span style="color: #00AA00;">;</span>
	fontWeight		<span style="color: #00AA00;">:</span> 	<span style="color: #993333;">normal</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p><strong>CheckboxBorderSkin.as</strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package com.<span style="color: #006600;">lejnieks</span>.<span style="color: #006600;">poc</span>.<span style="color: #006600;">ui</span>.<span style="color: #006600;">skins</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">lejnieks</span>.<span style="color: #006600;">poc</span>.<span style="color: #006600;">ui</span>.<span style="color: #006600;">controls</span>.<span style="color: #006600;">IValidatable</span>;
&nbsp;
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">controls</span>.<span style="color: #006600;">CheckBox</span>;
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">skins</span>.<span style="color: #006600;">halo</span>.<span style="color: #006600;">CheckBoxIcon</span>;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CheckboxBorderSkin <span style="color: #0066CC;">extends</span> CheckBoxIcon <span style="color: #0066CC;">implements</span> IValidatable
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _showError:<span style="color: #0066CC;">Boolean</span> = <span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">get</span> showError<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Boolean</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">return</span> _showError;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">set</span> showError<span style="color: #66cc66;">&#40;</span>value:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			_showError = value;
			invalidateProperties<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		override protected <span style="color: #000000; font-weight: bold;">function</span> updateDisplayList<span style="color: #66cc66;">&#40;</span>w:<span style="color: #0066CC;">Number</span>, h:<span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">super</span>.<span style="color: #006600;">updateDisplayList</span><span style="color: #66cc66;">&#40;</span>w, h<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #000000; font-weight: bold;">var</span> bDrawCheck:<span style="color: #0066CC;">Boolean</span> 		= 	<span style="color: #000000; font-weight: bold;">false</span>;
			<span style="color: #000000; font-weight: bold;">var</span> fillAlphas:<span style="color: #0066CC;">Array</span>		= 	<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> highlightAlphas:<span style="color: #0066CC;">Array</span> 	= 	<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> checkColor:uint 		= 	<span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;iconColor&quot;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">borderColor</span>:uint		= 	<span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;borderColor&quot;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> outerBorderColor:uint	=	<span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;outerBorderColor&quot;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> fillColors:<span style="color: #0066CC;">Array</span> 		= 	<span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;fillColors&quot;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> isErrorState:<span style="color: #0066CC;">Boolean</span>	=	<span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">!</span>_showError <span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>parent is CheckBox <span style="color: #66cc66;">&amp;&amp;</span> CheckBox<span style="color: #66cc66;">&#40;</span>parent<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">errorString</span>.<span style="color: #0066CC;">length</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&amp;&amp;</span>  CheckBox<span style="color: #66cc66;">&#40;</span>parent<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">errorString</span> <span style="color: #66cc66;">!</span>= <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #66cc66;">&amp;&amp;</span> CheckBox<span style="color: #66cc66;">&#40;</span>parent<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">errorString</span> <span style="color: #66cc66;">!</span>= <span style="color: #000000; font-weight: bold;">null</span>  <span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
					isErrorState = <span style="color: #000000; font-weight: bold;">true</span>;
				<span style="color: #66cc66;">&#125;</span>
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			graphics.<span style="color: #0066CC;">clear</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #b1b100;">switch</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">name</span> <span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;upIcon&quot;</span>:
					<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>isErrorState <span style="color: #66cc66;">||</span> _showError<span style="color: #66cc66;">&#41;</span>
					<span style="color: #66cc66;">&#123;</span>
						drawRoundRect<span style="color: #66cc66;">&#40;</span> -<span style="color: #cc66cc;">1</span>, -<span style="color: #cc66cc;">1</span>, w + <span style="color: #cc66cc;">2</span>, h + <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, outerBorderColor, <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span>;
					<span style="color: #66cc66;">&#125;</span>
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, w, h, <span style="color: #cc66cc;">0</span>, <span style="color: #0066CC;">borderColor</span>, <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #66cc66;">&#91;</span> fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#93;</span>, <span style="color: #cc66cc;">1</span>, verticalGradientMatrix<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
					<span style="color: #b1b100;">break</span>;
&nbsp;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;overIcon&quot;</span>:
					drawRoundRect<span style="color: #66cc66;">&#40;</span> -<span style="color: #cc66cc;">1</span>, -<span style="color: #cc66cc;">1</span>, w + <span style="color: #cc66cc;">2</span>, h + <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, outerBorderColor, <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, w, h, <span style="color: #cc66cc;">0</span>, <span style="color: #0066CC;">borderColor</span>, <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #66cc66;">&#91;</span> fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#93;</span>, <span style="color: #cc66cc;">1</span>, verticalGradientMatrix<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;downIcon&quot;</span>:
					drawRoundRect<span style="color: #66cc66;">&#40;</span> -<span style="color: #cc66cc;">1</span>, -<span style="color: #cc66cc;">1</span>, w + <span style="color: #cc66cc;">2</span>, h + <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, outerBorderColor, <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, w, h, <span style="color: #cc66cc;">0</span>, <span style="color: #0066CC;">borderColor</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #66cc66;">&#91;</span> fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span>, fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#93;</span>, <span style="color: #cc66cc;">1</span>, verticalGradientMatrix<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
					<span style="color: #b1b100;">break</span>;
&nbsp;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;disabledIcon&quot;</span>:
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, w, h, <span style="color: #cc66cc;">0</span>, <span style="color: #0066CC;">borderColor</span>, <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #66cc66;">&#91;</span> fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#93;</span>, <span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0.5</span>, <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#93;</span>, verticalGradientMatrix<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
					<span style="color: #b1b100;">break</span>;
&nbsp;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;selectedUpIcon&quot;</span>:
					bDrawCheck = <span style="color: #000000; font-weight: bold;">true</span>;
					<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>isErrorState <span style="color: #66cc66;">||</span> _showError<span style="color: #66cc66;">&#41;</span>
					<span style="color: #66cc66;">&#123;</span>
						drawRoundRect<span style="color: #66cc66;">&#40;</span> -<span style="color: #cc66cc;">1</span>, -<span style="color: #cc66cc;">1</span>, w + <span style="color: #cc66cc;">2</span>, h + <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, outerBorderColor, <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span>;
					<span style="color: #66cc66;">&#125;</span>
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, w, h, <span style="color: #cc66cc;">0</span>, <span style="color: #0066CC;">borderColor</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #66cc66;">&#91;</span> fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#93;</span>, <span style="color: #cc66cc;">1</span>, verticalGradientMatrix<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
					<span style="color: #b1b100;">break</span>;
&nbsp;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;selectedOverIcon&quot;</span>:
					bDrawCheck = <span style="color: #000000; font-weight: bold;">true</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> -<span style="color: #cc66cc;">1</span>, -<span style="color: #cc66cc;">1</span>, w + <span style="color: #cc66cc;">2</span>, h + <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, outerBorderColor, <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, w, h, <span style="color: #cc66cc;">0</span>, <span style="color: #0066CC;">borderColor</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #66cc66;">&#91;</span> fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#93;</span>, <span style="color: #cc66cc;">1</span>, verticalGradientMatrix<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;selectedDownIcon&quot;</span>:
					bDrawCheck = <span style="color: #000000; font-weight: bold;">true</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> -<span style="color: #cc66cc;">1</span>, -<span style="color: #cc66cc;">1</span>, w + <span style="color: #cc66cc;">2</span>, h + <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, outerBorderColor, <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, w, h, <span style="color: #cc66cc;">0</span>, <span style="color: #0066CC;">borderColor</span>, <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #66cc66;">&#91;</span> fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span>, fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#93;</span>, <span style="color: #cc66cc;">1</span>, verticalGradientMatrix<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
					<span style="color: #b1b100;">break</span>;
&nbsp;
				<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;selectedDisabledIcon&quot;</span>:
					bDrawCheck = <span style="color: #000000; font-weight: bold;">true</span>;
					checkColor = <span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;disabledIconColor&quot;</span><span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, w, h, <span style="color: #cc66cc;">0</span>, <span style="color: #0066CC;">borderColor</span>, <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#41;</span>;
					drawRoundRect<span style="color: #66cc66;">&#40;</span> <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #66cc66;">&#91;</span> fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, fillColors<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">&#93;</span>, <span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0.5</span>, <span style="color: #cc66cc;">0.5</span><span style="color: #66cc66;">&#93;</span>, verticalGradientMatrix<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">1</span>, w - <span style="color: #cc66cc;">2</span>, h - <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
					<span style="color: #b1b100;">break</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>bDrawCheck<span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				graphics.<span style="color: #0066CC;">beginFill</span><span style="color: #66cc66;">&#40;</span>checkColor<span style="color: #66cc66;">&#41;</span>;
				graphics.<span style="color: #0066CC;">moveTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span>;
				graphics.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;
				graphics.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">7</span>, <span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>;
				graphics.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">12</span>, <span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>;
				graphics.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">13</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
				graphics.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">11</span>, <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>;
				graphics.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">6.5</span>, <span style="color: #cc66cc;">7</span><span style="color: #66cc66;">&#41;</span>;
				graphics.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">5</span>, <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span>;
				graphics.<span style="color: #0066CC;">lineTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">5</span><span style="color: #66cc66;">&#41;</span>;
				graphics.<span style="color: #0066CC;">endFill</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>IValidatable.as</strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package com.<span style="color: #006600;">lejnieks</span>.<span style="color: #006600;">poc</span>.<span style="color: #006600;">ui</span>.<span style="color: #006600;">controls</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/**
	 *  The interface that components implement to
	 *  support validation of fields. This component
	 *  bypasses the need to use Validators.
	 *  Custom ui components implement this interface
	 *  therefore all custom ui component in the application can be
	 *  iterated through during a validation process
	 *  and set to show its error state or clear its error state.
	 */</span>
	<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">interface</span> IValidatable
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/**
	     *  Every &lt;cod&gt;IValidatable&lt;/code&gt; component will have a proper error
	     *  skin. Setting &lt;code&gt;showError&lt;/code&gt; to true will invoke this setter
	     *  and flag the component to display the error skin on the next
	     *  &lt;cod&gt;commitPropeties&lt;/code&gt;.
	     *
	     *  &lt;p&gt;Calling &lt;code&gt;showError&lt;/code&gt; is similar to setting &lt;code&gt;errorString&lt;/code&gt;
	     *  except that some components may not need to display an error string but still show
	     *  its error skin.&lt;/p&gt;
	     * 	&lt;p&gt;IValidatable components in the application can display error skins regardless of setting an
	     *  errorString. This is important to note for child components whose parent containers
	     *  will set or show an error string or who wont show an error message at all but simply
	     *  display a skin or icon for its errored state&lt;/p&gt;
	     *
	 	*/</span>
		<span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">get</span> showError<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Boolean</span>;
		<span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">set</span> showError<span style="color: #66cc66;">&#40;</span>value:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.lejnieks.com/2009/04/06/skinning-checkbox-with-error-state/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skinning ComboBox with Error State</title>
		<link>http://www.lejnieks.com/2009/04/06/skinning-combobox-with-error-state/</link>
		<comments>http://www.lejnieks.com/2009/04/06/skinning-combobox-with-error-state/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 16:18:55 +0000</pubDate>
		<dc:creator>klejnieks</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Actionscript]]></category>
		<category><![CDATA[Skinning]]></category>

		<guid isPermaLink="false">http://lejnieks.com/?p=60</guid>
		<description><![CDATA[Since the ComboBox doesn&#8217;t come with an out-of-the-box error state / skin without using an error string, you can grab the sample code below to give your comboBox an error skin. The example implements the interface IValidatable which for the most part is a stub interface that should be considered itterable by the application so [...]]]></description>
			<content:encoded><![CDATA[<p>Since the ComboBox doesn&#8217;t come with an out-of-the-box error state / skin without using an error string, you can grab the sample code below to give your comboBox an error skin. The example implements the interface IValidatable which for the most part is a stub interface that should be considered itterable by the application so you can easily request that any IValidatable component shows its error state ( <em>showError()</em> ). The point of doing this instead of using set errorString is that in certain instances you may not actually want to use an error string, or in the case of a comboBox you may want to have its parent container show the error string.</p>
<p>Another case to use this method of validation would be if you have a parent container with multiple controls inside of it, the parent container is responsible for messaging the error to the user but each control should display an errored state regardless of displaying an error string.</p>
<p><span id="more-65"></span></p>
<p><strong>main.css</strong></p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">CustomComboBox
<span style="color: #00AA00;">&#123;</span>
	up-skin				<span style="color: #00AA00;">:</span>	Embed<span style="color: #00AA00;">&#40;</span>source<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;/assets/images/combobox_skin_up.png&quot;</span><span style="color: #00AA00;">,</span> scaleGridTop<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridBottom<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;17&quot;</span><span style="color: #00AA00;">,</span> scaleGridLeft<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridRight<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;82&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	over-skin			<span style="color: #00AA00;">:</span>	Embed<span style="color: #00AA00;">&#40;</span>source<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;/assets/images/combobox_skin_over.png&quot;</span><span style="color: #00AA00;">,</span> scaleGridTop<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridBottom<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;17&quot;</span><span style="color: #00AA00;">,</span> scaleGridLeft<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridRight<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;82&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	down-skin			<span style="color: #00AA00;">:</span>	Embed<span style="color: #00AA00;">&#40;</span>source<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;/assets/images/combobox_skin_down.png&quot;</span><span style="color: #00AA00;">,</span> scaleGridTop<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridBottom<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;17&quot;</span><span style="color: #00AA00;">,</span> scaleGridLeft<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridRight<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;82&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	disabled-skin			<span style="color: #00AA00;">:</span>	Embed<span style="color: #00AA00;">&#40;</span>source<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;/assets/images/combobox_skin_disabled.png&quot;</span><span style="color: #00AA00;">,</span> scaleGridTop<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridBottom<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;17&quot;</span><span style="color: #00AA00;">,</span> scaleGridLeft<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridRight<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;82&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	errorUpSkin			<span style="color: #00AA00;">:</span>	Embed<span style="color: #00AA00;">&#40;</span>source<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;/assets/images/combobox_skin_errorUp.png&quot;</span><span style="color: #00AA00;">,</span> scaleGridTop<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridBottom<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;17&quot;</span><span style="color: #00AA00;">,</span> scaleGridLeft<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridRight<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;82&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	errorOverSkin			<span style="color: #00AA00;">:</span>	Embed<span style="color: #00AA00;">&#40;</span>source<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;/assets/images/combobox_skin_errorOver.png&quot;</span><span style="color: #00AA00;">,</span> scaleGridTop<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridBottom<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;17&quot;</span><span style="color: #00AA00;">,</span> scaleGridLeft<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridRight<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;82&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	errorDownSkin			<span style="color: #00AA00;">:</span>	Embed<span style="color: #00AA00;">&#40;</span>source<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;/assets/images/combobox_skin_errorDown.png&quot;</span><span style="color: #00AA00;">,</span> scaleGridTop<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridBottom<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;17&quot;</span><span style="color: #00AA00;">,</span> scaleGridLeft<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #00AA00;">,</span> scaleGridRight<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;82&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">color</span>				<span style="color: #00AA00;">:</span> 	<span style="color: #cc00cc;">#0A3C6C</span><span style="color: #00AA00;">;</span>
	text-roll-over-<span style="color: #000000; font-weight: bold;">color</span>		<span style="color: #00AA00;">:</span> 	<span style="color: #cc00cc;">#072A4C</span><span style="color: #00AA00;">;</span>
	text-selected-<span style="color: #000000; font-weight: bold;">color</span>		<span style="color: #00AA00;">:</span>	<span style="color: #cc00cc;">#072A4C</span><span style="color: #00AA00;">;</span>
	disabled-<span style="color: #000000; font-weight: bold;">color</span>			<span style="color: #00AA00;">:</span>	<span style="color: #cc00cc;">#404E58</span><span style="color: #00AA00;">;</span>
	dropDownStyleName		<span style="color: #00AA00;">:</span> 	comboBoxDropDowns<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
&nbsp;
<span style="color: #6666ff;">.comboBoxDropDowns</span>
<span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">color</span>				<span style="color: #00AA00;">:</span> 	<span style="color: #cc00cc;">#0A3C6C</span><span style="color: #00AA00;">;</span>
	text-roll-over-<span style="color: #000000; font-weight: bold;">color</span>		<span style="color: #00AA00;">:</span>	<span style="color: #cc00cc;">#072A4C</span><span style="color: #00AA00;">;</span>
	text-selected-<span style="color: #000000; font-weight: bold;">color</span>		<span style="color: #00AA00;">:</span>	<span style="color: #cc00cc;">#FFFFFF</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">background-color</span>		<span style="color: #00AA00;">:</span>	<span style="color: #cc00cc;">#f6f6f6</span><span style="color: #00AA00;">;</span>
	border-thickness		<span style="color: #00AA00;">:</span> 	<span style="color: #cc66cc;">1</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">border-color</span>			<span style="color: #00AA00;">:</span> 	<span style="color: #cc00cc;">#f6f6f6</span><span style="color: #00AA00;">;</span>
	roll-over-<span style="color: #000000; font-weight: bold;">color</span>			<span style="color: #00AA00;">:</span>	<span style="color: #cc00cc;">#C3CED6</span><span style="color: #00AA00;">;</span>
	selection-<span style="color: #000000; font-weight: bold;">color</span>			<span style="color: #00AA00;">:</span>	<span style="color: #cc00cc;">#0A3C6C</span><span style="color: #00AA00;">;</span>
	dropShadowEnabled		<span style="color: #00AA00;">:</span> 	false<span style="color: #00AA00;">;</span>
	corner-radius			<span style="color: #00AA00;">:</span>	<span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p><strong>CustomCombBox</strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package com.<span style="color: #006600;">lejnieks</span>.<span style="color: #006600;">poc</span>.<span style="color: #006600;">ui</span>.<span style="color: #006600;">controls</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">controls</span>.<span style="color: #006600;">ComboBox</span>;
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">events</span>.<span style="color: #006600;">ValidationResultEvent</span>;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CustomComboBox <span style="color: #0066CC;">extends</span> ComboBox <span style="color: #0066CC;">implements</span> IValidatable
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> originalUpSkin:<span style="color: #0066CC;">Object</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> originalOverSkin:<span style="color: #0066CC;">Object</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> originalDownSkin:<span style="color: #0066CC;">Object</span>;
&nbsp;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _showError:<span style="color: #0066CC;">Boolean</span> = <span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
		override protected <span style="color: #000000; font-weight: bold;">function</span> createChildren<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">super</span>.<span style="color: #006600;">createChildren</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			originalUpSkin		=	<span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;upSkin&quot;</span><span style="color: #66cc66;">&#41;</span>;
			originalOverSkin	=	<span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;overSkin&quot;</span><span style="color: #66cc66;">&#41;</span>;
			originalDownSkin	=	<span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;downSkin&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			setBackgroundSkin<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">set</span> showError<span style="color: #66cc66;">&#40;</span> value:<span style="color: #0066CC;">Boolean</span> <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			_showError = value;
			invalidateProperties<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">get</span> showError<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Boolean</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">return</span> _showError;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		override protected <span style="color: #000000; font-weight: bold;">function</span> commitProperties<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">super</span>.<span style="color: #006600;">commitProperties</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>_showError<span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				setBackgroundErrorSkin<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #b1b100;">else</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>errorString <span style="color: #66cc66;">&amp;&amp;</span> errorString.<span style="color: #0066CC;">length</span> <span style="color: #66cc66;">!</span>= <span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span>
		    		<span style="color: #66cc66;">&#123;</span>
		    			errorString = <span style="color: #ff0000;">''</span>;
		    		<span style="color: #66cc66;">&#125;</span>
&nbsp;
	        		setBackgroundSkin<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> setBackgroundSkin<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">setStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;upSkin&quot;</span>, originalUpSkin<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #0066CC;">setStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;overSkin&quot;</span>, originalOverSkin<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #0066CC;">setStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;downSkin&quot;</span>, originalDownSkin<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> setBackgroundErrorSkin<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">setStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;upSkin&quot;</span>, <span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;errorUpSkin&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
			<span style="color: #0066CC;">setStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;overSkin&quot;</span>, <span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;errorOverSkin&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
			<span style="color: #0066CC;">setStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;downSkin&quot;</span>, <span style="color: #0066CC;">getStyle</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;errorDownSkin&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>IValidatable</strong></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package com.<span style="color: #006600;">lejnieks</span>.<span style="color: #006600;">poc</span>.<span style="color: #006600;">ui</span>.<span style="color: #006600;">controls</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/**
	 *  The interface that components implement to
	 *  support validation of fields. This component
	 *  bypasses the need to use Validators.
	 *  Custom ui components implement this interface
	 *  therefore all custom ui component in the application can be
	 *  iterated through during a validation process
	 *  and set to show its error state or clear its error state.
	 */</span>
	<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">interface</span> IValidatable
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">/**
	     *  Every &lt;cod&gt;IValidatable&lt;/code&gt; component will have a proper error
	     *  skin. Setting &lt;code&gt;showError&lt;/code&gt; to true will invoke this setter
	     *  and flag the component to display the error skin on the next
	     *  &lt;cod&gt;commitPropeties&lt;/code&gt;.
	     *
	     *  &lt;p&gt;Calling &lt;code&gt;showError&lt;/code&gt; is similar to setting &lt;code&gt;errorString&lt;/code&gt;
	     *  except that some components may not need to display an error string but still show
	     *  its error skin.&lt;/p&gt;
	     * 	&lt;p&gt;IValidatable components in the application can display error skins regardless of setting an
	     *  errorString. This is important to note for child components whose parent containers
	     *  will set or show an error string or who wont show an error message at all but simply
	     *  display a skin or icon for its errored state&lt;/p&gt;
	     *
	 	*/</span>
		<span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">get</span> showError<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Boolean</span>;
		<span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">set</span> showError<span style="color: #66cc66;">&#40;</span>value:<span style="color: #0066CC;">Boolean</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.lejnieks.com/2009/04/06/skinning-combobox-with-error-state/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overriding Menu to include stage height bounds</title>
		<link>http://www.lejnieks.com/2008/11/17/overriding-menu-to-include-stage-height-bounds/</link>
		<comments>http://www.lejnieks.com/2008/11/17/overriding-menu-to-include-stage-height-bounds/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 06:11:31 +0000</pubDate>
		<dc:creator>klejnieks</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://lejnieks.com/?p=53</guid>
		<description><![CDATA[I was working on a custom menu component uses Menu. Turns out that Menu doesnt inherintly understand the stage height of the application. What I ended up doing was creating CustomMenu which extends Menu and adds in height bounds for the root and any sub menu. package com.lejnieks.poc.ui.components.menu &#123; import flash.display.DisplayObject; import flash.display.DisplayObjectContainer; import flash.geom.Point; [...]]]></description>
			<content:encoded><![CDATA[<p>I was working on a custom menu component uses Menu. Turns out that Menu doesnt inherintly understand the stage height of the application. What I ended up doing was creating CustomMenu which extends Menu and adds in height bounds for the root and any sub menu.</p>
<p><span id="more-53"></span></p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package com.<span style="color: #006600;">lejnieks</span>.<span style="color: #006600;">poc</span>.<span style="color: #006600;">ui</span>.<span style="color: #006600;">components</span>.<span style="color: #0066CC;">menu</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">DisplayObject</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #006600;">DisplayObjectContainer</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">geom</span>.<span style="color: #006600;">Point</span>;
&nbsp;
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">controls</span>.<span style="color: #0066CC;">Menu</span>;
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">controls</span>.<span style="color: #006600;">listClasses</span>.<span style="color: #006600;">IListItemRenderer</span>;
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">controls</span>.<span style="color: #006600;">menuClasses</span>.<span style="color: #006600;">IMenuItemRenderer</span>;
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">core</span>.<span style="color: #006600;">Application</span>;
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">core</span>.<span style="color: #006600;">ScrollPolicy</span>;
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">core</span>.<span style="color: #006600;">mx_internal</span>;
	<span style="color: #0066CC;">import</span> mx.<span style="color: #006600;">managers</span>.<span style="color: #006600;">PopUpManager</span>;
&nbsp;
	use namespace mx_internal;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CustomMenu <span style="color: #0066CC;">extends</span> <span style="color: #0066CC;">Menu</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> xpos:<span style="color: #0066CC;">Object</span> = <span style="color: #cc66cc;">0</span>;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> ypos:<span style="color: #0066CC;">Object</span> = <span style="color: #cc66cc;">0</span>;
&nbsp;
		<span style="color: #0066CC;">private</span> const END_OF_SCREEN_MENU_PADDING:<span style="color: #0066CC;">Number</span> = <span style="color: #cc66cc;">5</span>;
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> CustomMenu<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">super</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> createMenu<span style="color: #66cc66;">&#40;</span>parent:DisplayObjectContainer, mdp:<span style="color: #0066CC;">Object</span>, showRoot:<span style="color: #0066CC;">Boolean</span>=<span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span>:CustomMenu
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">menu</span>:CustomMenu = <span style="color: #000000; font-weight: bold;">new</span> CustomMenu<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #0066CC;">tabEnabled</span> = <span style="color: #000000; font-weight: bold;">false</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">owner</span> = DisplayObjectContainer<span style="color: #66cc66;">&#40;</span>Application.<span style="color: #006600;">application</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">showRoot</span> = showRoot;
&nbsp;
			popUpMenu<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">menu</span>, parent, mdp<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #b1b100;">return</span> <span style="color: #0066CC;">menu</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		override mx_internal <span style="color: #000000; font-weight: bold;">function</span> openSubMenu<span style="color: #66cc66;">&#40;</span>row:IListItemRenderer<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			supposedToLoseFocus = <span style="color: #000000; font-weight: bold;">true</span>;
&nbsp;
			<span style="color: #000000; font-weight: bold;">var</span> r:<span style="color: #0066CC;">Menu</span> = getRootMenu<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">menu</span>:<span style="color: #0066CC;">Menu</span>;
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">!</span>IMenuItemRenderer<span style="color: #66cc66;">&#40;</span>row<span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">menu</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #0066CC;">menu</span> = <span style="color: #000000; font-weight: bold;">new</span> TIPSMenu<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">parentMenu</span> = <span style="color: #0066CC;">this</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">owner</span> = <span style="color: #0066CC;">this</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">showRoot</span> = showRoot;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">dataDescriptor</span> = r.<span style="color: #006600;">dataDescriptor</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">styleName</span> = r;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">labelField</span> = r.<span style="color: #006600;">labelField</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">labelFunction</span> = r.<span style="color: #006600;">labelFunction</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">iconField</span> = r.<span style="color: #006600;">iconField</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">iconFunction</span> = r.<span style="color: #006600;">iconFunction</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">itemRenderer</span> = r.<span style="color: #006600;">itemRenderer</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">rowHeight</span> = r.<span style="color: #006600;">rowHeight</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">scaleY</span> = r.<span style="color: #006600;">scaleY</span>;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">scaleX</span> = r.<span style="color: #006600;">scaleX</span>;
&nbsp;
				<span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>row.<span style="color: #0066CC;">data</span> <span style="color: #66cc66;">&amp;&amp;</span>
					_dataDescriptor.<span style="color: #006600;">isBranch</span><span style="color: #66cc66;">&#40;</span>row.<span style="color: #0066CC;">data</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&amp;&amp;</span>
					_dataDescriptor.<span style="color: #006600;">hasChildren</span><span style="color: #66cc66;">&#40;</span>row.<span style="color: #0066CC;">data</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
					<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">dataProvider</span> = _dataDescriptor.<span style="color: #006600;">getChildren</span><span style="color: #66cc66;">&#40;</span>row.<span style="color: #0066CC;">data</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #66cc66;">&#125;</span>
&nbsp;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">sourceMenuBar</span> = sourceMenuBar;
				<span style="color: #0066CC;">menu</span>.<span style="color: #006600;">sourceMenuBarItem</span> = sourceMenuBarItem;
&nbsp;
				IMenuItemRenderer<span style="color: #66cc66;">&#40;</span>row<span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">menu</span> = <span style="color: #0066CC;">menu</span>;
				PopUpManager.<span style="color: #006600;">addPopUp</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">menu</span>, r, <span style="color: #000000; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #b1b100;">else</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #0066CC;">menu</span> = IMenuItemRenderer<span style="color: #66cc66;">&#40;</span>row<span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">menu</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">super</span>.<span style="color: #006600;">openSubMenu</span><span style="color: #66cc66;">&#40;</span>row<span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		override <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span>x:<span style="color: #0066CC;">Object</span>=<span style="color: #000000; font-weight: bold;">null</span>, y:<span style="color: #0066CC;">Object</span>=<span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">xpos</span> = x;
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">ypos</span> = y;
&nbsp;
			<span style="color: #000000; font-weight: bold;">var</span> absoluteHeightOfSubMenu:<span style="color: #0066CC;">Number</span> = <span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">height</span> + <span style="color: #0066CC;">this</span>.<span style="color: #006600;">ypos</span>;
			<span style="color: #000000; font-weight: bold;">var</span> appHeight:<span style="color: #0066CC;">Number</span> = Application.<span style="color: #006600;">application</span>.<span style="color: #0066CC;">height</span>;
&nbsp;
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> absoluteHeightOfSubMenu <span style="color: #66cc66;">&gt;</span> appHeight <span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #0066CC;">this</span>.<span style="color: #006600;">ypos</span> = <span style="color: #0066CC;">Number</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>.<span style="color: #006600;">ypos</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #66cc66;">&#40;</span>absoluteHeightOfSubMenu - appHeight<span style="color: #66cc66;">&#41;</span> - END_OF_SCREEN_MENU_PADDING;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">super</span>.<span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span>x, <span style="color: #0066CC;">this</span>.<span style="color: #006600;">ypos</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Im overriding show() so that when the menu displays, if the menus height + its absolute position is greater than the application height, then it will move the menus y position up by the difference of the menu height + menu y position, and then I add in just a bit of extra padding so the menu doesn&#8217;t butt up against the bottom of the application</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lejnieks.com/2008/11/17/overriding-menu-to-include-stage-height-bounds/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Using tokens in resource bundles</title>
		<link>http://www.lejnieks.com/2008/10/20/using-tokens-in-resource-bundles/</link>
		<comments>http://www.lejnieks.com/2008/10/20/using-tokens-in-resource-bundles/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 20:29:01 +0000</pubDate>
		<dc:creator>klejnieks</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://lejnieks.com/?p=64</guid>
		<description><![CDATA[A quick sample on how to pass in token values to a resource bundle string. When you need to replace a token value in your bundle, you will want to use the resourceManager or ResourceManager and pass in the value you want to replace in your bundle as an array, this is in the 3 [...]]]></description>
			<content:encoded><![CDATA[<p>A quick sample on how to pass in token values to a resource bundle string. When you need to replace a token value in your bundle, you will want to use the resourceManager or ResourceManager and pass in the value you want to replace in your bundle as an array, this is in the 3 parameter of the resourceManager&#8217;s getString() method.</p>
<p><span id="more-64"></span></p>
<p><strong>Application</strong></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:Application</span> <span style="color: #000066;">xmlns:mx</span>=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> <span style="color: #000066;">layout</span>=<span style="color: #ff0000;">&quot;vertical&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:Metadata<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    [ResourceBundle(&quot;labels&quot;)]
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:Metadata<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:Script<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #339933;">&lt;![CDATA[</span>
<span style="color: #339933;">			import mx.formatters.DateFormatter;</span>
<span style="color: #339933;">			import mx.resources.ResourceManager;</span>
&nbsp;
<span style="color: #339933;">			[Bindable] private var _username:String;</span>
<span style="color: #339933;">			[Bindable] private var _date:String;</span>
&nbsp;
<span style="color: #339933;">			private function setUsername( event:MouseEvent ):void</span>
<span style="color: #339933;">			{</span>
<span style="color: #339933;">				var tmpDate:Date	=	new Date();</span>
&nbsp;
<span style="color: #339933;">				_username	= 	usernameInput.text;</span>
<span style="color: #339933;">				_date		=	tmpDate.getMonth() + &quot;/&quot; + tmpDate.getDay() + &quot;/&quot; + tmpDate.getFullYear();</span>
<span style="color: #339933;">			}</span>
&nbsp;
<span style="color: #339933;">		]]&gt;</span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:Script<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:TextInput</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;usernameInput&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:Button</span> <span style="color: #000066;">label</span>=<span style="color: #ff0000;">&quot;Set Username&quot;</span> <span style="color: #000066;">click</span>=<span style="color: #ff0000;">&quot;setUsername(event)&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mx:Label</span> <span style="color: #000066;">text</span>=<span style="color: #ff0000;">&quot;{resourceManager.getString('labels', 'welcomeMessage', [_username, _date])}&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/mx:Application<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><strong>labels.properties</strong></p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000099;">welcomeMessage</span>	<span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">	Welcome <span style="">&#123;</span><span style="">0</span><span style="">&#125;</span> Today is <span style="">&#123;</span><span style="">1</span><span style="">&#125;</span></span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.lejnieks.com/2008/10/20/using-tokens-in-resource-bundles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handling Keyboard Events</title>
		<link>http://www.lejnieks.com/2008/07/12/handling-keyboard-events/</link>
		<comments>http://www.lejnieks.com/2008/07/12/handling-keyboard-events/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 05:57:44 +0000</pubDate>
		<dc:creator>klejnieks</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://lejnieks.com/?p=22</guid>
		<description><![CDATA[Im working on a project that required a Keyboard Manager to track shortcut keys within the Flex app, so i went ahead a wrote this quick little POC that I later incorporated into the project. I handle shortcut keys by adding and removing key listeners and mapping them to a dictionary of available keys. My [...]]]></description>
			<content:encoded><![CDATA[<p>Im working on a project that required a Keyboard Manager to track shortcut keys within the Flex app, so i went ahead a wrote this quick little POC that I later incorporated into the project. I handle shortcut keys by adding and removing key listeners and mapping them to a dictionary of available keys. My final implementation handled [cmd + shift + key] for windows and [alt + key] for mac switched based on Capabilities.os. <span id="more-22"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&lt;</span>?<span style="color: #0066CC;">xml</span> <span style="color: #0066CC;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #66cc66;">&gt;</span>
<span style="color: #66cc66;">&lt;</span>mx:Application xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> layout=<span style="color: #ff0000;">&quot;vertical&quot;</span> creationComplete=<span style="color: #ff0000;">&quot;onCreationComplete()&quot;</span><span style="color: #66cc66;">&gt;</span>
&nbsp;
	<span style="color: #66cc66;">&lt;</span>mx:Script<span style="color: #66cc66;">&gt;</span>
		<span style="color: #66cc66;">&lt;!</span><span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span>
			<span style="color: #0066CC;">import</span> com.<span style="color: #006600;">lejnieks</span>.<span style="color: #006600;">poc</span>.<span style="color: #006600;">enum</span>.<span style="color: #006600;">KeyCodes</span>;
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">var</span> _keyCodes:Dictionary;
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onCreationComplete<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				_keyCodes = <span style="color: #000000; font-weight: bold;">new</span> Dictionary<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
				addKeyCodes<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
				addEventListener<span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, clickHandler<span style="color: #66cc66;">&#41;</span>;
				addEventListener<span style="color: #66cc66;">&#40;</span>KeyboardEvent.<span style="color: #006600;">KEY_DOWN</span>, <span style="color: #0066CC;">onKeyDown</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> clickHandler<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #0066CC;">stage</span>.<span style="color: #006600;">focus</span> = <span style="color: #0066CC;">this</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> addKeyDownListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">var</span> hasKeyUpListener:<span style="color: #0066CC;">Boolean</span> = hasEventListener<span style="color: #66cc66;">&#40;</span>KeyboardEvent.<span style="color: #006600;">KEY_UP</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #000000; font-weight: bold;">var</span> hasKeyDownListener:<span style="color: #0066CC;">Boolean</span> = hasEventListener<span style="color: #66cc66;">&#40;</span>KeyboardEvent.<span style="color: #006600;">KEY_DOWN</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">!</span>hasKeyUpListener<span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
					addEventListener<span style="color: #66cc66;">&#40;</span>KeyboardEvent.<span style="color: #006600;">KEY_UP</span>,<span style="color: #0066CC;">onKeyUp</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #66cc66;">&#125;</span>
&nbsp;
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>hasKeyDownListener<span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
					removeEventListener<span style="color: #66cc66;">&#40;</span>KeyboardEvent.<span style="color: #006600;">KEY_DOWN</span>, <span style="color: #0066CC;">onKeyDown</span><span style="color: #66cc66;">&#41;</span>;
				<span style="color: #66cc66;">&#125;</span>
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onKeyUp</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span>:KeyboardEvent <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				addEventListener<span style="color: #66cc66;">&#40;</span>KeyboardEvent.<span style="color: #006600;">KEY_DOWN</span>,<span style="color: #0066CC;">onKeyDown</span><span style="color: #66cc66;">&#41;</span>;
				output_cmd.<span style="color: #0066CC;">text</span> = output_key.<span style="color: #0066CC;">text</span> = output_shift.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;&quot;</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">onKeyDown</span><span style="color: #66cc66;">&#40;</span>evt:KeyboardEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">os</span>:<span style="color: #0066CC;">String</span> = <span style="color: #0066CC;">Capabilities</span>.<span style="color: #0066CC;">os</span>;
&nbsp;
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">os</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Windows&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> -<span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#41;</span> <span style="color: #0066CC;">os</span> = <span style="color: #ff0000;">&quot;Windows&quot;</span>;
				<span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">os</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;Mac&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> -<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #0066CC;">os</span> = <span style="color: #ff0000;">&quot;Mac&quot;</span>;
&nbsp;
				<span style="color: #b1b100;">switch</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">os</span><span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
					<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;Windows&quot;</span>:
						handleWindowsKeyDown<span style="color: #66cc66;">&#40;</span> evt <span style="color: #66cc66;">&#41;</span>;
						<span style="color: #b1b100;">break</span>;
&nbsp;
					<span style="color: #b1b100;">case</span> <span style="color: #ff0000;">&quot;Mac&quot;</span>:
						handleMacKeyDown<span style="color: #66cc66;">&#40;</span> evt <span style="color: #66cc66;">&#41;</span>;
						<span style="color: #b1b100;">break</span>;
&nbsp;
					<span style="color: #000000; font-weight: bold;">default</span>:
						<span style="color: #808080; font-style: italic;">//You are not on a supported OS</span>
						<span style="color: #b1b100;">break</span>;
				<span style="color: #66cc66;">&#125;</span>
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> handleMacKeyDown<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span>:KeyboardEvent <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">var</span> keyTranslated:<span style="color: #0066CC;">String</span> = getKeyCodeTranslated<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span>.<span style="color: #006600;">keyCode</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>.<span style="color: #006600;">altKey</span><span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
					output_alt.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;alt key is pressed&quot;</span>;
					<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> keyTranslated <span style="color: #66cc66;">!</span>= <span style="color: #000000; font-weight: bold;">null</span> <span style="color: #66cc66;">&#41;</span>
					<span style="color: #66cc66;">&#123;</span>
						output_key.<span style="color: #0066CC;">text</span> = keyTranslated + <span style="color: #ff0000;">&quot; key is pressed&quot;</span>;
						addKeyDownListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
					<span style="color: #66cc66;">&#125;</span>
				<span style="color: #66cc66;">&#125;</span>
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> handleWindowsKeyDown<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span>:KeyboardEvent <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">var</span> keyTranslated:<span style="color: #0066CC;">String</span> = getKeyCodeTranslated<span style="color: #66cc66;">&#40;</span> <span style="color: #0066CC;">e</span>.<span style="color: #006600;">keyCode</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;
				<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>.<span style="color: #006600;">ctrlKey</span><span style="color: #66cc66;">&#41;</span>
				<span style="color: #66cc66;">&#123;</span>
					output_cmd.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;cmd/ctrl key is pressed&quot;</span>;
&nbsp;
					<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">e</span>.<span style="color: #006600;">shiftKey</span><span style="color: #66cc66;">&#41;</span>
					<span style="color: #66cc66;">&#123;</span>
						output_shift.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;shift key is pressed&quot;</span>;
&nbsp;
						<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span> keyTranslated <span style="color: #66cc66;">!</span>= <span style="color: #000000; font-weight: bold;">null</span> <span style="color: #66cc66;">&#41;</span>
						<span style="color: #66cc66;">&#123;</span>
							output_key.<span style="color: #0066CC;">text</span> = keyTranslated + <span style="color: #ff0000;">&quot; key is pressed&quot;</span>;
							addKeyDownListeners<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
						<span style="color: #66cc66;">&#125;</span>
					<span style="color: #66cc66;">&#125;</span>
				<span style="color: #66cc66;">&#125;</span>
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> addKeyCodes<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				_keyCodes = KeyCodes.<span style="color: #006600;">toDictionary</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> getKeyCodeTranslated<span style="color: #66cc66;">&#40;</span> keyCode:uint <span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">String</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #b1b100;">return</span> _keyCodes<span style="color: #66cc66;">&#91;</span>keyCode<span style="color: #66cc66;">&#93;</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&gt;</span>
	<span style="color: #66cc66;">&lt;/</span>mx:Script<span style="color: #66cc66;">&gt;</span>
&nbsp;
	<span style="color: #66cc66;">&lt;</span>mx:TextInput id=<span style="color: #ff0000;">&quot;output_cmd&quot;</span> <span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">&quot;200&quot;</span> <span style="color: #0066CC;">borderColor</span>=<span style="color: #ff0000;">&quot;#000000&quot;</span> borderStyle=<span style="color: #ff0000;">&quot;solid&quot;</span> <span style="color: #66cc66;">/&gt;</span>
	<span style="color: #66cc66;">&lt;</span>mx:TextInput id=<span style="color: #ff0000;">&quot;output_shift&quot;</span> <span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">&quot;200&quot;</span> <span style="color: #0066CC;">borderColor</span>=<span style="color: #ff0000;">&quot;#000000&quot;</span> borderStyle=<span style="color: #ff0000;">&quot;solid&quot;</span> <span style="color: #66cc66;">/&gt;</span>
	<span style="color: #66cc66;">&lt;</span>mx:Spacer <span style="color: #0066CC;">height</span>=<span style="color: #ff0000;">&quot;20&quot;</span><span style="color: #66cc66;">/&gt;</span>
&nbsp;
	<span style="color: #66cc66;">&lt;</span>mx:TextInput id=<span style="color: #ff0000;">&quot;output_alt&quot;</span> <span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">&quot;200&quot;</span> <span style="color: #0066CC;">borderColor</span>=<span style="color: #ff0000;">&quot;#000000&quot;</span> borderStyle=<span style="color: #ff0000;">&quot;solid&quot;</span> <span style="color: #66cc66;">/&gt;</span>
	<span style="color: #66cc66;">&lt;</span>mx:Spacer <span style="color: #0066CC;">height</span>=<span style="color: #ff0000;">&quot;20&quot;</span><span style="color: #66cc66;">/&gt;</span>
&nbsp;
	<span style="color: #66cc66;">&lt;</span>mx:TextInput id=<span style="color: #ff0000;">&quot;output_key&quot;</span> <span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">&quot;200&quot;</span> <span style="color: #0066CC;">borderColor</span>=<span style="color: #ff0000;">&quot;#000000&quot;</span> borderStyle=<span style="color: #ff0000;">&quot;solid&quot;</span> <span style="color: #66cc66;">/&gt;</span>
&nbsp;
<span style="color: #66cc66;">&lt;/</span>mx:Application<span style="color: #66cc66;">&gt;</span></pre></td></tr></table></div>

<p>and the Enum to Dictionary Class</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">package com.<span style="color: #006600;">lejnieks</span>.<span style="color: #006600;">poc</span>.<span style="color: #006600;">enum</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">Dictionary</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">describeType</span>;
&nbsp;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> KeyCodes
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const A:uint = <span style="color: #cc66cc;">65</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const B:uint = <span style="color: #cc66cc;">66</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const C:uint = <span style="color: #cc66cc;">67</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const D:uint = <span style="color: #cc66cc;">68</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const <span style="color: #0066CC;">E</span>:uint = <span style="color: #cc66cc;">69</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const F:uint = <span style="color: #cc66cc;">70</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const G:uint = <span style="color: #cc66cc;">71</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const H:uint = <span style="color: #cc66cc;">72</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const I:uint = <span style="color: #cc66cc;">73</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const J:uint = <span style="color: #cc66cc;">74</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const K:uint = <span style="color: #cc66cc;">75</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const L:uint = <span style="color: #cc66cc;">76</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const M:uint = <span style="color: #cc66cc;">77</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const N:uint = <span style="color: #cc66cc;">78</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const O:uint = <span style="color: #cc66cc;">79</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const P:uint = <span style="color: #cc66cc;">80</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const Q:uint = <span style="color: #cc66cc;">81</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const R:uint = <span style="color: #cc66cc;">82</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const S:uint = <span style="color: #cc66cc;">83</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const T:uint = <span style="color: #cc66cc;">84</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const U:uint = <span style="color: #cc66cc;">85</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const V:uint = <span style="color: #cc66cc;">86</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const W:uint = <span style="color: #cc66cc;">87</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const X:uint = <span style="color: #cc66cc;">88</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const Y:uint = <span style="color: #cc66cc;">89</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const Z:uint = <span style="color: #cc66cc;">90</span>;
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const ALT_E:uint = <span style="color: #cc66cc;">180</span>;
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> KeyCodes<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> toArray<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Array</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> keyCodes:<span style="color: #0066CC;">Array</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> classInfo:<span style="color: #0066CC;">XML</span> = describeType<span style="color: #66cc66;">&#40;</span>KeyCodes<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #b1b100;">for</span> each <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> v:<span style="color: #0066CC;">XML</span> <span style="color: #b1b100;">in</span> classInfo..<span style="color: #006600;">constant</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">name</span>:<span style="color: #0066CC;">String</span> = <span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#40;</span>v.<span style="color: #66cc66;">@</span><span style="color: #0066CC;">name</span><span style="color: #66cc66;">&#41;</span>;
			    <span style="color: #000000; font-weight: bold;">var</span> value:<span style="color: #0066CC;">String</span> = KeyCodes<span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">name</span><span style="color: #66cc66;">&#93;</span>;
			    keyCodes.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>value<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
			keyCodes.<span style="color: #0066CC;">sort</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #b1b100;">return</span> keyCodes;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> toDictionary<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:Dictionary
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> keyCodesDict:Dictionary = <span style="color: #000000; font-weight: bold;">new</span> Dictionary<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> classInfo:<span style="color: #0066CC;">XML</span> = describeType<span style="color: #66cc66;">&#40;</span>KeyCodes<span style="color: #66cc66;">&#41;</span>;
&nbsp;
			<span style="color: #b1b100;">for</span> each <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> v:<span style="color: #0066CC;">XML</span> <span style="color: #b1b100;">in</span> classInfo..<span style="color: #006600;">constant</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">name</span>:<span style="color: #0066CC;">String</span> = <span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#40;</span>v.<span style="color: #66cc66;">@</span><span style="color: #0066CC;">name</span><span style="color: #66cc66;">&#41;</span>;
			    <span style="color: #000000; font-weight: bold;">var</span> value:<span style="color: #0066CC;">String</span> = KeyCodes<span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">name</span><span style="color: #66cc66;">&#93;</span>;
			    keyCodesDict<span style="color: #66cc66;">&#91;</span>value<span style="color: #66cc66;">&#93;</span> = <span style="color: #0066CC;">name</span>;
			<span style="color: #66cc66;">&#125;</span>
			<span style="color: #b1b100;">return</span> keyCodesDict;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p><a href='http://www.lejnieks.com/wp-content/uploads/2008/07/flex_sample_keyboard_shortcuts.zip'>Download the source files here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lejnieks.com/2008/07/12/handling-keyboard-events/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex Call Stack and callLater()</title>
		<link>http://www.lejnieks.com/2008/05/16/flex-call-stack-and-calllater/</link>
		<comments>http://www.lejnieks.com/2008/05/16/flex-call-stack-and-calllater/#comments</comments>
		<pubDate>Sat, 17 May 2008 04:47:10 +0000</pubDate>
		<dc:creator>klejnieks</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://lejnieks.com/?p=25</guid>
		<description><![CDATA[Ive used callLater() quite a few times before, but about a week ago a co-worker asked me if I knew exactly when callLater() was called. Well I think its 1 millisecond after the method executes, to which he re-asked if its after the method or after the block of code executes? Great question, and I [...]]]></description>
			<content:encoded><![CDATA[<p>Ive used callLater() quite a few times before, but about a week ago a co-worker asked me if I knew exactly when callLater() was called. Well I think its 1 millisecond after the method executes, to which he re-asked if its after the method or after the block of code executes? Great question, and I honestly couldn&#8217;t with absolute certainty answer him so I went ahead and wrote this quick POC to prove the fact one way or another.<br />
<span id="more-25"></span><br />
Basically what I&#8217;m doing here is adding an initialize handler and a complete handler which will fire in that order except the initialize handler also has a callLater() call in it so what I expect to see is that the initialize function will fire the callLater function will fire then finally the complete handler will fire.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&lt;</span>?<span style="color: #0066CC;">xml</span> <span style="color: #0066CC;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #66cc66;">&gt;</span>
<span style="color: #66cc66;">&lt;</span>mx:Application xmlns:mx=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span>
	layout=<span style="color: #ff0000;">&quot;absolute&quot;</span>
	initialize=<span style="color: #ff0000;">&quot;onInitialize()&quot;</span>
	creationComplete=<span style="color: #ff0000;">&quot;onCreationComplete()&quot;</span><span style="color: #66cc66;">&gt;</span>
&nbsp;
	<span style="color: #66cc66;">&lt;</span>mx:Script<span style="color: #66cc66;">&gt;</span>
		<span style="color: #66cc66;">&lt;!</span><span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span>
&nbsp;
			<span style="color: #808080; font-style: italic;">// What we expect here is a trace output of</span>
			<span style="color: #808080; font-style: italic;">// Call 1 Call 3 Call 2, not Call 1 Call 2 Call 3</span>
			<span style="color: #808080; font-style: italic;">// this proves callLater dispatches a call directly</span>
			<span style="color: #808080; font-style: italic;">// 1 millisecond after the code black is done, that</span>
			<span style="color: #808080; font-style: italic;">// contains the callLater,</span>
			<span style="color: #808080; font-style: italic;">// not after all code blacks are done.</span>
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onInitialize<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;call 1&quot;</span><span style="color: #66cc66;">&#41;</span>;
				callLater<span style="color: #66cc66;">&#40;</span>trace3<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> onCreationComplete<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;call 2&quot;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
&nbsp;
			<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> trace3<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;call 3&quot;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&gt;</span>
	<span style="color: #66cc66;">&lt;/</span>mx:Script<span style="color: #66cc66;">&gt;</span>
<span style="color: #66cc66;">&lt;/</span>mx:Application<span style="color: #66cc66;">&gt;</span></pre></div></div>

<p>This proves to me with a concrete example that callLater gets fired 1 millisecond after the method its requested from fires.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lejnieks.com/2008/05/16/flex-call-stack-and-calllater/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Image Load I/O Error in Flex</title>
		<link>http://www.lejnieks.com/2008/05/09/image-load-io-error-in-flex/</link>
		<comments>http://www.lejnieks.com/2008/05/09/image-load-io-error-in-flex/#comments</comments>
		<pubDate>Sat, 10 May 2008 01:57:45 +0000</pubDate>
		<dc:creator>klejnieks</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://lejnieks.com/?p=24</guid>
		<description><![CDATA[On a project im working on I ran into a very strange error when trying to load in a simple .jpg image. The image wouldn&#8217;t load. Now this sounds like a very familiar issue and easily solvable right? That what I thought too, but as it turns out, it turned into a couple hours of [...]]]></description>
			<content:encoded><![CDATA[<p>On a project im working on I ran into a very strange error when trying to load in a simple .jpg image. The image wouldn&#8217;t load. Now this sounds like a very familiar issue and easily solvable right? That what I thought too, but as it turns out, it turned into a couple hours of work and debugging. The issue wasn&#8217;t as simple as an incorrect url, network timeouts, dead links, etc&#8230; Debugging the complete() event shows the image was getting to where it had to get to and that flex felt that it did everything it had to do. So what was the problem with loading the image?<span id="more-24"></span></p>
<p>Flex can load .jpg, .png, .gif and so on&#8230; so why isnt the .jpg that was provided to me via the middle tier service loading in? Well it turns out that this wasn&#8217;t any ordinary jpeg, infact, it wasnt a jpeg at all. After a couple of hours of looking at everything under the sun, I finally looked into the image itself. I opened the image in <a href="http://hexedit.sourceforge.net/">HexEdit</a> and I noticed this .jpg file had a header of &#8220;BM&#8221;&#8230; thats a Bitmap not a jpeg. Try it out, open any jpeg you have in HexEdit or some kind of binary reader and notice the headers should read &#8220;JFIF&#8221; not &#8220;BM&#8230;&#8221;. Apparently the team responsible for submitting images to the content delivery system had saved a bitmap as a jpg by simply editing the file extension from .bmp to .jpg which im sure may have seemed harmless but in fact there is a so much more to it when you convert from one file format to another.</p>
<p>At the end of the day, it wasnt the worlds biggest issue but it did cause a delay and I figured maybe this could help anyone going through the same issue. Since then when I see image load I/O errors now I do the following to manage the issue</p>
<ul>
<ol>1. Check the URL of the image</ol>
<ol>2. Open the image in a Binary reader like HexEdit</ol>
<ol>3. Make sure the complete event fires</ol>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.lejnieks.com/2008/05/09/image-load-io-error-in-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enum toArray()</title>
		<link>http://www.lejnieks.com/2008/03/29/enum-toarray/</link>
		<comments>http://www.lejnieks.com/2008/03/29/enum-toarray/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 06:50:31 +0000</pubDate>
		<dc:creator>klejnieks</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Actionscript]]></category>

		<guid isPermaLink="false">http://lejnieks.com/?p=13</guid>
		<description><![CDATA[There have been plenty of times that Ive needed to reuse the values of my enums as an array. A good example of this would be an enumeration of US states. There are many ways of doing this, however I find that writing an enumeration of static constants gives me the most flexibility and accuracy [...]]]></description>
			<content:encoded><![CDATA[<p>There have been plenty of times that Ive needed to reuse the values of my enums as an array. A good example of this would be an enumeration of US states. There are many ways of doing this, however I find that writing an enumeration of static constants gives me the most flexibility and accuracy in my code.</p>
<p><span id="more-13"></span></p>
<p>In a recent project I had a user registration form which has a drop down component for the state you live in. Because another area of my application required that I was able to test against a users state I created an enum of the US state. Now in this form I was trying to avoid retyping all of these states into the fields data provider, besides it being tremendously tedious, it breaks the DRY principle.</p>
<p>I remembered from a different conversation I had with <a href="http://eyefodder.com">paul</a> that there was a way to get actionscript to dump out the contents of a class into an xml list using <a href="http://livedocs.adobe.com/flex/201/langref/flash/utils/package.html#describeType()">describeType()</a></p>
<p>Using the describeType() method I was now able to get all of my constants in my class into a nice little array i could use as a data provider like this:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package com.<span style="color: #006600;">lejnieks</span>.<span style="color: #006600;">poc</span>.<span style="color: #006600;">model</span>.<span style="color: #006600;">enums</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">utils</span>.<span style="color: #006600;">describeType</span>;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> USAStates
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const ALABAMA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Alabama&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const ALASKA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Alaska&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const ARIZONA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Arizona&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const ARKANSAS:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Arkansas&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const CALIFORNIA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;California&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const COLORADO:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Colorado&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const CONNECTICUT:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Connecticut&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const DELAWARE:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Delaware&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const DISTRICT_OF_COLUMBIA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;District Of Columbia&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const FLORIDA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Florida&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const GEORGIA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Georgia&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const HAWAII:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Hawaii&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const IDAHO:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Idaho&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const ILLINOIS:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Illinois&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const INDIANA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Indiana&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const IOWA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Iowa&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const KANSAS:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Kansas&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const KENTUCKY:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Kentucky&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const LOUISIANA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Louisiana&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const MAINE:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Maine&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const MARYLAND:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Maryland&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const MASSACHUSETTS:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Massachusetts&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const MICHIGAN:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Michigan&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const MINNESOTA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Minnesota&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const MISSISSIPPI:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Mississippi&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const MISSOURI:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Missouri&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const MONTANA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Montana&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const NEBRASKA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Nebraska&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const NEVADA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Nevada&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const NEW_HAMPSHIRE:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;New Hampshire&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const NEW_JERSEY:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;New Jersey&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const NEW_MEXICO:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;New Mexico&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const NEW_YORK:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;New York&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const NORTH_CAROLINA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;North Carolina&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const NORTH_DAKOTA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;North Dakota&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const OHIO:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Ohio&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const OKLAHOMA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Oklahoma&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const OREGON:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Oregon&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const PENNSYLVANIA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Pennsylvania&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const RHODE_ISLAND:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Rhode Island&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const SOUTH_CAROLINA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;South Carolina&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const SOUTH_DAKOTA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;South Dakota&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const TENNESSEE:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Tennessee&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const TEXAS:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Texas&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const UTAH:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Utah&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const VERMONT:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Vermont&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const VIRGINIA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Virginia&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const WASHINGTON:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Washington&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const WEST_VIRGINIA:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;West Virginia&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const WISCONSIN:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Wisconsin&quot;</span>;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> const WYOMING:<span style="color: #0066CC;">String</span> = <span style="color: #ff0000;">&quot;Wyoming&quot;</span>;
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> USAStates<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #0066CC;">static</span> <span style="color: #000000; font-weight: bold;">function</span> toArray<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">Array</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">var</span> states:<span style="color: #0066CC;">Array</span> = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">Array</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #000000; font-weight: bold;">var</span> classInfo:<span style="color: #0066CC;">XML</span> = describeType<span style="color: #66cc66;">&#40;</span>USAStates<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #b1b100;">for</span> each <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> v:<span style="color: #0066CC;">XML</span> <span style="color: #b1b100;">in</span> classInfo..<span style="color: #006600;">constant</span><span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">name</span>:<span style="color: #0066CC;">String</span> = <span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#40;</span>v.<span style="color: #66cc66;">@</span><span style="color: #0066CC;">name</span><span style="color: #66cc66;">&#41;</span>;
			    	<span style="color: #000000; font-weight: bold;">var</span> value:<span style="color: #0066CC;">String</span> = USAStates<span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">name</span><span style="color: #66cc66;">&#93;</span>;
			    	states.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>value<span style="color: #66cc66;">&#41;</span>;
			<span style="color: #66cc66;">&#125;</span>
			states.<span style="color: #0066CC;">sort</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
			<span style="color: #b1b100;">return</span> states;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Now I can use my standard enum as an array or dataprovider like this:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #66cc66;">&lt;</span>mx:ComboBox id=<span style="color: #ff0000;">&quot;state&quot;</span> <span style="color: #0066CC;">width</span>=<span style="color: #ff0000;">&quot;250&quot;</span> dataProvider=<span style="color: #ff0000;">&quot;{USAStates.toArray()}&quot;</span> <span style="color: #66cc66;">/&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.lejnieks.com/2008/03/29/enum-toarray/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
