>From the FocusManager perspective, things are either components or containers >of components. It is true that your component is not a true Flex Container, >but in this case it is a container of focusable components.
Alex Harui Flex SDK Developer Adobe Systems Inc.<http://www.adobe.com/> Blog: http://blogs.adobe.com/aharui From: [email protected] [mailto:[email protected]] On Behalf Of cksachdev Sent: Tuesday, February 10, 2009 12:01 AM To: [email protected] Subject: [flexcomponents] Re: Problem with Keyboard navigation in custom component Thank you Alex, it resolved the problem. In addition to what you mentioned, I also assigned tabChildren and tabEnabled for child UIComponents. e.g. private var childContainer:UIComponent override .... createChildren()... { childContainer = new UIComponent childContainer.tabChildren = true childContainer.tabEnabled = false childContainer.addChild(some UI Component...) addChild(childContainer) } Thanks again for your help Alex. Although I have one doubt :) it is related to term "Container". IMO: Container is a class which extends UIComponent and implements IContainer interface. Developer will use "Container Component" to add children. In my case I am not implementing IContainer then how it is a container. Could you please explain a bit more. -- Chetan www.riageeks.com --- In [email protected]<mailto:flexcomponents%40yahoogroups.com>, Alex Harui <aha...@...> wrote: > > I don't think I saw in question in your last email, but if you want a Container-type component and you are starting with UIComponent, do not implement IFocusManagerContainer, but set tabChildren=true and tabEnabled=false in the constructor of your subclass then try it and let us know if you have further questions. > > Alex Harui > Flex SDK Developer > Adobe Systems Inc.<http://www.adobe.com/> > Blog: http://blogs.adobe.com/aharui > > From: [email protected]<mailto:flexcomponents%40yahoogroups.com> [mailto:[email protected]<mailto:flexcomponents%40yahoogroups.com>] On Behalf Of cksachdev > Sent: Monday, February 09, 2009 2:41 PM > To: [email protected]<mailto:flexcomponents%40yahoogroups.com> > Subject: [flexcomponents] Re: Problem with Keyboard navigation in custom component > > > Thank you Alex for your explanation. My need is a Component, which > will not get focus but its children can get focus using Keyboard TAB > and not using Arrow Keys. And from its last children, focus should > move to the next available component on stage when pressing Keyboard > TAB key. You can assume that my component is a form with some text > fields and two buttons at the end. For navigation within this > component, I want to use TAB key. > > -- > Chetan > www.riageeks.com > > --- In [email protected]<mailto:flexcomponents%40yahoogroups.com><mailto:flexcomponents%40yahoogroups.com >, Alex Harui <aharui@> wrote: > > > > Forget IFocusManager for now. It just allows an abstraction for > FocusManager > > > > What you need to do depends on what you want. Your options are: > > > > Control: DataGrid is a top-level control-type component. The fact > that it has subcomponents like a TextInput for an editor which, if > outside the DG would get focus on its own is more-or-less abstracted > from the developer. Since the DG itself wants to get focus (so arrow > keys and type-ahead searching work if there aren't any editors) means > that it should implement IFocusManagerComponent, turn off > IFocusManagerComponent.focusEnabled in its children, and handle > keyFocusChange to deal with focus within its subcomponents. > > > > Container: We didn't do it this way, but a multi-thumb Slider could > be a container-type component. It would not implement > IFocusManagerComponent as it never gets focus, focus goes directly to > the thumbs which then use arrow keys to "slide around". Such a > component would set tabChildren=true and tabEnabled=false in its > constructor. There would be no additional work, the FocusManager > would take care of passing focus to the sub-components assuming they > are IFocusManagerComponents with focusEnabled=true (and > tabEnabled=true for tabbing). > > > > There is a separate FocusManager instance for every "tab loop". > There is one for the main app and one for every popup dialog whose > top-level class is IFocusManagerContainer. > > > > Alex Harui > > Flex SDK Developer > > Adobe Systems Inc.<http://www.adobe.com/> > > Blog: http://blogs.adobe.com/aharui > > > > From: [email protected]<mailto:flexcomponents%40yahoogroups.com><mailto:flexcomponents%40yahoogroups.com > > [mailto:[email protected]<mailto:flexcomponents%40yahoogroups.com><mailto:flexcomponents%40yahoogr oups.com>] On Behalf Of cksachdev > > Sent: Monday, February 09, 2009 11:57 AM > > To: [email protected]<mailto:flexcomponents%40yahoogroups.com><mailto:flexcomponents%40yahoogroups.com > > > Subject: [flexcomponents] Re: Problem with Keyboard navigation in > custom component > > > > > > I have gone through DataGrid and List classes, both of them listen > for > > focusInHandler and override this method to add a listener for > > "keyFocusChange" event. and then in the handler, do processing > > manually for itemrenderer. My question is, do I have to do it > manually > > for my component which has other components which receive focus when > > they are on stage. (i.e. My component is a composite of Button, > > TextInput and a TextArea, do I have to manage focus manually or > > FocusManager can take care of it, I read that there can be multiple > > instances of FocusManager in an application, when it can be useful ? > ). > > Could you please point me to some documentation/presentation etc. > > > > One more question, when to use IFocusManagerComponent and when to > use > > IFocusManager. > > > > (I have developed same component in Flash also. I don't have to > manage > > focus manually, it was taken care by FocusManager itself) > > > > Thank you > > > > -- > > Chetan > > www.riageeks.com > > > > --- In > [email protected]<mailto:flexcomponents%40yahoogroups.com><mailto:flexcomponents%40yahoogroups.com ><mailto:flexcomponents%40yahoogroups.com > >, Alex Harui <aharui@> wrote: > > > > > > In Flex components can be comprised of sub-components. The > > outermost component, which is most often the thing that you think of > > as the component and would normally set focus to (like a DataGrid) > is > > an IFocusManagerComponent with focusEnabled=true. All child sub- > > components that are IFocusManagerComponents have focusEnabled=false. > > When the DataGrid wants to pass focus to child cell editors, it > > intercepts the keyFocusChange event and handles tabbing itself. > > > > > > Other components are "containers" and do not directly receive > focus > > and have tabChildren=true and tabEnabled=false > > > > > > Alex Harui > > > Flex SDK Developer > > > Adobe Systems Inc.<http://www.adobe.com/> > > > Blog: http://blogs.adobe.com/aharui > > > > > > From: > [email protected]<mailto:flexcomponents%40yahoogroups.com><mailto:flexcomponents%40yahoogroups.com ><mailto:flexcomponents%40yahoogroups.com > > > > > [mailto:[email protected]<mailto:flexcomponents%40yahoogroups.com><mailto:flexcomponents%40yahoogr oups.com><mailto:flexcomponents%40yahoogr > oups.com>] On Behalf Of cksachdev > > > Sent: Sunday, February 08, 2009 9:14 PM > > > To: > [email protected]<mailto:flexcomponents%40yahoogroups.com><mailto:flexcomponents%40yahoogroups.com ><mailto:flexcomponents%40yahoogroups.com > > > > > Subject: [flexcomponents] Problem with Keyboard navigation in > custom > > component > > > > > > > > > Hi to all, > > > > > > I have developed a few set of custom components and I am facing > > > problem with tab navigation. Here is a brief description about it. > > > > > > Problem: > > > I have a class which extends UIComponent, inside it there are 2 > more > > > UIComponent created at runtime (inside createChildren). These are > > used > > > as container for subchild components. You can assume a chatbox > where > > > message box is inside a UIComponent and a textinput and a button > is > > in > > > another UIComponent. Now problem is related to focus and > > > tabnavigation. It gets focus on the entire component, instead of > > > textinput, then on tab navigation I need to cycle it between, > > > textinput and button, but when it reaches on button, it should > move > > to > > > next UIComponent available on screen, may be a button or any other > > > component available. How to know that a subcomponent is the last > > > component in "MY CUSTOM COMPONENT" and now focus rectangle should > > move > > > to next component available in DisplayList ? > > > > > > Please point me to the > > resources(presentations/videos/documentation). > > > I have seen ACDS(Adobe Component Developer Summit) slides but not > > able > > > to get the point. Are those presentations being recorded ? > > > > > > Looking forward to a solution :) > > > > > > -- > > > chetan > > > http://www.riageeks.com > > > > > >
