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