Hi rigidcode,
Here is an ActionScript class that you can use. It will need to be
changed to meet your needs, but it is based off the code you posted,
and should be reasonably self-explainatory.
The NestedTabs class is extending Canvas, so that you can assign a
size for the whole lot, and they will take 100% in both dimensions for
what they are assigned. Let me know how you go with this.
package NestedTabs {
import mx.containers.Canvas;
import mx.containers.TabNavigator;
import mx.events.FlexEvent;
import mx.controls.Label;
public class NestedTabs extends Canvas
{
private var tn1 : TabNavigator;
private var tn2 : TabNavigator;
private var tn1tab1 : Canvas;
private var tn1tab2 : Canvas;
private var tn2tab1 : Canvas;
private var tn2tab2 : Canvas;
public function NestedTabs() : void
{
super();
// Fire the __onCreationComplete event when the component has been
created.
this.addEventListener(FlexEvent.CREATION_COMPLETE,
__onCreationComplete);
}
private function __onCreationComplete(_event : FlexEvent) : void
{
var tn1 : TabNavigator = new TabNavigator();
tn1.percentHeight = 100;
tn1.percentWidth = 100;
var tn1tab1 : Canvas = new Canvas();
tn1tab1.label = "Welcome";
tn1.addChild(tn1tab1);
var tn1tab2 : Canvas = new Canvas();
tn1tab2.label="Hello";
tn1.addChild(tn1tab2);
var tn2 : TabNavigator = new TabNavigator();
tn2.percentHeight = 100;
tn2.percentWidth = 100;
var tn2tab1 : Canvas = new Canvas();
tn2tab1.label = "wefwe";
tn2.addChild(tn2tab1);
var tn2tab2 : Canvas = new Canvas();
tn2tab2.label = "wefwe333";
tn2.addChild(tn2tab2);
tn1tab1.addChild(tn2);
this.addChild(tn1);
this.setVisible(true);
}
}
}
Regards,
Graham Weldon
Web Development Manager
Object Connections
--- In [email protected], "rigidcode" <[EMAIL PROTECTED]> wrote:
>
>
> I'm trying to make nested TabNavigators in Actionscript (NOT in mxml).
> Just two- an outer TabNavigator and, on one of it's tab's canvas's, an
> inner one. Sounds simple right?
>
> I reduced it to a smaller reproducable version of the error, here is
> what I'm doing in my Application:
>
> var t:TabNavigator = new TabNavigator();
> t.width=800;
> t.height=600;
> t.creationPolicy='all'; //tried this to fix
>
> var tab1:Canvas = new Canvas();
> tab1.label='Welcome';
> t.addChild(tab1);
>
> var tab2:Canvas = new Canvas();
> tab2.label='Hello';
> t.addChild(tab2);
>
> var tn2:TabNavigator = new TabNavigator();
> tn2.creationPolicy='all';
> var tn2tab1:Canvas = new Canvas();
> tn2tab1.label='wefwe';
> tn2.addChild(tn2tab1);
>
> var tn2tab2:Canvas = new Canvas();
> tn2tab2.label='wefwe333';
> tn2.addChild(tn2tab2);
>
> tab1.addChild(tn2);
>
> this.addChild(t);
>
>
> The tabs display fine initially, and then here is the exception I get
> when I click on any tab (either on the inner tabnavigator or the outer
> one):
> TypeError: Error #1009: null has no properties.
> at
>
mx.managers::HistoryManager$/save()[C:\dev\beta2\sdk\frameworks\mx\managers\HistoryManager.as:554]
> at
>
mx.containers::ViewStack/mx.containers:ViewStack::commitSelectedIndex()[C:\dev\beta2\sdk\frameworks\mx\containers\ViewStack.as:1052]
> at
>
mx.containers::ViewStack/mx.containers:ViewStack::commitProperties()[C:\dev\beta2\sdk\frameworks\mx\containers\ViewStack.as:620]
> at
>
mx.containers::TabNavigator/mx.containers:TabNavigator::commitProperties()[C:\dev\beta2\sdk\frameworks\mx\containers\TabNavigator.as:325]
> at
>
mx.core::UIComponent/validateProperties()[C:\dev\beta2\sdk\frameworks\mx\core\UIComponent.as:5007]
> at
>
mx.managers::LayoutManager/validateProperties()[C:\dev\beta2\sdk\frameworks\mx\managers\LayoutManager.as:496]
> at
>
mx.managers::LayoutManager/mx.managers:LayoutManager::doPhasedInstantiation()[C:\dev\beta2\sdk\frameworks\mx\managers\LayoutManager.as:635]
> at
>
mx.core::UIComponent/mx.core:UIComponent::callLaterDispatcher2()[C:\dev\beta2\sdk\frameworks\mx\core\UIComponent.as:7379]
> at
>
mx.core::UIComponent/mx.core:UIComponent::callLaterDispatcher()[C:\dev\beta2\sdk\frameworks\mx\core\UIComponent.as:7322]
> at
>
mx.core::UIComponent/setFocus()[C:\dev\beta2\sdk\frameworks\mx\core\UIComponent.as:5814]
> at
>
mx.managers::FocusManager/setFocus()[C:\dev\beta2\sdk\frameworks\mx\managers\FocusManager.as:375]
> at
>
mx.managers::FocusManager/mx.managers:FocusManager::mouseDownHandler()[C:\dev\beta2\sdk\frameworks\mx\managers\FocusManager.as:1164]
>
> Is this a bug in Flex 2?
>
--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com
SPONSORED LINKS
| Web site design development | Computer software development | Software design and development |
| Macromedia flex | Software development best practice |
YAHOO! GROUPS LINKS
- Visit your group "flexcoders" on the web.
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.

