An easy way might be to use different viewstates (e.g., a base state without the restricted tab, and a derived state that includes the restricted tab), then simply set the appropriate viewstate based on user permissions. Similar to your init() code, it might look something like:
if (Permissions.hasPermission("restrictedTab") { currentState = "stateWithRestrictedTab"; Good luck! --- In flexcoders@yahoogroups.com, Wesley Acheson <wesley.ache...@...> wrote: > > Hi I've an application already mostly written. > > *Background*: > > This application uses several custom components that extend or contain > TabNavigators. > > A requrirement which I've missed is that if the user doesn't have permission > to view a tab then the tab doesn't appear in the tab navigators. > > However tabs still appear even if the child elements they refer to are > invisible. > > So I guess that I need to do something like this in my MXML files. > > > <mx:TabNavigator xmlns:mx="http://www.adobe.com/2006/mxml" > xmlns:component="com.example.test.*" CreationComplete="init()"> > ... > //Normal stuff in here > ... > public var tab1:CustomComponent1; > public var tab2:CustomComponent2; > //etc > ... > > private function init():void > { > if (Permissions.hasPermission("viewTab1") > { > tab1 = new CustomComponent1; > ... > // Set the properties that are normally specified in MXML > // Add event listeners for all the events normally specified in mxml. > // e.g. tab1.addEventListener(SaveEvent.SAVE, handleSave); > // Do any bindings that are normally associated with the MXML > } > } > > ... > </mx:TabNavigator> > > *Questions:* > > 1. How do I set up the bindings? I have seen > > http://livedocs.adobe.com/flex/3/html/help.html?content=databinding_7.htmlhowever > this leaves me worried that binding will occur differently. I'm > particually worried that I'll get binding events occuring before the > component is initialised which won't (As is normal in mxml) be swallowed by > the framework. I don't even know where I'd put a try block for these > errors. > 2. Doing things in this way means that tabs the user has permission for > but hasn't clicked on don't apply for deferred instanceiation. Is there any > way to get this back. (Normally the tab navigator only instances its > children when the appropiate tab is selected). > 3. Creating the child after CreationComplete doesn't feel right to me. I > guess I could overwrite create children in the above example but not when > my > MXML file contains a TabNavigator rather than is a TabNavigator which is > also a situation elsewhere in the application. Is there a better way > arround > this? Creating a ChildDiscriptor object. Does doing things in this way > mean > a blank component appears then its contents appear? > > Thanks in Advance, > Wes >