Hello all! I am wanting to add a branch node to a drag and drop tree
control based on the item that is being dragged. For example, in the
following XML code, if I drag page aname="02 "to the drag and drop
tree control, I would like for the tree control to automatically
create a branch node with the pubDate, so that it would be a branch
node with the pubDate and a leaf node with the page aname. I am
successfully adding page anames to the drag and drop tree control, so
that part is working, but I would like to add the branch node with the
pubDate and have the pages fall under that node as leaves.

EXAMPLE XML:

<tearsheets>
<pubDate aname="Tuesday, March 11, 2008">
<section aname="A">
<page aname="02" date="20080311" sectionID="A"
image="tearsheets/2008/03/11/jpg/20080311_A_02.jpg"
pdf="tearsheets/2008/03/11/pdf/20080311_A_02.pdf"/>
<page aname="03" date="20080311" sectionID="A"
image="tearsheets/2008/03/11/jpg/20080311_A_03.jpg"
pdf="tearsheets/2008/03/11/pdf/20080311_A_03.pdf"/>
<page aname="04" date="20080311" sectionID="A"
image="tearsheets/2008/03/11/jpg/20080311_A_04.jpg"
pdf="tearsheets/2008/03/11/pdf/20080311_A_04.pdf"/>
</section>
<section aname="B">
<page aname="01" date="20080311" sectionID="B"
image="tearsheets/2008/03/11/jpg/20080311_B_01.jpg"
pdf="tearsheets/2008/03/11/pdf/20080311_B_01.pdf"/>
<page aname="02" date="20080311" sectionID="B"
image="tearsheets/2008/03/11/jpg/20080311_B_02.jpg"
pdf="tearsheets/2008/03/11/pdf/20080311_B_02.pdf"/>
</pubDate>
</tearsheets>

HERE IS A PORTION OF THE CODE FROM MY PROJECT THAT IS OPERATING THE
DRAG AND DROP TREE CONTROL:

public var listDP:XMLListCollection = new XMLListCollection(new
XMLList());     

public function dragDropHandler(event:DragEvent):void {
              if (event.dragSource.hasFormat("items"))
              {                
                // Explicitly handle the dragDrop event.            
                event.preventDefault();

                // Since you are explicitly handling the dragDrop event,
                // call hideDropFeedback(event) to have the drop target
                // hide the drop indicator. 
                // The drop indicator is created
                // automatically for the list controls by the built-in 
                // event handler for the dragOver event.
                event.currentTarget.hideDropFeedback(event);

                // Get drop target.
                var dropTarget:Tree=Tree(event.currentTarget);
                
                // Get the dragged item from the drag initiator.
                // The List control always writes an Array 
                // to the dragSource object,
                // even if there is only one item being dragged.
                var itemsArray:Array = 
                    event.dragSource.dataForFormat("items") as Array;
    
                // Copy the dragged data into a new Object.
                var tempItem:Object = 
                    {label: itemsArray[0].label, data:
itemsArray[0].data};
    
                // Get the drop location in the destination.
                var dropLoc:int = dropTarget.calculateDropIndex(event);

                // Add the new object to the drop target.      
                 IList(dropTarget.dataProvider).addItemAt(tempItem,
dropLoc);
              }                
            }

<mx:Tree id="myTearsheets2"
        
        dataProvider="{listDP}"
        
           labelField="@aname"

           dragDrop="dragDropHandler(event);"
                      
           width="100%"

           height="100%"

           borderThickness="0"
           
                dropEnabled="true"
                   
/>

Any ideas would be appreciated!

Reply via email to