this.selectedSources = []; this.dragObjects = []; this.dragSource = null; if(this.currentDropTarget) { this.currentDropTarget.onDropEnd(); } } else {  } 
this.selectedSources = []; this.dragObjects = []; this.dragSource = null; if(this.currentDropTarget) { this.currentDropTarget.onDropEnd(); } } else {  } 
  onMouseUp: function(e, cancel){    // if we aren't dragging then ignore the mouse-up    // (in particular, don't call preventDefault(), because other    // code may need to process this event)    if(this.selectedSources.length==0){      return;    }    this.mouseDownX = null;    this.mouseDownY = null;    this._dragTriggered = false;    // e.preventDefault();    e.dragSource = this.dragSource;    // let ctrl be used for multiselect or another action    // if I use same key to trigger treeV3 node selection and here,    // I have bugs with drag'n'drop. why ?? no idea..    if((!e.shiftKey)&&(!e.ctrlKey)){    //if(!e.shiftKey){      if(this.currentDropTarget) {        this.currentDropTarget.onDropStart();      }      dojo.lang.forEach(this.dragObjects, function(tempDragObj){        var ret = null;        if(!tempDragObj){ return; }        if(this.currentDropTarget) {          e.dragObject = tempDragObj;          // NOTE: we can't get anything but the current drop target          // here since the drag shadow blocks mouse-over events.          // This is probelematic for dropping "in" something          var ce = this.currentDropTarget.domNode.childNodes;          if(ce.length > 0){            e.dropTarget = ce[0];            while(e.dropTarget == tempDragObj.domNode){              e.dropTarget = e.dropTarget.nextSibling;            }          }else{            e.dropTarget = this.currentDropTarget.domNode;          }          if(this.dropAcceptable){            ret = this.currentDropTarget.onDrop(e);          }else{             this.currentDropTarget.onDragOut(e);          }        }        e.dragStatus = this.dropAcceptable && ret ? "dropSuccess" : "dropFailure";        // decouple the calls for onDragEnd, so they don't block the execution here        // ie. if the onDragEnd would call an alert, the execution here is blocked until the        // user has confirmed the alert box and then the rest of the dnd code is executed        // while the mouse doesnt "hold" the dragged object anymore ... and so on        dojo.lang.delayThese([          function() {            // in FF1.5 this throws an exception, see            // http://dojotoolkit.org/pipermail/dojo-interest/2006-April/006751.html            try{              tempDragObj.dragSource.onDragEnd(e)            } catch(err) {              // since the problem seems passing e, we just copy all              // properties and try the copy ...              var ecopy = {};              for (var i in e) {                if (i=="type") { // the type property contains the exception, no idea why...                  ecopy.type = "mouseup";                  continue;                }                ecopy[i] = e[i];              }              tempDragObj.dragSource.onDragEnd(ecopy);            }          }          , function() {tempDragObj.onDragEnd(e)}]);      }, this);      this.selectedSources = [];      this.dragObjects = [];      this.dragSource = null;      if(this.currentDropTarget) {        this.currentDropTarget.onDropEnd();      }    } else {      //dojo.debug("special click");    }    dojo.event.disconnect(document, "onmousemove", this, "onMouseMove");    this.currentDropTarget = null;  },
6315	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/6315/65ae7e8768a77997b7894e274bc242069a1cb027/struts_dojo.js.uncompressed.js/clean/src/main/resources/org/apache/struts2/static/dojo/struts_dojo.js.uncompressed.js