* Our builder application needs the ability to preview these sub compoennts. They will normally have parent=false set,
* hence confusing the component builder as it thinks there are multiple top level elements.
*
+ * String Over-ride & Translations
+ *
+ * Our builder application writes all the strings as _strings and _named_strings. This is to enable the translation of elements,
+ * and also the 'overlaying of string values - needed when different versions of the same application with different text content
+ * are needed. @see Roo.XComponent.overlayString
+ *
*
*
* @extends Roo.util.Observable
var hp = this.parent ? 1 : 0;
Roo.debug && Roo.log(this);
+ var tree = this._tree ? this._tree() : this.tree();
+
+
if (!el && typeof(this.parent) == 'string' && this.parent.substring(0,1) == '#') {
// if parent is a '#.....' string, then let's use that..
var ename = this.parent.substr(1);
this.parent = false;
Roo.debug && Roo.log(ename);
switch (ename) {
- case 'bootstrap-body' :
- if (typeof(Roo.bootstrap.Body) != 'undefined') {
+ case 'bootstrap-body':
+ if (typeof(tree.el) != 'undefined' && tree.el == document.body) {
+ // this is the BorderLayout standard?
+ this.parent = { el : true };
+ break;
+ }
+ if (["Nest", "Content", "Grid", "Tree"].indexOf(tree.xtype) > -1) {
+ // need to insert stuff...
+ this.parent = {
+ el : new Roo.bootstrap.layout.Border({
+ el : document.body,
+
+ center: {
+ titlebar: false,
+ autoScroll:false,
+ closeOnTab: true,
+ tabPosition: 'top',
+ //resizeTabs: true,
+ alwaysShowTabs: true,
+ hideTabs: false
+ //minTabWidth: 140
+ }
+ })
+
+ };
+ break;
+ }
+
+ if (typeof(Roo.bootstrap.Body) != 'undefined' ) {
this.parent = { el : new Roo.bootstrap.Body() };
Roo.debug && Roo.log("setting el to doc body");
// fall through
default:
el = Roo.get(ename);
+ if (typeof(Roo.bootstrap) != 'undefined' && tree['|xns'] == 'Roo.bootstrap') {
+ this.parent = { el : true};
+ }
+
break;
}
return;
}
}
+
Roo.debug && Roo.log("EL:");
Roo.debug && Roo.log(el);
Roo.debug && Roo.log("this.parent.el:");
Roo.debug && Roo.log(this.parent.el);
- var tree = this._tree ? this._tree() : this.tree();
// altertive root elements ??? - we need a better way to indicate these.
var is_alt = Roo.XComponent.is_alt ||
(typeof(Roo.bootstrap) != 'undefined' && tree.xns == Roo.bootstrap) ||
(typeof(Roo.mailer) != 'undefined' && tree.xns == Roo.mailer) ;
- var tree_el = (typeof(tree.el) != 'undefined' && tree.el == document.body) ? document.body : true;
+
if (!this.parent && is_alt) {
//el = Roo.get(document.body);
- this.parent = { el : tree_el };
+ this.parent = { el : true };
}
el = el ? Roo.get(el) : false;
- // it's a top level one..
- this.parent = {
- el : new Roo.BorderLayout(el || document.body, {
+ if (typeof(Roo.BorderLayout) == 'undefined' ) {
- center: {
- titlebar: false,
- autoScroll:false,
- closeOnTab: true,
- tabPosition: 'top',
- //resizeTabs: true,
- alwaysShowTabs: el && hp? false : true,
- hideTabs: el || !hp ? true : false,
- minTabWidth: 140
- }
- })
- };
+ this.parent = {
+ el : new Roo.bootstrap.layout.Border({
+ el: el || document.body,
+
+ center: {
+ titlebar: false,
+ autoScroll:false,
+ closeOnTab: true,
+ tabPosition: 'top',
+ //resizeTabs: true,
+ alwaysShowTabs: false,
+ hideTabs: true,
+ minTabWidth: 140,
+ overflow: 'visible'
+ }
+ })
+ };
+ } else {
+
+ // it's a top level one..
+ this.parent = {
+ el : new Roo.BorderLayout(el || document.body, {
+ center: {
+ titlebar: false,
+ autoScroll:false,
+ closeOnTab: true,
+ tabPosition: 'top',
+ //resizeTabs: true,
+ alwaysShowTabs: el && hp? false : true,
+ hideTabs: el || !hp ? true : false,
+ minTabWidth: 140
+ }
+ })
+ };
+ }
}
if (!this.parent.el) {
var is_body = false;
if (this.parent.el === true) {
// bootstrap... - body..
+ if (el) {
+ tree.el = el;
+ }
this.parent.el = Roo.factory(tree);
is_body = true;
}
break;
default:
- if (obj.disabled) {
+ if (obj.disabled || obj.region == '#disabled') {
return;
}
break;
msg: msg,
width:450,
progress:true,
+ buttons : false,
closable:false,
modal: false
" of " + total +
(m.name ? (' - ' + m.name) : '');
Roo.debug && Roo.log(msg);
- if (!this.hideProgress && Roo.MessageBox) {
+ if (!_this.hideProgress && Roo.MessageBox) {
Roo.MessageBox.updateProgress( (total - mods.length)/total, msg );
}
},
-
+ /**
+ * Overlay a set of modified strings onto a component
+ * This is dependant on our builder exporting the strings and 'named strings' elements.
+ *
+ * @param {Object} element to overlay on - eg. Pman.Dialog.Login
+ * @param {Object} associative array of 'named' string and it's new value.
+ *
+ */
+ overlayStrings : function( component, strings )
+ {
+ if (typeof(component['_named_strings']) == 'undefined') {
+ throw "ERROR: component does not have _named_strings";
+ }
+ for ( var k in strings ) {
+ var md = typeof(component['_named_strings'][k]) == 'undefined' ? false : component['_named_strings'][k];
+ if (md !== false) {
+ component['_strings'][md] = strings[k];
+ } else {
+ Roo.log('could not find named string: ' + k + ' in');
+ Roo.log(component);
+ }
+
+ }
+
+ },
+
/**
* Event Object.