1 | /* |
---|
2 | * Ext JS Library 2.2.1 |
---|
3 | * Copyright(c) 2006-2009, Ext JS, LLC. |
---|
4 | * licensing@extjs.com |
---|
5 | * |
---|
6 | * http://extjs.com/license |
---|
7 | */ |
---|
8 | |
---|
9 | |
---|
10 | Ext.DataView.LabelEditor = function(cfg, field){ |
---|
11 | Ext.DataView.LabelEditor.superclass.constructor.call(this, |
---|
12 | field || new Ext.form.TextField({ |
---|
13 | allowBlank: false, |
---|
14 | growMin:90, |
---|
15 | growMax:240, |
---|
16 | grow:true, |
---|
17 | selectOnFocus:true |
---|
18 | }), cfg |
---|
19 | ); |
---|
20 | } |
---|
21 | |
---|
22 | Ext.extend(Ext.DataView.LabelEditor, Ext.Editor, { |
---|
23 | alignment: "tl-tl", |
---|
24 | hideEl : false, |
---|
25 | cls: "x-small-editor", |
---|
26 | shim: false, |
---|
27 | completeOnEnter: true, |
---|
28 | cancelOnEsc: true, |
---|
29 | labelSelector: 'span.x-editable', |
---|
30 | |
---|
31 | init : function(view){ |
---|
32 | this.view = view; |
---|
33 | view.on('render', this.initEditor, this); |
---|
34 | this.on('complete', this.onSave, this); |
---|
35 | }, |
---|
36 | |
---|
37 | initEditor : function(){ |
---|
38 | this.view.getEl().on('mousedown', this.onMouseDown, this, {delegate: this.labelSelector}); |
---|
39 | }, |
---|
40 | |
---|
41 | onMouseDown : function(e, target){ |
---|
42 | if(!e.ctrlKey && !e.shiftKey){ |
---|
43 | var item = this.view.findItemFromChild(target); |
---|
44 | e.stopEvent(); |
---|
45 | var record = this.view.store.getAt(this.view.indexOf(item)); |
---|
46 | this.startEdit(target, record.data[this.dataIndex]); |
---|
47 | this.activeRecord = record; |
---|
48 | }else{ |
---|
49 | e.preventDefault(); |
---|
50 | } |
---|
51 | }, |
---|
52 | |
---|
53 | onSave : function(ed, value){ |
---|
54 | this.activeRecord.set(this.dataIndex, value); |
---|
55 | } |
---|
56 | }); |
---|
57 | |
---|
58 | |
---|
59 | Ext.DataView.DragSelector = function(cfg){ |
---|
60 | cfg = cfg || {}; |
---|
61 | var view, regions, proxy, tracker; |
---|
62 | var rs, bodyRegion, dragRegion = new Ext.lib.Region(0,0,0,0); |
---|
63 | var dragSafe = cfg.dragSafe === true; |
---|
64 | |
---|
65 | this.init = function(dataView){ |
---|
66 | view = dataView; |
---|
67 | view.on('render', onRender); |
---|
68 | }; |
---|
69 | |
---|
70 | function fillRegions(){ |
---|
71 | rs = []; |
---|
72 | view.all.each(function(el){ |
---|
73 | rs[rs.length] = el.getRegion(); |
---|
74 | }); |
---|
75 | bodyRegion = view.el.getRegion(); |
---|
76 | } |
---|
77 | |
---|
78 | function cancelClick(){ |
---|
79 | return false; |
---|
80 | } |
---|
81 | |
---|
82 | function onBeforeStart(e){ |
---|
83 | return !dragSafe || e.target == view.el.dom; |
---|
84 | } |
---|
85 | |
---|
86 | function onStart(e){ |
---|
87 | view.on('containerclick', cancelClick, view, {single:true}); |
---|
88 | if(!proxy){ |
---|
89 | proxy = view.el.createChild({cls:'x-view-selector'}); |
---|
90 | }else{ |
---|
91 | proxy.setDisplayed('block'); |
---|
92 | } |
---|
93 | fillRegions(); |
---|
94 | view.clearSelections(); |
---|
95 | } |
---|
96 | |
---|
97 | function onDrag(e){ |
---|
98 | var startXY = tracker.startXY; |
---|
99 | var xy = tracker.getXY(); |
---|
100 | |
---|
101 | var x = Math.min(startXY[0], xy[0]); |
---|
102 | var y = Math.min(startXY[1], xy[1]); |
---|
103 | var w = Math.abs(startXY[0] - xy[0]); |
---|
104 | var h = Math.abs(startXY[1] - xy[1]); |
---|
105 | |
---|
106 | dragRegion.left = x; |
---|
107 | dragRegion.top = y; |
---|
108 | dragRegion.right = x+w; |
---|
109 | dragRegion.bottom = y+h; |
---|
110 | |
---|
111 | dragRegion.constrainTo(bodyRegion); |
---|
112 | proxy.setRegion(dragRegion); |
---|
113 | |
---|
114 | for(var i = 0, len = rs.length; i < len; i++){ |
---|
115 | var r = rs[i], sel = dragRegion.intersect(r); |
---|
116 | if(sel && !r.selected){ |
---|
117 | r.selected = true; |
---|
118 | view.select(i, true); |
---|
119 | }else if(!sel && r.selected){ |
---|
120 | r.selected = false; |
---|
121 | view.deselect(i); |
---|
122 | } |
---|
123 | } |
---|
124 | } |
---|
125 | |
---|
126 | function onEnd(e){ |
---|
127 | if(proxy){ |
---|
128 | proxy.setDisplayed(false); |
---|
129 | } |
---|
130 | } |
---|
131 | |
---|
132 | function onRender(view){ |
---|
133 | tracker = new Ext.dd.DragTracker({ |
---|
134 | onBeforeStart: onBeforeStart, |
---|
135 | onStart: onStart, |
---|
136 | onDrag: onDrag, |
---|
137 | onEnd: onEnd |
---|
138 | }); |
---|
139 | tracker.initEl(view.el); |
---|
140 | } |
---|
141 | }; |
---|