Rev 1318 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*Copyright (c) 2004-2006, The Dojo FoundationAll Rights Reserved.Licensed under the Academic Free License version 2.1 or above OR themodified BSD license. For more information on Dojo licensing, see:http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.dnd.HtmlDragCopy");dojo.require("dojo.dnd.*");dojo.declare("dojo.dnd.HtmlDragCopySource", dojo.dnd.HtmlDragSource, function (node, type, copyOnce) {this.copyOnce = copyOnce;this.makeCopy = true;}, {onDragStart:function () {var dragObj = new dojo.dnd.HtmlDragCopyObject(this.dragObject, this.type, this);if (this.dragClass) {dragObj.dragClass = this.dragClass;}if (this.constrainToContainer) {dragObj.constrainTo(this.constrainingContainer || this.domNode.parentNode);}return dragObj;}, onSelected:function () {for (var i = 0; i < this.dragObjects.length; i++) {dojo.dnd.dragManager.selectedSources.push(new dojo.dnd.HtmlDragCopySource(this.dragObjects[i]));}}});dojo.declare("dojo.dnd.HtmlDragCopyObject", dojo.dnd.HtmlDragObject, function (dragObject, type, source) {this.copySource = source;}, {onDragStart:function (e) {dojo.dnd.HtmlDragCopyObject.superclass.onDragStart.apply(this, arguments);if (this.copySource.makeCopy) {this.sourceNode = this.domNode;this.domNode = this.domNode.cloneNode(true);}}, onDragEnd:function (e) {switch (e.dragStatus) {case "dropFailure":var startCoords = dojo.html.getAbsolutePosition(this.dragClone, true);var endCoords = {left:this.dragStartPosition.x + 1, top:this.dragStartPosition.y + 1};var anim = dojo.lfx.slideTo(this.dragClone, endCoords, 500, dojo.lfx.easeOut);var dragObject = this;dojo.event.connect(anim, "onEnd", function (e) {dojo.lang.setTimeout(function () {dojo.html.removeNode(dragObject.dragClone);dragObject.dragClone = null;if (dragObject.copySource.makeCopy) {dojo.html.removeNode(dragObject.domNode);dragObject.domNode = dragObject.sourceNode;dragObject.sourceNode = null;}}, 200);});anim.play();dojo.event.topic.publish("dragEnd", {source:this});return;}dojo.dnd.HtmlDragCopyObject.superclass.onDragEnd.apply(this, arguments);this.copySource.dragObject = this.domNode;if (this.copySource.copyOnce) {this.copySource.makeCopy = false;}new dojo.dnd.HtmlDragCopySource(this.sourceNode, this.type, this.copySource.copyOnce);this.sourceNode = null;}});