Custom Module Loader in Flex

I know it’s too late to post this now, but I just found something which I created in October 2011, when I started cleaning up my hard disk.

package 
{

   import flash.display.DisplayObject;
   import flash.system.ApplicationDomain;
   import flash.utils.ByteArray;
   import flash.utils.Dictionary;
   import mx.controls.Alert;
   import mx.controls.ProgressBar;
   import mx.events.FlexEvent;
   import mx.events.ModuleEvent;
   import mx.modules.IModuleInfo;
   import mx.modules.Module;
   import mx.modules.ModuleLoader;
   import mx.modules.ModuleManager;
   import mx.utils.UIDUtil;

   public class CustomModuleLoader extends ModuleLoader{

        private var ichild:IModuleCommunication;
	private var loadRequested:Boolean = false;
	private var map:Dictionary = new Dictionary();
	private var module:IModuleInfo;
	private var progressBar:ProgressBar = null;
        private var _url:String = null;
        private var _dashBoardChildName:String;

	public function CustomModuleLoader(){
	    super();
	}
	
	public function get dashBoardChildName():String{
	    return _dashBoardChildName;
	}

        public function set dashBoardChildName(value:String):void{
	    _dashBoardChildName = value;
	}
	
	override public function get url():String{
	    return _url;
	}

        override public function set url(value:String):void{
	  if (value == _url){
	     return;
	   }
          if (module){
             unloadModule();
	     return;
	   }
          if (value == null || value == ""){
	     unloadModule();
	     return;
	   }
	_url = value;
	dispatchEvent(new FlexEvent(FlexEvent.URL_CHANGED));
	removeAllChildren();

	if (_url != null && _url != "" && loadRequested){
	   if (!map[_url]){
	      loadModule();
	    }
	    else{
	      child = map[_url];
	      addChild(child);
	     }
	   }
	}

        override public function createComponentsFromDescriptors(recurse:Boolean = true):void{
	   super.createComponentsFromDescriptors(recurse);
	   loadRequested = true;
	}

	override protected function measure():void{
	   super.measure();
	   trace("CustomModuleLoader Width--------------------------------------------- " + this.width);
	   trace("CustomModuleLoader Height--------------------------------------------- " + this.height);
	   this.percentWidth = 100;
	   this.percentHeight = 100;

	   if (progressBar){
	     progressBar.top = 200;
	     progressBar.left = 100;
	     progressBar.x = 200;
	     progressBar.y = 100;
	     progressBar.verticalCenter = 0;
	     trace("progressBar Width--------------------------------------------- " + progressBar.width);
	     trace("progressBar Height--------------------------------------------- " + progressBar.height);
	     trace("progressBar X--------------------------------------------- " + progressBar.x);
	     trace("progressBar Y--------------------------------------------- " + progressBar.y);
             trace("progressBar verticalCenter--------------------------------------------- " +  progressBar.verticalCenter);
             trace("progressBar horizontalCenter--------------------------------------------- " + progressBar.horizontalCenter);
	     trace("progressBar top--------------------------------------------- " + progressBar.top);
 	     trace("progressBar left--------------------------------------------- " + progressBar.left);
	   }
	}

	override public function loadModule(url:String = null, bytes:ByteArray = null):void{
	   if (url != null){
	      _url = url;
	     }
           if (_url == null){
	      return;
	    }
           if (map[_url]){
	      //trace("loadModule() - already created the child");
	      return;
	    }

	   if (module){
	      //trace("loadModule() - load already initiated");
	      return;
	    }
	   showProgressBar();
	   dispatchEvent(new FlexEvent(FlexEvent.LOADING));
	   module = mx.modules.ModuleManager.getModule(_url + '?cacheClear=' + UIDUtil.createUID());
	   module.addEventListener(ModuleEvent.PROGRESS, moduleProgressHandler);
	   module.addEventListener(ModuleEvent.SETUP, moduleSetupHandler);
	   module.addEventListener(ModuleEvent.READY, moduleReadyHandler);
	   module.addEventListener(ModuleEvent.ERROR, moduleErrorHandler);
	   module.addEventListener(ModuleEvent.UNLOAD, moduleUnloadHandler);
	   module.load(ApplicationDomain.currentDomain, null, bytes);
	}

        override public function unloadModule():void{
	  if (map[_url]){
	     delete map[_url];
 	  }
          if (child && contains(child)){
	     ichild.handleDispose();
	     removeChild(child);
	     child = null;
	     ichild = null;
	     _url = null;
	   }
          if (module){
	     module.removeEventListener(ModuleEvent.PROGRESS, moduleProgressHandler);
	     module.removeEventListener(ModuleEvent.SETUP, moduleSetupHandler);
	     module.removeEventListener(ModuleEvent.READY, moduleReadyHandler);
	     module.removeEventListener(ModuleEvent.ERROR, moduleErrorHandler);
	     module.removeEventListener(ModuleEvent.UNLOAD, moduleUnloadHandler);
	     module.release();
	     module.unload();
	     module = null;
	  }
	     applicationDomain = null;
	     removeProgressBar();
	 }

	private function moduleErrorHandler(event:ModuleEvent):void{
	    removeProgressBar();
	    dispatchEvent(event);
	}

	private function moduleProgressHandler(event:ModuleEvent):void{
	    dispatchEvent(event);
	}

	private function moduleReadyHandler(event:ModuleEvent):DisplayObject{
	    removeProgressBar();
            child = module.factory.create() as DisplayObject;
            ichild = child as IModuleCommunication;
            ichild.setModuleParent(this.parentApplication);

	    if (url == "DashboardModule.swf"){
	      ichild.setDashboardChild(dashBoardChildName);
	    }
 	   dispatchEvent(event);
           if (child){
		addChild(child);
		map[url] = child;
	    }
	   return child;
	}

	private function moduleSetupHandler(event:ModuleEvent):void{
	    dispatchEvent(event);
	}

	private function moduleUnloadHandler(event:ModuleEvent):void{
	    removeProgressBar();
	    dispatchEvent(event);
	}

	private function removeProgressBar():void{
	    if (progressBar)
	    {
		removeChild(progressBar);
	        progressBar = null;
	    }
	}

	private function showProgressBar():void{
	 if (!progressBar)
	  {
	    progressBar = new ProgressBar();
	    progressBar.labelPlacement = "top";
	    progressBar.source = module;
	    progressBar.verticalCenter = 0;
	    progressBar.indeterminate = true;
	    addChild(progressBar);
	}
     }
  }
}
Advertisements

