hi all,
while creating a Itemrender of for the list , I am facing stranger problems
1. the data displayed in the itemrendere gets screwed up while scrolling
2. it takes lots of time (> 1 sec ) to render list


Can somebody please anyalyse this and tell me that what is that which is
taking resources ...
Any help would be great.



here is the itemrendere :


package ms.chatmodule.view
{
    import flash.events.MouseEvent;

    import ms.chatmodule.controls.ChatController;
    import ms.imfusion.model.MemberObject;
    import ms.imfusion.util.view.ImageHolder;

    import mx.containers.Canvas;
    import mx.controls.Image;
    import mx.controls.Label;
    import mx.controls.listClasses.BaseListData;
    import mx.controls.listClasses.IDropInListItemRenderer;
    import mx.controls.listClasses.IListItemRenderer;
    import mx.controls.listClasses.ListData;
    import mx.core.BitmapAsset;
    import mx.core.IDataRenderer;
    import mx.core.UITextField;


    /**
     * Displays one row in memberList
     */
    public class MemberBox extends Canvas implements IDataRenderer,
                              IDropInListItemRenderer, IListItemRenderer
    {
        private var memberName:Label;

        private var memberStatus:UITextField;

        [Embed(source='ms/felix/css/assets/felixStyle.swf',
symbol='memberOnline')]
        private var onlineIcon:Class;

        [Embed(source='ms/felix/css/assets/felixStyle.swf',
symbol='memberOffline')]
        private var offlineIcon:Class;

        [Embed(source='ms/felix/css/assets/felixStyle.swf',
symbol='memberBusy')]
        private var busyIcon:Class;

        [Embed(source='ms/felix/css/assets/felixStyle.swf',
symbol='organizer')]
        private var organizerIcon:Class;

        private var memberObject:MemberObject;
        private var statusImage:Image;
        private var orgnizerImage:Image;
        private var imgObj:BitmapAsset;
        private var avatarHolder:ImageHolder;
        private var serviceStatus:String;
        private var memberColor:uint;
        private var statusIcon:Object;
        private var statusString:String;
        /**
         * Constructor
         */
        function MemberBox() {
            super();
            this.horizontalScrollPolicy = "off";
            this.verticalScrollPolicy = "off"
        }

        override public function set data(value:Object):void {
            super.data = value;
            memberObject = value as MemberObject;
            memberColor = 0xbababa;
            orgnizerImage.source =  new organizerIcon();
            if(memberObject.userRole == "A"){
                orgnizerImage.visible = true;
            }
            else{
                orgnizerImage.visible = false;
            }
            avatarHolder.unloadImage();
            //trace("setData MemberBox " + memberObject.name + " --- " +
this.listData.owner["listData"].label)
            serviceStatus = this.listData.owner["listData"].label;

            statusString = "";
            statusIcon = "";
            getMemberStatuts();
            getStatusIcon();
            invalidateProperties();
        }

        private function getMemberStatuts():void {
            if(serviceStatus == "L") { // event is locked
              if(memberObject.responseToLockedChoice == "Y") {
                  memberColor = 0x196a0c;
              }else if(memberObject.responseToLockedChoice == "N") {
                memberColor = 0xff2a0e;
              }
            }
            else if(memberObject.hasResponded == 'Y'){
                memberColor = 0x0a92cb;
            }
            if(memberObject.hasSeen == "U") {
                    statusString = "(Not Seen Yet)";
                if(memberObject.inviteEmailStatus == "FD") {
                     statusString= "(Delivery Failed)";
                }
            }
        }


        private function getStatusIcon():void {
            if(memberObject.presence == "Online"){
                statusIcon = new onlineIcon() ;
            }
            if(memberObject.presence == "Offline"){
                statusIcon = new offlineIcon();
            }
            if(memberObject.presence == "Busy"){
                statusIcon = new busyIcon();
            }
        }

        override protected function createChildren():void {
            //trace("createChildren MemberBox");
            super.createChildren();
            orgnizerImage = new Image();
            addChild(orgnizerImage);
            orgnizerImage.height = 10;
            orgnizerImage.width = 10;

            avatarHolder = new ImageHolder();
            addChild(avatarHolder);
            avatarHolder.height = 35;
            avatarHolder.width = 35;

            memberName = new Label();
            memberName.styleName = "NormalTextBoldSmall"
            addChild(memberName);

            memberStatus = new UITextField();
            memberStatus.styleName = "NormalTextSmall";
            addChild(memberStatus);

            statusImage = new Image();
            addChild(statusImage);

            statusImage.height = 5;
            statusImage.width = 5;
            addEventListener(MouseEvent.CLICK,showChatWindow)

        }

        private function showChatWindow(event:MouseEvent):void {
            ChatController.getInstance().getChatDetails(memberObject.userId
);
        }

        override protected function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void{
            //trace("updateDisplayList MemberBox"+ memberObject.name)
            super.updateDisplayList(unscaledWidth,unscaledHeight)
            /* trace("updateDisplayList MemberBox " + memberObject.name + "
--- "+ this.listData.owner["listData"].label)
            avatarHolder.y=0;
            memberName.x = avatarHolder.width + avatarHolder.x + 10 ;
            memberName.width = 70 ;
            var widthofmemberName:Number = (memberName.textWidth>65) ? 65 :
memberName.textWidth;
            memberStatus.x =  memberName.x + widthofmemberName
            statusImage.x = memberStatus.x + memberStatus.textWidth+ 10;
            statusImage.y = memberName.y + 5;
            avatarHolder.x = orgnizerImage.width + 10;  */
        }


        override protected function measure():void{
            //trace(" measure MemberBox"+ memberObject.name);
            super.measure();
            avatarHolder.imageSource = memberObject.imageUrl;
            memberName.setStyle("color",memberColor);
            memberStatus.text = statusString;
            memberName.text = memberObject.name;
            avatarHolder.y=0;
            memberName.x = avatarHolder.width + avatarHolder.x + 10 ;
            memberName.width = 70 ;
            var widthofmemberName:Number = (memberName.textWidth>65) ? 65 :
memberName.textWidth;
            memberStatus.x =  memberName.x + widthofmemberName
            statusImage.x = memberStatus.x + memberStatus.textWidth+ 10;
            statusImage.y = memberName.y + 5;
            avatarHolder.x = orgnizerImage.width + 10;

        }

        override protected function commitProperties():void {
            memberStatus.text = statusString;
            memberName.text = memberObject.name;
            memberName.setStyle("color",memberColor);
            super.commitProperties();
            statusImage.source = statusIcon;
            //trace(" commitProperties MemberBox"+ memberObject.name);
        }
         /**
         *  @private
         *  Storage for the listData property.
         */
        private var _listData:ListData;

        [Bindable("dataChange")]

        /**
         *  The implementation of the <code>listData</code> property
         *  as defined by the IDropInListItemRenderer interface.
         *  @see mx.controls.listClasses.IDropInListItemRenderer
         */
        public function get listData():BaseListData {
            return _listData;
        }

        /**
         *  @private
         */
        public function set listData(value:BaseListData):void {
            _listData = ListData(value);
            invalidateProperties();
        }



    }
}




Regards
PS

Reply via email to