Rebuild documentation and compressed files
[roojs1] / docs / symbols / src / Roo_XComponent.js.html
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  * &lt;script type=&quot;text/javascript&quot;&gt;
4  */
5  
6 /**
7  * @class Roo.XComponent
8  * A delayed Element creator...
9  * Or a way to group chunks of interface together.
10  * 
11  * Mypart.xyx = new Roo.XComponent({
12
13     parent : 'Mypart.xyz', // empty == document.element.!!
14     order : '001',
15     name : 'xxxx'
16     region : 'xxxx'
17     disabled : function() {} 
18      
19     tree : function() { // return an tree of xtype declared components
20         var MODULE = this;
21         return 
22         {
23             xtype : 'NestedLayoutPanel',
24             // technicall
25         }
26      ]
27  *})
28  *
29  *
30  * It can be used to build a big heiracy, with parent etc.
31  * or you can just use this to render a single compoent to a dom element
32  * MYPART.render(Roo.Element | String(id) | dom_element )
33  * 
34  * @extends Roo.util.Observable
35  * @constructor
36  * @param cfg {Object} configuration of component
37  * 
38  */
39 </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">) {
40     </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">);
41     </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({ 
42         </span><span class="jsdoc-comment">/**
43              * @event built
44              * Fires when this the componnt is built
45              * @param {Roo.XComponent} c the component
46              */
47         </span><span class="jsdoc-string">'built' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
48         </span><span class="jsdoc-comment">/**
49              * @event buildcomplete
50              * Fires on the top level element when all elements have been built
51              * @param {Roo.XComponent} c the top level component.
52          */
53         </span><span class="jsdoc-string">'buildcomplete' </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
54         
55     </span><span class="jsdoc-syntax">});
56     </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..
57     </span><span class="jsdoc-var">Roo.XComponent.register</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
58     </span><span class="jsdoc-var">this.modules </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
59     </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..
60     
61     
62 </span><span class="jsdoc-syntax">}
63 </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">, {
64     </span><span class="jsdoc-comment">/**
65      * @property el
66      * The created element (with Roo.factory())
67      * @type {Roo.Layout}
68      */
69     </span><span class="jsdoc-var">el  </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
70     
71     </span><span class="jsdoc-comment">/**
72      * @property el
73      * for BC  - use el in new code
74      * @type {Roo.Layout}
75      */
76     </span><span class="jsdoc-var">panel </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
77     
78     </span><span class="jsdoc-comment">/**
79      * @property layout
80      * for BC  - use el in new code
81      * @type {Roo.Layout}
82      */
83     </span><span class="jsdoc-var">layout </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
84     
85      </span><span class="jsdoc-comment">/**
86      * @cfg {Function|boolean} disabled
87      * If this module is disabled by some rule, return true from the funtion
88      */
89     </span><span class="jsdoc-var">disabled </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
90     
91     </span><span class="jsdoc-comment">/**
92      * @cfg {String} parent 
93      * Name of parent element which it get xtype added to..
94      */
95     </span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
96     
97     </span><span class="jsdoc-comment">/**
98      * @cfg {String} order
99      * Used to set the order in which elements are created (usefull for multiple tabs)
100      */
101     
102     </span><span class="jsdoc-var">order </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
103     </span><span class="jsdoc-comment">/**
104      * @cfg {String} name
105      * String to display while loading.
106      */
107     </span><span class="jsdoc-var">name </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
108     </span><span class="jsdoc-comment">/**
109      * @cfg {String} region
110      * Region to render component to (defaults to center)
111      */
112     </span><span class="jsdoc-var">region </span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'center'</span><span class="jsdoc-syntax">,
113     
114     </span><span class="jsdoc-comment">/**
115      * @cfg {Array} items
116      * A single item array - the first element is the root of the tree..
117      * It's done this way to stay compatible with the Xtype system...
118      */
119     </span><span class="jsdoc-var">items </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
120     
121     
122      </span><span class="jsdoc-comment">/**
123      * render
124      * render element to dom or tree
125      * @param {Roo.Element|String|DomElement} optional render to if parent is not set.
126      */
127     
128     </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">)
129     {
130         
131         </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">;
132         </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;
133         
134         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">&amp;&amp; </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">&amp;&amp; </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">) {
135             </span><span class="jsdoc-comment">// if parent is a '#.....' string, then let's use that..
136             </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)
137             </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
138             </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">);
139             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">) {
140                 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;Warning - element can not be found :#&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">ename </span><span class="jsdoc-syntax">);
141                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
142             }
143         }
144         
145         
146         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.parent</span><span class="jsdoc-syntax">) {
147             
148             </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">;
149             
150             </span><span class="jsdoc-comment">// it's a top level one..
151             </span><span class="jsdoc-var">this.parent </span><span class="jsdoc-syntax">=  {
152                 </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">, {
153                 
154                      </span><span class="jsdoc-var">center</span><span class="jsdoc-syntax">: {
155                          </span><span class="jsdoc-var">titlebar</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
156                          </span><span class="jsdoc-var">autoScroll</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
157                          </span><span class="jsdoc-var">closeOnTab</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
158                          </span><span class="jsdoc-var">tabPosition</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">'top'</span><span class="jsdoc-syntax">,
159                           </span><span class="jsdoc-comment">//resizeTabs: true,
160                          </span><span class="jsdoc-var">alwaysShowTabs</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">&amp;&amp; </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">,
161                          </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">,
162                          </span><span class="jsdoc-var">minTabWidth</span><span class="jsdoc-syntax">: 140
163                      }
164                  })
165             }
166         }
167         
168         
169             
170         </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">();
171         </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">;
172         </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">);
173         </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">);
174         
175         </span><span class="jsdoc-var">this.panel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el</span><span class="jsdoc-syntax">;
176         </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">;    
177          
178     }
179     
180 });
181
182 </span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.XComponent</span><span class="jsdoc-syntax">, {
183     
184     </span><span class="jsdoc-comment">/**
185      * @property  buildCompleted
186      * True when the builder has completed building the interface.
187      * @type Boolean
188      */
189     </span><span class="jsdoc-var">buildCompleted </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
190      
191     </span><span class="jsdoc-comment">/**
192      * @property  topModule
193      * the upper most module - uses document.element as it's constructor.
194      * @type Object
195      */
196      
197     </span><span class="jsdoc-var">topModule  </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
198       
199     </span><span class="jsdoc-comment">/**
200      * @property  modules
201      * array of modules to be created by registration system.
202      * @type {Array} of Roo.XComponent
203      */
204     
205     </span><span class="jsdoc-var">modules </span><span class="jsdoc-syntax">: [],
206     </span><span class="jsdoc-comment">/**
207      * @property  elmodules
208      * array of modules to be created by which use #ID 
209      * @type {Array} of Roo.XComponent
210      */
211      
212     </span><span class="jsdoc-var">elmodules </span><span class="jsdoc-syntax">: [],
213
214     
215     </span><span class="jsdoc-comment">/**
216      * Register components to be built later.
217      *
218      * This solves the following issues
219      * - Building is not done on page load, but after an authentication process has occured.
220      * - Interface elements are registered on page load
221      * - Parent Interface elements may not be loaded before child, so this handles that..
222      * 
223      *
224      * example:
225      * 
226      * MyApp.register({
227           order : '000001',
228           module : 'Pman.Tab.projectMgr',
229           region : 'center',
230           parent : 'Pman.layout',
231           disabled : false,  // or use a function..
232         })
233      
234      * * @param {Object} details about module
235      */
236     </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">) {
237         </span><span class="jsdoc-var">this.modules.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">);
238          
239     },
240     </span><span class="jsdoc-comment">/**
241      * convert a string to an object..
242      * eg. 'AAA.BBB' -&gt; finds AAA.BBB
243
244      */
245     
246     </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">)
247     {
248         </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">) {
249             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">;
250         }
251         </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">) {
252             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">;
253         }
254
255         </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">);
256         </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">;
257         </span><span class="jsdoc-var">rt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">ar.shift</span><span class="jsdoc-syntax">();
258             </span><span class="jsdoc-comment">/** eval:var:o */
259         </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
260             </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">' == &quot;undefined&quot;){ 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">);
261         } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
262             </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">&quot;Module not found : &quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">;
263         }
264         
265         </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">) {
266             </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">&quot;Module not found : &quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">;
267         }
268         </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">) {
269             </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">) {
270                 </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">&quot;Module not found : &quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">str</span><span class="jsdoc-syntax">;
271             }
272             </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">];
273         });
274         
275         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">o</span><span class="jsdoc-syntax">;
276         
277     },
278     
279     
280     </span><span class="jsdoc-comment">/**
281      * move modules into their correct place in the tree..
282      * 
283      */
284     </span><span class="jsdoc-var">preBuild </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">()
285     {
286         </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">;
287         </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">)
288         {
289             </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">;
290             </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{ 
291                 </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">);
292             } </span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
293                 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e.toString</span><span class="jsdoc-syntax">());
294                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
295             }
296             
297             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">obj.parent</span><span class="jsdoc-syntax">) {
298                 </span><span class="jsdoc-var">this.topModule </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">;
299                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
300             }
301             </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">) {
302                 </span><span class="jsdoc-var">this.elmodules.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">);
303                 </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
304             }
305             </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">) {
306                 </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;Object Parent is not instance of XComponent:&quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">obj.name</span><span class="jsdoc-syntax">)
307             }
308             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">obj.parent.modules</span><span class="jsdoc-syntax">) {
309                 </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">, 
310                     </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">}
311                 );
312             }
313             
314             </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">);
315         }, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
316     },
317     
318      </span><span class="jsdoc-comment">/**
319      * make a list of modules to build.
320      * @return {Array} list of modules. 
321      */ 
322     
323     </span><span class="jsdoc-var">buildOrder </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">()
324     {
325         </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">;
326         </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">) {   
327             </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">() &gt; </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;
328         };
329         </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">) &amp;&amp; !</span><span class="jsdoc-var">this.elmodules.length</span><span class="jsdoc-syntax">) {
330             </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">&quot;No top level modules to build&quot;</span><span class="jsdoc-syntax">;
331         }
332         
333         </span><span class="jsdoc-comment">// make a flat list in order of modules to build.
334         </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">] : [];
335         </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">) { </span><span class="jsdoc-var">mods.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) });
336
337         
338         </span><span class="jsdoc-comment">// add modules to their parents..
339         </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">) {
340            </span><span class="jsdoc-comment">// Roo.debug &amp;&amp; Roo.log(m.modKey);
341             
342             </span><span class="jsdoc-var">mods.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">);
343             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m.modules</span><span class="jsdoc-syntax">) {
344                 </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">);
345                 </span><span class="jsdoc-var">m.modules.each</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">addMod</span><span class="jsdoc-syntax">);
346             }
347             </span><span class="jsdoc-comment">// not sure if this is used any more..
348             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m.finalize</span><span class="jsdoc-syntax">) {
349                 </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">&quot; (clean up) &quot;</span><span class="jsdoc-syntax">;
350                 </span><span class="jsdoc-var">mods.push</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m.finalize</span><span class="jsdoc-syntax">);
351             }
352             
353         }
354         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.topModule</span><span class="jsdoc-syntax">) { 
355             </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">);
356             </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">);
357         }
358         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">mods</span><span class="jsdoc-syntax">;
359     },
360     
361      </span><span class="jsdoc-comment">/**
362      * Build the registered modules.
363      * @param {Object} parent element.
364      * @param {Function} optional method to call after module has been added.
365      * 
366      */ 
367    
368     </span><span class="jsdoc-var">build </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() 
369     {
370         
371         </span><span class="jsdoc-var">this.preBuild</span><span class="jsdoc-syntax">();
372         </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">();
373       
374         </span><span class="jsdoc-comment">//this.allmods = mods;
375         //Roo.debug &amp;&amp; Roo.log(mods);
376         //return;
377         </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
378             </span><span class="jsdoc-keyword">throw </span><span class="jsdoc-string">&quot;NO modules!!!&quot;</span><span class="jsdoc-syntax">;
379         }
380         
381         
382         
383         </span><span class="jsdoc-comment">// flash it up as modal - so we store the mask!?
384         </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">});
385         </span><span class="jsdoc-var">Roo.MessageBox.show</span><span class="jsdoc-syntax">({
386            </span><span class="jsdoc-var">title</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Please wait...&quot;</span><span class="jsdoc-syntax">,
387            </span><span class="jsdoc-var">msg</span><span class="jsdoc-syntax">: </span><span class="jsdoc-string">&quot;Building Interface...&quot;</span><span class="jsdoc-syntax">,
388            </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">:450,
389            </span><span class="jsdoc-var">progress</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
390            </span><span class="jsdoc-var">closable</span><span class="jsdoc-syntax">:</span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
391            </span><span class="jsdoc-var">modal</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false
392           
393         </span><span class="jsdoc-syntax">});
394         </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">;
395         
396         </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">;
397         </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">() {
398             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">mods.length</span><span class="jsdoc-syntax">) {
399                 </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">'hide?'</span><span class="jsdoc-syntax">);
400                 </span><span class="jsdoc-var">Roo.MessageBox.hide</span><span class="jsdoc-syntax">();
401                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">_this.topModule</span><span class="jsdoc-syntax">) { 
402                     </span><span class="jsdoc-var">_this.topModule.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">);
403                 }
404                 </span><span class="jsdoc-comment">// THE END...
405                 </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;   
406             }
407             
408             </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">();
409             
410             
411             </span><span class="jsdoc-var">Roo.debug </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">Roo.log</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">m</span><span class="jsdoc-syntax">);
412             </span><span class="jsdoc-comment">// not sure if this is supported any more.. - modules that are are just function
413             </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">) { 
414                 </span><span class="jsdoc-var">m.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
415                 </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">);
416             } 
417             
418             
419             
420             </span><span class="jsdoc-var">Roo.MessageBox.updateProgress</span><span class="jsdoc-syntax">(
421                 (</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-string">&quot;Building Interface &quot; </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">) + 
422                     </span><span class="jsdoc-string">&quot; of &quot; </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">total </span><span class="jsdoc-syntax">+ 
423                     (</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">)
424                     );
425             
426          
427             </span><span class="jsdoc-comment">// is the module disabled?
428             </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">) ?
429                 </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">;    
430             
431             
432             </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">disabled</span><span class="jsdoc-syntax">) {
433                 </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!
434             </span><span class="jsdoc-syntax">}
435             
436             </span><span class="jsdoc-comment">// now build 
437             
438             </span><span class="jsdoc-var">m.render</span><span class="jsdoc-syntax">();
439             </span><span class="jsdoc-comment">// it's 10 on top level, and 1 on others??? why...
440             </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">);
441              
442         }
443         </span><span class="jsdoc-var">progressRun.defer</span><span class="jsdoc-syntax">(1, </span><span class="jsdoc-var">_this</span><span class="jsdoc-syntax">);
444      
445         
446         
447     }
448     
449      
450    
451     
452     
453 });
454  </span></code></body></html>