1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
| /**
| *
| */
| Ext.define('Ext.ux.DataView.LabelEditor', {
|
| extend: 'Ext.Editor',
|
| alignment: 'tl-tl',
|
| completeOnEnter: true,
|
| cancelOnEsc: true,
|
| shim: false,
|
| autoSize: {
| width: 'boundEl',
| height: 'field'
| },
|
| labelSelector: 'x-editable',
|
| requires: [
| 'Ext.form.field.Text'
| ],
|
| constructor: function(config) {
| config.field = config.field || Ext.create('Ext.form.field.Text', {
| allowOnlyWhitespace: false,
| selectOnFocus:true
| });
| this.callParent([config]);
| },
|
| init: function(view) {
| this.view = view;
| this.mon(view, 'render', this.bindEvents, this);
| this.on('complete', this.onSave, this);
| },
|
| // initialize events
| bindEvents: function() {
| this.mon(this.view.getEl(), {
| click: {
| fn: this.onClick,
| scope: this
| }
| });
| },
|
| // on mousedown show editor
| onClick: function(e, target) {
| var me = this,
| item, record;
|
| if (Ext.fly(target).hasCls(me.labelSelector) && !me.editing && !e.ctrlKey && !e.shiftKey) {
| e.stopEvent();
| item = me.view.findItemByChild(target);
| record = me.view.store.getAt(me.view.indexOf(item));
| me.startEdit(target, record.data[me.dataIndex]);
| me.activeRecord = record;
| } else if (me.editing) {
| me.field.blur();
| e.preventDefault();
| }
| },
|
| // update record
| onSave: function(ed, value) {
| this.activeRecord.set(this.dataIndex, value);
| }
| });
|
|