[483] | 1 | define([ |
---|
| 2 | "dojo/_base/kernel", |
---|
| 3 | "dojo/_base/declare", |
---|
| 4 | "dojo/_base/lang", // dojo.hitch |
---|
| 5 | "dojo/dom-class", |
---|
| 6 | "dojo/dom-construct", |
---|
| 7 | "dojo/dom-attr", |
---|
| 8 | "dojo/dnd/common", |
---|
| 9 | "dojo/dnd/Manager", |
---|
| 10 | "./PureSource", |
---|
| 11 | "dojo/_base/unload" // dojo.addOnUnload |
---|
| 12 | ],function(dojo, declare, lang, domClass, domConstruct, domAttr, dnd, Manager, PureSource){ |
---|
| 13 | return declare( |
---|
| 14 | "dojox.mdnd.LazyManager", |
---|
| 15 | null, |
---|
| 16 | { |
---|
| 17 | // summary: |
---|
| 18 | // This class allows to launch a drag and drop dojo on the fly. |
---|
| 19 | |
---|
| 20 | constructor: function(){ |
---|
| 21 | //console.log("dojox.mdnd.LazyManager ::: constructor"); |
---|
| 22 | this._registry = {}; |
---|
| 23 | // initialization of the _fakeSource to enabled DragAndDrop : |
---|
| 24 | this._fakeSource = new PureSource(domConstruct.create("div"), { |
---|
| 25 | 'copyOnly': false |
---|
| 26 | }); |
---|
| 27 | this._fakeSource.startup(); |
---|
| 28 | dojo.addOnUnload(lang.hitch(this, "destroy")); |
---|
| 29 | this.manager = Manager.manager(); |
---|
| 30 | }, |
---|
| 31 | |
---|
| 32 | getItem: function(/*DOMNode*/draggedNode){ |
---|
| 33 | //console.log("dojox.mdnd.LazyManager ::: getItem"); |
---|
| 34 | var type = draggedNode.getAttribute("dndType"); |
---|
| 35 | return { |
---|
| 36 | 'data' : draggedNode.getAttribute("dndData") || draggedNode.innerHTML, |
---|
| 37 | 'type' : type ? type.split(/\s*,\s*/) : ["text"] |
---|
| 38 | } |
---|
| 39 | }, |
---|
| 40 | |
---|
| 41 | startDrag: function(/*Event*/e, /*DOMNode?*/draggedNode){ |
---|
| 42 | // summary: |
---|
| 43 | // launch a dojo drag and drop on the fly. |
---|
| 44 | |
---|
| 45 | //console.log("dojox.mdnd.LazyManager ::: startDrag"); |
---|
| 46 | draggedNode = draggedNode || e.target; |
---|
| 47 | if(draggedNode){ |
---|
| 48 | var m = this.manager, |
---|
| 49 | object = this.getItem(draggedNode); |
---|
| 50 | if(draggedNode.id == ""){ |
---|
| 51 | domAttr.set(draggedNode, "id", dnd.getUniqueId()); |
---|
| 52 | } |
---|
| 53 | domClass.add(draggedNode, "dojoDndItem"); |
---|
| 54 | this._fakeSource.setItem(draggedNode.id, object); |
---|
| 55 | m.startDrag(this._fakeSource, [draggedNode], false); |
---|
| 56 | m.onMouseMove(e); |
---|
| 57 | } |
---|
| 58 | }, |
---|
| 59 | |
---|
| 60 | cancelDrag: function(){ |
---|
| 61 | // summary: |
---|
| 62 | // cancel a drag and drop dojo on the fly. |
---|
| 63 | |
---|
| 64 | //console.log("dojox.mdnd.LazyManager ::: cancelDrag"); |
---|
| 65 | var m = this.manager; |
---|
| 66 | m.target = null; |
---|
| 67 | m.onMouseUp(); |
---|
| 68 | }, |
---|
| 69 | |
---|
| 70 | |
---|
| 71 | destroy: function(){ |
---|
| 72 | //console.log("dojox.mdnd.LazyManager ::: destroy"); |
---|
| 73 | this._fakeSource.destroy(); |
---|
| 74 | } |
---|
| 75 | }); |
---|
| 76 | }); |
---|