initial checkin from subversion
This commit is contained in:
96
dragNDrop.js
Normal file
96
dragNDrop.js
Normal file
@@ -0,0 +1,96 @@
|
||||
// global instance is created here.
|
||||
var dragNDrop=new mmDragHandler();
|
||||
dragNDrop.extends(new Publisher());
|
||||
|
||||
function mmDragHandler(){
|
||||
var m_dragObject;
|
||||
var m_offsetX;
|
||||
var m_offsetY;
|
||||
var m_isDragging=false;
|
||||
var m_zIndexSave;
|
||||
var m_lastSeenNode=null;
|
||||
var m_origX=null; // Position the mouse was pushed down.
|
||||
var m_origY=null;
|
||||
|
||||
document.onmousemove = onMouseMoveHandler;
|
||||
document.onmouseup = onMouseUpHandler;
|
||||
|
||||
this.onMouseDownHandler=onMouseDownHandler;
|
||||
this.onMouseMoveHandler=onMouseMoveHandler;
|
||||
this.onMouseUpHandler=onMouseUpHandler;
|
||||
this.activateForObject=activateForObject;
|
||||
|
||||
function activateForObject(ele) {
|
||||
ele.ondrag=function(){return false;};
|
||||
ele.onselectstart=function(){return false;};
|
||||
ele.onmousedown=onMouseDownHandler;
|
||||
// if nothing else is mentioned in the object position it in the middle of the visible area.
|
||||
if (ele.style.left=="") {
|
||||
ele.style.left=((window.innerWidth/2) + window.scrollX) + "px";
|
||||
}
|
||||
if (ele.style.top=="") {
|
||||
ele.style.top=((window.innerHeight/2) + window.scrollY) + "px";
|
||||
}
|
||||
ele.style.display="inline";
|
||||
this.notifySubscribers(ele,"activateDragNDrop");
|
||||
}
|
||||
|
||||
function onMouseDownHandler(e) {
|
||||
if (window.event) e=window.event;
|
||||
m_dragObject = e.target;
|
||||
|
||||
var dragX = parseInt(m_dragObject.style.left);
|
||||
var dragY = parseInt(m_dragObject.style.top);
|
||||
|
||||
var mouseX = e.clientX;
|
||||
var mouseY = e.clientY;
|
||||
|
||||
m_origX=mouseX;
|
||||
m_origY=mouseY;
|
||||
|
||||
m_offsetX = mouseX - dragX;
|
||||
m_offsetY = mouseY - dragY;
|
||||
|
||||
m_zIndexSave=m_dragObject.style.zIndex;
|
||||
m_dragObject.style.zIndex=5;
|
||||
|
||||
m_dragObject.isDragging=true;
|
||||
m_isDragging = true;
|
||||
|
||||
return(false);
|
||||
}
|
||||
|
||||
function onMouseMoveHandler(e){
|
||||
if (!m_isDragging) return;
|
||||
if (window.event) e=window.event;
|
||||
|
||||
if (e.target.id.substring(0,6)=="mmNode") {
|
||||
m_lastSeenNode=e.target;
|
||||
}
|
||||
|
||||
if ((m_origX!=e.clientX)||(m_origY!=e.clientY)) {
|
||||
dragNDrop.notifySubscribers(m_dragObject,"moving");
|
||||
}
|
||||
|
||||
var newX = e.clientX - m_offsetX;
|
||||
var newY = e.clientY - m_offsetY;
|
||||
|
||||
m_dragObject.style.left = newX + "px";
|
||||
m_dragObject.style.top = newY + "px";
|
||||
|
||||
var addInfo=new Array();
|
||||
addInfo[0]=newX;
|
||||
addInfo[1]=newY;
|
||||
|
||||
return(false);
|
||||
}
|
||||
|
||||
function onMouseUpHandler(e){
|
||||
if (!m_isDragging) return;
|
||||
m_dragObject.style.zIndex=m_zIndexSave;
|
||||
m_dragObject.isDragging=false;
|
||||
m_isDragging = false;
|
||||
dragNDrop.notifySubscribers(m_dragObject,"endMoving",m_lastSeenNode);
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user