Registry.html
4.92 KB
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>The source code</title>
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>
<style type="text/css">
.highlight { display: block; background-color: #ddd; }
</style>
<script type="text/javascript">
function highlight() {
document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
}
</script>
</head>
<body onload="prettyPrint(); highlight();">
<pre class="prettyprint lang-js"><span id='Ext-dd-Registry'>/**
</span> * Provides easy access to all drag drop components that are registered on a page. Items can be retrieved either
* directly by DOM node id, or by passing in the drag drop event that occurred and looking up the event target.
*/
Ext.define('Ext.dd.Registry', {
singleton: true,
constructor: function() {
this.elements = {};
this.handles = {};
this.autoIdSeed = 0;
},
getId: function(el, autogen){
if(typeof el == "string"){
return el;
}
var id = el.id;
if(!id && autogen !== false){
id = "extdd-" + (++this.autoIdSeed);
el.id = id;
}
return id;
},
<span id='Ext-dd-Registry-method-register'> /**
</span> * Registers a drag drop element.
*
* @param {String/HTMLElement} element The id or DOM node to register
* @param {Object} data An custom data object that will be passed between the elements that are involved in drag
* drop operations. You can populate this object with any arbitrary properties that your own code knows how to
* interpret, plus there are some specific properties known to the Registry that should be populated in the data
* object (if applicable):
* @param {HTMLElement[]} data.handles Array of DOM nodes that trigger dragging for the element being registered.
* @param {Boolean} data.isHandle True if the element passed in triggers dragging itself, else false.
*/
register : function(el, data){
data = data || {};
if (typeof el == "string") {
el = document.getElementById(el);
}
data.ddel = el;
this.elements[this.getId(el)] = data;
if (data.isHandle !== false) {
this.handles[data.ddel.id] = data;
}
if (data.handles) {
var hs = data.handles,
i, len;
for (i = 0, len = hs.length; i < len; i++) {
this.handles[this.getId(hs[i])] = data;
}
}
},
<span id='Ext-dd-Registry-method-unregister'> /**
</span> * Unregister a drag drop element
* @param {String/HTMLElement} element The id or DOM node to unregister
*/
unregister : function(el){
var id = this.getId(el, false),
data = this.elements[id],
hs, i, len;
if(data){
delete this.elements[id];
if(data.handles){
hs = data.handles;
for (i = 0, len = hs.length; i < len; i++) {
delete this.handles[this.getId(hs[i], false)];
}
}
}
},
<span id='Ext-dd-Registry-method-getHandle'> /**
</span> * Returns the handle registered for a DOM Node by id
* @param {String/HTMLElement} id The DOM node or id to look up
* @return {Object} handle The custom handle data
*/
getHandle : function(id){
if(typeof id != "string"){ // must be element?
id = id.id;
}
return this.handles[id];
},
<span id='Ext-dd-Registry-method-getHandleFromEvent'> /**
</span> * Returns the handle that is registered for the DOM node that is the target of the event
* @param {Event} e The event
* @return {Object} handle The custom handle data
*/
getHandleFromEvent : function(e){
var t = e.getTarget();
return t ? this.handles[t.id] : null;
},
<span id='Ext-dd-Registry-method-getTarget'> /**
</span> * Returns a custom data object that is registered for a DOM node by id
* @param {String/HTMLElement} id The DOM node or id to look up
* @return {Object} data The custom data
*/
getTarget : function(id){
if(typeof id != "string"){ // must be element?
id = id.id;
}
return this.elements[id];
},
<span id='Ext-dd-Registry-method-getTargetFromEvent'> /**
</span> * Returns a custom data object that is registered for the DOM node that is the target of the event
* @param {Event} e The event
* @return {Object} data The custom data
*/
getTargetFromEvent : function(e){
var t = e.getTarget();
return t ? this.elements[t.id] || this.handles[t.id] : null;
}
});</pre>
</body>
</html>