Adding Tab form support
This commit is contained in:
parent
7a83c6a00f
commit
1b5fbf8622
6 changed files with 987 additions and 0 deletions
126
www/extras/tabs/global.js
Normal file
126
www/extras/tabs/global.js
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
/**
|
||||
* global.js
|
||||
* by Garrett Smith
|
||||
* Provides functionality for extending custom classes.
|
||||
*
|
||||
* ElementWrapper is a simple wrapper class.
|
||||
*
|
||||
* EventQueue provides Event Listener Functionality.
|
||||
*/
|
||||
|
||||
|
||||
/** Provides functionality for extending classes.
|
||||
*
|
||||
*/
|
||||
Function.prototype.extend = function(souper) {
|
||||
this.prototype = new souper;
|
||||
this.prototype.constructor = this;
|
||||
this.souper = souper;
|
||||
this.prototype.souper = souper;
|
||||
};
|
||||
/** Generic Element Wrapper
|
||||
*
|
||||
*/
|
||||
ElementWrapper = function ElementWrapper(el){
|
||||
if(arguments.length == 0) return;
|
||||
this.el = el;
|
||||
this.id = el.id;
|
||||
if(!ElementWrapper.list[this.id])
|
||||
ElementWrapper.list[this.id] = this;
|
||||
};
|
||||
|
||||
ElementWrapper.list = new function(){};
|
||||
|
||||
ElementWrapper.getWrapper = function(id){
|
||||
return ElementWrapper.list[id];
|
||||
};
|
||||
|
||||
|
||||
/** EventQueue class Provides Event Listener Functionality.
|
||||
*
|
||||
* Instance Methods:
|
||||
*
|
||||
* addEventListener(etype, pointer)
|
||||
*
|
||||
*
|
||||
*/
|
||||
EventQueue = function EventQueue(eventObj){
|
||||
if(arguments.length == 0) return;
|
||||
this.souper = EventQueue.souper;
|
||||
this.souper(eventObj);
|
||||
|
||||
this.addToPool();
|
||||
};
|
||||
|
||||
EventQueue.extend(ElementWrapper);
|
||||
|
||||
EventQueue.prototype.addEventListener = function(etype, pointer){
|
||||
var list = this.eventHandlerList(etype);
|
||||
return list[list.length++] = pointer;
|
||||
};
|
||||
|
||||
EventQueue.prototype.eventHandlerList = function(etype){
|
||||
|
||||
if(!this[etype])
|
||||
this[etype] = new EventQueue.EventHandler(this, etype);
|
||||
|
||||
return this[etype];
|
||||
};
|
||||
|
||||
EventQueue.prototype.removeEventListener = function(etype, pointer){
|
||||
var list = this[etype];
|
||||
var len = list.length;
|
||||
if(len == 0) return null;
|
||||
|
||||
var newList = new Array(len-1);
|
||||
var rtn = null;
|
||||
for(var i = 0; i < len; i++)
|
||||
if(list[i] != pointer)
|
||||
newList[i] = list[i];
|
||||
else rtn = pointer;
|
||||
|
||||
this[etype] = newList;
|
||||
return rtn;
|
||||
};
|
||||
|
||||
|
||||
EventQueue.prototype.handleEvent = function(e){
|
||||
|
||||
var rtn = true;
|
||||
for(var i = 0, len = this[e].length; i < len; i++){
|
||||
this.tempFunction = this[e][i];
|
||||
if(rtn != false)
|
||||
rtn = this.tempFunction();
|
||||
}
|
||||
return rtn;
|
||||
};
|
||||
|
||||
EventQueue.prototype.addToPool = function(){
|
||||
if(!EventQueue.list[this.id])
|
||||
EventQueue.list[this.id] = this;
|
||||
};
|
||||
|
||||
|
||||
/** EventQueue.EventHandler is private to EventQueue class.
|
||||
* Instantiation and method calls are made automatically from
|
||||
* EventQueue constructor and instance methods.
|
||||
*/
|
||||
EventQueue.EventHandler = function EventHandler(wrapper, etype){
|
||||
this.etype = etype;
|
||||
this.length = 0;
|
||||
this.id = wrapper.id;
|
||||
wrapper.el[etype] = new Function("return EventQueue.fireEvent('"+wrapper.id+"', '"+etype+"')");
|
||||
};
|
||||
|
||||
EventQueue.fireEvent = function(id, e){
|
||||
var wrapper = EventQueue.list[id];
|
||||
if(!wrapper) return false;
|
||||
var r = wrapper.handleEvent(e);
|
||||
return r;
|
||||
|
||||
};
|
||||
EventQueue.EventHandler.prototype.toString = function toString(){
|
||||
return this.id +"." +this.etype;
|
||||
};
|
||||
|
||||
EventQueue.list = new Object;
|
||||
Loading…
Add table
Add a link
Reference in a new issue