Monday, December 15, 2008

DataGrid Pagenation

?xml version="1.0" encoding="utf-8" ?>
- mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="InitApp()" xmlns:MyComp="*">
- mx:Script>
- [CDATA[
import mx.collections.ArrayCollection;
import mx.events.ItemClickEvent;
import mx.controls.Button;
import mx.controls.Alert;

[Bindable]
public var myData:ArrayCollection = new ArrayCollection();
public var orgData:ArrayCollection = new ArrayCollection();
[Bindable]
public var nav:ArrayCollection = new ArrayCollection();
public var pageSize:uint = 10;
public var navSize:uint = 10;
private var index:uint = 0;
private var navPage:uint = 1;

private function InitApp():void
{
for( var x:uint = 1; x <= 500; x++ )
{
var obj:Object = new Object();
obj.Id = x.toString();
obj.Name = "Column " + x.toString();
obj.Street = "5555 Street";
obj.Title = "CEO";
obj.City = "El Paso";

orgData.addItem(obj);
}
refreshDataProvider(index);
createNavBar(Math.ceil(orgData.length/pageSize));
}

private function createNavBar(pages:uint = 1,set:uint = 0):void
{
nav.removeAll();
if( pages > 1 )
{
if( set != 0 )
{
nav.addItem({label:"<<",data:0});
if( (set - navSize ) >= 0 )
{
nav.addItem({label:"<",data:set - navSize});
}
else
{
nav.addItem({label:"<",data:0});
}
}

for( var x:uint = 0; x < navSize; x++)
{
var pg:uint = x + set;
nav.addItem({label: pg + 1,data: pg});
}
if( pg < pages - 1 )
{
nav.addItem({label:">",data:pg + 1});
nav.addItem({label:">>",data:pages - pageSize});
}
}
}

private function navigatePage(event:ItemClickEvent):void
{
refreshDataProvider(event.item.data);
var lb:String = event.item.label.toString();
if( lb.indexOf("<") > -1 || lb.indexOf(">") > -1 )
{
createNavBar(Math.ceil(orgData.length/pageSize),event.item.data);
if( event.item.data == 0 )
{
pageNav.selectedIndex = 0;
}
else
{
pageNav.selectedIndex = 2;
}
}

}

private function refreshDataProvider(start:uint):void
{
myData = new ArrayCollection( orgData.source.slice((start * pageSize),(start * pageSize) + pageSize) );
}


]]>
mx:Script>
- mx:VBox verticalGap="0">
mx:DataGrid id="dg" dataProvider="{myData}" />
mx:ToggleButtonBar id="pageNav" itemClick="navigatePage(event)" dataProvider="{nav}" width="{dg.width}" />
mx:VBox>
mx:Application>

Monday, December 8, 2008

TweenEffect to an Image(Rotating)

?xml version="1.0"?>
-- effects/MainRotation.mxml -->
mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:MyComp="myEffects.*" paddingTop="150">
MyComp:Rotation id="Rotate90" angleFrom="0" angleTo="360" duration="1000" />
mx:Image source="@Embed(source='1.png')" mouseDownEffect="{Rotate90}"/>
mx:Application>


------------------Rotation.as-----------------------------------------------

package myEffects
{
// myEffects/Rotation.as
import mx.effects.TweenEffect;
import mx.effects.EffectInstance;
import mx.effects.IEffectInstance;

public class Rotation extends TweenEffect
{
// Define parameters for the effect.
public var angleFrom:Number = 0;
public var angleTo:Number = 360;

// Define constructor with optional argument.
public function Rotation(targetObj:* = null) {
super(targetObj);
instanceClass= RotationInstance;
}

// Override getAffectedProperties() method to return "rotation".
override public function getAffectedProperties():Array {
return ["rotation"];
}

// Override initInstance() method.
override protected function initInstance(inst:IEffectInstance):void {
super.initInstance(inst);
RotationInstance(inst).angleFrom = angleFrom;
RotationInstance(inst).angleTo = angleTo;
}
}
}


-------------------------------RotationInstance.as-------------------------------

package myEffects
{
// myEffects/RotationInstance.as
import mx.effects.effectClasses.TweenEffectInstance;
import mx.effects.Tween;

public class RotationInstance extends TweenEffectInstance
{
// Define parameters for the effect.
public var angleFrom:Number;
public var angleTo:Number;

public function RotationInstance(targetObj:*) {
super(targetObj);
}

// Override play() method class.
override public function play():void {
// All classes must call super.play().
super.play();
// Create a Tween object. The tween begins playing immediately.
var tween:Tween =
createTween(this, angleFrom, angleTo, duration);
}

// Override onTweenUpdate() method.
override public function onTweenUpdate(val:Object):void {
target.rotation = val;
}

// Override onTweenEnd() method.
override public function onTweenEnd(val:Object):void {
// All classes that implement onTweenEnd()
// must call super.onTweenEnd().
super.onTweenEnd(val);
}
}
}

Monday, December 1, 2008

Remove Duplicates from an Array & Display in List

?xml version="1.0" encoding="utf-8"?>
mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical" verticalAlign="middle" backgroundColor="white" creationComplete="init()">
mx:Script>
![CDATA[
private var keys:Object = {};
private function init():void {
/* Create a dummy data source with some semi-random data. */
var arr:Array = [];
arr.push({data:1, label:"one"});
arr.push({data:1, label:"one"});
arr.push({data:1, label:"one"});
arr.push({data:1, label:"one"});
arr.push({data:2, label:"two"});
arr.push({data:2, label:"two"});
arr.push({data:2, label:"two"});
arr.push({data:1, label:"one"});
arr.push({data:3, label:"three"});
arr.push({data:3, label:"three"});
/* Filter the original array and call the removeDuplicates() function on each item in the array.*/
var filteredArr:Array = arr.filter(removedDuplicates);
arrColl.source = arr;
dedupedArrColl.source = filteredArr;
}
private function removedDuplicates(item:Object, idx:uint, arr:Array):Boolean {
if (keys.hasOwnProperty(item.data)) {
/* If the keys Object already has this property, return false and discard this item. */
return false;
} else {
/* Else the keys Object doesN'T already have this key, so add this item 2 the new dataprovider*/
keys[item.data] = item;
return true;
}
}
]]>
mx:Script>
mx:ArrayCollection id="arrColl" />
mx:ArrayCollection id="dedupedArrColl" />
mx:HBox>
mx:VBox>
mx:Label text="Original ({arrColl.length} items):" />
mx:List dataProvider="{arrColl}" />
mx:VBox>
mx:VBox>
mx:Label text="Filtered ({dedupedArrColl.length} items):" />
mx:List dataProvider="{dedupedArrColl}" />
mx:VBox>
mx:HBox>
mx:Application>