Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / src / tree / ViewDragZone.js
diff --git a/src/tree/ViewDragZone.js b/src/tree/ViewDragZone.js
new file mode 100644 (file)
index 0000000..695a2f8
--- /dev/null
@@ -0,0 +1,42 @@
+Ext.define('Ext.tree.ViewDragZone', {
+    extend: 'Ext.view.DragZone',
+
+    isPreventDrag: function(e, record) {
+        return (record.get('allowDrag') === false) || !!e.getTarget(this.view.expanderSelector);
+    },
+    
+    afterRepair: function() {
+        var me = this,
+            view = me.view,
+            selectedRowCls = view.selectedItemCls,
+            records = me.dragData.records,
+            fly = Ext.fly;
+        
+        if (Ext.enableFx && me.repairHighlight) {
+            // Roll through all records and highlight all the ones we attempted to drag.
+            Ext.Array.forEach(records, function(record) {
+                // anonymous fns below, don't hoist up unless below is wrapped in
+                // a self-executing function passing in item.
+                var item = view.getNode(record);
+                
+                // We must remove the selected row class before animating, because
+                // the selected row class declares !important on its background-color.
+                fly(item.firstChild).highlight(me.repairHighlightColor, {
+                    listeners: {
+                        beforeanimate: function() {
+                            if (view.isSelected(item)) {
+                                fly(item).removeCls(selectedRowCls);
+                            }
+                        },
+                        afteranimate: function() {
+                            if (view.isSelected(item)) {
+                                fly(item).addCls(selectedRowCls);
+                            }
+                        }
+                    }
+                });
+            });
+        }
+        me.dragging = false;
+    }
+});
\ No newline at end of file