1 /** 2 * @fileoverview The XRX++ main class. 3 */ 4 5 goog.provide('xrx'); 6 7 goog.require('goog.dom'); 8 goog.require('xrx.func'); 9 goog.require('xrx.bind'); 10 goog.require('xrx.console'); 11 goog.require('xrx.input'); 12 goog.require('xrx.instance'); 13 goog.require('xrx.model'); 14 goog.require('xrx.output'); 15 goog.require('xrx.richxml'); 16 goog.require('xrx.textarea'); 17 goog.require('xrx.view'); 18 19 20 xrx.install_ = function(className) { 21 var element = goog.dom.getElementsByClass(className); 22 23 var classFromClassName_ = function(obj, arr) { 24 var next = obj[arr.shift()]; 25 26 return arr.length > 0 ? classFromClassName_(next, arr) : next; 27 } 28 29 var classFromClassName = function(className) { 30 var arr = className.split('-'); 31 32 return classFromClassName_(window, arr); 33 } 34 35 for(var i = 0, len = element.length; i < len; i++) { 36 var e = element[i]; 37 var cmpClass = classFromClassName(className); 38 39 if (!cmpClass) throw Error('Implementation of class <' + 40 className + '> could not be found.'); 41 42 var cmp = new cmpClass(e); 43 44 if (cmp instanceof xrx.model) { 45 xrx.model.addComponent(cmp.getId(), cmp); 46 } else if (cmp instanceof xrx.view) { 47 xrx.view.addComponent(cmp.getId(), cmp); 48 } else { 49 throw Error('Components must either inherit ' + 50 'class xrx.view or class xrx.model'); 51 } 52 } 53 54 }; 55 56 57 58 xrx.install = function() { 59 60 for(var i = 0, len = xrx.model.classes.length; i < len; i++) { 61 xrx.install_(xrx.model.classes[i]); 62 } 63 64 for(var i = 0, len = xrx.view.classes.length; i < len; i++) { 65 xrx.install_(xrx.view.classes[i]); 66 } 67 }; 68