Hello, Nope that's not it... As I said, if you remove all the calls to the sub class Highlighter (by commenting the data setter ( override public function set data(value:Object):void )
and removing the CompleteEventHandler ( private function SentenceRendererCreationCompleteEventHandler > ():void ) then everything will work fine. (Aka you will be able to do drag & drop and then select any item in the list etc.) So the problem lies in the sub class _Highlighter. Once again my theory is that since this class is totally custom my guess is that there is an Interface that it should implements as a sub component of a renderer... thanx ! --- In [email protected], "yossigordin" <[EMAIL PROTECTED]> wrote: > > Hi, > > When a drag-n-drop operation is made, the data setter is not fired, > rather the data changeEvent. > I think that the problem is with your itemRenderer - you have > overriden the data setter but you didn't add an event listener for > dataChange events. > Try to add a Flex.DataChangeEvent listener that does exactly what > the setter does. > > Hope it helps > Josef > > --- In [email protected], "icepaco33" <icepaco33@> wrote: > > > > Humble excuse Alex, > > but you are not answering my question / problem. > > > > I have no problem with my highlight / selection showing... > > My problem is that if I do drag & drop operation and if I change > the > > Data Provider then sometimes I can no longer select some items even > > tho they are showing... > > > > I have found out that if I remove my Highlighter class from my > > renderer then everything will work out fine (I can drag & drop and > > then select any / every items in the list). > > > > So I was wondering if it is because my Highlighter class isn't > > implementing some Interface that are necessary for a sub component > of > > a Renderer... > > > > Thanx ! > > --- In [email protected], "Alex Harui" <aharui@> wrote: > > > > > > The Flex classes draw highlight and selection behind the > renderer, so > > > any renderer with an opaque background will obscure it. Folks > either > > > test for isItemSelected/Highlighted and change their own > background > > > color, or remove the background color. You can see examples on > my blog > > > (blogs.adobe.com/aharui > > > > > > > > > > > > ________________________________ > > > > > > From: [email protected] > [mailto:[EMAIL PROTECTED] On > > > Behalf Of icepaco33 > > > Sent: Monday, November 12, 2007 9:22 PM > > > To: [email protected] > > > Subject: [flexcoders] Re: Can't select an item renderer in a list > > > > > > > > > > > > Salutations, > > > I have found out the culprit. > > > So first here is the code of the renderer : > > > > > > <?xml version="1.0" encoding="utf-8"?> > > > <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml > > > <http://www.adobe.com/2006/mxml> " width="100%" > > > styleName="myStyle1" verticalScrollPolicy="off" > > > implements="mx.managers.IFocusManagerComponent" > toolTip="{data.uid}" > > > creationComplete="SentenceRendererCreationCompleteEventHandler > ()"> > > > <mx:states> > > > <mx:State name="BeingPlayed"> > > > <mx:SetStyle target="{txtSentence}" name="color" > value="#ff0000"/> > > > </mx:State> > > > <mx:State name="Selected"> > > > <mx:SetProperty target="{txtSentence}" name="condenseWhite" > > > value="false"/> > > > <mx:SetEventHandler name="currentStateChange"> > > > > > > > <mx:handler>SentenceRendererSelectedCurrentStateChangeEventHandler() > </mx > > > :handler> > > > </mx:SetEventHandler> > > > </mx:State> > > > <mx:State name="HasBeenPlayed"> > > > <mx:SetStyle target="{txtSentence}" name="color" > value="#808080"/> > > > <mx:SetStyle name="themeColor"/> > > > </mx:State> > > > </mx:states> > > > <mx:Style source="Ressources/Librairie/USlicFont.css"/> > > > <mx:TextArea id="txtSentence" wordWrap="true" width="90%" > > > borderStyle="none" text="{data.Text}" textIndent="25" > > > styleName="myStyle1" textDecoration="none" selectable="false" > > > verticalScrollPolicy="off" minHeight="60"> > > > </mx:TextArea> > > > <mx:Button id="btnSentence" width="25" label="S{data.indexNo}" > > > height="15" color="#ffffff"> > > > > > > <mx:downSkin>@Embed('Ressources/Librairie/History/Btn_S_D.swf') > </mx:down > > > Skin> > > > > > > <mx:overSkin>@Embed('Ressources/Librairie/History/Btn_S_U.swf') > </mx:over > > > Skin> > > > > > > <mx:upSkin>@Embed('Ressources/Librairie/History/Btn_S_U.swf') > </mx:upSkin > > > > > > > </mx:Button> > > > <mx:Script> > > > <![CDATA[ > > > import text.Highlighter; > > > private var _Highlighter:Highlighter; > > > private var _strDefaultState:String = "non"; > > > > > > override public function set data(value:Object):void > > > { > > > super.data = value; > > > if(this.currentState == "Selected") > > > { > > > _Highlighter.reset(); > > > _Highlighter.highlightText(); > > > } > > > } > > > public function BeingPlayed():void > > > { > > > //Change the text color > > > _strDefaultState = currentState; > > > _Highlighter.reset(); > > > this.currentState = "BeingPlayed"; > > > } > > > public function HasBeenPlayed():void > > > { > > > //Change the text color > > > _Highlighter.reset(); > > > this.currentState = "HasBeenPlayed"; > > > } > > > public function HasBeenSelected():void > > > { > > > this.currentState = "Selected"; > > > } > > > public function ResetRenderer():void > > > { > > > if(_strDefaultState != "non") > > > { > > > _Highlighter.reset(); > > > currentState=_strDefaultState; > > > _strDefaultState = "non"; > > > } > > > } > > > public function BackToDefault():void > > > { > > > _Highlighter.reset(); > > > currentState = ""; > > > } > > > private function getTextField(component:TextArea):TextField{ > > > var len:int = component.numChildren; > > > var r:TextField = new TextField(); > > > for(var i:int=0; i<len; i++){ > > > var thisChild:DisplayObject = component.getChildAt(i); > > > if(thisChild is TextField){ > > > var textChild:TextField = thisChild as TextField; > > > r = textChild; > > > } > > > } > > > return r; > > > } > > > private function > > > SentenceRendererSelectedCurrentStateChangeEventHandler():void > > > { > > > _Highlighter.highlightText(); > > > } > > > > > > private function SentenceRendererCreationCompleteEventHandler > ():void > > > { > > > _Highlighter = new Highlighter(getTextField > (txtSentence),0xfffcee21); > > > } > > > > > > ]]> > > > </mx:Script> > > > </mx:Canvas> > > > > > > The problem resides in the sub components Highlighter. This > component > > > draws a rectangle in the back of the text. (This is someone > else's lib > > > that I modified a bit) > > > > > > Anyway if I don't refer to this sub class at all then my > application > > > works fine. > > > > > > I believe I have to implements some Interface from Flex so that > I can > > > use this sub class in my Renderer... > > > > > > Thanx for the help > > > > > > --- In [email protected] <mailto:flexcoders% > 40yahoogroups.com> > > > , "Alex Harui" <aharui@> wrote: > > > > > > > > The UID's in the data, not the renderer matter. Renderers > definitely > > > > get recycled so you can't store anything about selection in the > > > renderer > > > > and have to use isItemSelected to update it during > updateDisplayList. > > > > > > > > > > > > > > > > If you want to post a mini-example, we can take a look. > > > > > > > > > > > > > > > > ________________________________ > > > > > > > > From: [email protected] <mailto:flexcoders% > 40yahoogroups.com> > > > [mailto:[email protected] <mailto:flexcoders% > 40yahoogroups.com> > > > ] On > > > > Behalf Of icepaco33 > > > > Sent: Sunday, November 11, 2007 4:04 PM > > > > To: [email protected] <mailto:flexcoders% > 40yahoogroups.com> > > > > Subject: [flexcoders] Re: Can't select an item renderer in a > list > > > > > > > > > > > > > > > > No I do not have the same problem if I use the default > renderer. > > > > I checked the UIDs in the following manner : > > > > > > > > - Manually changing the UID of each renderer to make sure they > are > > > > unique > > > > > > > > - Using debug mode and monitoring the UID : they are > different. > > > > > > > > In both cases tho the behavior of this bug is exactly the > same : > > > > > > > > Behavior of the list during a drag and drop is to create 2 new > > > renderer: > > > > > > > > 1 that represent the item being dragged which will never make > it to > > > > the list. (So that new item doesn't cause the bug) > > > > 1 that will take the place of the item that you dragged but > will > > > > contain the info of the item next to it. > > > > > > > > That last item for whatever reason will be considerer by the > list's > > > > selection model as the last item in the list. > > > > > > > > So while you can still see the other items in the list you can > no > > > > longer rollover / select them. > > > > > > > > If I repopulate the list by changing the list's dataProvider > then for > > > > some reason the list will use the renderer's already there but > in > > > > reverse order. That means that the first item is selectable > but none > > > > of the following items will be.(Unless the new list is longer > than the > > > > old one which means that all the new items which will require > new > > > > renderers will then be selectable) > > > > > > > > Hope this help clarify ! > > > > > > > > --- In [email protected] > > > <mailto:flexcoders%40yahoogroups.com> > > > <mailto:flexcoders%40yahoogroups.com> > > > > , "Alex Harui" <aharui@> wrote: > > > > > > > > > > Double check the UIDs. Try using the default renderer and > see if you > > > > > still have the problem. > > > > > > > > > > > > > > > > > > > > ________________________________ > > > > > > > > > > From: [email protected] > > > <mailto:flexcoders%40yahoogroups.com> > > > <mailto:flexcoders%40yahoogroups.com> > > > > [mailto:[email protected] > > > <mailto:flexcoders%40yahoogroups.com> > > > <mailto:flexcoders%40yahoogroups.com> > > > > ] On > > > > > Behalf Of icepaco33 > > > > > Sent: Sunday, November 11, 2007 5:52 AM > > > > > To: [email protected] <mailto:flexcoders% > 40yahoogroups.com> > > > <mailto:flexcoders%40yahoogroups.com> > > > > > Subject: [flexcoders] Can't select an item renderer in a list > > > > > > > > > > > > > > > > > > > > Greetings everybody, > > > > > I have a peculiar problem. I have a list that is rendered by > a > > > custom > > > > > item renderer. The list allows multiple selection and also > drag and > > > > > drop operation (in order to shuffle the item around) > > > > > > > > > > However when I move an item further down the list (drag & > drop) then > > > I > > > > > can't select the items that are below the item immediately > following > > > > > the item I moved. > > > > > > > > > > Also if I change the content of my data provider, I will > experience > > > > > the same thing (can't select the items except the first one) > > > > > > > > > > I found out something very interesting : > > > > > It seems that my list doesn't allow me to select items which > the > > > > > renderer is older (has been instanciated before) the previous > > > > renderer. > > > > > > > > > > Allow me to demonstrate : > > > > > If I have the following renderers : > > > > > > > > > > Renderer1 > > > > > Renderer2 > > > > > Renderer5 > > > > > Renderer3 > > > > > Renderer4 > > > > > > > > > > And assuming the number after 'renderer' indicates the order > into > > > > > which the renderer have been instanciated in my list then in > the > > > above > > > > > situation I will not be able to select or rollover Renderer3 > and > > > > > Renderer4... > > > > > > > > > > This I believe is the problem that happens when I do a drag > & drop > > > > > operation and or when I reload my list by changing the > > > DataProvider... > > > > > > > > > > N.B. : I use only 1 class for my renderer so all renderers > are of > > > the > > > > > same type. I have also checked their UID and they seem to be > > > distinct > > > > > as far as I can tell... > > > > > > > > > > Hope you guys can help cuz this is really bothering me... > > > > > > > > > > Thanx for your attention ! > > > > > > > > > > paco > > > > > > > > > > > > > > >

