Tuesday, 2 October 2012

Spark Datagrid skin for conditionally blink Row.




<fx:Component id="rowBackground">

            <s:Rect implements="spark.components.gridClasses.IGridVisualElement">
                <fx:Declarations>
                    <s:Animate id="myBlinkingEffect" 
                               repeatCount="0" 
                               repeatBehavior="reverse"
                               target="{rowBackgroundFillColor}"
                               duration="1000"
                               >
                        <s:motionPaths>
                            <s:SimpleMotionPath property="alpha"
                                                valueFrom="1"
                                                valueTo="0"
                                                />
                        </s:motionPaths>
                    </s:Animate>
                    <mx:DateFormatter id="df" formatString="MM/DD/YYYY LL:NN:SS A"/>
                </fx:Declarations>
                <fx:Script>
                    <![CDATA[
                        import spark.components.DataGrid;
                        import spark.components.Grid;

                        /**
                         * @private
                         */  
                        public function prepareGridVisualElement(grid:Grid, rowIndex:int, columnIndex:int):void
                        {
                            const dataGrid:DataGrid = grid.dataGrid;
                            if (!dataGrid)
                                return;

                            var item:Object;
                            if (rowIndex < grid.dataProvider.length) {
                                item = grid.dataProvider[rowIndex];  // the data item from this row

                                if ( item.StatusColor != "") {
                                    rowBackgroundFillColor.color = item.StatusColor

                                }   else {
                                    rowBackgroundFillColor.color = 0xFFFFFF;
                                }
                                if ( new Date(df.format(item.ReminderTime)) < new Date() ){
                                        rowBackgroundFillColor.color = 0xFF0000;
                                    myBlinkingEffect.play();//Blinking
                                } 
                                else {
                                    myBlinkingEffect.stop();
                                    rowBackgroundFillColor.alpha=0.5;
                                }
                            }
                            else
                            {
                            rowBackgroundFillColor.color = 0xFFFFFF;
                            }
                        }
                    ]]>
                </fx:Script>  
                <s:fill>
                    <!--- @private -->  
                    <s:SolidColor id="rowBackgroundFillColor" color="0xFFFFFF" alpha="0.5"/>
                </s:fill>
            </s:Rect>
        </fx:Component>

No comments:

Post a Comment