source: trunk/web/addons/job_monarch/lib/extjs/source/dd/Registry.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: 4.3 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/**
10 * @class Ext.dd.Registry
11 * Provides easy access to all drag drop components that are registered on a page.  Items can be retrieved either
12 * directly by DOM node id, or by passing in the drag drop event that occurred and looking up the event target.
13 * @singleton
14 */
15Ext.dd.Registry = function(){
16    var elements = {}; 
17    var handles = {}; 
18    var autoIdSeed = 0;
19
20    var getId = function(el, autogen){
21        if(typeof el == "string"){
22            return el;
23        }
24        var id = el.id;
25        if(!id && autogen !== false){
26            id = "extdd-" + (++autoIdSeed);
27            el.id = id;
28        }
29        return id;
30    };
31   
32    return {
33    /**
34     * Resgister a drag drop element
35     * @param {String/HTMLElement) element The id or DOM node to register
36     * @param {Object} data (optional) An custom data object that will be passed between the elements that are involved
37     * in drag drop operations.  You can populate this object with any arbitrary properties that your own code
38     * knows how to interpret, plus there are some specific properties known to the Registry that should be
39     * populated in the data object (if applicable):
40     * <pre>
41Value      Description<br />
42---------  ------------------------------------------<br />
43handles    Array of DOM nodes that trigger dragging<br />
44           for the element being registered<br />
45isHandle   True if the element passed in triggers<br />
46           dragging itself, else false
47</pre>
48     */
49        register : function(el, data){
50            data = data || {};
51            if(typeof el == "string"){
52                el = document.getElementById(el);
53            }
54            data.ddel = el;
55            elements[getId(el)] = data;
56            if(data.isHandle !== false){
57                handles[data.ddel.id] = data;
58            }
59            if(data.handles){
60                var hs = data.handles;
61                for(var i = 0, len = hs.length; i < len; i++){
62                        handles[getId(hs[i])] = data;
63                }
64            }
65        },
66
67    /**
68     * Unregister a drag drop element
69     * @param {String/HTMLElement) element The id or DOM node to unregister
70     */
71        unregister : function(el){
72            var id = getId(el, false);
73            var data = elements[id];
74            if(data){
75                delete elements[id];
76                if(data.handles){
77                    var hs = data.handles;
78                    for(var i = 0, len = hs.length; i < len; i++){
79                        delete handles[getId(hs[i], false)];
80                    }
81                }
82            }
83        },
84
85    /**
86     * Returns the handle registered for a DOM Node by id
87     * @param {String/HTMLElement} id The DOM node or id to look up
88     * @return {Object} handle The custom handle data
89     */
90        getHandle : function(id){
91            if(typeof id != "string"){ // must be element?
92                id = id.id;
93            }
94            return handles[id];
95        },
96
97    /**
98     * Returns the handle that is registered for the DOM node that is the target of the event
99     * @param {Event} e The event
100     * @return {Object} handle The custom handle data
101     */
102        getHandleFromEvent : function(e){
103            var t = Ext.lib.Event.getTarget(e);
104            return t ? handles[t.id] : null;
105        },
106
107    /**
108     * Returns a custom data object that is registered for a DOM node by id
109     * @param {String/HTMLElement} id The DOM node or id to look up
110     * @return {Object} data The custom data
111     */
112        getTarget : function(id){
113            if(typeof id != "string"){ // must be element?
114                id = id.id;
115            }
116            return elements[id];
117        },
118
119    /**
120     * Returns a custom data object that is registered for the DOM node that is the target of the event
121     * @param {Event} e The event
122     * @return {Object} data The custom data
123     */
124        getTargetFromEvent : function(e){
125            var t = Ext.lib.Event.getTarget(e);
126            return t ? elements[t.id] || handles[t.id] : null;
127        }
128    };
129}();
Note: See TracBrowser for help on using the repository browser.