<?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>Gaurav&#039;s Blog</title>
	<atom:link href="http://gauravj.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://gauravj.com/blog</link>
	<description>Tips and Tools of Flex</description>
	<lastBuildDate>Sat, 20 Feb 2010 02:55:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>StyleManager in Flex 4</title>
		<link>http://gauravj.com/blog/2010/02/stylemanager-in-flex-4/</link>
		<comments>http://gauravj.com/blog/2010/02/stylemanager-in-flex-4/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 22:31:51 +0000</pubDate>
		<dc:creator>Gaurav</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Styles]]></category>

		<guid isPermaLink="false">http://gauravj.com/blog/?p=653</guid>
		<description><![CDATA[In my previous post stylish modules and sub applications, I mentioned that StyleManager is not going to be a singleton class in Flex 4. There are some more StyleManager related api changes that you should be aware of.
StyleManager now implements IStyleManager2. If you recompile your Flex 3 app using Flex 4 SDK, you will get [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous post <a href="http://gauravj.com/blog/2010/02/stylish-modules-and-sub-applications/">stylish modules and sub applications</a>, I mentioned that StyleManager is not going to be a singleton class in Flex 4. There are some more StyleManager related api changes that you should be aware of.</p>
<p>StyleManager now implements IStyleManager2. If you recompile your Flex 3 app using Flex 4 SDK, you will get deprecation warnings because all static methods of StyleManager class except for getStyleManager() have been deprecated. In order to get rid of the deprecation warnings, you will need to use the StyleManager instance. You can either get the StyleManager instance using the getStyleManager() method or change StyleManager to styleManager (notice the lower case &#8217;s&#8217;). mx.core.UIComponent now has a new public property called styleManager which is a reference to your current StyleManager. </p>
<p>Also StyleManager now has a new method called getMergedStyleDeclaration() which can be used to get the merged style declarations (both declared in the current style manager and those inherited from the parent style managers). One thing to be aware of with this method is that CSSStyleDeclaration obtained via this method can not be used to modify style values. In order to modify style values, you will have to obtain CSSStyleDeclaration using the getStyleDeclaration() method. </p>
<p>Lets look at an example:<br />
Here is the code for an application that defines Style for a spark List (specifically it defines the borderColor and fontSize). </p>
<blockquote>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Application</span> xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> </span>
<span style="color: #000000;">			   xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span> </span>
<span style="color: #000000;">			   xmlns:mx=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/mx&quot;</span> minWidth=<span style="color: #ff0000;">&quot;1024&quot;</span> minHeight=<span style="color: #ff0000;">&quot;768&quot;</span> creationComplete=<span style="color: #ff0000;">&quot;application1_creationCompleteHandler(event)&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Style</span><span style="color: #7400FF;">&gt;</span></span>
		@namespace s &quot;library://ns.adobe.com/flex/spark&quot;;
		@namespace mx &quot;library://ns.adobe.com/flex/mx&quot;;
&nbsp;
		s|List
		{
			borderColor: #0000FF;
			fontSize: 16;
		}
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Style</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;">&lt;!<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">			import mx.collections.ArrayList;</span>
<span style="color: #000000;">			import mx.events.FlexEvent;</span>
<span style="color: #000000;">			import spark.components.TextInput;</span>
<span style="color: #000000;">                        // The following two lines <span style="color: #66cc66;">&#40;</span>import and var declaration for PopUpManager<span style="color: #66cc66;">&#41;</span> are to make sure that PopUpManager gets sucked into the app. Since PopUpManager</span>
<span style="color: #000000;">                        //  is a singleton, its definition should be available in the main app</span>
<span style="color: #000000;">                        // Otherwise module will throw an RTE when ColorPicker is used.</span>
<span style="color: #000000;">			import mx.managers.PopUpManager;			</span>
<span style="color: #000000;">			private var ph:PopUpManager;</span>
&nbsp;
<span style="color: #000000;">			private var arr:Array =</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Apple'</span>, data:<span style="color: #cc66cc;">10.00</span><span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Banana'</span>, data:<span style="color: #cc66cc;">15.00</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Melon'</span>, data:<span style="color: #cc66cc;">3.50</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Kiwi'</span>, data:<span style="color: #cc66cc;">7.65</span><span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Strawberry'</span>,data:<span style="color: #cc66cc;">12.35</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Other'</span>, data:<span style="color: #cc66cc;">00.00</span><span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#93;</span>;</span>
&nbsp;
<span style="color: #000000;">			private var listArr :ArrayList = new ArrayList<span style="color: #66cc66;">&#40;</span>arr<span style="color: #66cc66;">&#41;</span>;</span>
&nbsp;
<span style="color: #000000;">			protected function application1_creationCompleteHandler<span style="color: #66cc66;">&#40;</span>event:FlexEvent<span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">				appList.dataProvider = listArr;</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">			public function iniit<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">				mod_loader.url = <span style="color: #ff0000;">&quot;ModifyCSSDeclarationModule.swf&quot;</span>;</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">			public function unload<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">				mod_loader.unloadModule<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">				mod_loader.url = <span style="color: #ff0000;">&quot;&quot;</span>;</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">		<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:layout</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:VerticalLayout</span> paddingTop=<span style="color: #ff0000;">&quot;5&quot;</span> paddingLeft=<span style="color: #ff0000;">&quot;5&quot;</span> paddingRight=<span style="color: #ff0000;">&quot;5&quot;</span> paddingBottom=<span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:layout</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:HGroup</span> id=<span style="color: #ff0000;">&quot;hgroupContainer&quot;</span> paddingLeft=<span style="color: #ff0000;">&quot;5&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:List</span> id=<span style="color: #ff0000;">&quot;appList&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:ModuleLoader</span> id=<span style="color: #ff0000;">&quot;mod_loader&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:HGroup</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> label=<span style="color: #ff0000;">&quot;Load Module&quot;</span> click=<span style="color: #ff0000;">&quot;iniit()&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> label=<span style="color: #ff0000;">&quot;UnLoad Module&quot;</span> click=<span style="color: #ff0000;">&quot;unload()&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

</blockquote>
<p>Below is the code for the module (ModifyCSSDeclarationModule.mxml) loaded by the app:</p>
<blockquote>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Module</span> xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> </span>
<span style="color: #000000;">		   xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span> </span>
<span style="color: #000000;">		   xmlns:mx=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/mx&quot;</span> creationComplete=<span style="color: #ff0000;">&quot;module1_creationCompleteHandler(event)&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Style</span><span style="color: #7400FF;">&gt;</span></span>
		@namespace s &quot;library://ns.adobe.com/flex/spark&quot;;
		@namespace mx &quot;library://ns.adobe.com/flex/mx&quot;;
&nbsp;
		s|List
		{
			fontStyle: italic;
			color: #FF0000;
		}
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Style</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;">&lt;!<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">			import mx.collections.ArrayList;</span>
<span style="color: #000000;">			import mx.events.FlexEvent;</span>
&nbsp;
<span style="color: #000000;">			private var arr:Array =</span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Apple'</span>, data:<span style="color: #cc66cc;">10.00</span><span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Banana'</span>, data:<span style="color: #cc66cc;">15.00</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Melon'</span>, data:<span style="color: #cc66cc;">3.50</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Kiwi'</span>, data:<span style="color: #cc66cc;">7.65</span><span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Strawberry'</span>,data:<span style="color: #cc66cc;">12.35</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Other'</span>, data:<span style="color: #cc66cc;">00.00</span><span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#93;</span>;</span>
&nbsp;
<span style="color: #000000;">			private var listArr :ArrayList = new ArrayList<span style="color: #66cc66;">&#40;</span>arr<span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">			private var myStyleManager: IStyleManager2;</span>
&nbsp;
<span style="color: #000000;">			protected function module1_creationCompleteHandler<span style="color: #66cc66;">&#40;</span>event:FlexEvent<span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">				moduleList.dataProvider = listArr;</span>
<span style="color: #000000;">				myStyleManager = StyleManager.getStyleManager<span style="color: #66cc66;">&#40;</span>this.moduleFactory<span style="color: #66cc66;">&#41;</span>;	</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">			public function modifyStyleValue<span style="color: #66cc66;">&#40;</span>  <span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">				var cssDecl:CSSStyleDeclaration = myStyleManager.getStyleDeclaration<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;spark.components.List&quot;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">				cssDecl.setStyle<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;color&quot;</span>, colorPicker.value<span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">				cssDecl.setStyle<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;borderColor&quot;</span>, colorPicker.value<span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">			public function modifyMergedStyleValue<span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">				var cssDecl:CSSStyleDeclaration = myStyleManager.getMergedStyleDeclaration<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;spark.components.List&quot;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">				cssDecl.setStyle<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;borderColor&quot;</span>, colorPicker.value<span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">				cssDecl.setStyle<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;color&quot;</span>, colorPicker.value<span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">		<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:List</span> id=<span style="color: #ff0000;">&quot;moduleList&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span> text=<span style="color: #ff0000;">&quot;Choose Color&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>	
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:ColorPicker</span> id=<span style="color: #ff0000;">&quot;colorPicker&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> id=<span style="color: #ff0000;">&quot;localButton&quot;</span> label=<span style="color: #ff0000;">&quot;Modify Styles&quot;</span> click=<span style="color: #ff0000;">&quot;modifyStyleValue( )&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> id=<span style="color: #ff0000;">&quot;mergedButton&quot;</span>  label=<span style="color: #ff0000;">&quot;Modify Merged Styles&quot;</span> click=<span style="color: #ff0000;">&quot;modifyMergedStyleValue( )&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Module</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

</blockquote>
<p>The module code above tries to modify the styles (color, and borderColor) for the spark List. You can use the color picker to pick in the new color. If you press the &#8220;Modify Styles&#8221; button, the style values will get updated because modifyStyleValue() method obtains CSSStyleDeclaration via the getStyleDeclaration() method.<br />
But if you press the &#8220;Modify Merged Styles&#8221; button, the setStyle() calls will fail silentely because CSSStyleDeclaration (in modifyMergedStyleValue) is obtained via getMergedStyleDeclaration().</p>
<p>Here is the running swf:<br />
<center><br />
<iframe src ="http://gauravj.com/blog/examples/Styles/PerModuleStyles_2/ModifyCSSDeclarationApp.html" width="400" height="400"></p>
<p>Your browser does not support iframes.</p>
<p></iframe><br />
</center><br />
Also notice that when you press the &#8220;Modify Styles&#8221; button, only the styles of the spark list in the module will get updated. Why? It&#8217;s because the module is using the instance of StyleManager (myStyleManager) obtained using getStyleManager() (by passing the current module factory &#8211; this.moduleFactory). So this instance is different that the top level style manager which the main app is using. </p>
]]></content:encoded>
			<wfw:commentRss>http://gauravj.com/blog/2010/02/stylemanager-in-flex-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stylish modules and sub applications.</title>
		<link>http://gauravj.com/blog/2010/02/stylish-modules-and-sub-applications/</link>
		<comments>http://gauravj.com/blog/2010/02/stylish-modules-and-sub-applications/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 15:35:19 +0000</pubDate>
		<dc:creator>Gaurav</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Modules]]></category>
		<category><![CDATA[Styles]]></category>

		<guid isPermaLink="false">http://gauravj.com/blog/?p=616</guid>
		<description><![CDATA[One of the features that&#8217;s coming with Flex 4 is &#8220;Per-Module Style Management&#8221;. There is a lot that can be written about this feature and it probably can&#8217;t be covered in a single post. So for starters here is a small introduction.
The feature for Per-Module Style Management was done to allow modules and sub applications [...]]]></description>
			<content:encoded><![CDATA[<p>One of the features that&#8217;s coming with Flex 4 is &#8220;Per-Module Style Management&#8221;. There is a lot that can be written about this feature and it probably can&#8217;t be covered in a single post. So for starters here is a small introduction.</p>
<p>The feature for Per-Module Style Management was done to allow modules and sub applications to be able to manage their own styles. With this feature StyleManager will no longer be a singleton and as a result that will allow modules and sub applications to have their own instances of StyleManager. </p>
<p>Modules and sub applications will continue to inherit styles from the parent application/module. But only the style properties not defined by the child modules or sub applications will trickle down (i.e. child module/application will be able to override a style property defined by the parent). There will also be merging of styles properties. </p>
<p>To understand this better, lets take a look at a sample. Following is the code for a parent application:</p>
<blockquote>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Application</span> xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> </span>
<span style="color: #000000;">			   xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span> </span>
<span style="color: #000000;">			   xmlns:mx=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/mx&quot;</span> minWidth=<span style="color: #ff0000;">&quot;1024&quot;</span> minHeight=<span style="color: #ff0000;">&quot;768&quot;</span> creationComplete=<span style="color: #ff0000;">&quot;application1_creationCompleteHandler(event)&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Style</span><span style="color: #7400FF;">&gt;</span></span>
		@namespace s &quot;library://ns.adobe.com/flex/spark&quot;;
		@namespace mx &quot;library://ns.adobe.com/flex/mx&quot;;
&nbsp;
		global {
			chromeColor: #DDAA66;	
		}
&nbsp;
		s|DropDownList
		{
			fontStyle: italic;
		}
&nbsp;
		s|Button#gumboButton
		{
			fontStyle: italic;
		}
&nbsp;
		s|Panel s|Label
		{
			fontStyle: italic;
		}
&nbsp;
		s|Button.myStyle
		{
			fontStyle: italic;
		}
&nbsp;
		s|HGroup s|RichText
		{
			fontStyle: italic;
		}
&nbsp;
		.classOfStyle
		{
			fontStyle: italic;
		}
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Style</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;">&lt;!<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">			import mx.events.FlexEvent;</span>
<span style="color: #000000;">			import mx.collections.ArrayList;</span>
<span style="color: #000000;">			import mx.events.ModuleEvent;</span>
<span style="color: #000000;">			import mx.events.StyleEvent;</span>
<span style="color: #000000;">			import mx.controls.Alert;</span>
&nbsp;
<span style="color: #000000;">			private var arr:Array =</span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Apple'</span>, data:<span style="color: #cc66cc;">10.00</span><span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Banana'</span>, data:<span style="color: #cc66cc;">15.00</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Melon'</span>, data:<span style="color: #cc66cc;">3.50</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Kiwi'</span>, data:<span style="color: #cc66cc;">7.65</span><span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Strawberry'</span>,data:<span style="color: #cc66cc;">12.35</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Other'</span>, data:<span style="color: #cc66cc;">00.00</span><span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#93;</span>;</span>
&nbsp;
<span style="color: #000000;">			private var listArr :ArrayList = new ArrayList<span style="color: #66cc66;">&#40;</span>arr<span style="color: #66cc66;">&#41;</span>;</span>
&nbsp;
<span style="color: #000000;">			protected function application1_creationCompleteHandler<span style="color: #66cc66;">&#40;</span>event:FlexEvent<span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">				appList.dataProvider = listArr;</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">			public function load<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">				if<span style="color: #66cc66;">&#40;</span>mod_loader.url == null<span style="color: #66cc66;">&#41;</span></span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">					mod_loader.url = <span style="color: #ff0000;">&quot;LoadStylesModule.swf&quot;</span>;	</span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">				else</span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">					mod_loader.loadModule<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">			public function unload<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">				mod_loader.unloadModule<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">		<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:layout</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:VerticalLayout</span> <span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:layout</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:HGroup</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:VGroup</span> id=<span style="color: #ff0000;">&quot;groupId&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:VGroup</span> <span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:CheckBox</span> id=<span style="color: #ff0000;">&quot;checkBox&quot;</span> label=<span style="color: #ff0000;">&quot;Check Box&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span> text=<span style="color: #ff0000;">&quot;Label Outside Panel&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:VGroup</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:HGroup</span> rotation=<span style="color: #ff0000;">&quot;10&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:NumericStepper</span> id=<span style="color: #ff0000;">&quot;numericStepper&quot;</span> stepSize=<span style="color: #ff0000;">&quot;1&quot;</span> minimum=<span style="color: #ff0000;">&quot;1&quot;</span> maximum=<span style="color: #ff0000;">&quot;10&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:RichText</span> text=<span style="color: #ff0000;">&quot;This Text is Rich !!&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:HGroup</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:RichText</span> text=<span style="color: #ff0000;">&quot;This Text is also Rich !!&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Panel</span> title=<span style="color: #ff0000;">&quot;Gumbo Panel&quot;</span> id=<span style="color: #ff0000;">&quot;appPanel&quot;</span> rotation=<span style="color: #ff0000;">&quot;-5&quot;</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:layout</span><span style="color: #7400FF;">&gt;</span></span>
					<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:VerticalLayout</span> <span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:layout</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> id=<span style="color: #ff0000;">&quot;gumboButton&quot;</span> label=<span style="color: #ff0000;">&quot;Gumbo Button&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> id=<span style="color: #ff0000;">&quot;gumboButton2&quot;</span> label=<span style="color: #ff0000;">&quot;Second Gumbo Button&quot;</span> styleName=<span style="color: #ff0000;">&quot;myStyle&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span> text=<span style="color: #ff0000;">&quot;Spark Label&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span> text=<span style="color: #ff0000;">&quot;Spark Label class selector&quot;</span> styleName=<span style="color: #ff0000;">&quot;classOfStyle&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:DropDownList</span> id=<span style="color: #ff0000;">&quot;appList&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Panel</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:VGroup</span><span style="color: #7400FF;">&gt;</span></span>	
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:ModuleLoader</span> id=<span style="color: #ff0000;">&quot;mod_loader&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:HGroup</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> label=<span style="color: #ff0000;">&quot;Load Module&quot;</span> click=<span style="color: #ff0000;">&quot;load()&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> label=<span style="color: #ff0000;">&quot;Unload Module&quot;</span> click=<span style="color: #ff0000;">&quot;unload()&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

</blockquote>
<p>If you notice, the above code defines a bunch of styles. It sets the chrome color to DDAA66 in the global selector and it sets the fontStyle to italic using various selectors (class, Id, Type, descendant).</p>
<p>Now let&#8217;s take a look at the code of the module (LoadStylesModule.mxml):</p>
<blockquote>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Module</span> xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> </span>
<span style="color: #000000;">		   xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span> </span>
<span style="color: #000000;">		   xmlns:mx=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/mx&quot;</span> creationComplete=<span style="color: #ff0000;">&quot;module1_creationCompleteHandler(event)&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;">&lt;!<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">			import mx.collections.ArrayList;</span>
<span style="color: #000000;">			import mx.controls.Alert;</span>
<span style="color: #000000;">			import mx.events.FlexEvent;</span>
<span style="color: #000000;">			import mx.events.StyleEvent;</span>
&nbsp;
<span style="color: #000000;">			private var arr:Array =</span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#91;</span></span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Apple'</span>, data:<span style="color: #cc66cc;">10.00</span><span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Banana'</span>, data:<span style="color: #cc66cc;">15.00</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Melon'</span>, data:<span style="color: #cc66cc;">3.50</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Kiwi'</span>, data:<span style="color: #cc66cc;">7.65</span><span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Strawberry'</span>,data:<span style="color: #cc66cc;">12.35</span> <span style="color: #66cc66;">&#125;</span>,</span>
<span style="color: #000000;">					<span style="color: #66cc66;">&#123;</span> label:<span style="color: #ff0000;">'Other'</span>, data:<span style="color: #cc66cc;">00.00</span><span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">				<span style="color: #66cc66;">&#93;</span>;</span>
&nbsp;
<span style="color: #000000;">			private var listArr :ArrayList = new ArrayList<span style="color: #66cc66;">&#40;</span>arr<span style="color: #66cc66;">&#41;</span>;</span>
&nbsp;
<span style="color: #000000;">			protected function module1_creationCompleteHandler<span style="color: #66cc66;">&#40;</span>event:FlexEvent<span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">				moduleList.dataProvider = listArr;</span>
<span style="color: #000000;">				localStyleManager  = StyleManager.getStyleManager<span style="color: #66cc66;">&#40;</span>this.moduleFactory<span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">			private var localStyleManager:IStyleManager2 = null;</span>
&nbsp;
<span style="color: #000000;">			public var eventDispatcher:IEventDispatcher = null;</span>
<span style="color: #000000;">			protected function loadStylesButton_clickHandler<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
&nbsp;
<span style="color: #000000;">				eventDispatcher = localStyleManager.loadStyleDeclarations<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;testStyles.swf&quot;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
&nbsp;
<span style="color: #000000;">			protected function unloadStylesButton_clickHandler<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span>:void</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#123;</span></span>
<span style="color: #000000;">				localStyleManager.unloadStyleDeclarations<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;testStyles.swf&quot;</span><span style="color: #66cc66;">&#41;</span>;</span>
<span style="color: #000000;">			<span style="color: #66cc66;">&#125;</span></span>
<span style="color: #000000;">		<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Script</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:VGroup</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:CheckBox</span> id=<span style="color: #ff0000;">&quot;checkBox&quot;</span> label=<span style="color: #ff0000;">&quot;Check Box Module&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span> text=<span style="color: #ff0000;">&quot;Label Outside Panel&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:HGroup</span> rotation=<span style="color: #ff0000;">&quot;-10&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:NumericStepper</span> id=<span style="color: #ff0000;">&quot;numericStepper&quot;</span> stepSize=<span style="color: #ff0000;">&quot;1&quot;</span> minimum=<span style="color: #ff0000;">&quot;1&quot;</span> maximum=<span style="color: #ff0000;">&quot;10&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:RichText</span> text=<span style="color: #ff0000;">&quot;This Text is Rich Module !!&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:HGroup</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:RichText</span> text=<span style="color: #ff0000;">&quot;This Text is also Rich !!&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Panel</span> title=<span style="color: #ff0000;">&quot;Gumbo Module Panel&quot;</span> id=<span style="color: #ff0000;">&quot;appPanel&quot;</span> rotation=<span style="color: #ff0000;">&quot;-5&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:layout</span><span style="color: #7400FF;">&gt;</span></span>
				<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:VerticalLayout</span> <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:layout</span><span style="color: #7400FF;">&gt;</span></span>
&nbsp;
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> id=<span style="color: #ff0000;">&quot;gumboButton&quot;</span> label=<span style="color: #ff0000;">&quot;Gumbo Module Button&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Button</span> id=<span style="color: #ff0000;">&quot;gumboButton2&quot;</span> label=<span style="color: #ff0000;">&quot;Second Gumbo Module Button&quot;</span> styleName=<span style="color: #ff0000;">&quot;myStyle&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span> text=<span style="color: #ff0000;">&quot;Spark Module Label&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Label</span> text=<span style="color: #ff0000;">&quot;Spark Label Module class selector&quot;</span> styleName=<span style="color: #ff0000;">&quot;classOfStyle&quot;</span>  <span style="color: #7400FF;">/&gt;</span></span>
			<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:ComboBox</span> id=<span style="color: #ff0000;">&quot;moduleList&quot;</span> height=<span style="color: #ff0000;">&quot;24&quot;</span> width=<span style="color: #ff0000;">&quot;147&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Panel</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:VGroup</span><span style="color: #7400FF;">&gt;</span></span>	
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Load styles&quot;</span> id=<span style="color: #ff0000;">&quot;loadStylesButton&quot;</span> click=<span style="color: #ff0000;">&quot;loadStylesButton_clickHandler(event)&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Unload styles&quot;</span> id=<span style="color: #ff0000;">&quot;unloadStylesButton&quot;</span> click=<span style="color: #ff0000;">&quot;unloadStylesButton_clickHandler(event)&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/mx:Module</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

</blockquote>
<p>The code for the module above does not define any styles. So what that means is that it will inherit the styles from the parent app. It will have the chrome color of DDAA66 for all components and also the font styles will be italic. So far that&#8217;s all normal and boring stuff. Now you probably also noticed that the module  loads a styles declaration swf (which is a css compiled to a swf), and when you load the styles swf you will see the magic of per-module style management. The module will override style definition for some properties (originally defined in the main app) and for other properties styles merging will happen.</p>
<p>Here is the code for the css (testStyles.css):</p>
<blockquote>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;">@namespace s &quot;library://ns.adobe.com/flex/spark&quot;;
@namespace mx &quot;library://ns.adobe.com/flex/mx&quot;;
&nbsp;
s|DropDownList
{
	borderColor: #FF0000;
	fontSize: 16;
}
&nbsp;
s|Button#gumboButton
{
	chromeColor: #AAFFAA;
	fontSize: 16;
}
&nbsp;
s|Panel s|Label
{
	fontSize: 16;
}
&nbsp;
s|Button.myStyle
{
	chromeColor: #FFFFAA;
	fontSize: 14;
}
&nbsp;
s|HGroup s|RichText
{
	chromeColor: #BBAAAA;
	fontSize: 14;
}
&nbsp;
.classOfStyle
{
	color: #0FFFFA;	
	fontSize: 20;
}</pre></div></div>

</blockquote>
<p>Here is the running swf:<br />
<center><br />
<iframe src ="http://gauravj.com/blog/examples/Styles/PerModuleStyles_1/StylesApp.html" width="700" height="400"></p>
<p>Your browser does not support iframes.</p>
<p></iframe><br />
</center></p>
<p>Click on the &#8220;Load Module&#8221; button to load the module. Once the module is loaded, notice the chrome color of most components is the same as in the parent app and the font is italicized for most components &#8211; this shows that the module inherits styles from the parent app. Now click on the &#8220;Load styles&#8221; button in the module, once the styles swf is loaded you can notice that the font size changes for most components but the fonts in the module are still italicized &#8211; this shows styles merging because we were only overriding the fontSize in the css and not the fontStyle property. Also notice the new chrome color for components in the module, its now different from the global chrome color (DDAA66). So the module is able to override the styles properties it chooses.</p>
<p>So, hopefully you find this short introduction useful. Stay tuned for more on this.. And if you want me to write about something else, please say so with your comments (which btw are welcome <img src='http://gauravj.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  )</p>
]]></content:encoded>
			<wfw:commentRss>http://gauravj.com/blog/2010/02/stylish-modules-and-sub-applications/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New and Improved Flex 3.5 build</title>
		<link>http://gauravj.com/blog/2010/02/new-and-improved-flex-3-5-build/</link>
		<comments>http://gauravj.com/blog/2010/02/new-and-improved-flex-3-5-build/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 03:41:02 +0000</pubDate>
		<dc:creator>Gaurav</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://gauravj.com/blog/?p=607</guid>
		<description><![CDATA[If you have been using Flex 3.5, you might want to upgrade to Flex 3.5a. Yes, the &#8216;a&#8217; after 3.5 is not a typo. The Flex 3.5 build has been updated to address an issue with Flex-based AIR auto-update UI packaged within the SDK. The related JIRA bug for issue is http://bugs.adobe.com/jira/browse/SDK-24766
All developers using Flex [...]]]></description>
			<content:encoded><![CDATA[<p>If you have been using Flex 3.5, you might want to upgrade to Flex 3.5a. Yes, the &#8216;a&#8217; after 3.5 is not a typo. The Flex 3.5 build has been updated to address an issue with Flex-based AIR auto-update UI packaged within the SDK. The related JIRA bug for issue is <a href="http://bugs.adobe.com/jira/browse/SDK-24766">http://bugs.adobe.com/jira/browse/SDK-24766</a></p>
<p>All developers using Flex 3.5 are encouraged to upgrade to Flex 3.5a. You can download this new build from <a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3">http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3</a></p>
<p>Also if you are using a Flex build older than Flex 3.5 then you are definitely encouraged to upgrade and try the latest builds. The milestone builds contain many bug fixes.. </p>
<p>We are always interested in hearing from you, regarding the feedback. Also if you run into any bugs you can log them at <a href="http://bugs.adobe.com/jira">http://bugs.adobe.com/jira</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gauravj.com/blog/2010/02/new-and-improved-flex-3-5-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating SWC files with asdoc comments..</title>
		<link>http://gauravj.com/blog/2010/01/creating-swc-files-with-asdoc-comments/</link>
		<comments>http://gauravj.com/blog/2010/01/creating-swc-files-with-asdoc-comments/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 06:36:28 +0000</pubDate>
		<dc:creator>Gaurav</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[ASDoc]]></category>
		<category><![CDATA[MXML]]></category>
		<category><![CDATA[SWC]]></category>

		<guid isPermaLink="false">http://gauravj.com/blog/?p=572</guid>
		<description><![CDATA[Have you tried the latest Flash Builder? If not, the latest beta can be downloaded from http://labs.adobe.com/technologies/flashbuilder4/?sdid=EUHSU
But if you have already tried it, you would have noticed that now ActionScript and MXML editors show ASDoc documentation when you hover over variables/method/class names. See screen shot below:

This means that you can now see the documentation as [...]]]></description>
			<content:encoded><![CDATA[<p>Have you tried the latest Flash Builder? If not, the latest beta can be downloaded from <a href="http://labs.adobe.com/technologies/flashbuilder4/?sdid=EUHSU">http://labs.adobe.com/technologies/flashbuilder4/?sdid=EUHSU</a></p>
<p>But if you have already tried it, you would have noticed that now ActionScript and MXML editors show ASDoc documentation when you hover over variables/method/class names. See screen shot below:<br />
<img src="examples/ASDoc/FlashBuilder_ASDoc_Help.png" /></p>
<p>This means that you can now see the documentation as you are writing code. You can see the method/variable signature or any other documentation associated with any of the class elements. And for all this you don&#8217;t need to open the language reference in a separate browser window or search for the documentation.</p>
<p>Behind the scenes Flash Builder pulls this information from the Flex SDK swc files and the ASDoc info is stored in XML files inside the SWC files. For all nightly builds of Flex SDK, the swcs will come with these ASDoc XML files. In case you want to add similar ASDoc XML files to your custom swcs, you can do that too. Currently there is no single command to generate swc with ASDoc XML files, it is done in three simple steps. And the three steps are:</p>
<ol>
<li>Generate SWC</li>
<li>Generate doc XML Files using ASDoc tool</li>
<li>Update SWC with doc XML fIles</li>
</ol>
<p>I hope you already know how to generate a swc file. If not, take a look at <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_22.html">http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_22.html</a><br />
In order to generate the doc XML files using ASDoc tool, you will have to run the asdoc tool using <strong>-keep-xml=true</strong> and <strong>-skip-xsl=true</strong><br />
A swc file is a compressed file, so to update it (with doc XML files) you can simply use a zip command. </p>
<p>For reference, you can also look at the build.xml file in the framework project of the Flex SDK. Following is the &#8220;doc&#8221; target which performs step #2 and #3:</p>
<blockquote>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;target name=<span style="color: #ff0000;">&quot;doc&quot;</span> depends=<span style="color: #ff0000;">&quot;clean-temp-docs&quot;</span> description=<span style="color: #ff0000;">&quot;updates framework.swc with asdoc xml&quot;</span><span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- Load the &lt;asdoc&gt;</span></span> task. We can't do this at the <span style="color: #000000;">&lt;project<span style="color: #7400FF;">&gt;</span></span> level --&gt;
		<span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- because targets that run before flexTasks.jar gets built would fail. --&gt;</span></span>
		<span style="color: #000000;">&lt;taskdef resource=<span style="color: #ff0000;">&quot;flexTasks.tasks&quot;</span> classpath=<span style="color: #ff0000;">&quot;${FLEX_HOME}/lib/flexTasks.jar&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
&nbsp;
	    <span style="color: #000000;">&lt;condition property=<span style="color: #ff0000;">&quot;asdoc.jvm.args&quot;</span> value=<span style="color: #ff0000;">&quot;-Xmx384m&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	        <span style="color: #000000;">&lt;os family=<span style="color: #ff0000;">&quot;windows&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	    <span style="color: #000000;">&lt;/condition<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	    <span style="color: #000000;">&lt;condition property=<span style="color: #ff0000;">&quot;asdoc.jvm.args&quot;</span> value=<span style="color: #ff0000;">&quot;-Xmx512m&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	        <span style="color: #000000;">&lt;os family=<span style="color: #ff0000;">&quot;mac&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	    <span style="color: #000000;">&lt;/condition<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
	    <span style="color: #000000;">&lt;condition property=<span style="color: #ff0000;">&quot;asdoc.jvm.args&quot;</span> value=<span style="color: #ff0000;">&quot;-Xmx512m&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	        <span style="color: #000000;">&lt;os family=<span style="color: #ff0000;">&quot;unix&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
	    <span style="color: #000000;">&lt;/condition<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- Call asdoc to generate dita xml files --&gt;</span></span>
		<span style="color: #000000;">&lt;asdoc output=<span style="color: #ff0000;">&quot;${FLEX_HOME}/tempDoc&quot;</span> lenient=<span style="color: #ff0000;">&quot;true&quot;</span> failonerror=<span style="color: #ff0000;">&quot;true&quot;</span> keep-xml=<span style="color: #ff0000;">&quot;true&quot;</span> skip-xsl=<span style="color: #ff0000;">&quot;true&quot;</span> fork=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #7400FF;">&gt;</span></span>
		    <span style="color: #000000;">&lt;compiler.source-path path-element=<span style="color: #ff0000;">&quot;${basedir}/src&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		    <span style="color: #000000;">&lt;doc-classes class=<span style="color: #ff0000;">&quot;FrameworkClasses&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		    <span style="color: #000000;">&lt;doc-namespaces uri=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		    <span style="color: #000000;">&lt;namespace uri=<span style="color: #ff0000;">&quot;http://www.adobe.com/2006/mxml&quot;</span> manifest=<span style="color: #ff0000;">&quot;${basedir}/manifest.xml&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		    <span style="color: #000000;">&lt;jvmarg line=<span style="color: #ff0000;">&quot;${asdoc.jvm.args}&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		<span style="color: #000000;">&lt;/asdoc<span style="color: #7400FF;">&gt;</span></span>
&nbsp;
		<span style="color: #000000;"><span style="color: #808080; font-style: italic;">&lt;!-- updates framework.swc with asdoc xml --&gt;</span></span>
		<span style="color: #000000;">&lt;zip destfile=<span style="color: #ff0000;">&quot;${FLEX_HOME}/frameworks/locale/en_US/framework_rb.swc&quot;</span> update=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #7400FF;">&gt;</span></span>
		    <span style="color: #000000;">&lt;zipfileset dir=<span style="color: #ff0000;">&quot;${FLEX_HOME}/tempDoc/tempdita&quot;</span> prefix=<span style="color: #ff0000;">&quot;docs&quot;</span><span style="color: #7400FF;">&gt;</span></span>
			    <span style="color: #000000;">&lt;include name=<span style="color: #ff0000;">&quot;*.*&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;exclude name=<span style="color: #ff0000;">&quot;ASDoc_Config.xml&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
				<span style="color: #000000;">&lt;exclude name=<span style="color: #ff0000;">&quot;overviews.xml&quot;</span><span style="color: #7400FF;">/&gt;</span></span>
		    <span style="color: #000000;">&lt;/zipfileset<span style="color: #7400FF;">&gt;</span></span>
		<span style="color: #000000;">&lt;/zip<span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;">&lt;/target<span style="color: #7400FF;">&gt;</span></span></pre></div></div>

</blockquote>
<p>So give it a try, and if you find any bugs you can log them at <a href="http://bugs.adobe.com/flex">http://bugs.adobe.com/flex</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gauravj.com/blog/2010/01/creating-swc-files-with-asdoc-comments/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Styles, Themes, and the stricter Compiler</title>
		<link>http://gauravj.com/blog/2009/12/styles-themes-and-the-stricter-compiler/</link>
		<comments>http://gauravj.com/blog/2009/12/styles-themes-and-the-stricter-compiler/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 05:38:25 +0000</pubDate>
		<dc:creator>Gaurav</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://gauravj.com/blog/?p=541</guid>
		<description><![CDATA[In Flex 3, the styles defined using the [Style] metadata were validated by the flex compiler, but styles defined in css files were not validated.. 
Flex 4 has multiple themes:

Spark: The default theme for Flex 4. It contains the skins for Spark and MX Components
Halo: The default theme for MX components (if you set -compatibility-version=3.0.0)

Some [...]]]></description>
			<content:encoded><![CDATA[<p>In Flex 3, the styles defined using the [Style] metadata were validated by the flex compiler, but styles defined in css files were not validated.. </p>
<p>Flex 4 has multiple themes:</p>
<ol>
<li>Spark: The default theme for Flex 4. It contains the skins for Spark and MX Components</li>
<li>Halo: The default theme for MX components (if you set -compatibility-version=3.0.0)</li>
</ol>
<p>Some style can be valid for only one theme but not the other. So if an app uses such a style(valid for one a specific theme), the style won&#8217;t work if the theme is switched. This could lead to confusion. To help avoid such situation the Flex 4 compiler is stricter than then Flex 3 compiler. </p>
<p>Flex 4 compiler now validates the styles against the theme.</p>
<p>So for example, if you have an app like:</p>
<blockquote>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Application</span> xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> </span>
<span style="color: #000000;">			   xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span> </span>
<span style="color: #000000;">			   xmlns:mx=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/mx&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Hello World !!&quot;</span> borderColor=<span style="color: #ff0000;">&quot;#FF0000&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>	
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

</blockquote>
<p>Compiling it with the Flex 4 will generate an error like: Error: The style &#8216;borderColor&#8217; is only supported by type &#8216;mx.controls.Button&#8217; with the theme(s) &#8216;halo&#8217;.</p>
<p>If however, you had specified the &#8220;borderStyle&#8221; using an external css file or the &lt;Style&gt; block , for example:</p>
<blockquote>

<div class="wp_syntax"><div class="code"><pre class="mxml" style="font-family:monospace;"><span style="color: #000000;">&lt;?xml version=<span style="color: #ff0000;">&quot;1.0&quot;</span> encoding=<span style="color: #ff0000;">&quot;utf-8&quot;</span>?<span style="color: #7400FF;">&gt;</span></span>
<span style="color: #000000;"><span style="color: #7400FF;">&lt;s:Application</span> xmlns:fx=<span style="color: #ff0000;">&quot;http://ns.adobe.com/mxml/2009&quot;</span> </span>
<span style="color: #000000;">			   xmlns:s=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/spark&quot;</span> </span>
<span style="color: #000000;">			   xmlns:mx=<span style="color: #ff0000;">&quot;library://ns.adobe.com/flex/mx&quot;</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;fx:Style</span><span style="color: #7400FF;">&gt;</span></span>
		@namespace mx &quot;library://ns.adobe.com/flex/mx&quot;;
&nbsp;
		mx|Button#buttonId
		{
			borderColor: #FFFF00;
		}
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;/fx:Style</span><span style="color: #7400FF;">&gt;</span></span>
	<span style="color: #000000;"><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;Hello&quot;</span> id=<span style="color: #ff0000;">&quot;buttonId&quot;</span> <span style="color: #7400FF;">/&gt;</span><span style="color: #7400FF;">&lt;mx:Button</span> label=<span style="color: #ff0000;">&quot;World&quot;</span> <span style="color: #7400FF;">/&gt;</span></span>		
<span style="color: #000000;"><span style="color: #7400FF;">&lt;/s:Application</span><span style="color: #7400FF;">&gt;</span></span></pre></div></div>

</blockquote>
<p>Compiling it with the Flex 4  would generate a warning like: Warning: The style &#8216;borderColor&#8217; is only supported by type &#8216;mx.controls.Button&#8217; with the theme(s) &#8216;halo&#8217;.</p>
<p>So the rule is &#8220;error if invalid style specified inline&#8221;, and &#8220;warning if invalid style is specified using css/&lt;Style&gt; block&#8221;</p>
<p>The recommended way of resolving these warnings/errors is to update the code. </p>
<p>But there may be situations where you would want to re-use some of the components written for your flex 3 apps into the flex 4 apps. If for some reason you can not update those components, you can make use of the newly introduced compiler switches (and buy yourself some time) <img src='http://gauravj.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The new switches are:</p>
<ol>
<li>-report-invalid-styles-as-warnings: this can be used if your app specified styles inline, and those styles are not valid for the current theme. The default value for this is false, and setting it to true will enables reporting of invalid styles as warnings.</li>
<li>show-invalid-css-property-warnings: this can be used if you app specified styles using the css files/&lt;Style&gt; block, and those styles are not valid for the current theme. The default value for this is false, and this switch can be used to toggle whether invalid css property warnings are reported.</li>
</ol>
<p>You can download the latest nightly builds for Flex 4 from <a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4">http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gauravj.com/blog/2009/12/styles-themes-and-the-stricter-compiler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