Adobe Flex 4 * Creating deferred components

When you set a container’s creationPolicy property to none, components declared as MXML tags inside that container are not created.

For Spark containers, you use the createDeferredContent() method to manually instantiate deferred components. This method is defined on the spark.components.SkinnableContainer class.

For MX containers, you use the createComponentsFromDescriptors() method to manually instantiate deferred components. This method is defined on the MX Container base class.

Spark vs Halo Themes

The Spark theme is the default theme for Flex 4. Halo theme was the default theme for Flex 3. Each of these themes will support different styles. So, it is up to you which theme you want to use depending on the look and feel that you are going for in your application. There is no equivalent for the Halo theme’s borderThickness in the Spark theme. In general, the Halo theme has a lot more ‘out-of-the-box’ styles for components and containers. However, using custom skins is much easier if your application uses the Spark theme.

If you look at the ASDocs for each of the component classes, the styles should have a “theme” listed where it tells you whether that style is supported on Halo, Spark or both. The other theme that comes with the Flex 4 SDK is the Wireframe theme which doesn’t support any styles.

If you want to use the Spark theme, you can consider changing your Canvas component to a Spark BorderContainer which contains the borderWeight style that will do what you want.

Spark and Halo Themes both together

Flex 4 by default comes with spark theme

but if you want to use halo theme along with spark theme

  1. In Flash Builder 4.x, select Project > Properties from the main menu.
  2. Select Flex Compiler from the left menu.
  3. In the Additional compiler arguments text field, add the following argument:

