Thanks for putting me on the right track to being able to add items to
my Tree that is bound to a XMLListCollection.  I had a heck of a time
figuring out how to to an addItemAt to a XMLListCollection ... because
it is not a valid method.  Using the ITreeDataDescriptor was the trick.

I am still not sure how to work this into my UpdateTreeCommand.as when
using Cairngorm.  The code below is a modification of the code you
posted.  

[CODE]
<?xml version="1.0" encoding="utf-8"?>
<!-- Tree control example. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
        creationComplete="init();" >

        <mx:Script>
                <![CDATA[
                import mx.controls.List;
                import mx.collections.ICollectionView;          
                import mx.collections.XMLListCollection;                
                import mx.controls.treeClasses.*;               
                
                [Bindable]
                public var selectedNode:Object;
                
                [Bindable]
                public var myXLC:XMLListCollection;
                //
                public function init():void{
                        myXLC = new XMLListCollection(treeData.node);           
        
                }
                //
                public function addMySibling(n:int):void{               
                        var xm:ITreeDataDescriptor = myTree.dataDescriptor;     

                        var newNode:XML = new XML();
                        newNode = <folder label='Sibling'></folder>
                        if (n == -1){
                                myXLC.addItem(newNode);                         
                        } else {
                                
xm.addChildAt(myTree.getParentItem(myTree.selectedItem),newNode,n);     
                        }
                        
                
                }
                //
                public function addMyChild(n:int):void{         
                        var xm:ITreeDataDescriptor = myTree.dataDescriptor;     
                        
                        var newNode:XML = new XML();
                        newNode = <folder label='Child'></folder>
                        
                        if (n == -1){
                                xm.addChildAt(myTree.selectedItem,newNode,0);
                        } else {
                                xm.addChildAt(myTree.selectedItem,newNode,n);   
        
                        }               
                        /*
                        // Code to select the newly created child.  I cannot 
get this to
work =(
                        var selItem:ICollectionView = 
xm.getChildren(myTree.selectedItem);
                        trace("selItem: "+selItem);
                        trace("selItem.length: "+selItem.length);
                        myTree.selectedItem = 
myTree.selectedItem.childNodes[selItem.length];
                        */      
                }
                
                //
                public function treeChanged(event:Event) : void
                {
                        selectedNode=Tree(event.target).selectedItem;
                }
                ]]>
        </mx:Script>

        <mx:XML id="treeData">
        <node>
                <node label="Mail Box">
                <node label="Inbox">
                <node label="Marketing"/>
                <node label="Product Management"/>
                <node label="Personal"/>
                </node>
                <node label="Outbox">
                <node label="Professional"/>
                <node label="Personal"/>
                </node>
                <node label="Spam"/>
                <node label="Sent"/>
                </node>
        </node>
        </mx:XML>
        
        <mx:Panel title="Tree Control Example" height="75%" width="75%"
                paddingTop="10" paddingLeft="10" paddingRight="10"
                paddingBottom="10">
        
                <mx:Label text="Select a node in the Tree control."/>
                <mx:Button label="Add sibling to selected tree node"
click="addMySibling(myTree.selectedIndex)"/>
                <mx:Button label="Add child to selected tree node"
click="addMyChild(myTree.selectedIndex)"/>
                <mx:HDividedBox width="100%" height="100%">
                        <mx:Tree id="myTree" width="50%" height="100%"
                        labelField="@label"
                        showRoot="false" dataProvider="{myXLC}" 
                        change="treeChanged(event)"/>
                        <mx:TextArea height="100%" width="50%"
                        text="Selected Item: [EMAIL PROTECTED]"/>
                </mx:HDividedBox>
        
        </mx:Panel>
</mx:Application>
[/CODE]



