summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/mdnd/LazyManager.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/mdnd/LazyManager.js')
-rw-r--r--js/dojo/dojox/mdnd/LazyManager.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/js/dojo/dojox/mdnd/LazyManager.js b/js/dojo/dojox/mdnd/LazyManager.js
new file mode 100644
index 0000000..0fdd194
--- /dev/null
+++ b/js/dojo/dojox/mdnd/LazyManager.js
@@ -0,0 +1,73 @@
+//>>built
+define("dojox/mdnd/LazyManager", [
+ "dojo/_base/kernel", // dojo.addOnUnload
+ "dojo/_base/lang", // dojo.hitch
+ "dojo/_base/declare",
+ "dojo/_base/html", // dojo.create, dojo.attr, dojo.addClass
+ "dojo/dnd/Manager",
+ "./PureSource"
+],function(dojo){
+ return dojo.declare(
+ "dojox.mdnd.LazyManager",
+ null,
+ {
+ // summary:
+ // This class allows to launch a drag and drop dojo on the fly.
+
+ constructor: function(){
+ //console.log("dojox.mdnd.LazyManager ::: constructor");
+ this._registry = {};
+ // initialization of the _fakeSource to enabled DragAndDrop :
+ this._fakeSource = new dojox.mdnd.PureSource(dojo.create("div"), {
+ 'copyOnly': false
+ });
+ this._fakeSource.startup();
+ dojo.addOnUnload(dojo.hitch(this, "destroy"));
+ this.manager = dojo.dnd.manager();
+ },
+
+ getItem: function(/*DOMNode*/draggedNode){
+ //console.log("dojox.mdnd.LazyManager ::: getItem");
+ var type = draggedNode.getAttribute("dndType");
+ return {
+ 'data' : draggedNode.getAttribute("dndData") || draggedNode.innerHTML,
+ 'type' : type ? type.split(/\s*,\s*/) : ["text"]
+ }
+ },
+
+ startDrag: function(/*Event*/e, /*DOMNode?*/draggedNode){
+ // summary:
+ // launch a dojo drag and drop on the fly.
+
+ //console.log("dojox.mdnd.LazyManager ::: startDrag");
+ draggedNode = draggedNode || e.target;
+ if(draggedNode){
+ var m = this.manager,
+ object = this.getItem(draggedNode);
+ if(draggedNode.id == ""){
+ dojo.attr(draggedNode, "id", dojo.dnd.getUniqueId());
+ }
+ dojo.addClass(draggedNode, "dojoDndItem");
+ this._fakeSource.setItem(draggedNode.id, object);
+ m.startDrag(this._fakeSource, [draggedNode], false);
+ m.onMouseMove(e);
+ }
+ },
+
+ cancelDrag: function(){
+ // summary:
+ // cancel a drag and drop dojo on the fly.
+
+ //console.log("dojox.mdnd.LazyManager ::: cancelDrag");
+ var m = this.manager;
+ m.target = null;
+ m.onMouseUp();
+ },
+
+
+ destroy: function(){
+ //console.log("dojox.mdnd.LazyManager ::: destroy");
+ this._fakeSource.destroy();
+ }
+ });
+});