-theme+=${flexlib}/themes/Halo/halo.swc

“+=” is very important as you need to have both spark and halo

Command Line Flex Formatting

Purpose: Used to format all the code base from the source directory
Setup: Get all the jars
asJars
Where will you find the jars:
 
sourceForgeFF
and also from
 
sourceForgeFF1
Download the jars and create a folder called “ComandLineFormatting”, and dump in all the jars in this folder.
 
If in case, you do not have java jdk  installed on your machine, then please install and check if its working.
 
        How to Check Java is working.
  • Open Command Prompt. Type “cmd” in your search and the command window appears for you.
  • Type “cd\” then Type java -version. You should see the current java version installed on your system.
If your java is working fine you should see the below screen.
cmd1
Now Type cd C:\Users\rchouhan\CommandLineFormatting as shown to point to your local folder.
cmd2
As per the Sourceforge document the instruction is to execute “java -Djava.ext.dirs=. utilities.CommandLine c:\sourceDir c:\tools\Formatter.properties 4 true”.
 
where -Djava.ext.dirs point to all the external jars in “CommandLineFormatting” folder that you just created.
c:\sourceDir – is the flex project source folder where you have all mxml’s and actionscript (*.as) files located and 
c:\tools\Formatter.properties – its the location where you have the FlexFormatter properties file.
 
In my case it would be
 
cmd3
 
and Hit “Enter”
 
After successful execution of this command, you should see
 
cmd4
 
 
Note: If you have any white spaces between folder names and or path , try to give the full path in quotes.
 
C:\Users\rchouhan\Adobe Flash Builder 4.6\testComboBox\src
 
Your output in the Flash Builder would be a nicely formatted code:
 
code
 
 
Hope you’ve enjoyed it.!!!

Get Distinct ArrayCollection Values

This Utility gives you Distinct values from your source array collection. It iterates through the Source ArrayCollection and gets the item Object for each loop and checks to see if the property value of the item is present in the new Collection. If its not present then it add’s the item to the new Collection, else it ignore’s the item and iterates the next item in the list. This is done by getItemIndex property of the ArrayCollection.

  public static function getDisticntArrayCollection(sourceCollection:ArrayCollection):ArrayCollection{
      var distinctValuesCollection:ArrayCollection = new ArrayCollection();
      for each(var item:* in sourceCollection){
          var propertyValue:Object = item.VALUE;
          if(distinctValuesCollection.getItemIndex(propertyValue) == -1)
             distinctValuesCollection.addItem(item);
       }
    return distinctValuesCollection;
  }

Observe Utility

Observe Utility listen’s property changes at run time on any assigned variable and calls its defined function. This utility does the same job as ChangeWatcher or BindingUtils. I prefer using this as its very light weight, fast and handy.

package org.util
{

    /**
     * Detects changes to a value and runs a function in response.
     * @param source: Source value that is to be watched.
     * @param enabled:Prevents ObserveUtil firing before visual elements are available.
     * @param handler: Function that gets called when source property gets changed.
     *
     * @author Chouhan
     *
     */

    public class ObserveUtil
    {
       public var handler:Function;
       public var enabled:Boolean =true;

       public function set source(source:*):void{
           if(enabled){
                handler.call();
            }
        }
    }
}

USAGE:
<util:Observe
 source="{valueThatIsToBeWatchedFor}"
 handler="{valueChangedFunction}" />

 private function valueChangedFunction():void{
     /* Implement your logic upon property change */
 }

Hope you’ve had fun using this utility. !!

Flex Formatter

Flex Formatter Update Site:

http://flexformatter.googlecode.com/svn/trunk/FlexFormatter/FlexPrettyPrintCommandUpdateSite

