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 137
|
<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>
</head>
<body onload="prettyPrint();">
<pre class="prettyprint lang-js">/*!
* Ext JS Library 3.4.0
* Copyright(c) 2006-2011 Sencha Inc.
* licensing@sencha.com
* http://www.sencha.com/license
*/
<div id="cls-Ext.dd.Registry"></div>/**
* @class Ext.dd.Registry
* 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.
* @singleton
*/
Ext.dd.Registry = function(){
var elements = {};
var handles = {};
var autoIdSeed = 0;
var getId = function(el, autogen){
if(typeof el == "string"){
return el;
}
var id = el.id;
if(!id && autogen !== false){
id = "extdd-" + (++autoIdSeed);
el.id = id;
}
return id;
};
return {
<div id="method-Ext.dd.Registry-register"></div>/**
* Resgister a drag drop element
* @param {String/HTMLElement} element The id or DOM node to register
* @param {Object} data (optional) 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):
* <pre>
Value Description<br />
--------- ------------------------------------------<br />
handles Array of DOM nodes that trigger dragging<br />
for the element being registered<br />
isHandle True if the element passed in triggers<br />
dragging itself, else false
</pre>
*/
register : function(el, data){
data = data || {};
if(typeof el == "string"){
el = document.getElementById(el);
}
data.ddel = el;
elements[getId(el)] = data;
if(data.isHandle !== false){
handles[data.ddel.id] = data;
}
if(data.handles){
var hs = data.handles;
for(var i = 0, len = hs.length; i < len; i++){
handles[getId(hs[i])] = data;
}
}
},
<div id="method-Ext.dd.Registry-unregister"></div>/**
* Unregister a drag drop element
* @param {String/HTMLElement} element The id or DOM node to unregister
*/
unregister : function(el){
var id = getId(el, false);
var data = elements[id];
if(data){
delete elements[id];
if(data.handles){
var hs = data.handles;
for(var i = 0, len = hs.length; i < len; i++){
delete handles[getId(hs[i], false)];
}
}
}
},
<div id="method-Ext.dd.Registry-getHandle"></div>/**
* 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 handles[id];
},
<div id="method-Ext.dd.Registry-getHandleFromEvent"></div>/**
* 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 = Ext.lib.Event.getTarget(e);
return t ? handles[t.id] : null;
},
<div id="method-Ext.dd.Registry-getTarget"></div>/**
* 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 elements[id];
},
<div id="method-Ext.dd.Registry-getTargetFromEvent"></div>/**
* 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 = Ext.lib.Event.getTarget(e);
return t ? elements[t.id] || handles[t.id] : null;
}
};
}();</pre>
</body>
</html>
|