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]> 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] *On Behalf Of *learner > *Sent:* Friday, January 11, 2008 2:23 AM > *To:* [email protected]; [EMAIL PROTECTED] > *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 > > >
