📄 dragdropscripts.js
字号:
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.
/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../../Common/Common.js" />
/// <reference path="../Timer/Timer.js" />
///////////////////////////////////////////////////////////////////////////////
// IDropSource
Type.registerNamespace('AjaxControlToolkit');
AjaxControlToolkit.IDragSource = function() {
}
AjaxControlToolkit.IDragSource.prototype = {
// Type get_dragDataType()
get_dragDataType: function() { throw Error.notImplemented(); },
// Object getDragData(Context)
getDragData: function() { throw Error.notImplemented(); },
// DragMode get_dragMode()
get_dragMode: function() { throw Error.notImplemented(); },
// void onDragStart()
onDragStart: function() { throw Error.notImplemented(); },
// void onDrag()
onDrag: function() { throw Error.notImplemented(); },
// void onDragEnd(Cancelled)
onDragEnd: function() { throw Error.notImplemented(); }
}
AjaxControlToolkit.IDragSource.registerInterface('AjaxControlToolkit.IDragSource');
///////////////////////////////////////////////////////////////////////////////
// IDropTarget
AjaxControlToolkit.IDropTarget = function() {
}
AjaxControlToolkit.IDropTarget.prototype = {
get_dropTargetElement: function() { throw Error.notImplemented(); },
// bool canDrop(DragMode, DataType, Data)
canDrop: function() { throw Error.notImplemented(); },
// void drop(DragMode, DataType, Data)
drop: function() { throw Error.notImplemented(); },
// void onDragEnterTarget(DragMode, DataType, Data)
onDragEnterTarget: function() { throw Error.notImplemented(); },
// void onDragLeaveTarget(DragMode, DataType, Data)
onDragLeaveTarget: function() { throw Error.notImplemented(); },
// void onDragInTarget(DragMode, DataType, Data)
onDragInTarget: function() { throw Error.notImplemented(); }
}
AjaxControlToolkit.IDropTarget.registerInterface('AjaxControlToolkit.IDropTarget');
///////////////////////////////////////////////
// DragMode
//
AjaxControlToolkit.DragMode = function() {
throw Error.invalidOperation();
}
AjaxControlToolkit.DragMode.prototype = {
Copy: 0,
Move: 1
}
AjaxControlToolkit.DragMode.registerEnum('AjaxControlToolkit.DragMode');
////////////////////////////////////////////////////////////////////
// DragDropEventArgs
//
AjaxControlToolkit.DragDropEventArgs = function(dragMode, dragDataType, dragData) {
this._dragMode = dragMode;
this._dataType = dragDataType;
this._data = dragData;
}
AjaxControlToolkit.DragDropEventArgs.prototype = {
get_dragMode: function() {
return this._dragMode || null;
},
get_dragDataType: function() {
return this._dataType || null;
},
get_dragData: function() {
return this._data || null;
}
}
AjaxControlToolkit.DragDropEventArgs.registerClass('AjaxControlToolkit.DragDropEventArgs');
AjaxControlToolkit._DragDropManager = function() {
this._instance = null;
this._events = null;
}
AjaxControlToolkit._DragDropManager.prototype = {
add_dragStart: function(handler) {
this.get_events().addHandler('dragStart', handler);
},
remove_dragStart: function(handler) {
this.get_events().removeHandler('dragStart', handler);
},
get_events: function() {
// todo: doc comments. this one is commented out (two //) due to a bug with the preprocessor.
// <value type="Sys.EventHandlerList">
// </value>
if (!this._events) {
this._events = new Sys.EventHandlerList();
}
return this._events;
},
add_dragStop: function(handler) {
this.get_events().addHandler('dragStop', handler);
},
remove_dragStop: function(handler) {
this.get_events().removeHandler('dragStop', handler);
},
_getInstance: function() {
if (!this._instance) {
if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
this._instance = new AjaxControlToolkit.IEDragDropManager();
}
else {
this._instance = new AjaxControlToolkit.GenericDragDropManager();
}
this._instance.initialize();
this._instance.add_dragStart(Function.createDelegate(this, this._raiseDragStart));
this._instance.add_dragStop(Function.createDelegate(this, this._raiseDragStop));
}
return this._instance;
},
startDragDrop: function(dragSource, dragVisual, context) {
this._getInstance().startDragDrop(dragSource, dragVisual, context);
},
registerDropTarget: function(target) {
this._getInstance().registerDropTarget(target);
},
unregisterDropTarget: function(target) {
this._getInstance().unregisterDropTarget(target);
},
dispose: function() {
delete this._events;
Sys.Application.unregisterDisposableObject(this);
Sys.Application.removeComponent(this);
},
_raiseDragStart: function(sender, eventArgs) {
var handler = this.get_events().getHandler('dragStart');
if(handler) {
handler(this, eventArgs);
}
},
_raiseDragStop: function(sender, eventArgs) {
var handler = this.get_events().getHandler('dragStop');
if(handler) {
handler(this, eventArgs);
}
}
}
AjaxControlToolkit._DragDropManager.registerClass('AjaxControlToolkit._DragDropManager');
AjaxControlToolkit.DragDropManager = new AjaxControlToolkit._DragDropManager();
AjaxControlToolkit.IEDragDropManager = function() {
AjaxControlToolkit.IEDragDropManager.initializeBase(this);
this._dropTargets = null;
// Radius of the cursor used to determine what drop target we
// are hovering. Anything below the cursor's zone may be a
// potential drop target.
this._radius = 10;
this._activeDragVisual = null;
this._activeContext = null;
this._activeDragSource = null;
this._underlyingTarget = null;
this._oldOffset = null;
this._potentialTarget = null;
this._isDragging = false;
this._mouseUpHandler = null;
this._documentMouseMoveHandler = null;
this._documentDragOverHandler = null;
this._dragStartHandler = null;
this._mouseMoveHandler = null;
this._dragEnterHandler = null;
this._dragLeaveHandler = null;
this._dragOverHandler = null;
this._dropHandler = null;
}
AjaxControlToolkit.IEDragDropManager.prototype = {
add_dragStart : function(handler) {
this.get_events().addHandler("dragStart", handler);
},
remove_dragStart : function(handler) {
this.get_events().removeHandler("dragStart", handler);
},
add_dragStop : function(handler) {
this.get_events().addHandler("dragStop", handler);
},
remove_dragStop : function(handler) {
this.get_events().removeHandler("dragStop", handler);
},
initialize : function() {
AjaxControlToolkit.IEDragDropManager.callBaseMethod(this, 'initialize');
this._mouseUpHandler = Function.createDelegate(this, this._onMouseUp);
this._documentMouseMoveHandler = Function.createDelegate(this, this._onDocumentMouseMove);
this._documentDragOverHandler = Function.createDelegate(this, this._onDocumentDragOver);
this._dragStartHandler = Function.createDelegate(this, this._onDragStart);
this._mouseMoveHandler = Function.createDelegate(this, this._onMouseMove);
this._dragEnterHandler = Function.createDelegate(this, this._onDragEnter);
this._dragLeaveHandler = Function.createDelegate(this, this._onDragLeave);
this._dragOverHandler = Function.createDelegate(this, this._onDragOver);
this._dropHandler = Function.createDelegate(this, this._onDrop);
},
dispose : function() {
if(this._dropTargets) {
for (var i = 0; i < this._dropTargets; i++) {
this.unregisterDropTarget(this._dropTargets[i]);
}
this._dropTargets = null;
}
AjaxControlToolkit.IEDragDropManager.callBaseMethod(this, 'dispose');
},
startDragDrop : function(dragSource, dragVisual, context) {
var ev = window._event;
// Don't allow drag and drop if there is another active drag operation going on.
if (this._isDragging) {
return;
}
this._underlyingTarget = null;
this._activeDragSource = dragSource;
this._activeDragVisual = dragVisual;
this._activeContext = context;
var mousePosition = { x: ev.clientX, y: ev.clientY };
// By default we use absolute positioning, unless a different type
// of positioning is set explicitly.
dragVisual.originalPosition = dragVisual.style.position;
dragVisual.style.position = "absolute";
document._lastPosition = mousePosition;
dragVisual.startingPoint = mousePosition;
var scrollOffset = this.getScrollOffset(dragVisual, /* recursive */ true);
dragVisual.startingPoint = this.addPoints(dragVisual.startingPoint, scrollOffset);
if (dragVisual.style.position == "absolute") {
dragVisual.startingPoint = this.subtractPoints(dragVisual.startingPoint, $common.getLocation(dragVisual));
}
else {
var left = parseInt(dragVisual.style.left);
var top = parseInt(dragVisual.style.top);
if (isNaN(left)) left = "0";
if (isNaN(top)) top = "0";
dragVisual.startingPoint = this.subtractPoints(dragVisual.startingPoint, { x: left, y: top });
}
// Monitor DOM changes.
this._prepareForDomChanges();
dragSource.onDragStart();
var eventArgs = new AjaxControlToolkit.DragDropEventArgs(
dragSource.get_dragMode(),
dragSource.get_dragDataType(),
dragSource.getDragData(context));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -