commit extjs-2.2.1
[extjs.git] / source / widgets / grid / ColumnSplitDD.js
1 /*\r
2  * Ext JS Library 2.2.1\r
3  * Copyright(c) 2006-2009, Ext JS, LLC.\r
4  * licensing@extjs.com\r
5  * \r
6  * http://extjs.com/license\r
7  */\r
8 \r
9 // private\r
10 // This is a support class used internally by the Grid components\r
11 Ext.grid.SplitDragZone = function(grid, hd, hd2){\r
12     this.grid = grid;\r
13     this.view = grid.getView();\r
14     this.proxy = this.view.resizeProxy;\r
15     Ext.grid.SplitDragZone.superclass.constructor.call(this, hd,\r
16         "gridSplitters" + this.grid.getGridEl().id, {\r
17         dragElId : Ext.id(this.proxy.dom), resizeFrame:false\r
18     });\r
19     this.setHandleElId(Ext.id(hd));\r
20     this.setOuterHandleElId(Ext.id(hd2));\r
21     this.scroll = false;\r
22 };\r
23 Ext.extend(Ext.grid.SplitDragZone, Ext.dd.DDProxy, {\r
24     fly: Ext.Element.fly,\r
25 \r
26     b4StartDrag : function(x, y){\r
27         this.view.headersDisabled = true;\r
28         this.proxy.setHeight(this.view.mainWrap.getHeight());\r
29         var w = this.cm.getColumnWidth(this.cellIndex);\r
30         var minw = Math.max(w-this.grid.minColumnWidth, 0);\r
31         this.resetConstraints();\r
32         this.setXConstraint(minw, 1000);\r
33         this.setYConstraint(0, 0);\r
34         this.minX = x - minw;\r
35         this.maxX = x + 1000;\r
36         this.startPos = x;\r
37         Ext.dd.DDProxy.prototype.b4StartDrag.call(this, x, y);\r
38     },\r
39 \r
40 \r
41     handleMouseDown : function(e){\r
42         ev = Ext.EventObject.setEvent(e);\r
43         var t = this.fly(ev.getTarget());\r
44         if(t.hasClass("x-grid-split")){\r
45             this.cellIndex = this.view.getCellIndex(t.dom);\r
46             this.split = t.dom;\r
47             this.cm = this.grid.colModel;\r
48             if(this.cm.isResizable(this.cellIndex) && !this.cm.isFixed(this.cellIndex)){\r
49                 Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this, arguments);\r
50             }\r
51         }\r
52     },\r
53 \r
54     endDrag : function(e){\r
55         this.view.headersDisabled = false;\r
56         var endX = Math.max(this.minX, Ext.lib.Event.getPageX(e));\r
57         var diff = endX - this.startPos;\r
58         this.view.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex)+diff);\r
59     },\r
60 \r
61     autoOffset : function(){\r
62         this.setDelta(0,0);\r
63     }\r
64 });