views:

150

answers:

2

I have a flex tree with dragMoveEnabled = true. I want to find out, when an item is dragged into itself or it's children. I'd like to use DragManager.showFeedback(DragManager.NONE) in the tree's onDragOver handler, but can't find out how get this to work. I'm using an ArrayCollection of nested objects as dataSource for the tree.

A: 

can you do something like:

if(event.currentTarget == event.target){
    //item is being dropped on itself
}
invertedSpear
This disables the dragMove feature since I'm dragging items from the tree into the tree :-( I need something like getItemAtDropIndex();
Thomas
A: 
    private function onDragOver(event:DragEvent):void {
        event.preventDefault();
        event.currentTarget.hideDropFeedback(event);                

        var index:int = tree.calculateDropIndex(event);
        tree.selectedIndex = index;
        var subCategory:CategoryVO = CategoryVO(tree.selectedItem);

        var currentCategory:CategoryVO = subCategory;

        while(currentCategory.parent != 0) {
        if (currentCategory.parent == _draggedItem.id) {
            DragManager.showFeedback(DragManager.NONE);
            return;
        }
        currentCategory = tree.getParentItem(currentCategory);

        if (currentCategory == null) {
            break;
        }

        DragManager.showFeedback(DragManager.MOVE);
        tree.showDropFeedback(event);
   }

That's how I solved it.

_draggedItem holds the currently dragged item, set in the tree's onDragEnter handler. CategoryVO is the value object I use.

Thomas