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