--- In [email protected], <[EMAIL PROTECTED]> wrote:
>
> Use the dataDescriptor for the tree- here is an example from some base
> code i posted earlier about selecting a tree node item - but the jist of
> it is :
> 
> var xm:ITreeDataDescriptor=myTree.dataDescriptor;
> xm.addChildAt(treeData.node.node[0]," <node label='BitchWhoCodes'/>",0);
> 
> FULL CODE FOLLOWS :)
> ,,-------------------------------------------
> 
> <?xml version="1.0" encoding="utf-8"?>
> <!-- Tree control example. -->
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; >
> 
>     <mx:Script>
>         <![CDATA[
>               import mx.controls.List;
>               import mx.collections.ICollectionView;
> 
>               import mx.collections.*;
> 
>             import    mx.controls.treeClasses.*;
>             [Bindable]
>             public var selectedNode:Object;
> 
>             [Bindable]
>             public var XLC:XML;
> 
> 
>             // Event handler for the Tree control change event.
>             public function initApp(){
> 
> 
>             var xm:ITreeDataDescriptor=myTree.dataDescriptor;
>             var xml:XMLListCollection=new XMLListCollection(treeData);
> 
>              myTree.expandItem(treeData.node[0],true,false);
>              myTree.expandItem(treeData.node.node[0],true,false);
>              xm.addChildAt(treeData.node.node[0]," <node
> label='BitchWhoCodes'/>",0);
> 
>             var item=treeData.node.node[0];
>             myTree.selectedItem=item;
> 
> 
>             }
> 
>             public function treeChanged(event:Event) : void
>             {
>                 selectedNode=Tree(event.target).selectedItem;
>             }
>         ]]>
>     </mx:Script>
> 
>     <mx:XMLList id="treeData">
>         <node>
>         <node label="Mail Box">
>             <node label="Inbox">
>                 <node label="Marketing"/>
>                 <node label="Product Management"/>
>                 <node label="Personal"/>
>             </node>
>             <node label="Outbox">
>                 <node label="Professional"/>
>                 <node label="Personal"/>
>             </node>
>             <node label="Spam"/>
>             <node label="Sent"/>
>         </node>
>     </node>
>     </mx:XMLList>
> 
>     <mx:Panel title="Tree Control Example" height="75%" width="75%"
>         paddingTop="10" paddingLeft="10" paddingRight="10"
> paddingBottom="10">
> 
>         <mx:Label text="Select a node in the Tree control."/>
> 
>         <mx:HDividedBox width="100%" height="100%">
>             <mx:Tree id="myTree" width="50%" height="100%"
> labelField="@label"
>                 showRoot="false" dataProvider="{new
> XMLListCollection(treeData)}" change="treeChanged(event)"
> creationComplete="initApp()"/>
>             <mx:TextArea height="100%" width="50%"
>                 text="Selected Item: [EMAIL PROTECTED]"/>
>         </mx:HDividedBox>
> 
>     </mx:Panel>
> </mx:Application>
> 
> > Hi,
> >
> > As you can see below, I solved the problem.
> >
> > private function addChildAtTree ():void
> >  {
> >   var foo:XMLList = capitalColl.children ();
> >   var foo_0 :XMLList = foo[0].children();
> >   var fooColl :XMLListCollection = new XMLListCollection ( foo_0 );
> > fooColl.addItem ( new XML ( "<capital label='ME' value='Augusta'/>" )
> > );
>  Tree2.invalidateList();
> >  }
> >
> > But I wanna know if you have any idea other.
> >
> > Let me know it.
> >
> > Thank you,
> > Bryan.
> >   ----- Original Message -----
> >   From: Bryan Choi
> >   To: flexcoders
> >   Sent: Tuesday, May 23, 2006 12:02 PM
> >   Subject: [flexcoders] [BETA3] I am still having a problem.
> >
> >
> >   var foo:XMLList = capitalColl.children ();
> >   foo.appendChild(new XML ( "<capital label='ME' value='Augusta'/>"));
> >
> >   ================================================
> >
> >   I tried to execute it.
> >
> >   I can see that it show me follow message.
> >
> >   -------------------
> >
> >   TypeError: Error #1086: The appendChild method only works on lists
> > containing one item.
> >
> >   -------------------
> >
> >   Have you Any idea other?
> >
> >   Thank you,
> >   Bryan.
> >
> >
> >   --
> >   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
> >
> >     a..  Visit your group "flexcoders" on the web.
> >
> >     b..  To unsubscribe from this group, send an email to:
> >      [EMAIL PROTECTED]
> >
> >     c..  Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> > Service.
> >
> >
> >
------------------------------------------------------------------------------
> >
>







--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Reply via email to