/*! Ext JS Library 3.2.1 Copyright(c) 2006-2010 Ext JS, Inc. licensing@extjs.com http://www.extjs.com/license */ Ext.DataView.LabelEditor = Ext.extend(Ext.Editor, { alignment: "tl-tl", hideEl: false, cls: "x-small-editor", shim: false, completeOnEnter: true, cancelOnEsc: true, labelSelector: 'span.x-editable', constructor: function(cfg, field) { Ext.DataView.LabelEditor.superclass.constructor.call(this, field || new Ext.form.TextField({ allowBlank: false, growMin: 90, growMax: 240, grow: true, selectOnFocus: true }), cfg); }, init: function(view) { this.view = view; view.on('render', this.initEditor, this); this.on('complete', this.onSave, this); }, initEditor: function() { this.view.on({ scope: this, containerclick: this.doBlur, click: this.doBlur }); this.view.getEl().on('mousedown', this.onMouseDown, this, { delegate: this.labelSelector }); }, doBlur: function() { if (this.editing) { this.field.blur(); } }, onMouseDown: function(e, target) { if (!e.ctrlKey && !e.shiftKey) { var item = this.view.findItemFromChild(target); e.stopEvent(); var record = this.view.store.getAt(this.view.indexOf(item)); this.startEdit(target, record.data[this.dataIndex]); this.activeRecord = record; } else { e.preventDefault(); } }, onSave: function(ed, value) { this.activeRecord.set(this.dataIndex, value); } }); Ext.DataView.DragSelector = function(cfg) { cfg = cfg || {}; var view, proxy, tracker; var rs, bodyRegion, dragRegion = new Ext.lib.Region(0, 0, 0, 0); var dragSafe = cfg.dragSafe === true; this.init = function(dataView) { view = dataView; view.on('render', onRender); }; function fillRegions() { rs = []; view.all.each(function(el) { rs[rs.length] = el.getRegion(); }); bodyRegion = view.el.getRegion(); } function cancelClick() { return false; } function onBeforeStart(e) { return !dragSafe || e.target == view.el.dom; } function onStart(e) { view.on('containerclick', cancelClick, view, { single: true }); if (!proxy) { proxy = view.el.createChild({ cls: 'x-view-selector' }); } else { if (proxy.dom.parentNode !== view.el.dom) { view.el.dom.appendChild(proxy.dom); } proxy.setDisplayed('block'); } fillRegions(); view.clearSelections(); } function onDrag(e) { var startXY = tracker.startXY; var xy = tracker.getXY(); var x = Math.min(startXY[0], xy[0]); var y = Math.min(startXY[1], xy[1]); var w = Math.abs(startXY[0] - xy[0]); var h = Math.abs(startXY[1] - xy[1]); dragRegion.left = x; dragRegion.top = y; dragRegion.right = x + w; dragRegion.bottom = y + h; dragRegion.constrainTo(bodyRegion); proxy.setRegion(dragRegion); for (var i = 0, len = rs.length; i < len; i++) { var r = rs[i], sel = dragRegion.intersect(r); if (sel && !r.selected) { r.selected = true; view.select(i, true); } else if (!sel && r.selected) { r.selected = false; view.deselect(i); } } } function onEnd(e) { if (!Ext.isIE) { view.un('containerclick', cancelClick, view); } if (proxy) { proxy.setDisplayed(false); } } function onRender(view) { tracker = new Ext.dd.DragTracker({ onBeforeStart: onBeforeStart, onStart: onStart, onDrag: onDrag, onEnd: onEnd }); tracker.initEl(view.el); } };