New file |
0,0 → 1,113 |
if(!dojo._hasResource["dojox.grid._grid.drag"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. |
dojo._hasResource["dojox.grid._grid.drag"] = true; |
dojo.provide("dojox.grid._grid.drag"); |
|
// summary: |
// utility functions for dragging as used in grid. |
// begin closure |
(function(){ |
|
var dgdrag = dojox.grid.drag = {}; |
|
dgdrag.dragging = false; |
dgdrag.hysteresis = 2; |
|
dgdrag.capture = function(inElement) { |
//console.debug('dojox.grid.drag.capture'); |
if (inElement.setCapture) |
inElement.setCapture(); |
else { |
document.addEventListener("mousemove", inElement.onmousemove, true); |
document.addEventListener("mouseup", inElement.onmouseup, true); |
document.addEventListener("click", inElement.onclick, true); |
} |
} |
|
dgdrag.release = function(inElement) { |
//console.debug('dojox.grid.drag.release'); |
if(inElement.releaseCapture){ |
inElement.releaseCapture(); |
}else{ |
document.removeEventListener("click", inElement.onclick, true); |
document.removeEventListener("mouseup", inElement.onmouseup, true); |
document.removeEventListener("mousemove", inElement.onmousemove, true); |
} |
} |
|
dgdrag.start = function(inElement, inOnDrag, inOnEnd, inEvent, inOnStart){ |
if(/*dgdrag.elt ||*/ !inElement || dgdrag.dragging){ |
console.debug('failed to start drag: bad input node or already dragging'); |
return; |
} |
dgdrag.dragging = true; |
dgdrag.elt = inElement; |
dgdrag.events = { |
drag: inOnDrag || dojox.grid.nop, |
end: inOnEnd || dojox.grid.nop, |
start: inOnStart || dojox.grid.nop, |
oldmove: inElement.onmousemove, |
oldup: inElement.onmouseup, |
oldclick: inElement.onclick |
}; |
dgdrag.positionX = (inEvent && ('screenX' in inEvent) ? inEvent.screenX : false); |
dgdrag.positionY = (inEvent && ('screenY' in inEvent) ? inEvent.screenY : false); |
dgdrag.started = (dgdrag.position === false); |
inElement.onmousemove = dgdrag.mousemove; |
inElement.onmouseup = dgdrag.mouseup; |
inElement.onclick = dgdrag.click; |
dgdrag.capture(dgdrag.elt); |
} |
|
dgdrag.end = function(){ |
//console.debug("dojox.grid.drag.end"); |
dgdrag.release(dgdrag.elt); |
dgdrag.elt.onmousemove = dgdrag.events.oldmove; |
dgdrag.elt.onmouseup = dgdrag.events.oldup; |
dgdrag.elt.onclick = dgdrag.events.oldclick; |
dgdrag.elt = null; |
try{ |
if(dgdrag.started){ |
dgdrag.events.end(); |
} |
}finally{ |
dgdrag.dragging = false; |
} |
} |
|
dgdrag.calcDelta = function(inEvent){ |
inEvent.deltaX = inEvent.screenX - dgdrag.positionX; |
inEvent.deltaY = inEvent.screenY - dgdrag.positionY; |
} |
|
dgdrag.hasMoved = function(inEvent){ |
return Math.abs(inEvent.deltaX) + Math.abs(inEvent.deltaY) > dgdrag.hysteresis; |
} |
|
dgdrag.mousemove = function(inEvent){ |
inEvent = dojo.fixEvent(inEvent); |
dojo.stopEvent(inEvent); |
dgdrag.calcDelta(inEvent); |
if((!dgdrag.started)&&(dgdrag.hasMoved(inEvent))){ |
dgdrag.events.start(inEvent); |
dgdrag.started = true; |
} |
if(dgdrag.started){ |
dgdrag.events.drag(inEvent); |
} |
} |
|
dgdrag.mouseup = function(inEvent){ |
//console.debug("dojox.grid.drag.mouseup"); |
dojo.stopEvent(dojo.fixEvent(inEvent)); |
dgdrag.end(); |
} |
|
dgdrag.click = function(inEvent){ |
dojo.stopEvent(dojo.fixEvent(inEvent)); |
//dgdrag.end(); |
} |
|
})(); |
// end closure |
|
} |