added function extend to Util module

This commit is contained in:
coderaiser 2013-05-06 07:27:50 -04:00
parent af00d74e07
commit 7c25901222
2 changed files with 216 additions and 202 deletions

View file

@ -3,7 +3,8 @@ var CloudCommander, Util, DOM, CloudFunc;
(function(Util){
'use strict';
var DOMConstructor = function(){},
var DOMProto = {},
DOMConstructor = function(){},
CURRENT_FILE = 'current-file',
SELECTED_FILE = 'selected-file',
XMLHTTP, Title,
@ -256,16 +257,205 @@ var CloudCommander, Util, DOM, CloudFunc;
return (pElement || document).getElementsByClassName(pClass);
};
},
EventsProto = function(){
/**
* safe add event listener
*
* @param pType
* @param pListener
* @param pUseCapture
* @param pElement {document by default}
*/
this.addListener = function(pType, pListener, pElement, pUseCapture){
var lRet = this,
lElement = (pElement || window);
if( lElement.addEventListener)
lElement.addEventListener(
pType,
pListener,
pUseCapture
);
return lRet;
};
/**
* safe add event listener
*
* @param pType
* @param pListener
* @param pUseCapture
* @param pElement {document by default}
*/
this.addOneTimeListener = function(pType, pListener, pElement, pUseCapture){
var lRet = this,
lOneTime = function (pEvent){
lRet.removeListener(pType, lOneTime, pElement, pUseCapture);
pListener(pEvent);
};
this.addListener(pType, lOneTime, pElement, pUseCapture);
return lRet;
};
/**
* safe remove event listener
*
* @param pType
* @param pListener
* @param pUseCapture
* @param pElement {document by default}
*/
this.removeListener = function(pType, pListener, pElement, pUseCapture){
var lRet = this;
(pElement || window).removeEventListener(
pType,
pListener,
pUseCapture
);
return lRet;
};
/**
* safe add event keydown listener
*
* @param pListener
* @param pUseCapture
*/
this.addKeyListener = function(pListener, pElement, pUseCapture){
return this.addListener('keydown', pListener, pElement, pUseCapture);
};
/**
* safe add event click listener
*
* @param pListener
* @param pUseCapture
*/
this.addClickListener = function(pListener, pElement, pUseCapture){
return this.addListener('click', pListener, pElement, pUseCapture);
};
this.addContextMenuListener = function(pListener, pElement, pUseCapture){
return this.addListener('contextmenu', pListener, pElement, pUseCapture);
};
/**
* safe add event click listener
*
* @param pListener
* @param pUseCapture
*/
this.addErrorListener = function(pListener, pElement, pUseCapture){
return this.addListener('error', pListener, pElement, pUseCapture);
};
/**
* crossbrowser create event
*
* @param pEventName
* @param pKeyCode - not necessarily
*/
this.createEvent = function(pEventName, pKeyCode){
var lEvent = document.createEvent('Event');
lEvent.initEvent(pEventName, true, true);
if(pKeyCode)
lEvent.keyCode = pKeyCode;
lEvent.isDefaultPrevented = function(){
return this.defaultPrevented;
};
return lEvent;
};
/**
* create keydown event
*
* @param pKeyCode
*/
this.createKeyEvent = function(pKeyCode){
return this.createEvent('keydown', pKeyCode);
};
/**
* create click event
*
* @param pKeyCode
*/
this.createClickEvent = function(){
return this.createEvent('click');
};
/**
* create click event
*
* @param pKeyCode
*/
this.createDblClickEvent = function(){
return this.createEvent('dblclick');
};
/**
* dispatch event
*
* @param pEvent
*/
this.dispatch = function(pEvent, pElement){
return (pElement || window).dispatchEvent(pEvent);
};
/**
* dispatch keydown event
*
* @param pKeyCode
* @param pElement
*/
this.dispatchKeyEvent = function(pKeyCode, pElement){
var lEvent = this.createKeyEvent(pKeyCode),
lRet = this.dispatch(lEvent, pElement);
return lRet;
};
/**
* dispatch click event
*
* @param pElement
*/
this.dispatchClickEvent = function(pElement){
var lEvent = this.createClickEvent(),
lRet = this.dispatch(lEvent, pElement);
return lRet;
};
/**
* dispatch dblclick event
*
* @param pElement
*/
this.dispatchDblClickEvent = function(pElement){
var lEvent = this.createDblClickEvent(),
lRet = this.dispatch(lEvent, pElement);
return lRet;
};
},
RESTfull = function(){},
Images = function(){},
DOMTreeConstructor = function(){},
DOMTree,
DOMProto;
DOMTreeConstructor.prototype= new DOMTreeProto();
DOMTree = new DOMTreeConstructor();
DOMProto = new DOMTreeConstructor();
DOMTreeConstructor = function(){};
Util.extend(DOMProto, [DOMTreeProto, EventsProto]);
DOMConstructor.prototype = DOMProto;
DOM = new DOMConstructor();
@ -290,199 +480,6 @@ var CloudCommander, Util, DOM, CloudFunc;
}
/**
* safe add event listener
*
* @param pType
* @param pListener
* @param pUseCapture
* @param pElement {document by default}
*/
DOMProto.addListener = function(pType, pListener, pElement, pUseCapture){
var lRet = this,
lElement = (pElement || window);
if( lElement.addEventListener)
lElement.addEventListener(
pType,
pListener,
pUseCapture
);
return lRet;
};
/**
* safe add event listener
*
* @param pType
* @param pListener
* @param pUseCapture
* @param pElement {document by default}
*/
DOMProto.addOneTimeListener = function(pType, pListener, pElement, pUseCapture){
var lRet = this,
lOneTime = function (pEvent){
DOMProto.removeListener(pType, lOneTime, pElement, pUseCapture);
pListener(pEvent);
};
DOMProto.addListener(pType, lOneTime, pElement, pUseCapture);
return lRet;
};
/**
* safe remove event listener
*
* @param pType
* @param pListener
* @param pUseCapture
* @param pElement {document by default}
*/
DOMProto.removeListener = function(pType, pListener, pElement, pUseCapture){
var lRet = this;
(pElement || window).removeEventListener(
pType,
pListener,
pUseCapture
);
return lRet;
};
/**
* safe add event keydown listener
*
* @param pListener
* @param pUseCapture
*/
DOMProto.addKeyListener = function(pListener, pElement, pUseCapture){
return DOMProto.addListener('keydown', pListener, pElement, pUseCapture);
};
/**
* safe add event click listener
*
* @param pListener
* @param pUseCapture
*/
DOMProto.addClickListener = function(pListener, pElement, pUseCapture){
return DOMProto.addListener('click', pListener, pElement, pUseCapture);
};
DOMProto.addContextMenuListener = function(pListener, pElement, pUseCapture){
return DOMProto.addListener('contextmenu', pListener, pElement, pUseCapture);
};
/**
* safe add event click listener
*
* @param pListener
* @param pUseCapture
*/
DOMProto.addErrorListener = function(pListener, pElement, pUseCapture){
return DOMProto.addListener('error', pListener, pElement, pUseCapture);
};
/**
* crossbrowser create event
*
* @param pEventName
* @param pKeyCode - not necessarily
*/
DOMProto.createEvent = function(pEventName, pKeyCode){
var lEvent = document.createEvent('Event');
lEvent.initEvent(pEventName, true, true);
if(pKeyCode)
lEvent.keyCode = pKeyCode;
lEvent.isDefaultPrevented = function(){
return this.defaultPrevented;
};
return lEvent;
};
/**
* create keydown event
*
* @param pKeyCode
*/
DOMProto.createKeyEvent = function(pKeyCode){
return DOMProto.createEvent('keydown', pKeyCode);
};
/**
* create click event
*
* @param pKeyCode
*/
DOMProto.createClickEvent = function(){
return DOMProto.createEvent('click');
};
/**
* create click event
*
* @param pKeyCode
*/
DOMProto.createDblClickEvent = function(){
return DOMProto.createEvent('dblclick');
};
/**
* dispatch event
*
* @param pEvent
*/
DOMProto.dispatch = function(pEvent, pElement){
return (pElement || window).dispatchEvent(pEvent);
};
/**
* dispatch keydown event
*
* @param pKeyCode
* @param pElement
*/
DOMProto.dispatchKeyEvent = function(pKeyCode, pElement){
var lEvent = DOMProto.createKeyEvent(pKeyCode),
lRet = DOMProto.dispatch(lEvent, pElement);
return lRet;
};
/**
* dispatch click event
*
* @param pElement
*/
DOMProto.dispatchClickEvent = function(pElement){
var lEvent = DOMProto.createClickEvent(),
lRet = DOMProto.dispatch(lEvent, pElement);
return lRet;
};
/**
* dispatch dblclick event
*
* @param pElement
*/
DOMProto.dispatchDblClickEvent = function(pElement){
var lEvent = DOMProto.createDblClickEvent(),
lRet = DOMProto.dispatch(lEvent, pElement);
return lRet;
};
/**
* load file countent thrue ajax
*

View file

@ -168,6 +168,23 @@ Util = exports || {};
return lRet;
};
Util.extend = function(pTarget, PObj){
var i, n, lObj, lRet = Util.isObject(pTarget) ? pTarget : {};
if( Util.isArray(PObj) )
for(i = 0, n = PObj.length; i < n; i++)
Util.extend(pTarget, PObj[i]);
else if(PObj){
lObj = Util.isFunction(PObj) ? new PObj() : PObj;
for(i in lObj)
lRet[i] = lObj[i];
}
return lRet;
};
/** for function
* @param pI
* @param pN