source: trunk/web/addons/job_monarch/lib/extjs/examples/view/data-view-plugins.js @ 619

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

lib/:

  • added new AJAX dependancies: ExtJS, pChart, Lightbox2
File size: 3.7 KB
Line 
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
10Ext.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
22Ext.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
59Ext.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};
Note: See TracBrowser for help on using the repository browser.