You CAN override set data() in UIComponent.

 

Look at the code for ListItemRenderer for a very good example of how to
do an renderer.  Or see Alex's examples.

 

Tracy

 

________________________________

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of learner
Sent: Sunday, January 13, 2008 11:56 PM
To: [EMAIL PROTECTED]
Cc: flexcoders@yahoogroups.com
Subject: [flexcoders] Re: [flexcomponents] item renderer for list

 


but if I don't extend canvas...it does not let me override the "set
data" method if i don't make a override for set data....how can modify
the properties of the data supplied to item render  from
dataprovider...?? 

On Jan 11, 2008 11:56 PM, Alex Harui <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> > wrote:

You should extend UIComponent and not Canvas.  You are not using any
Canvas features so you don't need the weight.

 

________________________________

From: [EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>
[mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> ] On Behalf Of learner
Sent: Friday, January 11, 2008 2:23 AM
To: [EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> ; flexcoders@yahoogroups.com
<mailto:flexcoders@yahoogroups.com> 
Subject: [flexcomponents] item renderer for list

 

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