Issue 41: Flex4ChildManager can't work with NavigatorContent class from Flex 4 SDK
Status:  New
Owner: ----
Reported by burd...@gmail.com, Apr 25, 2010
What steps will reproduce the problem?
1. try to use NavigatorContent instance as target for object handles
2.
3.

What is the expected output? What do you see instead?
Expected working application, but i have an error,because NavigatorContent 
implements IVisualElementContainer, but not extends Group container.

What version of the product are you using? On what operating system?
Latest version from SVN

Please provide any additional information below.

In Flex4ChildManager.addChild method i have changed FROM

public function addChild(container:Object, child:Object):void{
	if( container is Group){
		(container as Group).addElement( child as IVisualElement );
	}else if( container is Container){
		(container as Container).rawChildren.addChild(child as 
DisplayObject);
	}else{
		container.addChild( child as DisplayObject);
	}
}

TO:

public function addChild(container:Object, child:Object):void{
if(child is IVisualElement && container is IVisualElementContainer){
	(container as IVisualElementContainer).addElement(child as 
IVisualElement);
}else if(!(child is IVisualElement) && container is IRawChildrenContainer){
	(container as IRawChildrenContainer).rawChildren.addChild(child as 
DisplayObject);
}else{
	container.addChild( child as DisplayObject);
}
}

And looks like all is working now. Added same changes to removeChild 
method:
public function removeChild(container:Object, child:Object):void{
if(child is IVisualElement && container is IVisualElementContainer){
	(container as IVisualElementContainer).removeElement(child as 
IVisualElement);
}else if(!(child is IVisualElement) && container is IRawChildrenContainer){
	(container as IRawChildrenContainer).rawChildren.removeChild(child 
as DisplayObject);
}else{
	container.removeChild( child as DisplayObject);
}
}
Jul 24, 2011
#1 moya.t...@gmail.com
I had the same issue with spark BorderContainer

public function addChild(container:Object, child:Object):void
		{
			
			if( container is Group )
			{
				(container as Group).addElement( child as IVisualElement );
			}
			if( container is SkinnableContainer)
			{
				(container as SkinnableContainer).addElement( child as IVisualElement );
			}
			else if( container is Container )
			{
				(container as Container).rawChildren.addChild(child as DisplayObject);
			}			           
			else
			{
				container.addChild( child as DisplayObject);
			}
		}

public function removeChild(container:Object, child:Object):void
		{
			
			if( container is Group )
			{
				(container as Group).removeElement( child as IVisualElement );
			}
			if( container is SkinnableContainer)
			{
				(container as SkinnableContainer).removeElement( child as IVisualElement );
			}
			else if( container is Container )
			{
				(container as Container).rawChildren.removeChild(child as DisplayObject);
			}
			else
			{
				container.removeChild( child as DisplayObject);
			}
		}