ActionScript.metatagsOnSameLineAsTargetFunction=Bindable Actionscript.advancedSpacesInsideParensInParameterLists=0 MXML.keepRelativeIndentInMultilineComments=true MXML.attrsPerLine=1 MXML.blankLinesBeforeTags=1 ASRearr_GroupGettersAndSettersWithStaticProperties=false Actionscript.keepBlankLines=false Actionscript.blankLinesAtFunctionEnd=0 MXML.tagsDoNotFormatInside=.*\:Model,.*\:XML, ASRearr_RemoveExistingCopyrightHeaders=false ASRearr_ElementSortNamespaces=true Actionscript.advancedCRBeforeBraceSettings=2047 Actionscript.useGlobalSpacesAroundColons=true ASRearr_SortGettersAndSettersWithAssociatedProperties=true Actionscript.newLineBeforeBindableFunction=true ASRearr_UseElementPropertyVisibilityOrder=true Actionscript.useGlobalSpacesInsideParens=false Actionscript.wrapExpressionMode=4 Actionscript.blankLinesAtFunctionStart=0 MXML.spacesInsideAttributeBraces=1 Actionscript.wrapMethodDeclMode=4 ASRearr_ElementFunctionVisibilityOrder=public\:true,protected\:true,internal\:true,private\:true, ASRearr_ElementStaticPropertyVisibilityOrder=public\:true,protected\:true,internal\:true,private\:true, Actionscript.useGlobalCRBeforeBrace=true Actionscript.wrapArrayDeclMode=4 MXML.sortAttrData=\\n,xmlns\:mx\n\\n,xmlns\:fx\n\\n,xmlns\:s\n\\n,xmlns\n\\n,id,%xmlnsgroup%\n\\n,name\n\\n,x\n\\n,y\n\\n,width\n\\n,height\n\\n,text\n\\n,label\n\\n,config\n\\n,source\n\\n,target\n\\n,position\n\\n,xFrom\n\\n,method\n\\n,type\n\\n,color\n\\n,%properties%\n\\n,%styles%\n\\n,%events%\n\\n,fb\:purpose\n\\n,gap\n\\n,duration\n\\n,fromState\n\\n,idRef\n\\n,rotation\n\\n,strength\n\\n,weight\n\\n,file\n\\n,dataField\n\\n,injectionComplete\n ActionScript.keepRelativeIndentInDocComments=true ASRearr_ElementOrder=Import,Include,Namespace Definition,Default Namespace,Namespace Use,Static Property,Static Function,Constructor,Property,Function,Static Initializer, Actionscript.blankLinesBeforeFunctions=1 MXML.maxLineLength=200 ASRearr_MajorSectionHeader=style\=1|width\=60|blankLines\=4|fillChar\=-|text\=|linesBefore\=1| MXML.blankLinesAfterParentTags=0 ASRearr_ModifierOrder_Function=<Namespace>,override,public,private,protected,internal,static,dynamic,final Actionscript.wrapMethodCallMode=4 ASRearr_RemoveExistingSectionHeaders=false ASRearr_UseElementFunctionVisibilityOrder=false Actionscript.spacesBeforeControlOpenParen=1 MXML.attrsToKeepOnSameLine=3 ASRearr_UseModifierOrder_Function=false Actionscript.putEmptyStatementsOnNewLine=true Actionscript.spacesAroundBinarySymbolicOperator=1 Flex.useTabs=true Actionscript.doRearrangeWhileFormatting=false MXML.sortAttrMode=2 ASRearr_UseGlobalModifierOrder=true ASRearr_ImportOrder=adobe,com,flash,mx, Actionscript.advancedSpacesInsideParensInOtherPlaces=0 Actionscript.advancedWrappingGraceColumns=5 Actionscript.advancedSpacesInsideArrayRefBrackets=1 ActionScript.spacesBeforeFormalParameters=0 MXML.blankLinesBetweenSiblingTags=0 Actionscript.putElseOnNewLine=true ASRearr_SectionHeaderMap=\#\r\n\#Tue Jan 18 13\:40\:40 EST 2011\r\n Actionscript.alwaysGenerateIndent=false MXML.blankLinesAfterSpecificParentTags=0 ASRearr_SortGettersAndSettersWithAssociatedStaticProperties=true Actionscript.blankLinesBeforeClasses=1 Actionscript.putWhileOnNewLine=false ASRearr_ElementStaticFunctionVisibilityOrder=public\:true,protected\:true,internal\:true,private\:true, MXML.parentTagsToHaveBlankLinesAddedAfterThem= Actionscript.maxLineLength=200 MXML.attrWrapMode=52 MXML.tagsCanFormat=mx\:List,fx\:List, MXML.wrapIndentStyle=1000 ActionScript.metatagsOnSameLineAsTargetProperty=Bindable ASRearr_UseMetatagOrder=true MXML.spacesAroundEquals=0 Actionscript.advancedSpacesAroundEqualsInOptionalParameters=0 ASRearr_CopyrightHeader=style\=1|width\=80|blankLines\=2|fillChar\=-|text\= Copyright 2010\n All rights reserved.|linesBefore\=1| Actionscript.blankLinesBeforeProperties=0 Actionscript.putOpenBraceOnNewLine=true Actionscript.advancedWrappingPreservePhrases=true Actionscript.keepElseIfOnSameLine=true ASRearr_ElementSortStaticFunctions=true Actionscript.blankLinesBeforeImportBlock=1 ASRearr_ElementSortIncludes=true Actionscript.newLineBeforeBindableProperty=true Actionscript.ensureSwitchCasesHaveBraces=false ASRearr_ElementSortMetatags=false MXML.addNewlineAfterLastAttr=true MXML.useFormattingOfBoundAttributes=true ASRearr_UseImportOrder=true Actionscript.keepSpacesBeforeLineComments=false ASRearr_ElementSortStaticProperties=true Actionscript.advancedWrappingEnforceMax=false ASRearr_BlankLinesBeforeElement=Import\=2, Actionscript.advancedWrappingElements=165 Actionscript.keepSLCommentsOnColumn1=true ASRearr_UseCopyrightGeneration=false Actionscript.collapseSpacesForAdjacentParens=false ASRearr_ModifierOrder_Property=<Namespace>,override,public,private,protected,internal,static,dynamic,final Actionscript.useAdvancedWrapping=false MXML.sortExtraAttrs=false Actionscript.blankLinesToKeep=1 Actionscript.spacesAfterLabel=0 ASRearr_ElementSortImports=true ASRearr_AddDefaultHeaderForProperties=1 Actionscript.blankLinesBeforeControlStatements=1 ASRearr_MoveImportsOutsideClass=true Actionscript.advancedSpacesInsideLiteralBraces=1 Actionscript.alignDeclEqualsMode=1 Actionscript.putCatchOnNewLine=true ASRearr_GroupGettersAndSettersWithProperties=false Actionscript.breakLinesBeforeComma=false Actionscript.wrapIndentStyle=1000 Actionscript.tabCountForHangingIndent=1 Actionscript.spacesBeforeColonsInDeclarations=0 ASRearr_UseElementStaticPropertyVisibilityOrder=false Actionscript.ensureConditionalsHaveBraces=false MXML.useSpacesInsideAttributeBraces=true ASRearr_UseSectionHeadersInMXML=false MXML.onlyFormatASIfCDATABlock=false MXML.tagsWithASContent=.*\:add,.*\:added,.*\:activate,.*\:addedToStage,.*\:buttonDown,.*\:change,.*\:childAdd,.*\:childIndexChange,.*\:childRemove,.*\:clickHandler,.*\:clear,.*\:click,.*\:complete,.*\:contextMenu,.*\:copy,.*\:creationComplete,.*\:currentStateChange,.*\:currentStateChanging,.*\:cut,.*\:dataChange,.*\:deactivate,.*\:doubleClick,.*\:dragComplete,.*\:dragDrop,.*\:dragEnter,.*\:dragExit,.*\:dragOver,.*\:dragStart,.*\:effectEnd,.*\:effectStart,.*\:enterFrame,.*\:enterState,.*\:exitFrame,.*\:exitState,.*\:focusIn,.*\:focusOut,.*\:frameConstructed,.*\:hide,.*\:httpStatus,.*\:init,.*\:initialize,.*\:invalid,.*\:ioError,.*\:itemClick,.*\:itemRollOut,.*\:itemRollOver,.*\:keyDown,.*\:keyFocusChange,.*\:keyUp,.*\:menuHide,.*\:menuShow,.*\:middleClick,.*\:middleMouseDown,.*\:middleMouseUp,.*\:mouseDown,.*\:mouseUp,.*\:mouseOver,.*\:mouseMove,.*\:mouseOut,.*\:mouseFocusChange,.*\:mouseWheel,.*\:mouseDownOutside,.*\:mouseWheelOutside,.*\:move,.*\:nativeDragComplete,.*\:nativeDragDrop,.*\:nativeDragEnter,.*\:nativeDragExit,.*\:nativeDragOver,.*\:nativeDragStart,.*\:nativeDragUpdate,.*\:open,.*\:paste,.*\:preinitialize,.*\:progress,.*\:record,.*\:remove,.*\:removed,.*\:removedFromStage,.*\:render,.*\:resize,.*\:rightClick,.*\:rightMouseDown,.*\:rightMouseUp,.*\:rollOut,.*\:rollOver,.*\:scroll,.*\:securityError,.*\:selectAll,.*\:show,.*\:tabChildrenChange,.*\:tabEnabledChange,.*\:tabIndexChange,.*\:thumbDrag,.*\:thumbPress,.*\:thumbRelease,.*\:toolTipCreate,.*\:toolTipEnd,.*\:toolTipHide,.*\:toolTipShow,.*\:toolTipShown,.*\:toolTipStart,.*\:updateComplete,.*\:unload,.*\:valid,.*\:valueCommit,.*\:Script, Actionscript.advancedSpacesInsideArrayDeclBrackets=1 ASRearr_UseModifierOrder_Property=true Actionscript.advancedUseSpacesAroundEqualsInOptionalParameters=true MXML.tagsCannotFormat=mx\:String,fx\:String, MXML.useTagsDoNotFormatInside=false Actionscript.wrapEmbeddedXMLMode=2 Actionscript.advancedSpacesInsideParensInArgumentLists=0 Actionscript.spacesAfterColonsInFunctions=0 MXML.spacesBeforeEmptyTagEnd=1 MXML.alwaysUseMaxLineLength=false ASRearr_UseElementOrder=false ASRearr_UseSectionHeaders=false ActionScript.spacesBeforeArguments=0 ASRearr_ModifierOrder_Class=<Namespace>,override,public,private,protected,internal,static,dynamic,final ASRearr_UseElementStaticFunctionVisibilityOrder=false ASRearr_MetatagOrder=ArrayElementType,Bindable,DefaultProperty,Deprecated,Effect,Embed,Event,Exclude,ExcludeClass,IconFile,Inspectable,InstanceType,NonCommittingChangeEvent,RemoteClass,Style,SWF,Transient, Actionscript.dontIndentPackageItems=false MXML.tabCountForHangingIndent=1 MXML.tagsToHaveBlankLinesAddedBeforeThem= ASRearr_UseModifierOrder_Class=true Actionscript.alignDeclEquals=false Actionscript.useBraceStyle=true MXML.useAttrsToKeepOnSameLine=false Actionscript.spacesBeforeComma=0 ASRearr_ElementPropertyVisibilityOrder=public\:true,protected\:true,internal\:true,private\:true, Actionscript.alignLineCommentsAtColumn=0 Actionscript.spacesBeforeColonsInFunctions=0 Actionscript.spacesAroundColons=0 Actionscript.spacesInsideParens=1 MXML.blankLinesBeforeComments=0 Actionscript.spacesAroundAssignment=1 Actionscript.spacesAfterComma=1 ASRearr_ElementSortFunctions=true ASRearr_AddDefaultHeaderForStaticProperties=1 MXML.attrGroups=name\=properties|sort\=11|includeStates\=true|wrap\=54|attrs\=allowDisjointSelection,allowMultipleSelection,allowThumbOverlap,allowTrackClick,autoLayout,autoRepeat,automationName,cachePolicy,class,clipContent,condenseWhite,conversion,creationIndex,creationPolicy,currentState,data,dataDescriptor,dataProvider,dataTipFormatFunction,dayNames,defaultButton,direction,disabledDays,disabledRanges,displayedMonth,displayedYear,doubleClickEnabled,emphasized,enabled,explicitHeight,explicitMaxHeight,explicitMaxWidth,explicitMinHeight,explicitMinWidth,explicitWidth,firstDayOfWeek,focusEnabled,fontContext,height,horizontalLineScrollSize,horizontalPageScrollSize,horizontalScrollBar,horizontalScrollPolicy,horizontalScrollPosition,htmlText,icon,iconField,id,imeMode,includeInLayout,indeterminate,label,labelField,labelFunction,labelPlacement,labels,layout,lineScrollSize,listData,liveDragging,maxChars,maxHeight,maxScrollPosition,maxWidth,maxYear,maximum,measuredHeight,measuredMinHeight,measuredMinWidth,measuredWidth,menuBarItemRenderer,menuBarItems,menus,minHeight,minScrollPosition,minWidth,minYear,minimum,mode,monthNames,monthSymbol,mouseFocusEnabled,pageScrollSize,pageSize,percentHeight,percentWidth,scaleX,scaleY,scrollPosition,selectable,selectableRange,selected,selectedDate,selectedField,selectedIndex,selectedRanges,showDataTip,showRoot,showToday,sliderDataTipClass,sliderThumbClass,snapInterval,source,states,stepSize,stickyHighlighting,styleName,text,text,thumbCount,tickInterval,tickValues,toggle,toolTip,transitions,truncateToFit,validationSubField,value,value,verticalLineScrollSize,verticalPageScrollSize,verticalScrollBar,verticalScrollPolicy,verticalScrollPosition,width,x,y,yearNavigationEnabled,yearSymbol,|data\=-1|\nname\=events|sort\=13|includeStates\=true|wrap\=54|attrs\=add,buttonDown,change,childAdd,childIndexChange,childRemove,clickHandler,complete,creationComplete,currentStateChange,currentStateChanging,dataChange,dragComplete,dragDrop,dragEnter,dragExit,dragOver,effectEnd,effectStart,enterState,exitState,hide,initialize,invalid,itemClick,itemRollOut,itemRollOver,menuHide,menuShow,mouseDownOutside,mouseWheelOutside,move,preinitialize,progress,record,remove,resize,scroll,show,thumbDrag,thumbPress,thumbRelease,toolTipCreate,toolTipEnd,toolTipHide,toolTipShow,toolTipShown,toolTipStart,updateComplete,valid,valueCommit,added,activate,addedToStage,clear,click,contextMenu,copy,cut,deactivate,doubleClick,dragStart,enterFrame,exitFrame,focusIn,focusOut,frameConstructed,httpStatus,init,ioError,keyDown,keyFocusChange,keyUp,middleClick,middleMouseDown,middleMouseUp,mouseDown,mouseUp,mouseOver,mouseMove,mouseOut,mouseFocusChange,mouseWheel,nativeDragComplete,nativeDragDrop,nativeDragEnter,nativeDragExit,nativeDragOver,nativeDragStart,nativeDragUpdate,open,paste,removed,removedFromStage,render,rightClick,rightMouseDown,rightMouseUp,rollOut,rollOver,securityError,selectAll,tabChildrenChange,tabEnabledChange,tabIndexChange,unload,|data\=-1|\nname\=styles|sort\=13|includeStates\=true|wrap\=54|attrs\=backgroundAlpha,backgroundAttachment,backgroundColor,backgroundDisabledColor,backgroundImage,backgroundSize,backgroundSkin,barColor,barSkin,borderColor,borderSides,borderSkin,borderStyle,borderThickness,bottom,color,cornerRadius,dataTipOffset,dataTipPrecision,dataTipStyleName,disabledColor,disabledIcon,disabledIconColor,disabledSkin,disbledOverlayAlpha,downArrowDisabledSkin,downArrowDownSkin,downArrowOverSkin,downArrowUpSkin,downIcon,downSkin,dropShadowColor,dropShadowEnabled,errorColor,fillAlphas,fillColors,focusAlpha,focusBlendMode,focusRoundedCorners,focusSkin,focusThickness,fontAntiAliasType,fontFamily,fontGridFitType,fontSharpness,fontSize,fontStyle,fontThickness,fontWeight,fontfamily,headerColors,headerStyleName,highlightAlphas,horizontalAlign,horizontalCenter,horizontalGap,horizontalScrollBarStyleName,icon,iconColor,indeterminateMoveInterval,indeterminateSkin,itemDownSkin,itemOverSkin,itemUpSkin,kerning,labelOffset,labelStyleName,labelWidth,leading,left,letterSpacing,maskSkin,menuStyleName,nextMonthDisabledSkin,nextMonthDownSkin,nextMonthOverSkin,nextMonthSkin,nextMonthUpSkin,nextYearDisabledSkin,nextYearDownSkin,nextYearOverSkin,nextYearSkin,nextYearUpSkin,overIcon,overSkin,paddingBottom,paddingLeft,paddingRight,paddingTop,prevMonthDisabledSkin,prevMonthDownSkin,prevMonthOverSkin,prevMonthSkin,prevMonthUpSkin,prevYearDisabledSkin,prevYearDownSkin,prevYearOverSkin,prevYearSkin,prevYearUpSkin,repeatDelay,repeatInterval,right,rollOverColor,rollOverIndicatorSkin,selectedDisabledIcon,selectedDisabledSkin,selectedDownIcon,selectedDownSkin,selectedOverIcon,selectedOverSkin,selectedUpIcon,selectedUpSkin,selectionColor,selectionIndicatorSkin,shadowColor,shadowDirection,shadowDistance,showTrackHighlight,skin,slideDuration,slideEasingFunction,strokeColor,strokeWidth,textAlign,textDecoration,textIndent,textRollOverColor,textSelectedColor,themeColor,thumbDisabledSkin,thumbDownSkin,thumbIcon,thumbOffset,thumbOverSkin,thumbUpSkin,tickColor,tickLength,tickOffset,tickThickness,todayColor,todayIndicatorSkin,todayStyleName,top,tracHighlightSkin,trackColors,trackHeight,trackMargin,trackSkin,upArrowDisabledSkin,upArrowDownSkin,upArrowOverSkin,upArrowUpSkin,upIcon,upSkin,verticalAlign,verticalCenter,verticalGap,verticalScrollBarStyleName,weekDayStyleName,|data\=-1|\nname\=effects|sort\=13|includeStates\=true|wrap\=54|attrs\=addedEffect,completeEffect,creationCompleteEffect,focusInEffect,focusOutEffect,hideEffect,mouseDownEffect,mouseUpEffect,moveEffect,removedEffect,resizeEffect,rollOutEffect,rollOverEffect,showEffect,|data\=-1|\nname\=MyGroup|sort\=13|includeStates\=true|wrap\=54|attrs\=|data\=-1|\nname\=xmlnsgroup|sort\=13|includeStates\=true|wrap\=54|attrs\=xmlns\:.*,|data\=-1|\nname\=Special_Group–Other Attributes|sort\=11|includeStates\=true|wrap\=54|attrs\=|data\=-1|\n Actionscript.leaveExtraWhitespaceAroundVarDecls=false Actionscript.spacesAfterColonsInDeclarations=0 ASRearr_MinorSectionHeader=style\=1|width\=40|blankLines\=0|fillChar\=-|text\=|linesBefore\=1| Actionscript.ensureLoopsHaveBraces=false Actionscript.braceStyle=4 ASRearr_ElementSortProperties=true MXML.keepBlankLines=true

Word Document Attached.

Flex Formatting Properties