source: trunk/web/addons/job_monarch/lib/extjs-30/examples/ux/DataView-more.js @ 625

Last change on this file since 625 was 625, checked in by ramonb, 15 years ago

lib/extjs-30:

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