Building an Adobe AIR application for Twitter

The code below uses the TwitterScript ActionScript API.  For a working example, check out Tour de Flex in the Cloud API category.

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundColor="#323232" width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
    <mx:Script>
        <![CDATA[
            
            import twitter.api.*;
            import twitter.api.data.*;
            import twitter.api.events.*;
            import flash.utils.Dictionary;
            import mx.managers.CursorManager;
            
            
            [Bindable]
            private var userArray:Array;
            
            [Bindable]
            private var statusDict:Dictionary = new Dictionary();
            
            private function onLogin():void
            {
                var twit:Twitter = new Twitter();
                CursorManager.setBusyCursor();
                twit.setAuthenticationCredentials(userid.text,pw.text);
                twit.addEventListener(TwitterEvent.ON_FRIENDS_RESULT,onFriendsLoad);
                twit.loadFriends(userid.text,true);
            }
            
            private function onFriendsLoad(evt:TwitterEvent):void
            {
                userArray = Array(evt.data).pop();
                for each(var item in userArray) {
                    var status:TwitterStatus = item.status;
                    statusDict[item.id]=status.text;
                }
                CursorManager.removeBusyCursor();
            }
            
            private function getStatus(item:Object,col:DataGridColumn):String
            {
                return statusDict[item.id];
              
            }
        ]]>
    </mx:Script>
    <mx:VBox width="100%" height="100%">
        <mx:Form defaultButton="{btn}" color="#FFFFFF" >
        <mx:FormHeading label="Twitter Login Data"/>
            <mx:FormItem label="Userid:">
                <mx:TextInput id="userid" width="200" color="#000000"/>
            </mx:FormItem>
            <mx:FormItem label="Password:">
                <mx:TextInput id="pw" width="200" displayAsPassword="true" color="#000000"/>
            </mx:FormItem>
            <mx:FormItem>
                <mx:Button id="btn" label="Login" click="onLogin()"/>
            </mx:FormItem>
        </mx:Form>
        <mx:DataGrid  id="dgData" dataProvider="{userArray}" width="100%" height="100%" variableRowHeight="true" 
            x="100" doubleClickEnabled="true" 
            doubleClick="navigateToURL(new URLRequest(dgData.selectedItem.profileImageUrl))" selectionColor="#6496C3">
            <mx:columns>
                <mx:DataGridColumn headerText="Image" width="60" >
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:Image  source="{data.profileImageUrl}" horizontalAlign="center" verticalAlign="middle"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
                <mx:DataGridColumn dataField="screen_name" headerText="Screen Name" width="95"/>
                <mx:DataGridColumn labelFunction="getStatus" headerText="Status" width="500" wordWrap="true"/>
            </mx:columns>
        </mx:DataGrid>    
    </mx:VBox>
</mx:WindowedApplication>