1// Name: Compat.DragDrop.DragDropScripts.debug.js 2// Assembly: AjaxControlToolkit 3// Version: 3.5.7.1213 4// FileVersion: 3.5.7.1213 5// (c) 2010 CodePlex Foundation 6 7 8 9/// <reference name="MicrosoftAjax.debug.js" /> 10/// <reference path="../../Common/Common.js" /> 11/// <reference path="../Timer/Timer.js" /> 12 13(function() { 14var scriptName = "ExtendedDragDrop"; 15 16function execute() { 17 18/////////////////////////////////////////////////////////////////////////////// 19 20Type.registerNamespace('Sys.Extended.UI'); 21 22Sys.Extended.UI.IDragSource = function() { 23} 24Sys.Extended.UI.IDragSource.prototype = { 25 get_dragDataType: function() { throw Error.notImplemented(); }, 26 getDragData: function() { throw Error.notImplemented(); }, 27 get_dragMode: function() { throw Error.notImplemented(); }, 28 onDragStart: function() { throw Error.notImplemented(); }, 29 onDrag: function() { throw Error.notImplemented(); }, 30 onDragEnd: function() { throw Error.notImplemented(); } 31} 32Sys.Extended.UI.IDragSource.registerInterface('Sys.Extended.UI.IDragSource'); 33 34/////////////////////////////////////////////////////////////////////////////// 35Sys.Extended.UI.IDropTarget = function() { 36} 37Sys.Extended.UI.IDropTarget.prototype = { 38 get_dropTargetElement: function() { throw Error.notImplemented(); }, 39 canDrop: function() { throw Error.notImplemented(); }, 40 drop: function() { throw Error.notImplemented(); }, 41 onDragEnterTarget: function() { throw Error.notImplemented(); }, 42 onDragLeaveTarget: function() { throw Error.notImplemented(); }, 43 onDragInTarget: function() { throw Error.notImplemented(); } 44} 45Sys.Extended.UI.IDropTarget.registerInterface('Sys.Extended.UI.IDropTarget'); 46 47/////////////////////////////////////////////// 48 49Sys.Extended.UI.DragMode = function() { 50 throw Error.invalidOperation(); 51} 52Sys.Extended.UI.DragMode.prototype = { 53 Copy: 0, 54 Move: 1 55} 56Sys.Extended.UI.DragMode.registerEnum('Sys.Extended.UI.DragMode'); 57 58//////////////////////////////////////////////////////////////////// 59 60Sys.Extended.UI.DragDropEventArgs = function(dragMode, dragDataType, dragData) { 61 this._dragMode = dragMode; 62 this._dataType = dragDataType; 63 this._data = dragData; 64} 65Sys.Extended.UI.DragDropEventArgs.prototype = { 66 get_dragMode: function() { 67 return this._dragMode || null; 68 }, 69 get_dragDataType: function() { 70 return this._dataType || null; 71 }, 72 get_dragData: function() { 73 return this._data || null; 74 } 75} 76Sys.Extended.UI.DragDropEventArgs.registerClass('Sys.Extended.UI.DragDropEventArgs'); 77 78 79Sys.Extended.UI._DragDropManager = function() { 80 this._instance = null; 81 this._events = null; 82} 83Sys.Extended.UI._DragDropManager.prototype = { 84 85 add_dragStart: function(handler) { 86 this.get_events().addHandler('dragStart', handler); 87 }, 88 remove_dragStart: function(handler) { 89 this.get_events().removeHandler('dragStart', handler); 90 }, 91 92 get_events: function() { 93 if (!this._events) { 94 this._events = new Sys.EventHandlerList(); 95 } 96 return this._events; 97 }, 98 99 add_dragStop: function(handler) { 100 this.get_events().addHandler('dragStop', handler); 101 }, 102 remove_dragStop: function(handler) { 103 this.get_events().removeHandler('dragStop', handler); 104 }, 105 106 _getInstance: function() { 107 if (!this._instance) { 108 if (Sys.Browser.agent === Sys.Browser.InternetExplorer) { 109 this._instance = new Sys.Extended.UI.IEDragDropManager(); 110 } 111 else { 112 this._instance = new Sys.Extended.UI.GenericDragDropManager(); 113 } 114 this._instance.initialize(); 115 this._instance.add_dragStart(Function.createDelegate(this, this._raiseDragStart)); 116 this._instance.add_dragStop(Function.createDelegate(this, this._raiseDragStop)); 117 } 118 return this._instance; 119 }, 120 121 startDragDrop: function(dragSource, dragVisual, context, useBuiltInDragAndDropFunctions) { 122 this._getInstance().startDragDrop(dragSource, dragVisual, context, useBuiltInDragAndDropFunctions); 123 }, 124 125 registerDropTarget: function(target) { 126 this._getInstance().registerDropTarget(target); 127 }, 128 129 unregisterDropTarget: function(target) { 130 this._getInstance().unregisterDropTarget(target); 131 }, 132 133 dispose: function() { 134 delete this._events; 135 Sys.Application.unregisterDisposableObject(this); 136 Sys.Application.removeComponent(this); 137 }, 138 139 _raiseDragStart: function(sender, eventArgs) { 140 var handler = this.get_events().getHandler('dragStart'); 141 if (handler) { 142 handler(this, eventArgs); 143 } 144 }, 145 146 _raiseDragStop: function(sender, eventArgs) { 147 var handler = this.get_events().getHandler('dragStop'); 148 if (handler) { 149 handler(this, eventArgs); 150 } 151 } 152} 153Sys.Extended.UI._DragDropManager.registerClass('Sys.Extended.UI._DragDropManager'); 154Sys.Extended.UI.DragDropManager = new Sys.Extended.UI._DragDropManager(); 155 156 157Sys.Extended.UI.IEDragDropManager = function() { 158 Sys.Extended.UI.IEDragDropManager.initializeBase(this); 159 160 this._dropTargets = null; 161 this._radius = 10; 162 this._useBuiltInDragAndDropFunctions = true; 163 this._activeDragVisual = null; 164 this._activeContext = null; 165 this._activeDragSource = null; 166 this._underlyingTarget = null; 167 this._oldOffset = null; 168 this._potentialTarget = null; 169 this._isDragging = false; 170 this._mouseUpHandler = null; 171 this._documentMouseMoveHandler = null; 172 this._documentDragOverHandler = null; 173 this._dragStartHandler = null; 174 this._mouseMoveHandler = null; 175 this._dragEnterHandler = null; 176 this._dragLeaveHandler = null; 177 this._dragOverHandler = null; 178 this._dropHandler = null; 179} 180Sys.Extended.UI.IEDragDropManager.prototype = { 181 182 add_dragStart: function(handler) { 183 this.get_events().addHandler("dragStart", handler); 184 }, 185 186 remove_dragStart: function(handler) { 187 this.get_events().removeHandler("dragStart", handler); 188 }, 189 190 add_dragStop: function(handler) { 191 this.get_events().addHandler("dragStop", handler); 192 }, 193 194 remove_dragStop: function(handler) { 195 this.get_events().removeHandler("dragStop", handler); 196 }, 197 198 initialize: function() { 199 Sys.Extended.UI.IEDragDropManager.callBaseMethod(this, 'initialize'); 200 this._mouseUpHandler = Function.createDelegate(this, this._onMouseUp); 201 this._documentMouseMoveHandler = Function.createDelegate(this, this._onDocumentMouseMove); 202 this._documentDragOverHandler = Function.createDelegate(this, this._onDocumentDragOver); 203 this._dragStartHandler = Function.createDelegate(this, this._onDragStart); 204 this._mouseMoveHandler = Function.createDelegate(this, this._onMouseMove); 205 this._dragEnterHandler = Function.createDelegate(this, this._onDragEnter); 206 this._dragLeaveHandler = Function.createDelegate(this, this._onDragLeave); 207 this._dragOverHandler = Function.createDelegate(this, this._onDragOver); 208 this._dropHandler = Function.createDelegate(this, this._onDrop); 209 }, 210 211 212 dispose: function() { 213 if (this._dropTargets) { 214 for (var i = 0; i < this._dropTargets; i++) { 215 this.unregisterDropTarget(this._dropTargets[i]); 216 } 217 this._dropTargets = null; 218 } 219 220 Sys.Extended.UI.IEDragDropManager.callBaseMethod(this, 'dispose'); 221 }, 222 223 224 startDragDrop: function(dragSource, dragVisual, context, useBuiltInDragAndDropFunctions) { 225 var ev = window._event; 226 227 if (this._isDragging) { 228 return; 229 } 230 231 this._underlyingTarget = null; 232 this._activeDragSource = dragSource; 233 this._activeDragVisual = dragVisual; 234 this._activeContext = context; 235 this._useBuiltInDragAndDropFunctions = typeof (useBuiltInDragAndDropFunctions) != 'undefined' ? useBuiltInDragAndDropFunctions : true; 236 237 var mousePosition = { x: ev.clientX, y: ev.clientY }; 238 239 dragVisual.originalPosition = dragVisual.style.position; 240 dragVisual.style.position = "absolute"; 241 242 document._lastPosition = mousePosition; 243 dragVisual.startingPoint = mousePosition;
244 var scrollOffset = this.getScrollOffset(dragVisual, /* recursive */true); 245 246 dragVisual.startingPoint = this.addPoints(dragVisual.startingPoint, scrollOffset); 247 248 var left = parseInt(dragVisual.style.left); 249 var top = parseInt(dragVisual.style.top); 250 if (isNaN(left)) left = "0"; 251 if (isNaN(top)) top = "0"; 252 253 dragVisual.startingPoint = this.subtractPoints(dragVisual.startingPoint, { x: left, y: top }); 254 255 this._prepareForDomChanges(); 256 dragSource.onDragStart(); 257 var eventArgs = new Sys.Extended.UI.DragDropEventArgs( 258 dragSource.get_dragMode(), 259 dragSource.get_dragDataType(), 260 dragSource.getDragData(context)); 261 var handler = this.get_events().getHandler('dragStart'); 262 if (handler) handler(this, eventArgs); 263 this._recoverFromDomChanges(); 264 265 this._wireEvents(); 266 267 this._drag(/* isInitialDrag */true); 268 }, 269 270 271 _stopDragDrop: function(cancelled) { 272 var ev = window._event; 273 if (this._activeDragSource != null) { 274 this._unwireEvents(); 275 276 if (!cancelled) { 277 cancelled = (this._underlyingTarget == null); 278 } 279 280 if (!cancelled && this._underlyingTarget != null) { 281 this._underlyingTarget.drop(this._activeDragSource.get_dragMode(), this._activeDragSource.get_dragDataType(), 282 this._activeDragSource.getDragData(this._activeContext)); 283 } 284 285 this._activeDragSource.onDragEnd(cancelled); 286 var handler = this.get_events().getHandler('dragStop'); 287 if (handler) handler(this, Sys.EventArgs.Empty); 288 289 this._activeDragVisual.style.position = this._activeDragVisual.originalPosition; 290 291 this._activeDragSource = null; 292 this._activeContext = null; 293 this._activeDragVisual = null; 294 this._isDragging = false; 295 this._potentialTarget = null; 296 ev.preventDefault(); 297 } 298 }, 299 300 _drag: function(isInitialDrag) { 301 var ev = window._event; 302 var mousePosition = { x: ev.clientX, y: ev.clientY }; 303 304 document._lastPosition = mousePosition; 305 306 var scrollOffset = this.getScrollOffset(this._activeDragVisual, /* recursive */true); 307 var position = this.addPoints(this.subtractPoints(mousePosition, this._activeDragVisual.startingPoint), scrollOffset); 308 309 if (!isInitialDrag && parseInt(this._activeDragVisual.style.left) == position.x && parseInt(this._activeDragVisual.style.top) == position.y) { 310 return; 311 } 312 313 $common.setLocation(this._activeDragVisual, position); 314 315 this._prepareForDomChanges(); 316 this._activeDragSource.onDrag(); 317 this._recoverFromDomChanges(); 318 319 this._potentialTarget = this._findPotentialTarget(this._activeDragSource, this._activeDragVisual); 320 321 var movedToOtherTarget = (this._potentialTarget != this._underlyingTarget || this._potentialTarget == null); 322 if (movedToOtherTarget && this._underlyingTarget != null) { 323 this._leaveTarget(this._activeDragSource, this._underlyingTarget); 324 } 325 326 if (this._potentialTarget != null) { 327 if (movedToOtherTarget) { 328 this._underlyingTarget = this._potentialTarget; 329 330 this._enterTarget(this._activeDragSource, this._underlyingTarget); 331 } 332 else { 333 this._moveInTarget(this._activeDragSource, this._underlyingTarget); 334 } 335 } 336 else { 337 this._underlyingTarget = null; 338 } 339 }, 340 341 342 _wireEvents: function() { 343 if (this._useBuiltInDragAndDropFunctions) { 344 $addHandler(document, "mouseup", this._mouseUpHandler); 345 $addHandler(document, "mousemove", this._documentMouseMoveHandler); 346 $addHandler(document.body, "dragover", this._documentDragOverHandler); 347 348 $addHandler(this._activeDragVisual, "dragstart", this._dragStartHandler); 349 $addHandler(this._activeDragVisual, "dragend", this._mouseUpHandler); 350 $addHandler(this._activeDragVisual, "drag", this._mouseMoveHandler); 351 } else { 352 $addHandler(document, "mouseup", this._mouseUpHandler); 353 $addHandler(document, "mousemove", this._mouseMoveHandler); 354 } 355 }, 356 357 358 _unwireEvents: function() { 359 if (this._useBuiltInDragAndDropFunctions) { 360 $removeHandler(this._activeDragVisual, "drag", this._mouseMoveHandler); 361 $removeHandler(this._activeDragVisual, "dragend", this._mouseUpHandler); 362 $removeHandler(this._activeDragVisual, "dragstart", this._dragStartHandler); 363 364 $removeHandler(document.body, "dragover", this._documentDragOverHandler); 365 $removeHandler(document, "mousemove", this._documentMouseMoveHandler); 366 $removeHandler(document, "mouseup", this._mouseUpHandler); 367 } else { 368 $removeHandler(document, "mousemove", this._mouseMoveHandler); 369 $removeHandler(document, "mouseup", this._mouseUpHandler); 370 } 371 }, 372 373 374 registerDropTarget: function(dropTarget) { 375 if (this._dropTargets == null) { 376 this._dropTargets = []; 377 } 378 Array.add(this._dropTargets, dropTarget); 379 380 this._wireDropTargetEvents(dropTarget); 381 }, 382 383 384 unregisterDropTarget: function(dropTarget) { 385 this._unwireDropTargetEvents(dropTarget); 386 if (this._dropTargets) { 387 Array.remove(this._dropTargets, dropTarget); 388 } 389 }, 390 391 392 _wireDropTargetEvents: function(dropTarget) { 393 var associatedElement = dropTarget.get_dropTargetElement(); 394 associatedElement._dropTarget = dropTarget; 395 $addHandler(associatedElement, "dragenter", this._dragEnterHandler); 396 $addHandler(associatedElement, "dragleave", this._dragLeaveHandler); 397 $addHandler(associatedElement, "dragover", this._dragOverHandler); 398 $addHandler(associatedElement, "drop", this._dropHandler); 399 }, 400 401 402 _unwireDropTargetEvents: function(dropTarget) { 403 var associatedElement = dropTarget.get_dropTargetElement(); 404 if (associatedElement._dropTarget) { 405 associatedElement._dropTarget = null; 406 $removeHandler(associatedElement, "dragenter", this._dragEnterHandler); 407 $removeHandler(associatedElement, "dragleave", this._dragLeaveHandler); 408 $removeHandler(associatedElement, "dragover", this._dragOverHandler); 409 $removeHandler(associatedElement, "drop", this._dropHandler); 410 } 411 }, 412 413 414 _onDragStart: function(ev) { 415 window._event = ev; 416 document.selection.empty(); 417 418 var dt = ev.dataTransfer; 419 if (!dt && ev.rawEvent) dt = ev.rawEvent.dataTransfer; 420 421 var dataType = this._activeDragSource.get_dragDataType().toLowerCase(); 422 var data = this._activeDragSource.getDragData(this._activeContext); 423 424 if (data) { 425 if (dataType != "text" && dataType != "url") { 426 dataType = "text"; 427 428 if (data.innerHTML != null) { 429 data = data.innerHTML; 430 } 431 } 432 433 dt.effectAllowed = "move"; 434 dt.setData(dataType, data.toString()); 435 } 436 }, 437 438 _onMouseUp: function(ev) { 439 window._event = ev; 440 this._stopDragDrop(false); 441 }, 442 443 _onDocumentMouseMove: function(ev) { 444 window._event = ev; 445 this._dragDrop(); 446 }, 447 448 _onDocumentDragOver: function(ev) { 449 window._event = ev; 450 if (this._potentialTarget) ev.preventDefault(); 451 }, 452 453 _onMouseMove: function(ev) { 454 window._event = ev; 455 this._drag(); 456 }, 457 458 _onDragEnter: function(ev) { 459 window._event = ev; 460 if (this._isDragging) { 461 ev.preventDefault(); 462 } 463 else { 464 var dataObjects = Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(ev.target)); 465 for (var i = 0; i < dataObjects.length; i++) { 466 this._dropTarget.onDragEnterTarget(Sys.Extended.UI.DragMode.Copy, dataObjects[i].type, dataObjects[i].value); 467 } 468 } 469 }, 470 471 _onDragLeave: function(ev) { 472 window._event = ev; 473 if (this._isDragging) { 474 ev.preventDefault(); 475 } 476 else { 477 var dataObjects = Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(ev.target)); 478 for (var i = 0; i < dataObjects.length; i++) { 479 this._dropTarget.onDragLeaveTarget(Sys.Extended.UI.DragMode.Copy, dataObjects[i].type, dataObjects[i].value); 480 } 481 } 482 }, 483 484 _onDragOver: function(ev) { 485 window._event = ev; 486 if (this._isDragging) { 487 ev.preventDefault(); 488 } 489 else { 490 var dataObjects = Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(ev.target)); 491 for (var i = 0; i < dataObjects.length; i++) { 492 this._dropTarget.onDragInTarget(Sys.Extended.UI.DragMode.Copy, dataObjects[i].type, dataObjects[i].value); 493 } 494 } 495 }, 496 497 _onDrop: function(ev) { 498 window._event = ev; 499 if (!this._isDragging) { 500 var dataObjects = Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget(this._getDropTarget(ev.target)); 501 for (var i = 0; i < dataObjects.length; i++) { 502 this._dropTarget.drop(Sys.Extended.UI.DragMode.Copy, dataObjects[i].type, dataObjects[i].value); 503 } 504 } 505 ev.preventDefault(); 506 }, 507 508 _getDropTarget: function(element) { 509 while (element) { 510 if (element._dropTarget != null) { 511 return element._dropTarget; 512 } 513 element = element.parentNode; 514 } 515 return null; 516 }, 517 518 _dragDrop: function() { 519 if (this._isDragging) { 520 return; 521 } 522 523 this._isDragging = true; 524 this._activeDragVisual.dragDrop(); 525 document.selection.empty(); 526 }, 527 528 _moveInTarget: function(dragSource, dropTarget) { 529 this._prepareForDomChanges(); 530 dropTarget.onDragInTarget(dragSource.get_dragMode(), dragSource.get_dragDataType(), dragSource.getDragData(this._activeContext)); 531 this._recoverFromDomChanges(); 532 }, 533 534 _enterTarget: function(dragSource, dropTarget) { 535 this._prepareForDomChanges(); 536 dropTarget.onDragEnterTarget(dragSource.get_dragMode(), dragSource.get_dragDataType(), dragSource.getDragData(this._activeContext)); 537 this._recoverFromDomChanges(); 538 }, 539 540 _leaveTarget: function(dragSource, dropTarget) { 541 this._prepareForDomChanges(); 542 dropTarget.onDragLeaveTarget(dragSource.get_dragMode(), dragSource.get_dragDataType(), dragSource.getDragData(this._activeContext)); 543 this._recoverFromDomChanges(); 544 }, 545 546 _findPotentialTarget: function(dragSource, dragVisual) { 547 var ev = window._event; 548 549 if (this._dropTargets == null) { 550 return null; 551 } 552 553 var type = dragSource.get_dragDataType(); 554 var mode = dragSource.get_dragMode(); 555 var data = dragSource.getDragData(this._activeContext); 556
557 var scrollOffset = this.getScrollOffset(document.body, /* recursive */true); 558 var x = ev.clientX + scrollOffset.x; 559 var y = ev.clientY + scrollOffset.y; 560 var cursorRect = { x: x - this._radius, y: y - this._radius, width: this._radius * 2, height: this._radius * 2 }; 561 562 var targetRect; 563 for (var i = 0; i < this._dropTargets.length; i++) { 564 targetRect = $common.getBounds(this._dropTargets[i].get_dropTargetElement()); 565 if ($common.overlaps(cursorRect, targetRect) && this._dropTargets[i].canDrop(mode, type, data)) { 566 return this._dropTargets[i]; 567 } 568 } 569 570 return null; 571 }, 572 573 _prepareForDomChanges: function() { 574 this._oldOffset = $common.getLocation(this._activeDragVisual); 575 }, 576 577 _recoverFromDomChanges: function() { 578 var newOffset = $common.getLocation(this._activeDragVisual); 579 if (this._oldOffset.x != newOffset.x || this._oldOffset.y != newOffset.y) { 580 this._activeDragVisual.startingPoint = this.subtractPoints(this._activeDragVisual.startingPoint, this.subtractPoints(this._oldOffset, newOffset)); 581 scrollOffset = this.getScrollOffset(this._activeDragVisual, /* recursive */true); 582 var position = this.addPoints(this.subtractPoints(document._lastPosition, this._activeDragVisual.startingPoint), scrollOffset); 583 $common.setLocation(this._activeDragVisual, position); 584 } 585 }, 586 587 addPoints: function(p1, p2) { 588 return { x: p1.x + p2.x, y: p1.y + p2.y }; 589 }, 590 591 subtractPoints: function(p1, p2) { 592 return { x: p1.x - p2.x, y: p1.y - p2.y }; 593 }, 594 595 getScrollOffset: function(element, recursive) { 596 var left = element.scrollLeft; 597 var top = element.scrollTop; 598 if (recursive) { 599 var parent = element.parentNode; 600 while (parent != null && parent.scrollLeft != null) { 601 left += parent.scrollLeft; 602 top += parent.scrollTop; 603 if (parent == document.body && (left != 0 && top != 0)) 604 break; 605 parent = parent.parentNode; 606 } 607 } 608 return { x: left, y: top }; 609 }, 610 611 getBrowserRectangle: function() { 612 var width = window.innerWidth; 613 var height = window.innerHeight; 614 if (width == null) { 615 width = document.documentElement.clientWidth; 616 } 617 if (height == null) { 618 height = document.documentElement.clientHeight; 619 } 620 621 return { x: 0, y: 0, width: width, height: height }; 622 }, 623 624 getNextSibling: function(item) { 625 for (item = item.nextSibling; item != null; item = item.nextSibling) { 626 if (item.innerHTML != null) { 627 return item; 628 } 629 } 630 return null; 631 }, 632 633 hasParent: function(element) { 634 return (element.parentNode != null && element.parentNode.tagName != null); 635 } 636} 637Sys.Extended.UI.IEDragDropManager.registerClass('Sys.Extended.UI.IEDragDropManager', Sys.Component); 638 639Sys.Extended.UI.IEDragDropManager._getDataObjectsForDropTarget = function(dropTarget) { 640 if (dropTarget == null) { 641 return []; 642 } 643 var ev = window._event; 644 var dataObjects = []; 645 var dataTypes = [ "URL", "Text" ]; 646 var data; 647 for (var i = 0; i < dataTypes.length; i++) { 648 var dt = ev.dataTransfer; 649 if(!dt && ev.rawEvent) dt = ev.rawEvent.dataTransfer; 650 data = dt.getData(dataTypes[i]); 651 if (dropTarget.canDrop(Sys.Extended.UI.DragMode.Copy, dataTypes[i], data)) { 652 if (data) { 653 Array.add(dataObjects, { type : dataTypes[i], value : data }); 654 } 655 } 656 } 657 658 return dataObjects; 659} 660 661 662Sys.Extended.UI.GenericDragDropManager = function() { 663 Sys.Extended.UI.GenericDragDropManager.initializeBase(this); 664 665 this._dropTargets = null; 666 this._scrollEdgeConst = 40; 667 this._scrollByConst = 10; 668 this._scroller = null; 669 this._scrollDeltaX = 0; 670 this._scrollDeltaY = 0; 671 this._activeDragVisual = null; 672 this._activeContext = null; 673 this._activeDragSource = null; 674 this._oldOffset = null; 675 this._potentialTarget = null; 676 this._mouseUpHandler = null; 677 this._mouseMoveHandler = null; 678 this._keyPressHandler = null; 679 this._scrollerTickHandler = null; 680} 681Sys.Extended.UI.GenericDragDropManager.prototype = { 682 683 initialize : function() { 684 Sys.Extended.UI.GenericDragDropManager.callBaseMethod(this, "initialize"); 685 this._mouseUpHandler = Function.createDelegate(this, this._onMouseUp); 686 this._mouseMoveHandler = Function.createDelegate(this, this._onMouseMove); 687 this._keyPressHandler = Function.createDelegate(this, this._onKeyPress); 688 this._scrollerTickHandler = Function.createDelegate(this, this._onScrollerTick); 689 this._scroller = new Sys.Timer(); 690 this._scroller.set_interval(10); 691 this._scroller.add_tick(this._scrollerTickHandler); 692 }, 693 694 startDragDrop : function(dragSource, dragVisual, context) { 695 this._activeDragSource = dragSource; 696 this._activeDragVisual = dragVisual; 697 this._activeContext = context; 698 699 Sys.Extended.UI.GenericDragDropManager.callBaseMethod(this, "startDragDrop", [dragSource, dragVisual, context]); 700 }, 701 702 _stopDragDrop : function(cancelled) { 703 this._scroller.set_enabled(false); 704 705 Sys.Extended.UI.GenericDragDropManager.callBaseMethod(this, "_stopDragDrop", [cancelled]); 706 }, 707 708 _drag : function(isInitialDrag) { 709 Sys.Extended.UI.GenericDragDropManager.callBaseMethod(this, "_drag", [isInitialDrag]); 710 711 this._autoScroll(); 712 }, 713 714 _wireEvents : function() { 715 $addHandler(document, "mouseup", this._mouseUpHandler); 716 $addHandler(document, "mousemove", this._mouseMoveHandler); 717 $addHandler(document, "keypress", this._keyPressHandler); 718 }, 719 720 _unwireEvents : function() { 721 $removeHandler(document, "keypress", this._keyPressHandler); 722 $removeHandler(document, "mousemove", this._mouseMoveHandler); 723 $removeHandler(document, "mouseup", this._mouseUpHandler); 724 }, 725 726 _wireDropTargetEvents : function(dropTarget) { 727 }, 728 729 _unwireDropTargetEvents : function(dropTarget) { 730 }, 731 732 _onMouseUp : function(e) { 733 window._event = e; 734 this._stopDragDrop(false); 735 }, 736 737 _onMouseMove : function(e) { 738 window._event = e; 739 this._drag(); 740 }, 741 742 _onKeyPress : function(e) { 743 window._event = e; 744 var k = e.keyCode ? e.keyCode : e.rawEvent.keyCode; 745 if (k == 27) { 746 this._stopDragDrop(/* cancel */ true); 747 } 748 }, 749 750 _autoScroll : function() { 751 var ev = window._event; 752 var browserRect = this.getBrowserRectangle(); 753 if (browserRect.width > 0) { 754 this._scrollDeltaX = this._scrollDeltaY = 0; 755 if (ev.clientX < browserRect.x + this._scrollEdgeConst) this._scrollDeltaX = -this._scrollByConst; 756 else if (ev.clientX > browserRect.width - this._scrollEdgeConst) this._scrollDeltaX = this._scrollByConst; 757 if (ev.clientY < browserRect.y + this._scrollEdgeConst) this._scrollDeltaY = -this._scrollByConst; 758 else if (ev.clientY > browserRect.height - this._scrollEdgeConst) this._scrollDeltaY = this._scrollByConst; 759 if (this._scrollDeltaX != 0 || this._scrollDeltaY != 0) { 760 this._scroller.set_enabled(true); 761 } 762 else { 763 this._scroller.set_enabled(false); 764 } 765 } 766 }, 767 768 _onScrollerTick : function() { 769 var oldLeft = document.body.scrollLeft; 770 var oldTop = document.body.scrollTop; 771 window.scrollBy(this._scrollDeltaX, this._scrollDeltaY); 772 var newLeft = document.body.scrollLeft; 773 var newTop = document.body.scrollTop; 774 775 var dragVisual = this._activeDragVisual; 776 var position = { x: parseInt(dragVisual.style.left) + (newLeft - oldLeft), y: parseInt(dragVisual.style.top) + (newTop - oldTop) }; 777 $common.setLocation(dragVisual, position); 778 } 779} 780Sys.Extended.UI.GenericDragDropManager.registerClass('Sys.Extended.UI.GenericDragDropManager', Sys.Extended.UI.IEDragDropManager); 781 782} // execute 783 784if (window.Sys && Sys.loader) { 785 Sys.loader.registerScript(scriptName, ["ExtendedTimer", "ExtendedCommon"], execute); 786} 787else { 788 execute(); 789} 790 791})(); 792
793if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.