1 <html><head><title>../roojs1/Roo/XComponent.js</title><link rel="stylesheet" type="text/css" href="../../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2 * Original code for Roojs - LGPL
3 * <script type="text/javascript">
7 * @class Roo.XComponent
8 * A delayed Element creator...
9 * Or a way to group chunks of interface together.
10 * technically this is a wrapper around a tree of Roo elements (which defines a 'module'),
11 * used in conjunction with XComponent.build() it will create an instance of each element,
12 * then call addxtype() to build the User interface.
14 * Mypart.xyx = new Roo.XComponent({
16 parent : 'Mypart.xyz', // empty == document.element.!!
20 disabled : function() {}
22 tree : function() { // return an tree of xtype declared components
26 xtype : 'NestedLayoutPanel',
33 * It can be used to build a big heiracy, with parent etc.
34 * or you can just use this to render a single compoent to a dom element
35 * MYPART.render(Roo.Element | String(id) | dom_element )
42 * Roo is designed primarily as a single page application, so the UI build for a standard interface will
43 * expect a single 'TOP' level module normally indicated by the 'parent' of the XComponent definition being defined as false.
45 * Each sub module is expected to have a parent pointing to the class name of it's parent module.
47 * When the top level is false, a 'Roo.BorderLayout' is created and the element is flagged as 'topModule'
48 * - if mulitple topModules exist, the last one is defined as the top module.
52 * When the top level or multiple modules are to embedded into a existing HTML page,
53 * the parent element can container '#id' of the element where the module will be drawn.
57 * Unlike classic Roo, the bootstrap tends not to be used as a single page.
58 * it relies more on a include mechanism, where sub modules are included into an outer page.
59 * This is normally managed by the builder tools using Roo.apply( options, Included.Sub.Module )
61 * Bootstrap Roo Included elements
63 * Our builder application needs the ability to preview these sub compoennts. They will normally have parent=false set,
64 * hence confusing the component builder as it thinks there are multiple top level elements.
66 * String Over-ride & Translations
68 * Our builder application writes all the strings as _strings and _named_strings. This is to enable the translation of elements,
69 * and also the 'overlaying of string values - needed when different versions of the same application with different text content
70 * are needed. @see Roo.XComponent.overlayString
74 * @extends Roo.util.Observable
76 * @param cfg {Object} configuration of component
79 </span><span class="jsdoc-var">Roo.XComponent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cfg</span><span class="jsdoc-syntax">) {
80 </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cfg</span><span class="jsdoc-syntax">);
81 </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
82 </span><span class="jsdoc-comment">/**
84 * Fires when this the componnt is built
85 * @param {Roo.XComponent} c the component
87 </span><span class="jsdoc-string">'built' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
89 </span><span class="jsdoc-syntax">});
90 </span><span class="jsdoc-var">this.region </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.region </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-string">'center'</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// default..
91 </span><span class="jsdoc-var">Roo.XComponent.register</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
92 </span><span class="jsdoc-var">this.modules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
93 </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// where the layout goes..
96 </span><span class="jsdoc-syntax">}
97 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.XComponent</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.util.Observable</span><span class="jsdoc-syntax">, {
98 </span><span class="jsdoc-comment">/**
100 * The created element (with Roo.factory())
103 </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
105 </span><span class="jsdoc-comment">/**
107 * for BC - use el in new code
110 </span><span class="jsdoc-var">panel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
112 </span><span class="jsdoc-comment">/**
114 * for BC - use el in new code
117 </span><span class="jsdoc-var">layout </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
119 </span><span class="jsdoc-comment">/**
120 * @cfg {Function|boolean} disabled
121 * If this module is disabled by some rule, return true from the funtion
123 </span><span class="jsdoc-var">disabled </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
125 </span><span class="jsdoc-comment">/**
126 * @cfg {String} parent
127 * Name of parent element which it get xtype added to..
129 </span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
131 </span><span class="jsdoc-comment">/**
132 * @cfg {String} order
133 * Used to set the order in which elements are created (usefull for multiple tabs)
136 </span><span class="jsdoc-var">order </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
137 </span><span class="jsdoc-comment">/**
139 * String to display while loading.
141 </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
142 </span><span class="jsdoc-comment">/**
143 * @cfg {String} region
144 * Region to render component to (defaults to center)
146 </span><span class="jsdoc-var">region </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'center'</span><span class="jsdoc-syntax">,
148 </span><span class="jsdoc-comment">/**
150 * A single item array - the first element is the root of the tree..
151 * It's done this way to stay compatible with the Xtype system...
153 </span><span class="jsdoc-var">items </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
155 </span><span class="jsdoc-comment">/**
157 * The method that retuns the tree of parts that make up this compoennt
160 </span><span class="jsdoc-var">_tree </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
162 </span><span class="jsdoc-comment">/**
164 * render element to dom or tree
165 * @param {Roo.Element|String|DomElement} optional render to if parent is not set.
168 </span><span class="jsdoc-var">render </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">)
171 </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
172 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">hp </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">? 1 : 0;
173 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
175 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">tree </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this._tree </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">this._tree</span><span class="jsdoc-syntax">() : </span><span class="jsdoc-var">this.tree</span><span class="jsdoc-syntax">();
178 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.parent</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">this.parent.substring</span><span class="jsdoc-syntax">(0,1) == </span><span class="jsdoc-string">'#'</span><span class="jsdoc-syntax">) {
179 </span><span class="jsdoc-comment">// if parent is a '#.....' string, then let's use that..
180 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.parent.substr</span><span class="jsdoc-syntax">(1);
181 </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
182 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">);
183 </span><span class="jsdoc-keyword">switch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">) {
184 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'bootstrap-body'</span><span class="jsdoc-syntax">:
185 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tree.el</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">tree.el </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">) {
186 </span><span class="jsdoc-comment">// this is the BorderLayout standard?
187 </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">= { </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">};
188 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
190 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">([</span><span class="jsdoc-string">"Nest"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Content"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Grid"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"Tree"</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tree.xtype</span><span class="jsdoc-syntax">) > -1) {
191 </span><span class="jsdoc-comment">// need to insert stuff...
192 </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">= {
193 </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.bootstrap.layout.Border</span><span class="jsdoc-syntax">({
194 </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">,
196 </span><span class="jsdoc-var">center</span><span class="jsdoc-syntax">: {
197 </span><span class="jsdoc-var">titlebar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
198 </span><span class="jsdoc-var">autoScroll</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
199 </span><span class="jsdoc-var">closeOnTab</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
200 </span><span class="jsdoc-var">tabPosition</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'top'</span><span class="jsdoc-syntax">,
201 </span><span class="jsdoc-comment">//resizeTabs: true,
202 </span><span class="jsdoc-var">alwaysShowTabs</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
203 </span><span class="jsdoc-var">hideTabs</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false
204 </span><span class="jsdoc-comment">//minTabWidth: 140
205 </span><span class="jsdoc-syntax">}
209 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
212 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.bootstrap.Body</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">) {
213 </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">= { </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.bootstrap.Body</span><span class="jsdoc-syntax">() };
214 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"setting el to doc body"</span><span class="jsdoc-syntax">);
216 } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
217 </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">"Container is bootstrap body, but Roo.bootstrap.Body is not defined"</span><span class="jsdoc-syntax">;
219 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
220 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'bootstrap'</span><span class="jsdoc-syntax">:
221 </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">= { </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">};
222 </span><span class="jsdoc-comment">// fall through
223 </span><span class="jsdoc-keyword">default</span><span class="jsdoc-syntax">:
224 </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ename</span><span class="jsdoc-syntax">);
225 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.bootstrap</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">tree</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'|xns'</span><span class="jsdoc-syntax">] == </span><span class="jsdoc-string">'Roo.bootstrap'</span><span class="jsdoc-syntax">) {
226 </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">= { </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">};
229 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
233 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">this.parent</span><span class="jsdoc-syntax">) {
234 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"Warning - element can not be found :#" </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">);
235 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
239 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"EL:"</span><span class="jsdoc-syntax">);
240 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
241 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"this.parent.el:"</span><span class="jsdoc-syntax">);
242 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.parent.el</span><span class="jsdoc-syntax">);
245 </span><span class="jsdoc-comment">// altertive root elements ??? - we need a better way to indicate these.
246 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">is_alt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.XComponent.is_alt </span><span class="jsdoc-syntax">||
247 (</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tree.el</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">tree.el </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">) ||
248 (</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.bootstrap</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">tree.xns </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.bootstrap</span><span class="jsdoc-syntax">) ||
249 (</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.mailer</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">tree.xns </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">Roo.mailer</span><span class="jsdoc-syntax">) ;
253 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">is_alt</span><span class="jsdoc-syntax">) {
254 </span><span class="jsdoc-comment">//el = Roo.get(document.body);
255 </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">= { </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">};
260 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.parent</span><span class="jsdoc-syntax">) {
262 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"no parent - creating one"</span><span class="jsdoc-syntax">);
264 </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">? </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
266 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.BorderLayout</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">) {
268 </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">= {
269 </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.bootstrap.layout.Border</span><span class="jsdoc-syntax">({
270 </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">,
272 </span><span class="jsdoc-var">center</span><span class="jsdoc-syntax">: {
273 </span><span class="jsdoc-var">titlebar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
274 </span><span class="jsdoc-var">autoScroll</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
275 </span><span class="jsdoc-var">closeOnTab</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
276 </span><span class="jsdoc-var">tabPosition</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'top'</span><span class="jsdoc-syntax">,
277 </span><span class="jsdoc-comment">//resizeTabs: true,
278 </span><span class="jsdoc-var">alwaysShowTabs</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
279 </span><span class="jsdoc-var">hideTabs</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
280 </span><span class="jsdoc-var">minTabWidth</span><span class="jsdoc-syntax">: 140,
281 </span><span class="jsdoc-var">overflow</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'visible'
282 </span><span class="jsdoc-syntax">}
285 } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
287 </span><span class="jsdoc-comment">// it's a top level one..
288 </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">= {
289 </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.BorderLayout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">, {
290 </span><span class="jsdoc-var">center</span><span class="jsdoc-syntax">: {
291 </span><span class="jsdoc-var">titlebar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
292 </span><span class="jsdoc-var">autoScroll</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
293 </span><span class="jsdoc-var">closeOnTab</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
294 </span><span class="jsdoc-var">tabPosition</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'top'</span><span class="jsdoc-syntax">,
295 </span><span class="jsdoc-comment">//resizeTabs: true,
296 </span><span class="jsdoc-var">alwaysShowTabs</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">hp</span><span class="jsdoc-syntax">? </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
297 </span><span class="jsdoc-var">hideTabs</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">hp </span><span class="jsdoc-syntax">? </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
298 </span><span class="jsdoc-var">minTabWidth</span><span class="jsdoc-syntax">: 140
305 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.parent.el</span><span class="jsdoc-syntax">) {
306 </span><span class="jsdoc-comment">// probably an old style ctor, which has been disabled.
307 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
310 </span><span class="jsdoc-comment">// The 'tree' method is '_tree now'
312 </span><span class="jsdoc-var">tree.region </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tree.region </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this.region</span><span class="jsdoc-syntax">;
313 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">is_body </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
314 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.parent.el </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">) {
315 </span><span class="jsdoc-comment">// bootstrap... - body..
316 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">) {
317 </span><span class="jsdoc-var">tree.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">;
319 </span><span class="jsdoc-var">this.parent.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tree</span><span class="jsdoc-syntax">);
320 </span><span class="jsdoc-var">is_body </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
323 </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.parent.el.addxtype</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">tree</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">undefined</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">is_body</span><span class="jsdoc-syntax">);
324 </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'built'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
326 </span><span class="jsdoc-var">this.panel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el</span><span class="jsdoc-syntax">;
327 </span><span class="jsdoc-var">this.layout </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.panel.layout</span><span class="jsdoc-syntax">;
328 </span><span class="jsdoc-var">this.parentLayout </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.parent.layout </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
334 </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.XComponent</span><span class="jsdoc-syntax">, {
335 </span><span class="jsdoc-comment">/**
336 * @property hideProgress
337 * true to disable the building progress bar.. usefull on single page renders.
340 </span><span class="jsdoc-var">hideProgress </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
341 </span><span class="jsdoc-comment">/**
342 * @property buildCompleted
343 * True when the builder has completed building the interface.
346 </span><span class="jsdoc-var">buildCompleted </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
348 </span><span class="jsdoc-comment">/**
349 * @property topModule
350 * the upper most module - uses document.element as it's constructor.
354 </span><span class="jsdoc-var">topModule </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
356 </span><span class="jsdoc-comment">/**
358 * array of modules to be created by registration system.
359 * @type {Array} of Roo.XComponent
362 </span><span class="jsdoc-var">modules </span><span class="jsdoc-syntax">: [],
363 </span><span class="jsdoc-comment">/**
364 * @property elmodules
365 * array of modules to be created by which use #ID
366 * @type {Array} of Roo.XComponent
369 </span><span class="jsdoc-var">elmodules </span><span class="jsdoc-syntax">: [],
371 </span><span class="jsdoc-comment">/**
373 * Is an alternative Root - normally used by bootstrap or other systems,
374 * where the top element in the tree can wrap 'body'
375 * @type {boolean} (default false)
378 </span><span class="jsdoc-var">is_alt </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
379 </span><span class="jsdoc-comment">/**
380 * @property build_from_html
381 * Build elements from html - used by bootstrap HTML stuff
382 * - this is cleared after build is completed
383 * @type {boolean} (default false)
386 </span><span class="jsdoc-var">build_from_html </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
387 </span><span class="jsdoc-comment">/**
388 * Register components to be built later.
390 * This solves the following issues
391 * - Building is not done on page load, but after an authentication process has occured.
392 * - Interface elements are registered on page load
393 * - Parent Interface elements may not be loaded before child, so this handles that..
400 module : 'Pman.Tab.projectMgr',
402 parent : 'Pman.layout',
403 disabled : false, // or use a function..
406 * * @param {Object} details about module
408 </span><span class="jsdoc-var">register </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">) {
410 </span><span class="jsdoc-var">Roo.XComponent.event.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'register'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">);
411 </span><span class="jsdoc-keyword">switch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj.disabled</span><span class="jsdoc-syntax">) ) {
413 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">:
414 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
416 </span><span class="jsdoc-keyword">case </span><span class="jsdoc-string">'function'</span><span class="jsdoc-syntax">:
417 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">obj.disabled</span><span class="jsdoc-syntax">() ) {
418 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
420 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
422 </span><span class="jsdoc-keyword">default</span><span class="jsdoc-syntax">:
423 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj.disabled</span><span class="jsdoc-syntax">) {
424 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
426 </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
429 </span><span class="jsdoc-var">this.modules.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">);
432 </span><span class="jsdoc-comment">/**
433 * convert a string to an object..
434 * eg. 'AAA.BBB' -> finds AAA.BBB
438 </span><span class="jsdoc-var">toObject </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">)
440 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">str </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'object'</span><span class="jsdoc-syntax">) {
441 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">;
443 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">str.substring</span><span class="jsdoc-syntax">(0,1) == </span><span class="jsdoc-string">'#'</span><span class="jsdoc-syntax">) {
444 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">;
447 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">str.split</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'.'</span><span class="jsdoc-syntax">);
448 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">rt</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
449 </span><span class="jsdoc-var">rt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ar.shift</span><span class="jsdoc-syntax">();
450 </span><span class="jsdoc-comment">/** eval:var:o */
451 </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
452 </span><span class="jsdoc-keyword">eval</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'if (typeof ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">rt </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">' == "undefined"){ o = false;} o = ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">rt </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">';'</span><span class="jsdoc-syntax">);
453 } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
454 </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">"Module not found : " </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">;
457 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) {
458 </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">"Module not found : " </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">;
460 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ar</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
461 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">]) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
462 </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">"Module not found : " </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">;
464 </span><span class="jsdoc-var">o </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">];
467 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
472 </span><span class="jsdoc-comment">/**
473 * move modules into their correct place in the tree..
476 </span><span class="jsdoc-var">preBuild </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">()
478 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
479 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.modules </span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">)
481 </span><span class="jsdoc-var">Roo.XComponent.event.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'beforebuild'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">);
483 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">opar </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">obj.parent</span><span class="jsdoc-syntax">;
484 </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
485 </span><span class="jsdoc-var">obj.parent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.toObject</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">opar</span><span class="jsdoc-syntax">);
486 } </span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
487 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"parent:toObject failed: " </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">e.toString</span><span class="jsdoc-syntax">());
488 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
491 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">obj.parent</span><span class="jsdoc-syntax">) {
492 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"GOT top level module"</span><span class="jsdoc-syntax">);
493 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">);
494 </span><span class="jsdoc-var">obj.modules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.util.MixedCollection</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
495 </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">o.order </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">}
497 </span><span class="jsdoc-var">this.topModule </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">;
498 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
500 </span><span class="jsdoc-comment">// parent is a string (usually a dom element name..)
501 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj.parent</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string'</span><span class="jsdoc-syntax">) {
502 </span><span class="jsdoc-var">this.elmodules.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">);
503 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
505 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj.parent.constructor </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">Roo.XComponent</span><span class="jsdoc-syntax">) {
506 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"Warning : Object Parent is not instance of XComponent:" </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">obj.name</span><span class="jsdoc-syntax">)
508 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">obj.parent.modules</span><span class="jsdoc-syntax">) {
509 </span><span class="jsdoc-var">obj.parent.modules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.util.MixedCollection</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
510 </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">o.order </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">'' </span><span class="jsdoc-syntax">}
513 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj.parent.disabled</span><span class="jsdoc-syntax">) {
514 </span><span class="jsdoc-var">obj.disabled </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
516 </span><span class="jsdoc-var">obj.parent.modules.add</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">);
517 }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
520 </span><span class="jsdoc-comment">/**
521 * make a list of modules to build.
522 * @return {Array} list of modules.
525 </span><span class="jsdoc-var">buildOrder </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
527 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
528 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cmp </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">) {
529 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.toUpperCase</span><span class="jsdoc-syntax">() > </span><span class="jsdoc-var">String</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.toUpperCase</span><span class="jsdoc-syntax">() ? 1 : -1;
531 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">((!</span><span class="jsdoc-var">this.topModule </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">this.topModule.modules</span><span class="jsdoc-syntax">) && !</span><span class="jsdoc-var">this.elmodules.length</span><span class="jsdoc-syntax">) {
532 </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">"No top level modules to build"</span><span class="jsdoc-syntax">;
535 </span><span class="jsdoc-comment">// make a flat list in order of modules to build.
536 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">mods </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.topModule </span><span class="jsdoc-syntax">? [ </span><span class="jsdoc-var">this.topModule </span><span class="jsdoc-syntax">] : [];
539 </span><span class="jsdoc-comment">// elmodules (is a list of DOM based modules )
540 </span><span class="jsdoc-var">Roo.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.elmodules</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
541 </span><span class="jsdoc-var">mods.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
542 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.topModule </span><span class="jsdoc-syntax">&&
543 </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.parent</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'string' </span><span class="jsdoc-syntax">&&
544 </span><span class="jsdoc-var">e.parent.substring</span><span class="jsdoc-syntax">(0,1) == </span><span class="jsdoc-string">'#' </span><span class="jsdoc-syntax">&&
545 </span><span class="jsdoc-var">Roo.get</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.parent.substr</span><span class="jsdoc-syntax">(1))
548 </span><span class="jsdoc-var">_this.topModule </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">;
554 </span><span class="jsdoc-comment">// add modules to their parents..
555 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">addMod </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">) {
556 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"build Order: add: " </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">m.name</span><span class="jsdoc-syntax">);
558 </span><span class="jsdoc-var">mods.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">);
559 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m.modules </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">m.disabled</span><span class="jsdoc-syntax">) {
560 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"build Order: " </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">m.modules.length </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">" child modules"</span><span class="jsdoc-syntax">);
561 </span><span class="jsdoc-var">m.modules.keySort</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'ASC'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cmp </span><span class="jsdoc-syntax">);
562 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"build Order: " </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">m.modules.length </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">" child modules (after sort)"</span><span class="jsdoc-syntax">);
564 </span><span class="jsdoc-var">m.modules.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">addMod</span><span class="jsdoc-syntax">);
565 } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
566 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"build Order: no child modules"</span><span class="jsdoc-syntax">);
568 </span><span class="jsdoc-comment">// not sure if this is used any more..
569 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m.finalize</span><span class="jsdoc-syntax">) {
570 </span><span class="jsdoc-var">m.finalize.name </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">m.name </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">" (clean up) "</span><span class="jsdoc-syntax">;
571 </span><span class="jsdoc-var">mods.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m.finalize</span><span class="jsdoc-syntax">);
575 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.topModule </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">this.topModule.modules</span><span class="jsdoc-syntax">) {
576 </span><span class="jsdoc-var">this.topModule.modules.keySort</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'ASC'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">cmp </span><span class="jsdoc-syntax">);
577 </span><span class="jsdoc-var">this.topModule.modules.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">addMod</span><span class="jsdoc-syntax">);
579 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">mods</span><span class="jsdoc-syntax">;
582 </span><span class="jsdoc-comment">/**
583 * Build the registered modules.
584 * @param {Object} parent element.
585 * @param {Function} optional method to call after module has been added.
589 </span><span class="jsdoc-var">build </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">opts</span><span class="jsdoc-syntax">)
592 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">opts</span><span class="jsdoc-syntax">) != </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
593 </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">,</span><span class="jsdoc-var">opts</span><span class="jsdoc-syntax">);
596 </span><span class="jsdoc-var">this.preBuild</span><span class="jsdoc-syntax">();
597 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">mods </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.buildOrder</span><span class="jsdoc-syntax">();
599 </span><span class="jsdoc-comment">//this.allmods = mods;
600 //Roo.debug && Roo.log(mods);
602 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">mods.length</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// should not happen
603 </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">"NO modules!!!"</span><span class="jsdoc-syntax">;
607 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">msg </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"Building Interface..."</span><span class="jsdoc-syntax">;
608 </span><span class="jsdoc-comment">// flash it up as modal - so we store the mask!?
609 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.hideProgress </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.MessageBox</span><span class="jsdoc-syntax">) {
610 </span><span class="jsdoc-var">Roo.MessageBox.show</span><span class="jsdoc-syntax">({ </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'loading' </span><span class="jsdoc-syntax">});
611 </span><span class="jsdoc-var">Roo.MessageBox.show</span><span class="jsdoc-syntax">({
612 </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">"Please wait..."</span><span class="jsdoc-syntax">,
613 </span><span class="jsdoc-var">msg</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">msg</span><span class="jsdoc-syntax">,
614 </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">:450,
615 </span><span class="jsdoc-var">progress</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
616 </span><span class="jsdoc-var">closable</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
617 </span><span class="jsdoc-var">modal</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false
619 </span><span class="jsdoc-syntax">});
621 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">total </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">mods.length</span><span class="jsdoc-syntax">;
623 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">_this </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
624 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">progressRun </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
625 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">mods.length</span><span class="jsdoc-syntax">) {
626 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'hide?'</span><span class="jsdoc-syntax">);
627 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.hideProgress </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.MessageBox</span><span class="jsdoc-syntax">) {
628 </span><span class="jsdoc-var">Roo.MessageBox.hide</span><span class="jsdoc-syntax">();
630 </span><span class="jsdoc-var">Roo.XComponent.build_from_html </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">; </span><span class="jsdoc-comment">// reset, so dialogs will be build from javascript
632 </span><span class="jsdoc-var">Roo.XComponent.event.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'buildcomplete'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">_this.topModule</span><span class="jsdoc-syntax">);
634 </span><span class="jsdoc-comment">// THE END...
635 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
638 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">m </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">mods.shift</span><span class="jsdoc-syntax">();
641 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">);
642 </span><span class="jsdoc-comment">// not sure if this is supported any more.. - modules that are are just function
643 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'function'</span><span class="jsdoc-syntax">) {
644 </span><span class="jsdoc-var">m.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
645 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">progressRun.defer</span><span class="jsdoc-syntax">(10, </span><span class="jsdoc-var">_this</span><span class="jsdoc-syntax">);
649 </span><span class="jsdoc-var">msg </span><span class="jsdoc-syntax">= </span><span class="jsdoc-string">"Building Interface " </span><span class="jsdoc-syntax">+ (</span><span class="jsdoc-var">total </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">mods.length</span><span class="jsdoc-syntax">) +
650 </span><span class="jsdoc-string">" of " </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">total </span><span class="jsdoc-syntax">+
651 (</span><span class="jsdoc-var">m.name </span><span class="jsdoc-syntax">? (</span><span class="jsdoc-string">' - ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">m.name</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-string">''</span><span class="jsdoc-syntax">);
652 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">msg</span><span class="jsdoc-syntax">);
653 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">_this.hideProgress </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">Roo.MessageBox</span><span class="jsdoc-syntax">) {
654 </span><span class="jsdoc-var">Roo.MessageBox.updateProgress</span><span class="jsdoc-syntax">( (</span><span class="jsdoc-var">total </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">mods.length</span><span class="jsdoc-syntax">)/</span><span class="jsdoc-var">total</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">msg </span><span class="jsdoc-syntax">);
658 </span><span class="jsdoc-comment">// is the module disabled?
659 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">disabled </span><span class="jsdoc-syntax">= (</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m.disabled</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'function'</span><span class="jsdoc-syntax">) ?
660 </span><span class="jsdoc-var">m.disabled.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m.module.disabled</span><span class="jsdoc-syntax">) : </span><span class="jsdoc-var">m.disabled</span><span class="jsdoc-syntax">;
663 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">disabled</span><span class="jsdoc-syntax">) {
664 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">progressRun</span><span class="jsdoc-syntax">(); </span><span class="jsdoc-comment">// we do not update the display!
665 </span><span class="jsdoc-syntax">}
667 </span><span class="jsdoc-comment">// now build
671 </span><span class="jsdoc-var">m.render</span><span class="jsdoc-syntax">();
672 </span><span class="jsdoc-comment">// it's 10 on top level, and 1 on others??? why...
673 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">progressRun.defer</span><span class="jsdoc-syntax">(10, </span><span class="jsdoc-var">_this</span><span class="jsdoc-syntax">);
676 </span><span class="jsdoc-var">progressRun.defer</span><span class="jsdoc-syntax">(1, </span><span class="jsdoc-var">_this</span><span class="jsdoc-syntax">);
681 </span><span class="jsdoc-comment">/**
682 * Overlay a set of modified strings onto a component
683 * This is dependant on our builder exporting the strings and 'named strings' elements.
685 * @param {Object} element to overlay on - eg. Pman.Dialog.Login
686 * @param {Object} associative array of 'named' string and it's new value.
689 </span><span class="jsdoc-var">overlayStrings </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">component</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">strings </span><span class="jsdoc-syntax">)
691 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">component</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'_named_strings'</span><span class="jsdoc-syntax">]) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
692 </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">"ERROR: component does not have _named_strings"</span><span class="jsdoc-syntax">;
694 </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">( </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">k </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">strings </span><span class="jsdoc-syntax">) {
695 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">md </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">component</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'_named_strings'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">]) == </span><span class="jsdoc-string">'undefined' </span><span class="jsdoc-syntax">? </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">component</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'_named_strings'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">];
696 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">md </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) {
697 </span><span class="jsdoc-var">component</span><span class="jsdoc-syntax">[</span><span class="jsdoc-string">'_strings'</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">md</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">strings</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">k</span><span class="jsdoc-syntax">];
698 } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
699 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'could not find named string: ' </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">k </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-string">' in'</span><span class="jsdoc-syntax">);
700 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">component</span><span class="jsdoc-syntax">);
708 </span><span class="jsdoc-comment">/**
713 </span><span class="jsdoc-var">event</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
714 </span><span class="jsdoc-comment">/**
715 * wrapper for event.on - aliased later..
716 * Typically use to register a event handler for register:
718 * eg. Roo.XComponent.on('register', function(comp) { comp.disable = true } );
721 </span><span class="jsdoc-var">on </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false
725 </span><span class="jsdoc-syntax">});
727 </span><span class="jsdoc-var">Roo.XComponent.event </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.util.Observable</span><span class="jsdoc-syntax">({
728 </span><span class="jsdoc-var">events </span><span class="jsdoc-syntax">: {
729 </span><span class="jsdoc-comment">/**
731 * Fires when an Component is registered,
732 * set the disable property on the Component to stop registration.
733 * @param {Roo.XComponent} c the component being registerd.
736 </span><span class="jsdoc-string">'register' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
737 </span><span class="jsdoc-comment">/**
739 * Fires before each Component is built
740 * can be used to apply permissions.
741 * @param {Roo.XComponent} c the component being registerd.
744 </span><span class="jsdoc-string">'beforebuild' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
745 </span><span class="jsdoc-comment">/**
746 * @event buildcomplete
747 * Fires on the top level element when all elements have been built
748 * @param {Roo.XComponent} the top level component.
750 </span><span class="jsdoc-string">'buildcomplete' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
752 </span><span class="jsdoc-syntax">}
755 </span><span class="jsdoc-var">Roo.XComponent.on </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.XComponent.event.on.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.XComponent.event</span><span class="jsdoc-syntax">);
756 </span></code></body></html>