this.cfg = XObject.extend({}, cfg); // used to store original configuration.. for referencing..
+ // used by baseobject to create fake child elements on init..
+ if (cfg.el) {
+ this.el = cfg.el;
+ }
+
// we could use this to determine if
// we are actually inside a inherited class...
// as define() should actually set this up..
this.constructor = XObject;
var base = XObject.baseXObject(cfg);
if (base) {
- XObject.extend(this,base.prototype);
+ XObject.extend(this, base.prototype);
}
}
- this.items = [];
+ this.items = [];
// create XObject for all the children.
for(var i = 0; i < items.length;i++) {
* XObject.prototype.init.call(this);
*
*/
- init : function()
+ init : function(parent)
{
// var items = [];
}
// what about extended items!?!?!?
- item.init();
+ item.init(this);
//print("CTR:PROTO:" + ( item.id ? item.id : '??'));
// print("addItem - call init [" + item.pack.join(',') + ']');
if (!item.el) {
get : function(xid)
{
XObject.log("SEARCH FOR " + xid + " in " + this.id);
+ return this.getBySearch(xid);
+ },
+ getBySearch : function(xid) {
+
var ret= false;
var oid = '' + xid;
if (!xid.length) {
}
if (xid[0] == '.') {
- return this.parent.get(xid.substring(1));
+ return this.parent.getBySearch(xid.substring(1));
}
if (xid[0] == '/') {
child = child.join('.');
if (typeof(XObject.cache[nxid]) != 'undefined') {
- return XObject.cache[nxid].get(child);
+ return XObject.cache[nxid].getBySearch(child);
}
}
try {
- ret = e.get(xid.substring(1));
+ ret = e.getBySearch(xid.substring(1));
} catch (ex) { }
if (!ret) {
}
if (xid == this.id) {
try {
- return child === false ? this : this.get(child);
+ return child === false ? this : this.getBySearch(child);
} catch (ex) {
throw {
name: "ArgumentError",
})
if (ret) {
try {
- return child === false ? ret : ret.get(child);
+ return child === false ? ret : ret.getBySearch(child);
} catch (ex) {
throw {
name: "ArgumentError",
Seed.quit();
}
try {
- ret = ch.get(xid);
+ ret = ch.getBySearch(xid);
} catch (ex) { }
}
}
try {
- return child === false ? ret : ret.get(child);
+ return child === false ? ret : ret.getBySearch(child);
} catch (ex) {
throw {
name: "ArgumentError",
* @property {Boolean} debug XObject debugging. - set to true to debug.
*
*/
- debug : false,
+ debug : true,
/**
* @property {Object} cache - cache of object ids
*
return o;
},
-
+ /**
+ * Deep clone..
+ * @param {Object} o the object to clone..
+ * @return {Object} returns clone of object
+ * @member Object xclone
+ */
+ xclone : function(o)
+ {
+ var cp = function(e) {
+
+ if (typeof(e) != 'object') {
+ return e;
+ }
+
+ if (typeof(e) == 'object' && Array.isArray(e)) {
+ var ar = [];
+ for (var i =0; i < e.length;i++) {
+ ar.push(cp(e[i]));
+ }
+ return ar;
+ }
+
+ return XObject.xclone(e);
+
+ };
+
+ var r = {};
+ for(var p in o){
+ //print (p + ': ' + typeof(o[p]));
+ r[p] = cp(o[p])
+ }
+ return r;
+ },
+
/**
* Extends one class with another class and optionally overrides members with the passed literal. This class
gname = XObject.type(cfg.xtype);
}
+ if (typeof(cfg.xtype) == 'string') {
+ gname = cfg.xtype;
+ }
+
XObject.log("TRYING BASE OBJECT : " + gname);
// in the situation where we have been called and there is a base object
// defining the behavior..
// then we should copy the prototypes from the base object into this..
+
+ // see if file exists???
+
var base = gname ? imports.XObjectBase[gname][gname] : false;
return base;