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
>


Reply via email to