TREE arraycollection

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
 <![CDATA[
 import mx.collections.ArrayCollection;
 import mx.events.DragEvent;
 
  public var selectedNode:Object;
  public var nodeIndex : Number;
  public var node : Object;
  public var dragNode:Object;
  public var dragName:String;
  public var nodeNames : String;
  public var drNames : XML;
  [Bindable]
  private var companyList : ArrayCollection = new ArrayCollection(
  [ {type:"department", name:"Finance", children:new ArrayCollection(
                                                        [ {type:"employee", name:"John H",children:new ArrayCollection(
                                                        [ {type:"employees", name:"YY"},
                                                          {type:"employees", name:"UU"} ] )},
                                                          {type:"employee", name:"Sam K"} ] ) },
      {type:"department", name:"Engineering", children: new ArrayCollection(
                                                       [ {type:"employee", name:"Erin M"},
                                                         {type:"employee", name:"Ann B"} ] ) },
      {type:"department", name:"Operations", children: new ArrayCollection()}
  ] );
  private function treeLabel( item:Object ) : String
   {
      
            return item.name;
   }
  private function treeClick(event :Event):void{
   selectedNode=Tree(event.target).selectedItem;
   nodeIndex=Tree(event.target).selectedIndex;
  
   node_name.text=selectedNode.name;
   node_type.text=selectedNode.type;
  
   }
   private function update(): void{
   if(selectedNode!=null){
   selectedNode.name=node_name.text;
   selectedNode.type=node_type.text;
   tree.invalidateList();
 
   }
  
   }
  private function add():void{
   var newNode:Object = {type:node_type.text, name:node_name.text};
    if(selectedNode!=null){
   
     if(selectedNode.children==null){
    selectedNode.children=new ArrayCollection()
     }    
     selectedNode.children.addItem(newNode);
   
   tree.expandChildrenOf(selectedNode,true);
   
    //staffTree.expandChildrenOf(selectedNode,true);
   }
   else{
   var nodename : String=node_name.text;
   var nodetype : String=node_type.text;
   companyList.addItem(newNode);
  
   }
  }
      private function del():void{
                    delNode(companyList,selectedNode);
                }
               
                private function delNode(arr:ArrayCollection, item: Object):void{
                    for(var i:int = 0; i  < arr.length; i++){
                        if(arr.getItemIndex(item) != -1){
                            var idx:int = arr.getItemIndex(item);
                            arr.removeItemAt(idx);
                        }else{
                            var arrC:ArrayCollection = arr[i]["children"] as ArrayCollection;
                            if(arrC !== null && arrC.length > 0){
                                delNode(arrC,item);
                            }
                        }
                    }
                }
 private function clickHander(event:Event):void{
 
  //log.debug(event.target.parent.toString());
  if ((event.target.parent is Tree)){
   selectedNode=null;
  }
 }
  public function onDragEnter(event : DragEvent) : void{
    dragNode=Tree(event.target).selectedItem;
  
  }
  //public function onDragOver(event : DragEvent) : void{
 
  public function onDragDrop(event : DragEvent) : void{
   try{
  var target:Tree = Tree(event.currentTarget);
      
        var rowIndex:int = target.calculateDropIndex(event);
        var hoverTarget:Object = target.indexToItemRenderer(rowIndex).data;
        if(hoverTarget!=null){
      //   log.debug(hoverTarget.@label+"///"+dragNode.@label);
        }
   }
   catch(error: Error){
    trace(error);
   }
      
  }
 
 ]]>
</mx:Script>
 <mx:HDividedBox width="100%" height="100%">
 <mx:Panel width="30%" height="100%" layout="absolute">
  <mx:Tree id="tree" dataProvider="{companyList}" labelFunction="treeLabel" width="100%" height="100%" itemClick="treeClick(event)" click="clickHander(event)" dragEnabled="true"
       dragMoveEnabled="true" dropEnabled="true"  dragDrop="onDragDrop(event)" dragEnter="onDragEnter(event)"/>

 </mx:Panel>
 <mx:Panel width="70%" height="100%" layout="absolute">
 <mx:VBox x="0" y="0" width="100%" height="100%">
  <mx:VBox width="100%" height="70%">
     <mx:Grid width="100%" height="100%">
      <mx:GridRow width="100%" height="100%">
       <mx:GridItem width="100%" height="100%" horizontalAlign="right">
        <mx:Label text="NODE_Type:"  />
       </mx:GridItem>
       <mx:GridItem width="100%" height="100%">
        <mx:TextInput id="node_type" />
       </mx:GridItem>
      </mx:GridRow>
      <mx:GridRow width="100%" height="100%">
       <mx:GridItem width="100%" height="100%" horizontalAlign="right">
        <mx:Label text="NODE_NAME:"/>
       </mx:GridItem>
       <mx:GridItem width="100%" height="100%">
        <mx:TextInput id="node_name"/>
       </mx:GridItem>
      </mx:GridRow>
     
      <mx:GridRow width="100%" height="100%">
       <mx:GridItem width="100%" height="100%">
       
       </mx:GridItem>
       <mx:GridItem width="100%" height="100%">       
       </mx:GridItem>
      </mx:GridRow>
     </mx:Grid>
    </mx:VBox>
    <mx:HBox width="100%" height="30%" horizontalAlign="center" verticalAlign="middle">
     <mx:Button label="Add" click="add();" />
     <mx:Button label="Delete" click="del();" />
     <mx:Button label="Update" click="update();"/>
    </mx:HBox>
   </mx:VBox>
 </mx:Panel>
 </mx:HDividedBox>
</mx:Application>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值