LazyManager.js 2.0 KB

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