Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / src / grid / header / DragZone.js
1 /**
2  * @class Ext.grid.header.DragZone
3  * @extends Ext.dd.DragZone
4  * @private
5  */
6 Ext.define('Ext.grid.header.DragZone', {
7     extend: 'Ext.dd.DragZone',
8     colHeaderCls: Ext.baseCSSPrefix + 'column-header',
9     maxProxyWidth: 120,
10
11     constructor: function(headerCt) {
12         this.headerCt = headerCt;
13         this.ddGroup =  this.getDDGroup();
14         this.callParent([headerCt.el]);
15         this.proxy.el.addCls(Ext.baseCSSPrefix + 'grid-col-dd');
16     },
17
18     getDDGroup: function() {
19         return 'header-dd-zone-' + this.headerCt.up('[scrollerOwner]').id;
20     },
21
22     getDragData: function(e) {
23         var header = e.getTarget('.'+this.colHeaderCls),
24             headerCmp;
25
26         if (header) {
27             headerCmp = Ext.getCmp(header.id);
28             if (!this.headerCt.dragging && headerCmp.draggable && !(headerCmp.isOnLeftEdge(e) || headerCmp.isOnRightEdge(e))) {
29                 var ddel = document.createElement('div');
30                 ddel.innerHTML = Ext.getCmp(header.id).text;
31                 return {
32                     ddel: ddel,
33                     header: headerCmp
34                 };
35             }
36         }
37         return false;
38     },
39
40     onBeforeDrag: function() {
41         return !(this.headerCt.dragging || this.disabled);
42     },
43
44     onInitDrag: function() {
45         this.headerCt.dragging = true;
46         this.callParent(arguments);
47     },
48
49     onDragDrop: function() {
50         this.headerCt.dragging = false;
51         this.callParent(arguments);
52     },
53
54     afterRepair: function() {
55         this.callParent();
56         this.headerCt.dragging = false;
57     },
58
59     getRepairXY: function() {
60         return this.dragData.header.el.getXY();
61     },
62     
63     disable: function() {
64         this.disabled = true;
65     },
66     
67     enable: function() {
68         this.disabled = false;
69     }
70 });