3 * Copyright(c) 2006-2010 Ext JS, Inc.
5 * http://www.extjs.com/license
8 * @class Ext.DataView.LabelEditor
12 Ext.DataView.LabelEditor = Ext.extend(Ext.Editor, {
15 cls: "x-small-editor",
17 completeOnEnter: true,
19 labelSelector: 'span.x-editable',
21 constructor: function(cfg, field){
22 Ext.DataView.LabelEditor.superclass.constructor.call(this,
23 field || new Ext.form.TextField({
33 init : function(view){
35 view.on('render', this.initEditor, this);
36 this.on('complete', this.onSave, this);
39 initEditor : function(){
42 containerclick: this.doBlur,
45 this.view.getEl().on('mousedown', this.onMouseDown, this, {delegate: this.labelSelector});
54 onMouseDown : function(e, target){
55 if(!e.ctrlKey && !e.shiftKey){
56 var item = this.view.findItemFromChild(target);
58 var record = this.view.store.getAt(this.view.indexOf(item));
59 this.startEdit(target, record.data[this.dataIndex]);
60 this.activeRecord = record;
66 onSave : function(ed, value){
67 this.activeRecord.set(this.dataIndex, value);
72 Ext.DataView.DragSelector = function(cfg){
74 var view, proxy, tracker;
75 var rs, bodyRegion, dragRegion = new Ext.lib.Region(0,0,0,0);
76 var dragSafe = cfg.dragSafe === true;
78 this.init = function(dataView){
80 view.on('render', onRender);
83 function fillRegions(){
85 view.all.each(function(el){
86 rs[rs.length] = el.getRegion();
88 bodyRegion = view.el.getRegion();
91 function cancelClick(){
95 function onBeforeStart(e){
96 return !dragSafe || e.target == view.el.dom;
100 view.on('containerclick', cancelClick, view, {single:true});
102 proxy = view.el.createChild({cls:'x-view-selector'});
104 if(proxy.dom.parentNode !== view.el.dom){
105 view.el.dom.appendChild(proxy.dom);
107 proxy.setDisplayed('block');
110 view.clearSelections();
114 var startXY = tracker.startXY;
115 var xy = tracker.getXY();
117 var x = Math.min(startXY[0], xy[0]);
118 var y = Math.min(startXY[1], xy[1]);
119 var w = Math.abs(startXY[0] - xy[0]);
120 var h = Math.abs(startXY[1] - xy[1]);
124 dragRegion.right = x+w;
125 dragRegion.bottom = y+h;
127 dragRegion.constrainTo(bodyRegion);
128 proxy.setRegion(dragRegion);
130 for(var i = 0, len = rs.length; i < len; i++){
131 var r = rs[i], sel = dragRegion.intersect(r);
132 if(sel && !r.selected){
134 view.select(i, true);
135 }else if(!sel && r.selected){
144 view.un('containerclick', cancelClick, view);
147 proxy.setDisplayed(false);
151 function onRender(view){
152 tracker = new Ext.dd.DragTracker({
153 onBeforeStart: onBeforeStart,
158 tracker.initEl(view.el);