📄 atlasuidragdrop.js
字号:
}return dataObjects;}Web.UI.GenericDragDropManager =function(){Web.UI.GenericDragDropManager.initializeBase(this);var _dropTargets;var _scrollEdgeConst =40;var _scrollByConst =10;var _scroller;var _scrollDeltaX;var _scrollDeltaY;var _activeDragVisual;var _activeContext;var _activeDragSource;var _oldOffset;var _potentialTarget;var _mouseUpHandler;var _mouseMoveHandler;var _keyPressHandler;this.initialize =function(){Web.UI.GenericDragDropManager.callBaseMethod(this,"initialize");_mouseUpHandler =Function.createDelegate(this,mouseUpHandler);_mouseMoveHandler =Function.createDelegate(this,mouseMoveHandler);_keyPressHandler =Function.createDelegate(this,keyPressHandler);if (window.__safari){Web.UI.GenericDragDropManager.__loadSafariCompatLayer(this);}_scroller =new Web.Timer();_scroller.set_interval(10);_scroller.tick.add(scrollerTickHandler);}this.startDragDrop =function(dragSource,dragVisual,context){_activeDragSource =dragSource;_activeDragVisual =dragVisual;_activeContext =context;Web.UI.GenericDragDropManager.callBaseMethod(this,"startDragDrop",[dragSource,dragVisual,context]);}this._stopDragDrop =function(cancelled){_scroller.set_enabled(false);Web.UI.GenericDragDropManager.callBaseMethod(this,"_stopDragDrop",[cancelled]);}this._drag =function(isInitialDrag){Web.UI.GenericDragDropManager.callBaseMethod(this,"_drag",[isInitialDrag]);this._autoScroll();}this._wireEvents =function(){document.attachEvent("onmouseup",_mouseUpHandler);document.attachEvent("onmousemove",_mouseMoveHandler);document.attachEvent("onkeypress",_keyPressHandler);}this._unwireEvents =function(){document.detachEvent("onkeypress",_keyPressHandler);document.detachEvent("onmousemove",_mouseMoveHandler);document.detachEvent("onmouseup",_mouseUpHandler);}this._wireDropTargetEvents =function(dropTarget){}this._unwireDropTargetEvents =function(dropTarget){}function mouseUpHandler(){this._stopDragDrop(false);}function mouseMoveHandler(){this._drag();}function keyPressHandler(){var ev =window.event;if (ev.keyCode ==27){this._stopDragDrop(true);}}this._autoScroll =function(){var ev =window.event;var browserRect =this.getBrowserRectangle();if (browserRect.width >0){_scrollDeltaX =_scrollDeltaY =0;if (ev.clientX <browserRect.x +_scrollEdgeConst)_scrollDeltaX =-_scrollByConst;else if (ev.clientX >browserRect.width -_scrollEdgeConst)_scrollDeltaX =_scrollByConst;if (ev.clientY <browserRect.y +_scrollEdgeConst)_scrollDeltaY =-_scrollByConst;else if (ev.clientY >browserRect.height -_scrollEdgeConst)_scrollDeltaY =_scrollByConst;if (_scrollDeltaX !=0 ||_scrollDeltaY !=0){_scroller.set_enabled(true);}else {_scroller.set_enabled(false);}}}function scrollerTickHandler(){var oldLeft =document.body.scrollLeft;var oldTop =document.body.scrollTop;window.scrollBy(_scrollDeltaX,_scrollDeltaY);var newLeft =document.body.scrollLeft;var newTop =document.body.scrollTop;var dragVisual =_activeDragVisual;var position ={x:parseInt(dragVisual.style.left)+(newLeft -oldLeft),y:parseInt(dragVisual.style.top)+(newTop -oldTop)};Web.UI.Control.setLocation(dragVisual,position);}}Type.registerSealedClass('Web.UI.GenericDragDropManager',Web.UI.IEDragDropManager);if (window.__safari){Web.UI.GenericDragDropManager.__loadSafariCompatLayer =function(ddm){ddm._getScrollOffset =ddm.getScrollOffset;ddm.getScrollOffset =function(element,recursive){return {x:0,y:0 };}ddm._getBrowserRectangle =ddm.getBrowserRectangle;ddm.getBrowserRectangle =function(){var browserRect =ddm._getBrowserRectangle();var offset =ddm._getScrollOffset(document.body,true);return {x:browserRect.x +offset.x,y:browserRect.y +offset.y,width:browserRect.width +offset.x,height:browserRect.height +offset.y };}}}Web.UI.RepeatDirection =Web.Enum.create('Horizontal','Vertical');Web.UI.DragDropList =function(){Web.UI.DragDropList.initializeBase(this);var _isDragging;var _acceptedDataTypes =[];var _dataType;var _dragMode;var _dragVisual;var _direction =Web.UI.RepeatDirection.Vertical;var _emptyTemplate;var _emptyTemplateInstance;var _dropCueTemplate;var _dropCueTemplateInstance;var _floatContainerInstance;var _originalParent;var _originalNextSibling;var _originalZIndex;var _currentContext;var _data;this.get_data =function(){return _data;}this.set_data =function(value){_data =value;}this.initialize =function(){Web.UI.DragDropList.callBaseMethod(this,'initialize');this.control.element.__dragDropList =this;Web.UI.DragDropManager.registerDropTarget(this);}this.getDescriptor =function(){var td =Web.UI.DragDropList.callBaseMethod(this,'getDescriptor');td.addProperty("acceptedDataTypes",Array);td.addProperty("data",Object);td.addProperty("dataType",String);td.addProperty("emptyTemplate",Web.UI.ITemplate);td.addProperty("dropCueTemplate",Web.UI.ITemplate);td.addProperty("direction",Web.UI.RepeatDirection);td.addProperty("dragMode",Web.UI.DragMode);return td;}Web.UI.DragDropList.registerBaseMethod(this,'getDescriptor');this.startDragDrop =function(dragObject,context,dragVisual){if (!_isDragging){_isDragging =true;_currentContext =context;if (dragVisual ==null){dragVisual =this.createDragVisual(dragObject);}else {_dragVisual =dragVisual;}Web.UI.DragDropManager.startDragDrop(this,dragVisual,context);}}this.createDragVisual =function(dragObject){if (_dragMode ==Web.UI.DragMode.Copy){_dragVisual =dragObject.cloneNode(true);}else {_dragVisual =dragObject;}var oldOffset =Web.UI.DragDropManager._getInstance().getScrollOffset(dragObject,true);_dragVisual.style.width =dragObject.offsetWidth +"px";_dragVisual.style.height =dragObject.offsetHeight +"px";_dragVisual.style.opacity ="0.4";_dragVisual.style.filter ="progid:DXImageTransform.Microsoft.BasicImage(opacity=0.4);";_originalZIndex =_dragVisual.style.zIndex;_dragVisual.style.zIndex =99999;_originalParent =_dragVisual.parentNode;_originalNextSibling =Web.UI.DragDropManager._getInstance().getNextSibling(_dragVisual);var currentLocation =Web.UI.Control.getLocation(dragObject,true);var dragVisualContainer =this._getFloatContainer();Web.UI.Control.setLocation(dragVisualContainer,currentLocation);if (Web.UI.DragDropManager._getInstance().hasParent(_dragVisual)){_dragVisual.parentNode.removeChild(_dragVisual);}dragVisualContainer.appendChild(_dragVisual);var newOffset =Web.UI.DragDropManager._getInstance().getScrollOffset(dragObject,true);if (oldOffset.x !=newOffset.x ||oldOffset.y !=newOffset.y){var diff =Web.UI.DragDropManager._getInstance().subtractPoints(oldOffset,newOffset);Web.UI.Control.setLocation(dragVisualContainer,Web.UI.DragDropManager._getInstance().subtractPoints(currentLocation,diff));}return dragVisualContainer;}this.get_emptyTemplate =function(){return _emptyTemplate;}this.set_emptyTemplate =function(value){_emptyTemplate =value;}this.get_dataType =function(){return _dataType;}this.set_dataType =function(value){_dataType =value;}this.get_data =function(context){return context;}this.get_dragMode =function(){return _dragMode;}this.set_dragMode =function(value){_dragMode =value;}this.dispose =function(){this.control.element.__dragDropList =null;Web.UI.DragDropList.callBaseMethod(this,'dispose');}this.onDragStart =function(){this._validate();}this.onDrag =function(){}this.onDragEnd =function(cancelled){if (_floatContainerInstance !=null){if (_dragMode ==Web.UI.DragMode.Copy){_floatContainerInstance.removeChild(_dragVisual);}else {_dragVisual.style.opacity ="0.999";_dragVisual.style.filter ="";_dragVisual.style.zIndex =_originalZIndex ?_originalZIndex :0;if (cancelled){_dragVisual.parentNode.removeChild(_dragVisual);if (_originalNextSibling !=null){_originalParent.insertBefore(_dragVisual,_originalNextSibling);}else {_originalParent.appendChild(_dragVisual);}}else {if (_dragVisual.parentNode ==_floatContainerInstance){_dragVisual.parentNode.removeChild(_dragVisual);}}}document.body.removeChild(_floatContainerInstance);}else {_dragVisual.parentNode.removeChild(_dragVisual);}if (!cancelled &&_data !=null &&_dragMode ==Web.UI.DragMode.Move){var data =this.get_data(_currentContext);if (_data !=null &&data !=null){_data.remove(data);}}_isDragging =false;this._validate();}this.get_direction =function(){return _direction;}this.set_direction =function(value){_direction =value;}this.get_acceptedDataTypes =function(){return _acceptedDataTypes;}this.set_acceptedDataTypes =function(value){_acceptedDataTypes =value;}this.get_dropCueTemplate =function(){return _dropCueTemplate;}this.set_dropCueTemplate =function(value){_dropCueTemplate =value;}this.get_dropTargetElement =function(){return this.control.element;}this.canDrop =function(dragMode,dataType){for (var i =0;i <_acceptedDataTypes.length;i++){if (_acceptedDataTypes[i]==dataType){return true;}}return false;}this.drop =function(dragMode,dataType,data){if (dataType =="HTML"&&dragMode ==Web.UI.DragMode.Move){dragVisual =data;var potentialNextSibling =this._findPotentialNextSibling(dragVisual);this._setDropCueVisible(false,dragVisual);dragVisual.parentNode.removeChild(dragVisual);if (potentialNextSibling !=null){this.control.element.insertBefore(dragVisual,potentialNextSibling);}else {this.control.element.appendChild(dragVisual);}}else {this._setDropCueVisible(false);}if (_data !=null &&data !=null){_data.add(data);}}this.onDragEnterTarget =function(dragMode,dataType,data){if (dataType =="HTML"){this._setDropCueVisible(true,data);this._validate();}}this.onDragLeaveTarget =function(dragMode,dataType,data){if (dataType =="HTML"){this._setDropCueVisible(false);this._validate();}}this.onDragInTarget =function(dragMode,dataType,data){if (dataType =="HTML"){this._setDropCueVisible(true,data);}}this._setDropCueVisible =function(visible,dragVisual){if (_dropCueTemplate !=null){if (visible){if (_dropCueTemplateInstance ==null){var documentContext =document.createDocumentFragment();_dropCueTemplateInstance =_dropCueTemplate.createInstance(documentContext).instanceElement;}var potentialNextSibling =this._findPotentialNextSibling(dragVisual);if (!Web.UI.DragDropManager._getInstance().hasParent(_dropCueTemplateInstance)){if (potentialNextSibling !=null){this.control.element.insertBefore(_dropCueTemplateInstance,potentialNextSibling);}else {this.control.element.appendChild(_dropCueTemplateInstance);}_dropCueTemplateInstance.style.width =dragVisual.offsetWidth +"px";_dropCueTemplateInstance.style.height =dragVisual.offsetHeight +"px";}else {if (Web.UI.DragDropManager._getInstance().getNextSibling(_dropCueTemplateInstance)!=potentialNextSibling){this.control.element.removeChild(_dropCueTemplateInstance);if (potentialNextSibling !=null){this.control.element.insertBefore(_dropCueTemplateInstance,potentialNextSibling);}else {this.control.element.appendChild(_dropCueTemplateInstance);}}}}else {if (_dropCueTemplateInstance !=null &&Web.UI.DragDropManager._getInstance().hasParent(_dropCueTemplateInstance)){this.control.element.removeChild(_dropCueTemplateInstance);}}}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -