From ef68436ac04da078ffdcacd7e1f785473a303d45 Mon Sep 17 00:00:00 2001 From: Giulio Cesare Solaroli Date: Sun, 02 Oct 2011 23:56:18 +0000 Subject: First version of the newly restructured repository --- (limited to 'frontend/beta/js/YUI-extensions/grid/GridDD.js') diff --git a/frontend/beta/js/YUI-extensions/grid/GridDD.js b/frontend/beta/js/YUI-extensions/grid/GridDD.js new file mode 100644 index 0000000..cdcaf39 --- a/dev/null +++ b/frontend/beta/js/YUI-extensions/grid/GridDD.js @@ -0,0 +1,101 @@ + +// kill dependency issue +if(YAHOO.util.DDProxy){ +/** + * @class YAHOO.ext.grid.GridDD + * Custom implementation of YAHOO.util.DDProxy used internally by the grid + * @extends YAHOO.util.DDProxy + */ +YAHOO.ext.grid.GridDD = function(grid, bwrap){ + this.grid = grid; + var ddproxy = document.createElement('div'); + ddproxy.id = grid.container.id + '-ddproxy'; + ddproxy.className = 'ygrid-drag-proxy'; + document.body.insertBefore(ddproxy, document.body.firstChild); + YAHOO.util.Dom.setStyle(ddproxy, 'opacity', .80); + var ddicon = document.createElement('span'); + ddicon.className = 'ygrid-drop-icon ygrid-drop-nodrop'; + ddproxy.appendChild(ddicon); + var ddtext = document.createElement('span'); + ddtext.className = 'ygrid-drag-text'; + ddtext.innerHTML = " "; + ddproxy.appendChild(ddtext); + + this.ddproxy = ddproxy; + this.ddtext = ddtext; + this.ddicon = ddicon; + YAHOO.util.Event.on(bwrap, 'click', this.handleClick, this, true); + YAHOO.ext.grid.GridDD.superclass.constructor.call(this, bwrap.id, 'GridDD', + {dragElId : ddproxy.id, resizeFrame: false}); + + this.unlockDelegate = grid.selModel.unlock.createDelegate(grid.selModel); +}; +YAHOO.extendX(YAHOO.ext.grid.GridDD, YAHOO.util.DDProxy); + +YAHOO.ext.grid.GridDD.prototype.handleMouseDown = function(e){ + var row = this.grid.getRowFromChild(YAHOO.util.Event.getTarget(e)); + if(!row) return; + if(this.grid.selModel.isSelected(row)){ + YAHOO.ext.grid.GridDD.superclass.handleMouseDown.call(this, e); + }else { + this.grid.selModel.unlock(); + YAHOO.ext.EventObject.setEvent(e); + this.grid.selModel.rowClick(this.grid, row.rowIndex, YAHOO.ext.EventObject); + YAHOO.ext.grid.GridDD.superclass.handleMouseDown.call(this, e); + this.grid.selModel.lock(); + } +}; + +YAHOO.ext.grid.GridDD.prototype.handleClick = function(e){ + if(this.grid.selModel.isLocked()){ + setTimeout(this.unlockDelegate, 1); + YAHOO.util.Event.stopEvent(e); + } +}; + +/** + * Updates the DD visual element to allow/not allow a drop + * @param {Boolean} dropStatus True if drop is allowed on the target + */ +YAHOO.ext.grid.GridDD.prototype.setDropStatus = function(dropStatus){ + if(dropStatus === true){ + YAHOO.util.Dom.replaceClass(this.ddicon, 'ygrid-drop-nodrop', 'ygrid-drop-ok'); + }else{ + YAHOO.util.Dom.replaceClass(this.ddicon, 'ygrid-drop-ok', 'ygrid-drop-nodrop'); + } +}; + +YAHOO.ext.grid.GridDD.prototype.startDrag = function(e){ + this.ddtext.innerHTML = this.grid.getDragDropText(); + this.setDropStatus(false); + this.grid.selModel.lock(); + this.grid.fireEvent('startdrag', this.grid, this, e); +}; + +YAHOO.ext.grid.GridDD.prototype.endDrag = function(e){ + YAHOO.util.Dom.setStyle(this.ddproxy, 'visibility', 'hidden'); + this.grid.fireEvent('enddrag', this.grid, this, e); +}; + +YAHOO.ext.grid.GridDD.prototype.autoOffset = function(iPageX, iPageY) { + this.setDelta(-12, -20); +}; + +YAHOO.ext.grid.GridDD.prototype.onDragEnter = function(e, id) { + this.setDropStatus(true); + this.grid.fireEvent('dragenter', this.grid, this, id, e); +}; + +YAHOO.ext.grid.GridDD.prototype.onDragDrop = function(e, id) { + this.grid.fireEvent('dragdrop', this.grid, this, id, e); +}; + +YAHOO.ext.grid.GridDD.prototype.onDragOver = function(e, id) { + this.grid.fireEvent('dragover', this.grid, this, id, e); +}; + +YAHOO.ext.grid.GridDD.prototype.onDragOut = function(e, id) { + this.setDropStatus(false); + this.grid.fireEvent('dragout', this.grid, this, id, e); +}; +}; -- cgit v0.9.0.2