lpmp 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (636) hide show
  1. data/LICENSE +3 -0
  2. data/README +3 -0
  3. data/Rakefile +45 -0
  4. data/bin/lpmp +107 -0
  5. data/config/help.yaml +1 -0
  6. data/config/hosts.yaml +2 -0
  7. data/config/log.yaml +1 -0
  8. data/config/memcache.yaml +5 -0
  9. data/erb/index.erb +62 -0
  10. data/lib/bg_pull/caichen.rb +199 -0
  11. data/lib/bg_pull/lpmp.rb +45 -0
  12. data/lib/exception.rb +8 -0
  13. data/lib/lpmp.rb +53 -0
  14. data/lib/pull/lpmp.rb +355 -0
  15. data/lib/remote_lmp.rb +129 -0
  16. data/lib/utils.rb +14 -0
  17. data/lib/xq_push/caichen.rb +174 -0
  18. data/lib/xq_push/lpmp.rb +96 -0
  19. data/log/lpmp1st.log +1 -0
  20. data/public/css/ext-portal.css +40 -0
  21. data/public/css/lpmp.css +6 -0
  22. data/public/designer/caichen.epj +1 -0
  23. data/public/designer/hostmonitor.epj +1 -0
  24. data/public/ext-3.0.0/INCLUDE_ORDER.txt +35 -0
  25. data/public/ext-3.0.0/adapter/ext/ext-base-debug.js +3589 -0
  26. data/public/ext-3.0.0/adapter/ext/ext-base.js +7 -0
  27. data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter-debug.js +2292 -0
  28. data/public/ext-3.0.0/adapter/jquery/ext-jquery-adapter.js +7 -0
  29. data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter-debug.js +2346 -0
  30. data/public/ext-3.0.0/adapter/prototype/ext-prototype-adapter.js +7 -0
  31. data/public/ext-3.0.0/adapter/yui/ext-yui-adapter-debug.js +2136 -0
  32. data/public/ext-3.0.0/adapter/yui/ext-yui-adapter.js +7 -0
  33. data/public/ext-3.0.0/ext-all-debug.js +65610 -0
  34. data/public/ext-3.0.0/ext-all.js +11 -0
  35. data/public/ext-3.0.0/license.txt +42 -0
  36. data/public/ext-3.0.0/pkgs/cmp-foundation-debug.js +11287 -0
  37. data/public/ext-3.0.0/pkgs/cmp-foundation.js +7 -0
  38. data/public/ext-3.0.0/pkgs/data-foundation-debug.js +3853 -0
  39. data/public/ext-3.0.0/pkgs/data-foundation.js +7 -0
  40. data/public/ext-3.0.0/pkgs/data-grouping-debug.js +139 -0
  41. data/public/ext-3.0.0/pkgs/data-grouping.js +7 -0
  42. data/public/ext-3.0.0/pkgs/data-json-debug.js +582 -0
  43. data/public/ext-3.0.0/pkgs/data-json.js +7 -0
  44. data/public/ext-3.0.0/pkgs/data-list-views-debug.js +1278 -0
  45. data/public/ext-3.0.0/pkgs/data-list-views.js +7 -0
  46. data/public/ext-3.0.0/pkgs/data-xml-debug.js +234 -0
  47. data/public/ext-3.0.0/pkgs/data-xml.js +7 -0
  48. data/public/ext-3.0.0/pkgs/direct-debug.js +1121 -0
  49. data/public/ext-3.0.0/pkgs/direct.js +7 -0
  50. data/public/ext-3.0.0/pkgs/ext-dd-debug.js +4567 -0
  51. data/public/ext-3.0.0/pkgs/ext-dd.js +7 -0
  52. data/public/ext-3.0.0/pkgs/ext-foundation-debug.js +13417 -0
  53. data/public/ext-3.0.0/pkgs/ext-foundation.js +7 -0
  54. data/public/ext-3.0.0/pkgs/pkg-buttons-debug.js +1060 -0
  55. data/public/ext-3.0.0/pkgs/pkg-buttons.js +7 -0
  56. data/public/ext-3.0.0/pkgs/pkg-charts-debug.js +1621 -0
  57. data/public/ext-3.0.0/pkgs/pkg-charts.js +10 -0
  58. data/public/ext-3.0.0/pkgs/pkg-forms-debug.js +7661 -0
  59. data/public/ext-3.0.0/pkgs/pkg-forms.js +7 -0
  60. data/public/ext-3.0.0/pkgs/pkg-grid-editor-debug.js +560 -0
  61. data/public/ext-3.0.0/pkgs/pkg-grid-editor.js +7 -0
  62. data/public/ext-3.0.0/pkgs/pkg-grid-foundation-debug.js +4765 -0
  63. data/public/ext-3.0.0/pkgs/pkg-grid-foundation.js +7 -0
  64. data/public/ext-3.0.0/pkgs/pkg-grid-grouping-debug.js +517 -0
  65. data/public/ext-3.0.0/pkgs/pkg-grid-grouping.js +7 -0
  66. data/public/ext-3.0.0/pkgs/pkg-grid-property-debug.js +370 -0
  67. data/public/ext-3.0.0/pkgs/pkg-grid-property.js +7 -0
  68. data/public/ext-3.0.0/pkgs/pkg-history-debug.js +203 -0
  69. data/public/ext-3.0.0/pkgs/pkg-history.js +7 -0
  70. data/public/ext-3.0.0/pkgs/pkg-menu-debug.js +1628 -0
  71. data/public/ext-3.0.0/pkgs/pkg-menu.js +7 -0
  72. data/public/ext-3.0.0/pkgs/pkg-tabs-debug.js +1100 -0
  73. data/public/ext-3.0.0/pkgs/pkg-tabs.js +7 -0
  74. data/public/ext-3.0.0/pkgs/pkg-tips-debug.js +994 -0
  75. data/public/ext-3.0.0/pkgs/pkg-tips.js +7 -0
  76. data/public/ext-3.0.0/pkgs/pkg-toolbars-debug.js +1374 -0
  77. data/public/ext-3.0.0/pkgs/pkg-toolbars.js +7 -0
  78. data/public/ext-3.0.0/pkgs/pkg-tree-debug.js +4522 -0
  79. data/public/ext-3.0.0/pkgs/pkg-tree.js +7 -0
  80. data/public/ext-3.0.0/pkgs/resizable-debug.js +760 -0
  81. data/public/ext-3.0.0/pkgs/resizable.js +7 -0
  82. data/public/ext-3.0.0/pkgs/state-debug.js +274 -0
  83. data/public/ext-3.0.0/pkgs/state.js +7 -0
  84. data/public/ext-3.0.0/pkgs/window-debug.js +1888 -0
  85. data/public/ext-3.0.0/pkgs/window.js +7 -0
  86. data/public/ext-3.0.0/resources/charts.swf +0 -0
  87. data/public/ext-3.0.0/resources/css/README.txt +3 -0
  88. data/public/ext-3.0.0/resources/css/ext-all-notheme.css +5345 -0
  89. data/public/ext-3.0.0/resources/css/ext-all.css +6990 -0
  90. data/public/ext-3.0.0/resources/css/reset-min.css +7 -0
  91. data/public/ext-3.0.0/resources/css/structure/borders.css +54 -0
  92. data/public/ext-3.0.0/resources/css/structure/box.css +80 -0
  93. data/public/ext-3.0.0/resources/css/structure/button.css +440 -0
  94. data/public/ext-3.0.0/resources/css/structure/combo.css +45 -0
  95. data/public/ext-3.0.0/resources/css/structure/core.css +326 -0
  96. data/public/ext-3.0.0/resources/css/structure/date-picker.css +265 -0
  97. data/public/ext-3.0.0/resources/css/structure/dd.css +61 -0
  98. data/public/ext-3.0.0/resources/css/structure/debug.css +26 -0
  99. data/public/ext-3.0.0/resources/css/structure/dialog.css +62 -0
  100. data/public/ext-3.0.0/resources/css/structure/editor.css +92 -0
  101. data/public/ext-3.0.0/resources/css/structure/form.css +562 -0
  102. data/public/ext-3.0.0/resources/css/structure/grid.css +552 -0
  103. data/public/ext-3.0.0/resources/css/structure/layout.css +296 -0
  104. data/public/ext-3.0.0/resources/css/structure/list-view.css +85 -0
  105. data/public/ext-3.0.0/resources/css/structure/menu.css +205 -0
  106. data/public/ext-3.0.0/resources/css/structure/panel-reset.css +130 -0
  107. data/public/ext-3.0.0/resources/css/structure/panel.css +468 -0
  108. data/public/ext-3.0.0/resources/css/structure/progress.css +42 -0
  109. data/public/ext-3.0.0/resources/css/structure/qtips.css +153 -0
  110. data/public/ext-3.0.0/resources/css/structure/reset.css +7 -0
  111. data/public/ext-3.0.0/resources/css/structure/resizable.css +149 -0
  112. data/public/ext-3.0.0/resources/css/structure/slider.css +103 -0
  113. data/public/ext-3.0.0/resources/css/structure/tabs.css +372 -0
  114. data/public/ext-3.0.0/resources/css/structure/toolbar.css +259 -0
  115. data/public/ext-3.0.0/resources/css/structure/tree.css +203 -0
  116. data/public/ext-3.0.0/resources/css/structure/window.css +222 -0
  117. data/public/ext-3.0.0/resources/css/visual/borders.css +25 -0
  118. data/public/ext-3.0.0/resources/css/visual/box.css +74 -0
  119. data/public/ext-3.0.0/resources/css/visual/button.css +94 -0
  120. data/public/ext-3.0.0/resources/css/visual/combo.css +43 -0
  121. data/public/ext-3.0.0/resources/css/visual/core.css +76 -0
  122. data/public/ext-3.0.0/resources/css/visual/date-picker.css +143 -0
  123. data/public/ext-3.0.0/resources/css/visual/dd.css +29 -0
  124. data/public/ext-3.0.0/resources/css/visual/debug.css +24 -0
  125. data/public/ext-3.0.0/resources/css/visual/dialog.css +34 -0
  126. data/public/ext-3.0.0/resources/css/visual/editor.css +13 -0
  127. data/public/ext-3.0.0/resources/css/visual/form.css +117 -0
  128. data/public/ext-3.0.0/resources/css/visual/grid.css +272 -0
  129. data/public/ext-3.0.0/resources/css/visual/layout.css +53 -0
  130. data/public/ext-3.0.0/resources/css/visual/list-view.css +37 -0
  131. data/public/ext-3.0.0/resources/css/visual/menu.css +82 -0
  132. data/public/ext-3.0.0/resources/css/visual/panel.css +87 -0
  133. data/public/ext-3.0.0/resources/css/visual/progress.css +32 -0
  134. data/public/ext-3.0.0/resources/css/visual/qtips.css +44 -0
  135. data/public/ext-3.0.0/resources/css/visual/resizable.css +43 -0
  136. data/public/ext-3.0.0/resources/css/visual/slider.css +21 -0
  137. data/public/ext-3.0.0/resources/css/visual/tabs.css +119 -0
  138. data/public/ext-3.0.0/resources/css/visual/toolbar.css +103 -0
  139. data/public/ext-3.0.0/resources/css/visual/tree.css +157 -0
  140. data/public/ext-3.0.0/resources/css/visual/window.css +86 -0
  141. data/public/ext-3.0.0/resources/css/xtheme-blue.css +1652 -0
  142. data/public/ext-3.0.0/resources/expressinstall.swf +0 -0
  143. data/public/ext-3.0.0/resources/images/default/box/corners-blue.gif +0 -0
  144. data/public/ext-3.0.0/resources/images/default/box/corners.gif +0 -0
  145. data/public/ext-3.0.0/resources/images/default/box/l-blue.gif +0 -0
  146. data/public/ext-3.0.0/resources/images/default/box/l.gif +0 -0
  147. data/public/ext-3.0.0/resources/images/default/box/r-blue.gif +0 -0
  148. data/public/ext-3.0.0/resources/images/default/box/r.gif +0 -0
  149. data/public/ext-3.0.0/resources/images/default/box/tb-blue.gif +0 -0
  150. data/public/ext-3.0.0/resources/images/default/box/tb.gif +0 -0
  151. data/public/ext-3.0.0/resources/images/default/button/arrow.gif +0 -0
  152. data/public/ext-3.0.0/resources/images/default/button/btn.gif +0 -0
  153. data/public/ext-3.0.0/resources/images/default/button/group-cs.gif +0 -0
  154. data/public/ext-3.0.0/resources/images/default/button/group-lr.gif +0 -0
  155. data/public/ext-3.0.0/resources/images/default/button/group-tb.gif +0 -0
  156. data/public/ext-3.0.0/resources/images/default/button/s-arrow-b-noline.gif +0 -0
  157. data/public/ext-3.0.0/resources/images/default/button/s-arrow-b.gif +0 -0
  158. data/public/ext-3.0.0/resources/images/default/button/s-arrow-bo.gif +0 -0
  159. data/public/ext-3.0.0/resources/images/default/button/s-arrow-noline.gif +0 -0
  160. data/public/ext-3.0.0/resources/images/default/button/s-arrow-o.gif +0 -0
  161. data/public/ext-3.0.0/resources/images/default/button/s-arrow.gif +0 -0
  162. data/public/ext-3.0.0/resources/images/default/dd/drop-add.gif +0 -0
  163. data/public/ext-3.0.0/resources/images/default/dd/drop-no.gif +0 -0
  164. data/public/ext-3.0.0/resources/images/default/dd/drop-yes.gif +0 -0
  165. data/public/ext-3.0.0/resources/images/default/editor/tb-sprite.gif +0 -0
  166. data/public/ext-3.0.0/resources/images/default/form/checkbox.gif +0 -0
  167. data/public/ext-3.0.0/resources/images/default/form/clear-trigger.gif +0 -0
  168. data/public/ext-3.0.0/resources/images/default/form/clear-trigger.psd +0 -0
  169. data/public/ext-3.0.0/resources/images/default/form/date-trigger.gif +0 -0
  170. data/public/ext-3.0.0/resources/images/default/form/date-trigger.psd +0 -0
  171. data/public/ext-3.0.0/resources/images/default/form/error-tip-corners.gif +0 -0
  172. data/public/ext-3.0.0/resources/images/default/form/exclamation.gif +0 -0
  173. data/public/ext-3.0.0/resources/images/default/form/radio.gif +0 -0
  174. data/public/ext-3.0.0/resources/images/default/form/search-trigger.gif +0 -0
  175. data/public/ext-3.0.0/resources/images/default/form/search-trigger.psd +0 -0
  176. data/public/ext-3.0.0/resources/images/default/form/text-bg.gif +0 -0
  177. data/public/ext-3.0.0/resources/images/default/form/trigger-tpl.gif +0 -0
  178. data/public/ext-3.0.0/resources/images/default/form/trigger.gif +0 -0
  179. data/public/ext-3.0.0/resources/images/default/form/trigger.psd +0 -0
  180. data/public/ext-3.0.0/resources/images/default/gradient-bg.gif +0 -0
  181. data/public/ext-3.0.0/resources/images/default/grid/arrow-left-white.gif +0 -0
  182. data/public/ext-3.0.0/resources/images/default/grid/arrow-right-white.gif +0 -0
  183. data/public/ext-3.0.0/resources/images/default/grid/col-move-bottom.gif +0 -0
  184. data/public/ext-3.0.0/resources/images/default/grid/col-move-top.gif +0 -0
  185. data/public/ext-3.0.0/resources/images/default/grid/columns.gif +0 -0
  186. data/public/ext-3.0.0/resources/images/default/grid/dirty.gif +0 -0
  187. data/public/ext-3.0.0/resources/images/default/grid/done.gif +0 -0
  188. data/public/ext-3.0.0/resources/images/default/grid/drop-no.gif +0 -0
  189. data/public/ext-3.0.0/resources/images/default/grid/drop-yes.gif +0 -0
  190. data/public/ext-3.0.0/resources/images/default/grid/footer-bg.gif +0 -0
  191. data/public/ext-3.0.0/resources/images/default/grid/grid-blue-hd.gif +0 -0
  192. data/public/ext-3.0.0/resources/images/default/grid/grid-blue-split.gif +0 -0
  193. data/public/ext-3.0.0/resources/images/default/grid/grid-hrow.gif +0 -0
  194. data/public/ext-3.0.0/resources/images/default/grid/grid-loading.gif +0 -0
  195. data/public/ext-3.0.0/resources/images/default/grid/grid-split.gif +0 -0
  196. data/public/ext-3.0.0/resources/images/default/grid/grid-vista-hd.gif +0 -0
  197. data/public/ext-3.0.0/resources/images/default/grid/grid3-hd-btn.gif +0 -0
  198. data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow-over.gif +0 -0
  199. data/public/ext-3.0.0/resources/images/default/grid/grid3-hrow.gif +0 -0
  200. data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
  201. data/public/ext-3.0.0/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
  202. data/public/ext-3.0.0/resources/images/default/grid/group-by.gif +0 -0
  203. data/public/ext-3.0.0/resources/images/default/grid/group-collapse.gif +0 -0
  204. data/public/ext-3.0.0/resources/images/default/grid/group-expand-sprite.gif +0 -0
  205. data/public/ext-3.0.0/resources/images/default/grid/group-expand.gif +0 -0
  206. data/public/ext-3.0.0/resources/images/default/grid/hd-pop.gif +0 -0
  207. data/public/ext-3.0.0/resources/images/default/grid/hmenu-asc.gif +0 -0
  208. data/public/ext-3.0.0/resources/images/default/grid/hmenu-desc.gif +0 -0
  209. data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.gif +0 -0
  210. data/public/ext-3.0.0/resources/images/default/grid/hmenu-lock.png +0 -0
  211. data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.gif +0 -0
  212. data/public/ext-3.0.0/resources/images/default/grid/hmenu-unlock.png +0 -0
  213. data/public/ext-3.0.0/resources/images/default/grid/invalid_line.gif +0 -0
  214. data/public/ext-3.0.0/resources/images/default/grid/loading.gif +0 -0
  215. data/public/ext-3.0.0/resources/images/default/grid/mso-hd.gif +0 -0
  216. data/public/ext-3.0.0/resources/images/default/grid/nowait.gif +0 -0
  217. data/public/ext-3.0.0/resources/images/default/grid/page-first-disabled.gif +0 -0
  218. data/public/ext-3.0.0/resources/images/default/grid/page-first.gif +0 -0
  219. data/public/ext-3.0.0/resources/images/default/grid/page-last-disabled.gif +0 -0
  220. data/public/ext-3.0.0/resources/images/default/grid/page-last.gif +0 -0
  221. data/public/ext-3.0.0/resources/images/default/grid/page-next-disabled.gif +0 -0
  222. data/public/ext-3.0.0/resources/images/default/grid/page-next.gif +0 -0
  223. data/public/ext-3.0.0/resources/images/default/grid/page-prev-disabled.gif +0 -0
  224. data/public/ext-3.0.0/resources/images/default/grid/page-prev.gif +0 -0
  225. data/public/ext-3.0.0/resources/images/default/grid/pick-button.gif +0 -0
  226. data/public/ext-3.0.0/resources/images/default/grid/refresh.gif +0 -0
  227. data/public/ext-3.0.0/resources/images/default/grid/row-check-sprite.gif +0 -0
  228. data/public/ext-3.0.0/resources/images/default/grid/row-expand-sprite.gif +0 -0
  229. data/public/ext-3.0.0/resources/images/default/grid/row-over.gif +0 -0
  230. data/public/ext-3.0.0/resources/images/default/grid/row-sel.gif +0 -0
  231. data/public/ext-3.0.0/resources/images/default/grid/sort-hd.gif +0 -0
  232. data/public/ext-3.0.0/resources/images/default/grid/sort_asc.gif +0 -0
  233. data/public/ext-3.0.0/resources/images/default/grid/sort_desc.gif +0 -0
  234. data/public/ext-3.0.0/resources/images/default/grid/wait.gif +0 -0
  235. data/public/ext-3.0.0/resources/images/default/layout/collapse.gif +0 -0
  236. data/public/ext-3.0.0/resources/images/default/layout/expand.gif +0 -0
  237. data/public/ext-3.0.0/resources/images/default/layout/gradient-bg.gif +0 -0
  238. data/public/ext-3.0.0/resources/images/default/layout/mini-bottom.gif +0 -0
  239. data/public/ext-3.0.0/resources/images/default/layout/mini-left.gif +0 -0
  240. data/public/ext-3.0.0/resources/images/default/layout/mini-right.gif +0 -0
  241. data/public/ext-3.0.0/resources/images/default/layout/mini-top.gif +0 -0
  242. data/public/ext-3.0.0/resources/images/default/layout/ns-collapse.gif +0 -0
  243. data/public/ext-3.0.0/resources/images/default/layout/ns-expand.gif +0 -0
  244. data/public/ext-3.0.0/resources/images/default/layout/panel-close.gif +0 -0
  245. data/public/ext-3.0.0/resources/images/default/layout/panel-title-bg.gif +0 -0
  246. data/public/ext-3.0.0/resources/images/default/layout/panel-title-light-bg.gif +0 -0
  247. data/public/ext-3.0.0/resources/images/default/layout/stick.gif +0 -0
  248. data/public/ext-3.0.0/resources/images/default/layout/stuck.gif +0 -0
  249. data/public/ext-3.0.0/resources/images/default/layout/tab-close-on.gif +0 -0
  250. data/public/ext-3.0.0/resources/images/default/layout/tab-close.gif +0 -0
  251. data/public/ext-3.0.0/resources/images/default/menu/checked.gif +0 -0
  252. data/public/ext-3.0.0/resources/images/default/menu/group-checked.gif +0 -0
  253. data/public/ext-3.0.0/resources/images/default/menu/item-over.gif +0 -0
  254. data/public/ext-3.0.0/resources/images/default/menu/menu-parent.gif +0 -0
  255. data/public/ext-3.0.0/resources/images/default/menu/menu.gif +0 -0
  256. data/public/ext-3.0.0/resources/images/default/menu/unchecked.gif +0 -0
  257. data/public/ext-3.0.0/resources/images/default/panel/corners-sprite.gif +0 -0
  258. data/public/ext-3.0.0/resources/images/default/panel/left-right.gif +0 -0
  259. data/public/ext-3.0.0/resources/images/default/panel/light-hd.gif +0 -0
  260. data/public/ext-3.0.0/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
  261. data/public/ext-3.0.0/resources/images/default/panel/tool-sprites.gif +0 -0
  262. data/public/ext-3.0.0/resources/images/default/panel/tools-sprites-trans.gif +0 -0
  263. data/public/ext-3.0.0/resources/images/default/panel/top-bottom.gif +0 -0
  264. data/public/ext-3.0.0/resources/images/default/panel/top-bottom.png +0 -0
  265. data/public/ext-3.0.0/resources/images/default/panel/white-corners-sprite.gif +0 -0
  266. data/public/ext-3.0.0/resources/images/default/panel/white-left-right.gif +0 -0
  267. data/public/ext-3.0.0/resources/images/default/panel/white-top-bottom.gif +0 -0
  268. data/public/ext-3.0.0/resources/images/default/progress/progress-bg.gif +0 -0
  269. data/public/ext-3.0.0/resources/images/default/qtip/bg.gif +0 -0
  270. data/public/ext-3.0.0/resources/images/default/qtip/close.gif +0 -0
  271. data/public/ext-3.0.0/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
  272. data/public/ext-3.0.0/resources/images/default/qtip/tip-sprite.gif +0 -0
  273. data/public/ext-3.0.0/resources/images/default/s.gif +0 -0
  274. data/public/ext-3.0.0/resources/images/default/shadow-c.png +0 -0
  275. data/public/ext-3.0.0/resources/images/default/shadow-lr.png +0 -0
  276. data/public/ext-3.0.0/resources/images/default/shadow.png +0 -0
  277. data/public/ext-3.0.0/resources/images/default/shared/blue-loading.gif +0 -0
  278. data/public/ext-3.0.0/resources/images/default/shared/calendar.gif +0 -0
  279. data/public/ext-3.0.0/resources/images/default/shared/glass-bg.gif +0 -0
  280. data/public/ext-3.0.0/resources/images/default/shared/hd-sprite.gif +0 -0
  281. data/public/ext-3.0.0/resources/images/default/shared/large-loading.gif +0 -0
  282. data/public/ext-3.0.0/resources/images/default/shared/left-btn.gif +0 -0
  283. data/public/ext-3.0.0/resources/images/default/shared/loading-balls.gif +0 -0
  284. data/public/ext-3.0.0/resources/images/default/shared/right-btn.gif +0 -0
  285. data/public/ext-3.0.0/resources/images/default/shared/warning.gif +0 -0
  286. data/public/ext-3.0.0/resources/images/default/sizer/e-handle-dark.gif +0 -0
  287. data/public/ext-3.0.0/resources/images/default/sizer/e-handle.gif +0 -0
  288. data/public/ext-3.0.0/resources/images/default/sizer/ne-handle-dark.gif +0 -0
  289. data/public/ext-3.0.0/resources/images/default/sizer/ne-handle.gif +0 -0
  290. data/public/ext-3.0.0/resources/images/default/sizer/nw-handle-dark.gif +0 -0
  291. data/public/ext-3.0.0/resources/images/default/sizer/nw-handle.gif +0 -0
  292. data/public/ext-3.0.0/resources/images/default/sizer/s-handle-dark.gif +0 -0
  293. data/public/ext-3.0.0/resources/images/default/sizer/s-handle.gif +0 -0
  294. data/public/ext-3.0.0/resources/images/default/sizer/se-handle-dark.gif +0 -0
  295. data/public/ext-3.0.0/resources/images/default/sizer/se-handle.gif +0 -0
  296. data/public/ext-3.0.0/resources/images/default/sizer/square.gif +0 -0
  297. data/public/ext-3.0.0/resources/images/default/sizer/sw-handle-dark.gif +0 -0
  298. data/public/ext-3.0.0/resources/images/default/sizer/sw-handle.gif +0 -0
  299. data/public/ext-3.0.0/resources/images/default/slider/slider-bg.png +0 -0
  300. data/public/ext-3.0.0/resources/images/default/slider/slider-thumb.png +0 -0
  301. data/public/ext-3.0.0/resources/images/default/slider/slider-v-bg.png +0 -0
  302. data/public/ext-3.0.0/resources/images/default/slider/slider-v-thumb.png +0 -0
  303. data/public/ext-3.0.0/resources/images/default/tabs/scroll-left.gif +0 -0
  304. data/public/ext-3.0.0/resources/images/default/tabs/scroll-right.gif +0 -0
  305. data/public/ext-3.0.0/resources/images/default/tabs/scroller-bg.gif +0 -0
  306. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
  307. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
  308. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
  309. data/public/ext-3.0.0/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
  310. data/public/ext-3.0.0/resources/images/default/tabs/tab-close.gif +0 -0
  311. data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.gif +0 -0
  312. data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-bg.png +0 -0
  313. data/public/ext-3.0.0/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
  314. data/public/ext-3.0.0/resources/images/default/tabs/tabs-sprite.gif +0 -0
  315. data/public/ext-3.0.0/resources/images/default/toolbar/bg.gif +0 -0
  316. data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
  317. data/public/ext-3.0.0/resources/images/default/toolbar/btn-arrow.gif +0 -0
  318. data/public/ext-3.0.0/resources/images/default/toolbar/btn-over-bg.gif +0 -0
  319. data/public/ext-3.0.0/resources/images/default/toolbar/gray-bg.gif +0 -0
  320. data/public/ext-3.0.0/resources/images/default/toolbar/more.gif +0 -0
  321. data/public/ext-3.0.0/resources/images/default/toolbar/tb-bg.gif +0 -0
  322. data/public/ext-3.0.0/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
  323. data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
  324. data/public/ext-3.0.0/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
  325. data/public/ext-3.0.0/resources/images/default/tree/arrows.gif +0 -0
  326. data/public/ext-3.0.0/resources/images/default/tree/drop-add.gif +0 -0
  327. data/public/ext-3.0.0/resources/images/default/tree/drop-between.gif +0 -0
  328. data/public/ext-3.0.0/resources/images/default/tree/drop-no.gif +0 -0
  329. data/public/ext-3.0.0/resources/images/default/tree/drop-over.gif +0 -0
  330. data/public/ext-3.0.0/resources/images/default/tree/drop-under.gif +0 -0
  331. data/public/ext-3.0.0/resources/images/default/tree/drop-yes.gif +0 -0
  332. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
  333. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-minus.gif +0 -0
  334. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
  335. data/public/ext-3.0.0/resources/images/default/tree/elbow-end-plus.gif +0 -0
  336. data/public/ext-3.0.0/resources/images/default/tree/elbow-end.gif +0 -0
  337. data/public/ext-3.0.0/resources/images/default/tree/elbow-line.gif +0 -0
  338. data/public/ext-3.0.0/resources/images/default/tree/elbow-minus-nl.gif +0 -0
  339. data/public/ext-3.0.0/resources/images/default/tree/elbow-minus.gif +0 -0
  340. data/public/ext-3.0.0/resources/images/default/tree/elbow-plus-nl.gif +0 -0
  341. data/public/ext-3.0.0/resources/images/default/tree/elbow-plus.gif +0 -0
  342. data/public/ext-3.0.0/resources/images/default/tree/elbow.gif +0 -0
  343. data/public/ext-3.0.0/resources/images/default/tree/folder-open.gif +0 -0
  344. data/public/ext-3.0.0/resources/images/default/tree/folder.gif +0 -0
  345. data/public/ext-3.0.0/resources/images/default/tree/leaf.gif +0 -0
  346. data/public/ext-3.0.0/resources/images/default/tree/loading.gif +0 -0
  347. data/public/ext-3.0.0/resources/images/default/tree/s.gif +0 -0
  348. data/public/ext-3.0.0/resources/images/default/window/icon-error.gif +0 -0
  349. data/public/ext-3.0.0/resources/images/default/window/icon-info.gif +0 -0
  350. data/public/ext-3.0.0/resources/images/default/window/icon-question.gif +0 -0
  351. data/public/ext-3.0.0/resources/images/default/window/icon-warning.gif +0 -0
  352. data/public/ext-3.0.0/resources/images/default/window/left-corners.png +0 -0
  353. data/public/ext-3.0.0/resources/images/default/window/left-corners.psd +0 -0
  354. data/public/ext-3.0.0/resources/images/default/window/left-right.png +0 -0
  355. data/public/ext-3.0.0/resources/images/default/window/left-right.psd +0 -0
  356. data/public/ext-3.0.0/resources/images/default/window/right-corners.png +0 -0
  357. data/public/ext-3.0.0/resources/images/default/window/right-corners.psd +0 -0
  358. data/public/ext-3.0.0/resources/images/default/window/top-bottom.png +0 -0
  359. data/public/ext-3.0.0/resources/images/default/window/top-bottom.psd +0 -0
  360. data/public/ext-3.0.0/resources/images/icon/chart.gif +0 -0
  361. data/public/ext-3.0.0/src/adapter/core/ext-base-ajax.js +371 -0
  362. data/public/ext-3.0.0/src/adapter/core/ext-base-anim-extra.js +301 -0
  363. data/public/ext-3.0.0/src/adapter/core/ext-base-anim.js +477 -0
  364. data/public/ext-3.0.0/src/adapter/core/ext-base-begin.js +18 -0
  365. data/public/ext-3.0.0/src/adapter/core/ext-base-dom.js +157 -0
  366. data/public/ext-3.0.0/src/adapter/core/ext-base-end.js +21 -0
  367. data/public/ext-3.0.0/src/adapter/core/ext-base-event.js +453 -0
  368. data/public/ext-3.0.0/src/adapter/core/ext-base-point.js +17 -0
  369. data/public/ext-3.0.0/src/adapter/core/ext-base-region.js +81 -0
  370. data/public/ext-3.0.0/src/adapter/ext-base-dom-more.js +9 -0
  371. data/public/ext-3.0.0/src/adapter/jquery-bridge.js +546 -0
  372. data/public/ext-3.0.0/src/adapter/prototype-bridge.js +600 -0
  373. data/public/ext-3.0.0/src/adapter/yui-bridge.js +390 -0
  374. data/public/ext-3.0.0/src/core/CompositeElement.js +136 -0
  375. data/public/ext-3.0.0/src/core/CompositeElementLite-more.js +102 -0
  376. data/public/ext-3.0.0/src/core/DomHelper-more.js +179 -0
  377. data/public/ext-3.0.0/src/core/Element-more.js +192 -0
  378. data/public/ext-3.0.0/src/core/Element.alignment.js +370 -0
  379. data/public/ext-3.0.0/src/core/Element.dd.js +46 -0
  380. data/public/ext-3.0.0/src/core/Element.fx-more.js +152 -0
  381. data/public/ext-3.0.0/src/core/Element.insertion-more.js +52 -0
  382. data/public/ext-3.0.0/src/core/Element.keys.js +48 -0
  383. data/public/ext-3.0.0/src/core/Element.legacy.js +42 -0
  384. data/public/ext-3.0.0/src/core/Element.position-more.js +165 -0
  385. data/public/ext-3.0.0/src/core/Element.scroll-more.js +110 -0
  386. data/public/ext-3.0.0/src/core/Element.style-more.js +318 -0
  387. data/public/ext-3.0.0/src/core/Error.js +81 -0
  388. data/public/ext-3.0.0/src/core/EventManager-more.js +334 -0
  389. data/public/ext-3.0.0/src/core/Ext-more.js +669 -0
  390. data/public/ext-3.0.0/src/core/Template-more.js +115 -0
  391. data/public/ext-3.0.0/src/core/core/CompositeElementLite.js +197 -0
  392. data/public/ext-3.0.0/src/core/core/DomHelper.js +378 -0
  393. data/public/ext-3.0.0/src/core/core/DomQuery.js +826 -0
  394. data/public/ext-3.0.0/src/core/core/Element.fx.js +324 -0
  395. data/public/ext-3.0.0/src/core/core/Element.insertion.js +147 -0
  396. data/public/ext-3.0.0/src/core/core/Element.js +945 -0
  397. data/public/ext-3.0.0/src/core/core/Element.position.js +303 -0
  398. data/public/ext-3.0.0/src/core/core/Element.scroll.js +58 -0
  399. data/public/ext-3.0.0/src/core/core/Element.style.js +439 -0
  400. data/public/ext-3.0.0/src/core/core/Element.traversal.js +176 -0
  401. data/public/ext-3.0.0/src/core/core/EventManager.js +623 -0
  402. data/public/ext-3.0.0/src/core/core/Ext.js +922 -0
  403. data/public/ext-3.0.0/src/core/core/Fx.js +1115 -0
  404. data/public/ext-3.0.0/src/core/core/Template.js +185 -0
  405. data/public/ext-3.0.0/src/data/Api.js +210 -0
  406. data/public/ext-3.0.0/src/data/ArrayReader.js +102 -0
  407. data/public/ext-3.0.0/src/data/ArrayStore.js +70 -0
  408. data/public/ext-3.0.0/src/data/DataField.js +249 -0
  409. data/public/ext-3.0.0/src/data/DataProxy.js +427 -0
  410. data/public/ext-3.0.0/src/data/DataReader.js +160 -0
  411. data/public/ext-3.0.0/src/data/DataWriter.js +201 -0
  412. data/public/ext-3.0.0/src/data/DirectProxy.js +141 -0
  413. data/public/ext-3.0.0/src/data/DirectStore.js +52 -0
  414. data/public/ext-3.0.0/src/data/GroupingStore.js +139 -0
  415. data/public/ext-3.0.0/src/data/HttpProxy.js +276 -0
  416. data/public/ext-3.0.0/src/data/JsonReader.js +311 -0
  417. data/public/ext-3.0.0/src/data/JsonStore.js +49 -0
  418. data/public/ext-3.0.0/src/data/JsonWriter.js +77 -0
  419. data/public/ext-3.0.0/src/data/MemoryProxy.js +69 -0
  420. data/public/ext-3.0.0/src/data/Record.js +400 -0
  421. data/public/ext-3.0.0/src/data/ScriptTagProxy.js +279 -0
  422. data/public/ext-3.0.0/src/data/SortTypes.js +91 -0
  423. data/public/ext-3.0.0/src/data/Store.js +1492 -0
  424. data/public/ext-3.0.0/src/data/StoreMgr.js +72 -0
  425. data/public/ext-3.0.0/src/data/Tree.js +785 -0
  426. data/public/ext-3.0.0/src/data/XmlReader.js +128 -0
  427. data/public/ext-3.0.0/src/data/XmlStore.js +75 -0
  428. data/public/ext-3.0.0/src/data/XmlWriter.js +45 -0
  429. data/public/ext-3.0.0/src/data/core/Connection.js +575 -0
  430. data/public/ext-3.0.0/src/dd/DDCore.js +2992 -0
  431. data/public/ext-3.0.0/src/dd/DragSource.js +365 -0
  432. data/public/ext-3.0.0/src/dd/DragTracker.js +217 -0
  433. data/public/ext-3.0.0/src/dd/DragZone.js +133 -0
  434. data/public/ext-3.0.0/src/dd/DropTarget.js +115 -0
  435. data/public/ext-3.0.0/src/dd/DropZone.js +262 -0
  436. data/public/ext-3.0.0/src/dd/Registry.js +127 -0
  437. data/public/ext-3.0.0/src/dd/ScrollManager.js +201 -0
  438. data/public/ext-3.0.0/src/dd/StatusProxy.js +171 -0
  439. data/public/ext-3.0.0/src/debug.js +906 -0
  440. data/public/ext-3.0.0/src/direct/Direct.js +235 -0
  441. data/public/ext-3.0.0/src/direct/Event.js +34 -0
  442. data/public/ext-3.0.0/src/direct/JsonProvider.js +45 -0
  443. data/public/ext-3.0.0/src/direct/PollingProvider.js +151 -0
  444. data/public/ext-3.0.0/src/direct/Provider.js +110 -0
  445. data/public/ext-3.0.0/src/direct/RemotingProvider.js +373 -0
  446. data/public/ext-3.0.0/src/direct/Transaction.js +32 -0
  447. data/public/ext-3.0.0/src/locale/ext-lang-af.js +184 -0
  448. data/public/ext-3.0.0/src/locale/ext-lang-bg.js +278 -0
  449. data/public/ext-3.0.0/src/locale/ext-lang-ca.js +315 -0
  450. data/public/ext-3.0.0/src/locale/ext-lang-cs.js +293 -0
  451. data/public/ext-3.0.0/src/locale/ext-lang-da.js +296 -0
  452. data/public/ext-3.0.0/src/locale/ext-lang-de.js +326 -0
  453. data/public/ext-3.0.0/src/locale/ext-lang-el_GR.js +309 -0
  454. data/public/ext-3.0.0/src/locale/ext-lang-en.js +335 -0
  455. data/public/ext-3.0.0/src/locale/ext-lang-en_GB.js +315 -0
  456. data/public/ext-3.0.0/src/locale/ext-lang-es.js +318 -0
  457. data/public/ext-3.0.0/src/locale/ext-lang-fa.js +272 -0
  458. data/public/ext-3.0.0/src/locale/ext-lang-fi.js +302 -0
  459. data/public/ext-3.0.0/src/locale/ext-lang-fr.js +335 -0
  460. data/public/ext-3.0.0/src/locale/ext-lang-fr_CA.js +218 -0
  461. data/public/ext-3.0.0/src/locale/ext-lang-gr.js +175 -0
  462. data/public/ext-3.0.0/src/locale/ext-lang-he.js +292 -0
  463. data/public/ext-3.0.0/src/locale/ext-lang-hr.js +295 -0
  464. data/public/ext-3.0.0/src/locale/ext-lang-hu.js +296 -0
  465. data/public/ext-3.0.0/src/locale/ext-lang-id.js +302 -0
  466. data/public/ext-3.0.0/src/locale/ext-lang-it.js +295 -0
  467. data/public/ext-3.0.0/src/locale/ext-lang-ja.js +318 -0
  468. data/public/ext-3.0.0/src/locale/ext-lang-ko.js +267 -0
  469. data/public/ext-3.0.0/src/locale/ext-lang-lt.js +333 -0
  470. data/public/ext-3.0.0/src/locale/ext-lang-lv.js +176 -0
  471. data/public/ext-3.0.0/src/locale/ext-lang-mk.js +176 -0
  472. data/public/ext-3.0.0/src/locale/ext-lang-nl.js +323 -0
  473. data/public/ext-3.0.0/src/locale/ext-lang-no_NB.js +294 -0
  474. data/public/ext-3.0.0/src/locale/ext-lang-no_NN.js +294 -0
  475. data/public/ext-3.0.0/src/locale/ext-lang-pl.js +304 -0
  476. data/public/ext-3.0.0/src/locale/ext-lang-pt.js +260 -0
  477. data/public/ext-3.0.0/src/locale/ext-lang-pt_BR.js +302 -0
  478. data/public/ext-3.0.0/src/locale/ext-lang-pt_PT.js +298 -0
  479. data/public/ext-3.0.0/src/locale/ext-lang-ro.js +295 -0
  480. data/public/ext-3.0.0/src/locale/ext-lang-ru.js +319 -0
  481. data/public/ext-3.0.0/src/locale/ext-lang-sk.js +182 -0
  482. data/public/ext-3.0.0/src/locale/ext-lang-sl.js +176 -0
  483. data/public/ext-3.0.0/src/locale/ext-lang-sr.js +179 -0
  484. data/public/ext-3.0.0/src/locale/ext-lang-sr_RS.js +178 -0
  485. data/public/ext-3.0.0/src/locale/ext-lang-sv_SE.js +178 -0
  486. data/public/ext-3.0.0/src/locale/ext-lang-th.js +294 -0
  487. data/public/ext-3.0.0/src/locale/ext-lang-tr.js +306 -0
  488. data/public/ext-3.0.0/src/locale/ext-lang-ukr.js +258 -0
  489. data/public/ext-3.0.0/src/locale/ext-lang-vn.js +181 -0
  490. data/public/ext-3.0.0/src/locale/ext-lang-zh_CN.js +174 -0
  491. data/public/ext-3.0.0/src/locale/ext-lang-zh_TW.js +178 -0
  492. data/public/ext-3.0.0/src/state/CookieProvider.js +91 -0
  493. data/public/ext-3.0.0/src/state/Provider.js +127 -0
  494. data/public/ext-3.0.0/src/state/StateManager.js +69 -0
  495. data/public/ext-3.0.0/src/util/CSS.js +161 -0
  496. data/public/ext-3.0.0/src/util/ClickRepeater.js +200 -0
  497. data/public/ext-3.0.0/src/util/Cookies.js +96 -0
  498. data/public/ext-3.0.0/src/util/Date.js +1317 -0
  499. data/public/ext-3.0.0/src/util/Format.js +356 -0
  500. data/public/ext-3.0.0/src/util/History.js +203 -0
  501. data/public/ext-3.0.0/src/util/KeyMap.js +242 -0
  502. data/public/ext-3.0.0/src/util/KeyNav.js +161 -0
  503. data/public/ext-3.0.0/src/util/MixedCollection.js +576 -0
  504. data/public/ext-3.0.0/src/util/Observable-more.js +178 -0
  505. data/public/ext-3.0.0/src/util/TextMetrics.js +131 -0
  506. data/public/ext-3.0.0/src/util/UpdateManager.js +536 -0
  507. data/public/ext-3.0.0/src/util/XTemplate.js +379 -0
  508. data/public/ext-3.0.0/src/util/core/DelayedTask.js +68 -0
  509. data/public/ext-3.0.0/src/util/core/JSON.js +174 -0
  510. data/public/ext-3.0.0/src/util/core/Observable.js +483 -0
  511. data/public/ext-3.0.0/src/util/core/TaskMgr.js +174 -0
  512. data/public/ext-3.0.0/src/widgets/Action.js +252 -0
  513. data/public/ext-3.0.0/src/widgets/BoxComponent.js +519 -0
  514. data/public/ext-3.0.0/src/widgets/Button.js +762 -0
  515. data/public/ext-3.0.0/src/widgets/ButtonGroup.js +103 -0
  516. data/public/ext-3.0.0/src/widgets/ColorPalette.js +148 -0
  517. data/public/ext-3.0.0/src/widgets/Component.js +1540 -0
  518. data/public/ext-3.0.0/src/widgets/ComponentMgr.js +159 -0
  519. data/public/ext-3.0.0/src/widgets/Container.js +894 -0
  520. data/public/ext-3.0.0/src/widgets/CycleButton.js +188 -0
  521. data/public/ext-3.0.0/src/widgets/DataView.js +749 -0
  522. data/public/ext-3.0.0/src/widgets/DatePicker.js +771 -0
  523. data/public/ext-3.0.0/src/widgets/Editor.js +385 -0
  524. data/public/ext-3.0.0/src/widgets/Layer.js +466 -0
  525. data/public/ext-3.0.0/src/widgets/LoadMask.js +123 -0
  526. data/public/ext-3.0.0/src/widgets/MessageBox.js +626 -0
  527. data/public/ext-3.0.0/src/widgets/PagingToolbar.js +502 -0
  528. data/public/ext-3.0.0/src/widgets/Panel.js +1772 -0
  529. data/public/ext-3.0.0/src/widgets/PanelDD.js +154 -0
  530. data/public/ext-3.0.0/src/widgets/ProgressBar.js +289 -0
  531. data/public/ext-3.0.0/src/widgets/Resizable.js +760 -0
  532. data/public/ext-3.0.0/src/widgets/Shadow.js +192 -0
  533. data/public/ext-3.0.0/src/widgets/Slider.js +426 -0
  534. data/public/ext-3.0.0/src/widgets/SplitBar.js +436 -0
  535. data/public/ext-3.0.0/src/widgets/SplitButton.js +124 -0
  536. data/public/ext-3.0.0/src/widgets/TabPanel.js +1100 -0
  537. data/public/ext-3.0.0/src/widgets/Toolbar.js +781 -0
  538. data/public/ext-3.0.0/src/widgets/Viewport.js +124 -0
  539. data/public/ext-3.0.0/src/widgets/Window.js +941 -0
  540. data/public/ext-3.0.0/src/widgets/WindowManager.js +187 -0
  541. data/public/ext-3.0.0/src/widgets/chart/Chart.js +721 -0
  542. data/public/ext-3.0.0/src/widgets/chart/EventProxy.js +20 -0
  543. data/public/ext-3.0.0/src/widgets/chart/FlashComponent.js +117 -0
  544. data/public/ext-3.0.0/src/widgets/chart/swfobject.js +783 -0
  545. data/public/ext-3.0.0/src/widgets/form/Action.js +626 -0
  546. data/public/ext-3.0.0/src/widgets/form/BasicForm.js +735 -0
  547. data/public/ext-3.0.0/src/widgets/form/Checkbox.js +177 -0
  548. data/public/ext-3.0.0/src/widgets/form/CheckboxGroup.js +419 -0
  549. data/public/ext-3.0.0/src/widgets/form/Combo.js +1232 -0
  550. data/public/ext-3.0.0/src/widgets/form/DateField.js +389 -0
  551. data/public/ext-3.0.0/src/widgets/form/DisplayField.js +98 -0
  552. data/public/ext-3.0.0/src/widgets/form/Field.js +640 -0
  553. data/public/ext-3.0.0/src/widgets/form/FieldSet.js +305 -0
  554. data/public/ext-3.0.0/src/widgets/form/Form.js +335 -0
  555. data/public/ext-3.0.0/src/widgets/form/Hidden.js +39 -0
  556. data/public/ext-3.0.0/src/widgets/form/HtmlEditor.js +1179 -0
  557. data/public/ext-3.0.0/src/widgets/form/Label.js +64 -0
  558. data/public/ext-3.0.0/src/widgets/form/NumberField.js +139 -0
  559. data/public/ext-3.0.0/src/widgets/form/Radio.js +81 -0
  560. data/public/ext-3.0.0/src/widgets/form/RadioGroup.js +116 -0
  561. data/public/ext-3.0.0/src/widgets/form/TextArea.js +117 -0
  562. data/public/ext-3.0.0/src/widgets/form/TextField.js +491 -0
  563. data/public/ext-3.0.0/src/widgets/form/TimeField.js +146 -0
  564. data/public/ext-3.0.0/src/widgets/form/TriggerField.js +328 -0
  565. data/public/ext-3.0.0/src/widgets/form/VTypes.js +135 -0
  566. data/public/ext-3.0.0/src/widgets/grid/AbstractSelectionModel.js +57 -0
  567. data/public/ext-3.0.0/src/widgets/grid/CellSelectionModel.js +262 -0
  568. data/public/ext-3.0.0/src/widgets/grid/CheckboxSelectionModel.js +103 -0
  569. data/public/ext-3.0.0/src/widgets/grid/Column.js +406 -0
  570. data/public/ext-3.0.0/src/widgets/grid/ColumnDD.js +199 -0
  571. data/public/ext-3.0.0/src/widgets/grid/ColumnModel.js +592 -0
  572. data/public/ext-3.0.0/src/widgets/grid/ColumnSplitDD.js +62 -0
  573. data/public/ext-3.0.0/src/widgets/grid/EditorGrid.js +291 -0
  574. data/public/ext-3.0.0/src/widgets/grid/GridDD.js +95 -0
  575. data/public/ext-3.0.0/src/widgets/grid/GridEditor.js +21 -0
  576. data/public/ext-3.0.0/src/widgets/grid/GridPanel.js +952 -0
  577. data/public/ext-3.0.0/src/widgets/grid/GridView.js +1776 -0
  578. data/public/ext-3.0.0/src/widgets/grid/GroupingView.js +517 -0
  579. data/public/ext-3.0.0/src/widgets/grid/PropertyGrid.js +370 -0
  580. data/public/ext-3.0.0/src/widgets/grid/RowNumberer.js +61 -0
  581. data/public/ext-3.0.0/src/widgets/grid/RowSelectionModel.js +530 -0
  582. data/public/ext-3.0.0/src/widgets/layout/AbsoluteLayout.js +82 -0
  583. data/public/ext-3.0.0/src/widgets/layout/AccordionLayout.js +177 -0
  584. data/public/ext-3.0.0/src/widgets/layout/AnchorLayout.js +200 -0
  585. data/public/ext-3.0.0/src/widgets/layout/BorderLayout.js +1108 -0
  586. data/public/ext-3.0.0/src/widgets/layout/BoxLayout.js +417 -0
  587. data/public/ext-3.0.0/src/widgets/layout/CardLayout.js +127 -0
  588. data/public/ext-3.0.0/src/widgets/layout/ColumnLayout.js +130 -0
  589. data/public/ext-3.0.0/src/widgets/layout/ContainerLayout.js +215 -0
  590. data/public/ext-3.0.0/src/widgets/layout/FitLayout.js +48 -0
  591. data/public/ext-3.0.0/src/widgets/layout/FormLayout.js +266 -0
  592. data/public/ext-3.0.0/src/widgets/layout/TableLayout.js +194 -0
  593. data/public/ext-3.0.0/src/widgets/list/ColumnResizer.js +123 -0
  594. data/public/ext-3.0.0/src/widgets/list/ListView.js +357 -0
  595. data/public/ext-3.0.0/src/widgets/list/Sorter.js +70 -0
  596. data/public/ext-3.0.0/src/widgets/menu/BaseItem.js +160 -0
  597. data/public/ext-3.0.0/src/widgets/menu/CheckItem.js +114 -0
  598. data/public/ext-3.0.0/src/widgets/menu/ColorMenu.js +72 -0
  599. data/public/ext-3.0.0/src/widgets/menu/DateMenu.js +90 -0
  600. data/public/ext-3.0.0/src/widgets/menu/Item.js +211 -0
  601. data/public/ext-3.0.0/src/widgets/menu/Menu.js +733 -0
  602. data/public/ext-3.0.0/src/widgets/menu/MenuMgr.js +211 -0
  603. data/public/ext-3.0.0/src/widgets/menu/Separator.js +46 -0
  604. data/public/ext-3.0.0/src/widgets/menu/TextItem.js +46 -0
  605. data/public/ext-3.0.0/src/widgets/tips/QuickTip.js +207 -0
  606. data/public/ext-3.0.0/src/widgets/tips/QuickTips.js +159 -0
  607. data/public/ext-3.0.0/src/widgets/tips/Tip.js +157 -0
  608. data/public/ext-3.0.0/src/widgets/tips/ToolTip.js +492 -0
  609. data/public/ext-3.0.0/src/widgets/tree/AsyncTreeNode.js +114 -0
  610. data/public/ext-3.0.0/src/widgets/tree/TreeDragZone.js +82 -0
  611. data/public/ext-3.0.0/src/widgets/tree/TreeDropZone.js +321 -0
  612. data/public/ext-3.0.0/src/widgets/tree/TreeEditor.js +160 -0
  613. data/public/ext-3.0.0/src/widgets/tree/TreeEventModel.js +169 -0
  614. data/public/ext-3.0.0/src/widgets/tree/TreeFilter.js +114 -0
  615. data/public/ext-3.0.0/src/widgets/tree/TreeLoader.js +342 -0
  616. data/public/ext-3.0.0/src/widgets/tree/TreeNode.js +546 -0
  617. data/public/ext-3.0.0/src/widgets/tree/TreeNodeUI.js +633 -0
  618. data/public/ext-3.0.0/src/widgets/tree/TreePanel.js +918 -0
  619. data/public/ext-3.0.0/src/widgets/tree/TreeSelectionModel.js +315 -0
  620. data/public/ext-3.0.0/src/widgets/tree/TreeSorter.js +106 -0
  621. data/public/js/ext-portal.js +235 -0
  622. data/public/js/global.js +7 -0
  623. data/public/js/outerframe.js +47 -0
  624. data/public/js/portal.js +713 -0
  625. data/public/js/test_chart.js +152 -0
  626. data/test/config.rb +62 -0
  627. data/test/config/hosts.yaml +5 -0
  628. data/test/config/log.yaml +1 -0
  629. data/test/config/memcache.yaml +5 -0
  630. data/test/exception.rb +39 -0
  631. data/test/method_missing.rb +14 -0
  632. data/test/module.rb +39 -0
  633. data/test/remote_lmp.rb +126 -0
  634. data/test/sinatra.rb +29 -0
  635. data/test/sinatra_base.rb +16 -0
  636. metadata +690 -0
@@ -0,0 +1,1772 @@
1
+ /*!
2
+ * Ext JS Library 3.0.0
3
+ * Copyright(c) 2006-2009 Ext JS, LLC
4
+ * licensing@extjs.com
5
+ * http://www.extjs.com/license
6
+ */
7
+ /**
8
+ * @class Ext.Panel
9
+ * @extends Ext.Container
10
+ * <p>Panel is a container that has specific functionality and structural components that make
11
+ * it the perfect building block for application-oriented user interfaces.</p>
12
+ * <p>Panels are, by virtue of their inheritance from {@link Ext.Container}, capable
13
+ * of being configured with a {@link Ext.Container#layout layout}, and containing child Components.</p>
14
+ * <p>When either specifying child {@link Ext.Component#items items} of a Panel, or dynamically {@link Ext.Container#add adding} Components
15
+ * to a Panel, remember to consider how you wish the Panel to arrange those child elements, and whether
16
+ * those child elements need to be sized using one of Ext's built-in <tt><b>{@link Ext.Container#layout layout}</b></tt> schemes. By
17
+ * default, Panels use the {@link Ext.layout.ContainerLayout ContainerLayout} scheme. This simply renders
18
+ * child components, appending them one after the other inside the Container, and <b>does not apply any sizing</b>
19
+ * at all.</p>
20
+ * <p>A Panel may also contain {@link #bbar bottom} and {@link #tbar top} toolbars, along with separate
21
+ * {@link #header}, {@link #footer} and {@link #body} sections (see {@link #frame} for additional
22
+ * information).</p>
23
+ * <p>Panel also provides built-in {@link #collapsible expandable and collapsible behavior}, along with
24
+ * a variety of {@link #tools prebuilt tool buttons} that can be wired up to provide other customized
25
+ * behavior. Panels can be easily dropped into any {@link Ext.Container Container} or layout, and the
26
+ * layout and rendering pipeline is {@link Ext.Container#add completely managed by the framework}.</p>
27
+ * @constructor
28
+ * @param {Object} config The config object
29
+ * @xtype panel
30
+ */
31
+ Ext.Panel = Ext.extend(Ext.Container, {
32
+ /**
33
+ * The Panel's header {@link Ext.Element Element}. Read-only.
34
+ * <p>This Element is used to house the {@link #title} and {@link #tools}</p>
35
+ * <br><p><b>Note</b>: see the Note for <tt>{@link Ext.Component#el el} also.</p>
36
+ * @type Ext.Element
37
+ * @property header
38
+ */
39
+ /**
40
+ * The Panel's body {@link Ext.Element Element} which may be used to contain HTML content.
41
+ * The content may be specified in the {@link #html} config, or it may be loaded using the
42
+ * {@link autoLoad} config, or through the Panel's {@link #getUpdater Updater}. Read-only.
43
+ * <p>If this is used to load visible HTML elements in either way, then
44
+ * the Panel may not be used as a Layout for hosting nested Panels.</p>
45
+ * <p>If this Panel is intended to be used as the host of a Layout (See {@link #layout}
46
+ * then the body Element must not be loaded or changed - it is under the control
47
+ * of the Panel's Layout.
48
+ * <br><p><b>Note</b>: see the Note for <tt>{@link Ext.Component#el el} also.</p>
49
+ * @type Ext.Element
50
+ * @property body
51
+ */
52
+ /**
53
+ * The Panel's bwrap {@link Ext.Element Element} used to contain other Panel elements
54
+ * (tbar, body, bbar, footer). See {@link #bodyCfg}. Read-only.
55
+ * @type Ext.Element
56
+ * @property bwrap
57
+ */
58
+ /**
59
+ * True if this panel is collapsed. Read-only.
60
+ * @type Boolean
61
+ * @property collapsed
62
+ */
63
+ /**
64
+ * @cfg {Object} bodyCfg
65
+ * <p>A {@link Ext.DomHelper DomHelper} element specification object may be specified for any
66
+ * Panel Element.</p>
67
+ * <p>By default, the Default element in the table below will be used for the html markup to
68
+ * create a child element with the commensurate Default class name (<tt>baseCls</tt> will be
69
+ * replaced by <tt>{@link #baseCls}</tt>):</p>
70
+ * <pre>
71
+ * Panel Default Default Custom Additional Additional
72
+ * Element element class element class style
73
+ * ======== ========================== ========= ============== ===========
74
+ * {@link #header} div {@link #baseCls}+'-header' {@link #headerCfg} headerCssClass headerStyle
75
+ * {@link #bwrap} div {@link #baseCls}+'-bwrap' {@link #bwrapCfg} bwrapCssClass bwrapStyle
76
+ * + tbar div {@link #baseCls}+'-tbar' {@link #tbarCfg} tbarCssClass tbarStyle
77
+ * + {@link #body} div {@link #baseCls}+'-body' {@link #bodyCfg} {@link #bodyCssClass} {@link #bodyStyle}
78
+ * + bbar div {@link #baseCls}+'-bbar' {@link #bbarCfg} bbarCssClass bbarStyle
79
+ * + {@link #footer} div {@link #baseCls}+'-footer' {@link #footerCfg} footerCssClass footerStyle
80
+ * </pre>
81
+ * <p>Configuring a Custom element may be used, for example, to force the {@link #body} Element
82
+ * to use a different form of markup than is created by default. An example of this might be
83
+ * to {@link Ext.Element#createChild create a child} Panel containing a custom content, such as
84
+ * a header, or forcing centering of all Panel content by having the body be a &lt;center&gt;
85
+ * element:</p>
86
+ * <pre><code>
87
+ new Ext.Panel({
88
+ title: 'Message Title',
89
+ renderTo: Ext.getBody(),
90
+ width: 200, height: 130,
91
+ <b>bodyCfg</b>: {
92
+ tag: 'center',
93
+ cls: 'x-panel-body', // Default class not applied if Custom element specified
94
+ html: 'Message'
95
+ },
96
+ footerCfg: {
97
+ tag: 'h2',
98
+ cls: 'x-panel-footer' // same as the Default class
99
+ html: 'footer html'
100
+ },
101
+ footerCssClass: 'custom-footer', // additional css class, see {@link Ext.element#addClass addClass}
102
+ footerStyle: 'background-color:red' // see {@link #bodyStyle}
103
+ });
104
+ * </code></pre>
105
+ * <p>The example above also explicitly creates a <tt>{@link #footer}</tt> with custom markup and
106
+ * styling applied.</p>
107
+ */
108
+ /**
109
+ * @cfg {Object} headerCfg
110
+ * <p>A {@link Ext.DomHelper DomHelper} element specification object specifying the element structure
111
+ * of this Panel's {@link #header} Element. See <tt>{@link #bodyCfg}</tt> also.</p>
112
+ */
113
+ /**
114
+ * @cfg {Object} bwrapCfg
115
+ * <p>A {@link Ext.DomHelper DomHelper} element specification object specifying the element structure
116
+ * of this Panel's {@link #bwrap} Element. See <tt>{@link #bodyCfg}</tt> also.</p>
117
+ */
118
+ /**
119
+ * @cfg {Object} tbarCfg
120
+ * <p>A {@link Ext.DomHelper DomHelper} element specification object specifying the element structure
121
+ * of this Panel's {@link #tbar} Element. See <tt>{@link #bodyCfg}</tt> also.</p>
122
+ */
123
+ /**
124
+ * @cfg {Object} bbarCfg
125
+ * <p>A {@link Ext.DomHelper DomHelper} element specification object specifying the element structure
126
+ * of this Panel's {@link #bbar} Element. See <tt>{@link #bodyCfg}</tt> also.</p>
127
+ */
128
+ /**
129
+ * @cfg {Object} footerCfg
130
+ * <p>A {@link Ext.DomHelper DomHelper} element specification object specifying the element structure
131
+ * of this Panel's {@link #footer} Element. See <tt>{@link #bodyCfg}</tt> also.</p>
132
+ */
133
+ /**
134
+ * @cfg {Boolean} closable
135
+ * Panels themselves do not directly support being closed, but some Panel subclasses do (like
136
+ * {@link Ext.Window}) or a Panel Class within an {@link Ext.TabPanel}. Specify <tt>true</tt>
137
+ * to enable closing in such situations. Defaults to <tt>false</tt>.
138
+ */
139
+ /**
140
+ * The Panel's footer {@link Ext.Element Element}. Read-only.
141
+ * <p>This Element is used to house the Panel's <tt>{@link #buttons}</tt> or <tt>{@link #fbar}</tt>.</p>
142
+ * <br><p><b>Note</b>: see the Note for <tt>{@link Ext.Component#el el} also.</p>
143
+ * @type Ext.Element
144
+ * @property footer
145
+ */
146
+ /**
147
+ * @cfg {Mixed} applyTo
148
+ * <p>The id of the node, a DOM node or an existing Element corresponding to a DIV that is already present in
149
+ * the document that specifies some panel-specific structural markup. When <tt>applyTo</tt> is used,
150
+ * constituent parts of the panel can be specified by CSS class name within the main element, and the panel
151
+ * will automatically create those components from that markup. Any required components not specified in the
152
+ * markup will be autogenerated if necessary.</p>
153
+ * <p>The following class names are supported (baseCls will be replaced by {@link #baseCls}):</p>
154
+ * <ul><li>baseCls + '-header'</li>
155
+ * <li>baseCls + '-header-text'</li>
156
+ * <li>baseCls + '-bwrap'</li>
157
+ * <li>baseCls + '-tbar'</li>
158
+ * <li>baseCls + '-body'</li>
159
+ * <li>baseCls + '-bbar'</li>
160
+ * <li>baseCls + '-footer'</li></ul>
161
+ * <p>Using this config, a call to render() is not required. If applyTo is specified, any value passed for
162
+ * {@link #renderTo} will be ignored and the target element's parent node will automatically be used as the
163
+ * panel's container.</p>
164
+ */
165
+ /**
166
+ * @cfg {Object/Array} tbar
167
+ * <p>The top toolbar of the panel. This can be a {@link Ext.Toolbar} object, a toolbar config, or an array of
168
+ * buttons/button configs to be added to the toolbar. Note that this is not available as a property after render.
169
+ * To access the top toolbar after render, use {@link #getTopToolbar}.</p>
170
+ * <p><b>Note:</b> Although a Toolbar may contain Field components, these will <b>not</b> be updated by a load
171
+ * of an ancestor FormPanel. A Panel's toolbars are not part of the standard Container->Component hierarchy, and
172
+ * so are not scanned to collect form items. However, the values <b>will</b> be submitted because form
173
+ * submission parameters are collected from the DOM tree.</p>
174
+ */
175
+ /**
176
+ * @cfg {Object/Array} bbar
177
+ * <p>The bottom toolbar of the panel. This can be a {@link Ext.Toolbar} object, a toolbar config, or an array of
178
+ * buttons/button configs to be added to the toolbar. Note that this is not available as a property after render.
179
+ * To access the bottom toolbar after render, use {@link #getBottomToolbar}.</p>
180
+ * <p><b>Note:</b> Although a Toolbar may contain Field components, these will <b>not<b> be updated by a load
181
+ * of an ancestor FormPanel. A Panel's toolbars are not part of the standard Container->Component hierarchy, and
182
+ * so are not scanned to collect form items. However, the values <b>will</b> be submitted because form
183
+ * submission parameters are collected from the DOM tree.</p>
184
+ */
185
+ /** @cfg {Object/Array} fbar
186
+ * <p>A {@link Ext.Toolbar Toolbar} object, a Toolbar config, or an array of
187
+ * {@link Ext.Button Button}s/{@link Ext.Button Button} configs, describing a {@link Ext.Toolbar Toolbar} to be rendered into this Panel's footer element.</p>
188
+ * <p>After render, the <code>fbar</code> property will be an {@link Ext.Toolbar Toolbar} instance.</p>
189
+ * <p>If <tt>{@link #buttons}</tt> are specified, they will supersede the <tt>fbar</tt> configuration property.</p>
190
+ * The Panel's <tt>{@link #buttonAlign}</tt> configuration affects the layout of these items, for example:
191
+ * <pre><code>
192
+ var w = new Ext.Window({
193
+ height: 250,
194
+ width: 500,
195
+ bbar: new Ext.Toolbar({
196
+ items: [{
197
+ text: 'bbar Left'
198
+ },'->',{
199
+ text: 'bbar Right'
200
+ }]
201
+ }),
202
+ {@link #buttonAlign}: 'left', // anything but 'center' or 'right' and you can use "-", and "->"
203
+ // to control the alignment of fbar items
204
+ fbar: [{
205
+ text: 'fbar Left'
206
+ },'->',{
207
+ text: 'fbar Right'
208
+ }]
209
+ }).show();
210
+ * </code></pre>
211
+ * <p><b>Note:</b> Although a Toolbar may contain Field components, these will <b>not<b> be updated by a load
212
+ * of an ancestor FormPanel. A Panel's toolbars are not part of the standard Container->Component hierarchy, and
213
+ * so are not scanned to collect form items. However, the values <b>will</b> be submitted because form
214
+ * submission parameters are collected from the DOM tree.</p>
215
+ */
216
+ /**
217
+ * @cfg {Boolean} header
218
+ * <tt>true</tt> to create the Panel's header element explicitly, <tt>false</tt> to skip creating
219
+ * it. If a <tt>{@link #title}</tt> is set the header will be created automatically, otherwise it will not.
220
+ * If a <tt>{@link #title}</tt> is set but <tt>header</tt> is explicitly set to <tt>false</tt>, the header
221
+ * will not be rendered.
222
+ */
223
+ /**
224
+ * @cfg {Boolean} footer
225
+ * <tt>true</tt> to create the footer element explicitly, false to skip creating it. The footer
226
+ * will be created automatically if <tt>{@link #buttons}</tt> or a <tt>{@link #fbar}</tt> have
227
+ * been configured. See <tt>{@link #bodyCfg}</tt> for an example.
228
+ */
229
+ /**
230
+ * @cfg {String} title
231
+ * The title text to be used as innerHTML (html tags are accepted) to display in the panel
232
+ * <tt>{@link #header}</tt> (defaults to ''). When a <tt>title</tt> is specified the
233
+ * <tt>{@link #header}</tt> element will automatically be created and displayed unless
234
+ * {@link #header} is explicitly set to <tt>false</tt>. If you do not want to specify a
235
+ * <tt>title</tt> at config time, but you may want one later, you must either specify a non-empty
236
+ * <tt>title</tt> (a blank space ' ' will do) or <tt>header:true</tt> so that the container
237
+ * element will get created.
238
+ */
239
+ /**
240
+ * @cfg {Array} buttons
241
+ * <tt>buttons</tt> will be used as <tt>{@link Ext.Container#items items}</tt> for the toolbar in
242
+ * the footer (<tt>{@link #fbar}</tt>). Typically the value of this configuration property will be
243
+ * an array of {@link Ext.Button}s or {@link Ext.Button} configuration objects.
244
+ * If an item is configured with <tt>minWidth</tt> or the Panel is configured with <tt>minButtonWidth</tt>,
245
+ * that width will be applied to the item.
246
+ */
247
+ /**
248
+ * @cfg {Object/String/Function} autoLoad
249
+ * A valid url spec according to the Updater {@link Ext.Updater#update} method.
250
+ * If autoLoad is not null, the panel will attempt to load its contents
251
+ * immediately upon render.<p>
252
+ * The URL will become the default URL for this panel's {@link #body} element,
253
+ * so it may be {@link Ext.Element#refresh refresh}ed at any time.</p>
254
+ */
255
+ /**
256
+ * @cfg {Boolean} frame
257
+ * <tt>false</tt> by default to render with plain 1px square borders. <tt>true</tt> to render with
258
+ * 9 elements, complete with custom rounded corners (also see {@link Ext.Element#boxWrap}).
259
+ * <p>The template generated for each condition is depicted below:</p><pre><code>
260
+ *
261
+ // frame = false
262
+ &lt;div id="developer-specified-id-goes-here" class="x-panel">
263
+
264
+ &lt;div class="x-panel-header">&lt;span class="x-panel-header-text">Title: (frame:false)&lt;/span>&lt;/div>
265
+
266
+ &lt;div class="x-panel-bwrap">
267
+ &lt;div class="x-panel-body">&lt;p>html value goes here&lt;/p>&lt;/div>
268
+ &lt;/div>
269
+ &lt;/div>
270
+
271
+ // frame = true (create 9 elements)
272
+ &lt;div id="developer-specified-id-goes-here" class="x-panel">
273
+ &lt;div class="x-panel-tl">&lt;div class="x-panel-tr">&lt;div class="x-panel-tc">
274
+ &lt;div class="x-panel-header">&lt;span class="x-panel-header-text">Title: (frame:true)&lt;/span>&lt;/div>
275
+ &lt;/div>&lt;/div>&lt;/div>
276
+
277
+ &lt;div class="x-panel-bwrap">
278
+ &lt;div class="x-panel-ml">&lt;div class="x-panel-mr">&lt;div class="x-panel-mc">
279
+ &lt;div class="x-panel-body">&lt;p>html value goes here&lt;/p>&lt;/div>
280
+ &lt;/div>&lt;/div>&lt;/div>
281
+
282
+ &lt;div class="x-panel-bl">&lt;div class="x-panel-br">&lt;div class="x-panel-bc"/>
283
+ &lt;/div>&lt;/div>&lt;/div>
284
+ &lt;/div>
285
+ * </code></pre>
286
+ */
287
+ /**
288
+ * @cfg {Boolean} border
289
+ * True to display the borders of the panel's body element, false to hide them (defaults to true). By default,
290
+ * the border is a 2px wide inset border, but this can be further altered by setting {@link #bodyBorder} to false.
291
+ */
292
+ /**
293
+ * @cfg {Boolean} bodyBorder
294
+ * True to display an interior border on the body element of the panel, false to hide it (defaults to true).
295
+ * This only applies when {@link #border} == true. If border == true and bodyBorder == false, the border will display
296
+ * as a 1px wide inset border, giving the entire body element an inset appearance.
297
+ */
298
+ /**
299
+ * @cfg {String/Object/Function} bodyCssClass
300
+ * Additional css class selector to be applied to the {@link #body} element in the format expected by
301
+ * {@link Ext.Element#addClass} (defaults to null). See {@link #bodyCfg}.
302
+ */
303
+ /**
304
+ * @cfg {String/Object/Function} bodyStyle
305
+ * Custom CSS styles to be applied to the {@link #body} element in the format expected by
306
+ * {@link Ext.Element#applyStyles} (defaults to null). See {@link #bodyCfg}.
307
+ */
308
+ /**
309
+ * @cfg {String} iconCls
310
+ * The CSS class selector that specifies a background image to be used as the header icon (defaults to '').
311
+ * <p>An example of specifying a custom icon class would be something like:
312
+ * </p><pre><code>
313
+ // specify the property in the config for the class:
314
+ ...
315
+ iconCls: 'my-icon'
316
+
317
+ // css class that specifies background image to be used as the icon image:
318
+ .my-icon { background-image: url(../images/my-icon.gif) 0 6px no-repeat !important; }
319
+ </code></pre>
320
+ */
321
+ /**
322
+ * @cfg {Boolean} collapsible
323
+ * True to make the panel collapsible and have the expand/collapse toggle button automatically rendered into
324
+ * the header tool button area, false to keep the panel statically sized with no button (defaults to false).
325
+ */
326
+ /**
327
+ * @cfg {Array} tools
328
+ * An array of tool button configs to be added to the header tool area. When rendered, each tool is
329
+ * stored as an {@link Ext.Element Element} referenced by a public property called <tt><b></b>tools.<i>&lt;tool-type&gt;</i></tt>
330
+ * <p>Each tool config may contain the following properties:
331
+ * <div class="mdetail-params"><ul>
332
+ * <li><b>id</b> : String<div class="sub-desc"><b>Required.</b> The type
333
+ * of tool to create. By default, this assigns a CSS class of the form <tt>x-tool-<i>&lt;tool-type&gt;</i></tt> to the
334
+ * resulting tool Element. Ext provides CSS rules, and an icon sprite containing images for the tool types listed below.
335
+ * The developer may implement custom tools by supplying alternate CSS rules and background images:
336
+ * <ul>
337
+ * <div class="x-tool x-tool-toggle" style="float:left; margin-right:5;"> </div><div><tt> toggle</tt> (Created by default when {@link #collapsible} is <tt>true</tt>)</div>
338
+ * <div class="x-tool x-tool-close" style="float:left; margin-right:5;"> </div><div><tt> close</tt></div>
339
+ * <div class="x-tool x-tool-minimize" style="float:left; margin-right:5;"> </div><div><tt> minimize</tt></div>
340
+ * <div class="x-tool x-tool-maximize" style="float:left; margin-right:5;"> </div><div><tt> maximize</tt></div>
341
+ * <div class="x-tool x-tool-restore" style="float:left; margin-right:5;"> </div><div><tt> restore</tt></div>
342
+ * <div class="x-tool x-tool-gear" style="float:left; margin-right:5;"> </div><div><tt> gear</tt></div>
343
+ * <div class="x-tool x-tool-pin" style="float:left; margin-right:5;"> </div><div><tt> pin</tt></div>
344
+ * <div class="x-tool x-tool-unpin" style="float:left; margin-right:5;"> </div><div><tt> unpin</tt></div>
345
+ * <div class="x-tool x-tool-right" style="float:left; margin-right:5;"> </div><div><tt> right</tt></div>
346
+ * <div class="x-tool x-tool-left" style="float:left; margin-right:5;"> </div><div><tt> left</tt></div>
347
+ * <div class="x-tool x-tool-up" style="float:left; margin-right:5;"> </div><div><tt> up</tt></div>
348
+ * <div class="x-tool x-tool-down" style="float:left; margin-right:5;"> </div><div><tt> down</tt></div>
349
+ * <div class="x-tool x-tool-refresh" style="float:left; margin-right:5;"> </div><div><tt> refresh</tt></div>
350
+ * <div class="x-tool x-tool-minus" style="float:left; margin-right:5;"> </div><div><tt> minus</tt></div>
351
+ * <div class="x-tool x-tool-plus" style="float:left; margin-right:5;"> </div><div><tt> plus</tt></div>
352
+ * <div class="x-tool x-tool-help" style="float:left; margin-right:5;"> </div><div><tt> help</tt></div>
353
+ * <div class="x-tool x-tool-search" style="float:left; margin-right:5;"> </div><div><tt> search</tt></div>
354
+ * <div class="x-tool x-tool-save" style="float:left; margin-right:5;"> </div><div><tt> save</tt></div>
355
+ * <div class="x-tool x-tool-print" style="float:left; margin-right:5;"> </div><div><tt> print</tt></div>
356
+ * </ul></div></li>
357
+ * <li><b>handler</b> : Function<div class="sub-desc"><b>Required.</b> The function to
358
+ * call when clicked. Arguments passed are:<ul>
359
+ * <li><b>event</b> : Ext.EventObject<div class="sub-desc">The click event.</div></li>
360
+ * <li><b>toolEl</b> : Ext.Element<div class="sub-desc">The tool Element.</div></li>
361
+ * <li><b>panel</b> : Ext.Panel<div class="sub-desc">The host Panel</div></li>
362
+ * <li><b>tc</b> : Ext.Panel<div class="sub-desc">The tool configuration object</div></li>
363
+ * </ul></div></li>
364
+ * <li><b>stopEvent</b> : Boolean<div class="sub-desc">Defaults to true. Specify as false to allow click event to propagate.</div></li>
365
+ * <li><b>scope</b> : Object<div class="sub-desc">The scope in which to call the handler.</div></li>
366
+ * <li><b>qtip</b> : String/Object<div class="sub-desc">A tip string, or
367
+ * a config argument to {@link Ext.QuickTip#register}</div></li>
368
+ * <li><b>hidden</b> : Boolean<div class="sub-desc">True to initially render hidden.</div></li>
369
+ * <li><b>on</b> : Object<div class="sub-desc">A listener config object specifiying
370
+ * event listeners in the format of an argument to {@link #addListener}</div></li>
371
+ * </ul></div>
372
+ * <p>Note that, apart from the toggle tool which is provided when a panel is collapsible, these
373
+ * tools only provide the visual button. Any required functionality must be provided by adding
374
+ * handlers that implement the necessary behavior.</p>
375
+ * <p>Example usage:</p>
376
+ * <pre><code>
377
+ tools:[{
378
+ id:'refresh',
379
+ qtip: 'Refresh form Data',
380
+ // hidden:true,
381
+ handler: function(event, toolEl, panel){
382
+ // refresh logic
383
+ }
384
+ },
385
+ {
386
+ id:'help',
387
+ qtip: 'Get Help',
388
+ handler: function(event, toolEl, panel){
389
+ // whatever
390
+ }
391
+ }]
392
+ </code></pre>
393
+ * <p>For the custom id of <tt>'help'</tt> define two relevant css classes with a link to
394
+ * a 15x15 image:</p>
395
+ * <pre><code>
396
+ .x-tool-help {background-image: url(images/help.png);}
397
+ .x-tool-help-over {background-image: url(images/help_over.png);}
398
+ // if using an image sprite:
399
+ .x-tool-help {background-image: url(images/help.png) no-repeat 0 0;}
400
+ .x-tool-help-over {background-position:-15px 0;}
401
+ </code></pre>
402
+ */
403
+ /**
404
+ * @cfg {Ext.Template/Ext.XTemplate} toolTemplate
405
+ * <p>A Template used to create {@link #tools} in the {@link #header} Element. Defaults to:</p><pre><code>
406
+ new Ext.Template('&lt;div class="x-tool x-tool-{id}">&amp;#160;&lt;/div>')</code></pre>
407
+ * <p>This may may be overridden to provide a custom DOM structure for tools based upon a more
408
+ * complex XTemplate. The template's data is a single tool configuration object (Not the entire Array)
409
+ * as specified in {@link #tools}. In the following example an &lt;a> tag is used to provide a
410
+ * visual indication when hovering over the tool:</p><pre><code>
411
+ var win = new Ext.Window({
412
+ tools: [{
413
+ id: 'download',
414
+ href: '/MyPdfDoc.pdf'
415
+ }],
416
+ toolTemplate: new Ext.XTemplate(
417
+ '&lt;tpl if="id==\'download\'">',
418
+ '&lt;a class="x-tool x-tool-pdf" href="{href}">&lt;/a>',
419
+ '&lt;/tpl>',
420
+ '&lt;tpl if="id!=\'download\'">',
421
+ '&lt;div class="x-tool x-tool-{id}">&amp;#160;&lt;/div>',
422
+ '&lt;/tpl>'
423
+ ),
424
+ width:500,
425
+ height:300,
426
+ closeAction:'hide'
427
+ });</code></pre>
428
+ * <p>Note that the CSS class "x-tool-pdf" should have an associated style rule which provides an
429
+ * appropriate background image, something like:</p>
430
+ <pre><code>
431
+ a.x-tool-pdf {background-image: url(../shared/extjs/images/pdf.gif)!important;}
432
+ </code></pre>
433
+ */
434
+ /**
435
+ * @cfg {Boolean} hideCollapseTool
436
+ * <tt>true</tt> to hide the expand/collapse toggle button when <code>{@link #collapsible} == true</code>,
437
+ * <tt>false</tt> to display it (defaults to <tt>false</tt>).
438
+ */
439
+ /**
440
+ * @cfg {Boolean} titleCollapse
441
+ * <tt>true</tt> to allow expanding and collapsing the panel (when <tt>{@link #collapsible} = true</tt>)
442
+ * by clicking anywhere in the header bar, <tt>false</tt>) to allow it only by clicking to tool button
443
+ * (defaults to <tt>false</tt>)). If this panel is a child item of a border layout also see the
444
+ * {@link Ext.layout.BorderLayout.Region BorderLayout.Region}
445
+ * <tt>{@link Ext.layout.BorderLayout.Region#floatable floatable}</tt> config option.
446
+ */
447
+ /**
448
+ * @cfg {Boolean} autoScroll
449
+ * <tt>true</tt> to use overflow:'auto' on the panel's body element and show scroll bars automatically when
450
+ * necessary, <tt>false</tt> to clip any overflowing content (defaults to <tt>false</tt>).
451
+ */
452
+ /**
453
+ * @cfg {Mixed} floating
454
+ * <p>This property is used to configure the underlying {@link Ext.Layer}. Acceptable values for this
455
+ * configuration property are:</p><div class="mdetail-params"><ul>
456
+ * <li><b><tt>false</tt></b> : <b>Default.</b><div class="sub-desc">Display the panel inline where it is
457
+ * rendered.</div></li>
458
+ * <li><b><tt>true</tt></b> : <div class="sub-desc">Float the panel (absolute position it with automatic
459
+ * shimming and shadow).<ul>
460
+ * <div class="sub-desc">Setting floating to true will create an Ext.Layer for this panel and display the
461
+ * panel at negative offsets so that it is hidden.</div>
462
+ * <div class="sub-desc">Since the panel will be absolute positioned, the position must be set explicitly
463
+ * <i>after</i> render (e.g., <tt>myPanel.setPosition(100,100);</tt>).</div>
464
+ * <div class="sub-desc"><b>Note</b>: when floating a panel you should always assign a fixed width,
465
+ * otherwise it will be auto width and will expand to fill to the right edge of the viewport.</div>
466
+ * </ul></div></li>
467
+ * <li><b><tt>{@link Ext.Layer object}</tt></b> : <div class="sub-desc">The specified object will be used
468
+ * as the configuration object for the {@link Ext.Layer} that will be created.</div></li>
469
+ * </ul></div>
470
+ */
471
+ /**
472
+ * @cfg {Boolean/String} shadow
473
+ * <tt>true</tt> (or a valid Ext.Shadow {@link Ext.Shadow#mode} value) to display a shadow behind the
474
+ * panel, <tt>false</tt> to display no shadow (defaults to <tt>'sides'</tt>). Note that this option
475
+ * only applies when <tt>{@link #floating} = true</tt>.
476
+ */
477
+ /**
478
+ * @cfg {Number} shadowOffset
479
+ * The number of pixels to offset the shadow if displayed (defaults to <tt>4</tt>). Note that this
480
+ * option only applies when <tt>{@link #floating} = true</tt>.
481
+ */
482
+ /**
483
+ * @cfg {Boolean} shim
484
+ * <tt>false</tt> to disable the iframe shim in browsers which need one (defaults to <tt>true</tt>).
485
+ * Note that this option only applies when <tt>{@link #floating} = true</tt>.
486
+ */
487
+ /**
488
+ * @cfg {String/Object} html
489
+ * An HTML fragment, or a {@link Ext.DomHelper DomHelper} specification to use as the panel's body
490
+ * content (defaults to ''). The HTML content is added by the Panel's {@link #afterRender} method,
491
+ * and so the document will not contain this HTML at the time the {@link #render} event is fired.
492
+ * This content is inserted into the body <i>before</i> any configured {@link #contentEl} is appended.
493
+ */
494
+ /**
495
+ * @cfg {String} contentEl
496
+ * <p>Specify the <tt>id</tt> of an existing HTML node to use as the panel's body content
497
+ * (defaults to '').</p><div><ul>
498
+ * <li><b>Description</b> : <ul>
499
+ * <div class="sub-desc">This config option is used to take an existing HTML element and place it in the body
500
+ * of a new panel (it simply moves the specified DOM element into the body element of the Panel
501
+ * <i>when the Panel is rendered</i> to use as the content (it is not going to be the
502
+ * actual panel itself).</div>
503
+ * </ul></li>
504
+ * <li><b>Notes</b> : <ul>
505
+ * <div class="sub-desc">The specified HTML Element is appended to the Panel's {@link #body} Element by the
506
+ * Panel's {@link #afterRender} method <i>after any configured {@link #html HTML} has
507
+ * been inserted</i>, and so the document will not contain this HTML at the time the
508
+ * {@link #render} event is fired.</div>
509
+ * <div class="sub-desc">The specified HTML element used will not participate in any layout scheme that the
510
+ * Panel may use. It's just HTML. Layouts operate on child items.</div>
511
+ * <div class="sub-desc">Add either the <tt>x-hidden</tt> or the <tt>x-hide-display</tt> CSS class to
512
+ * prevent a brief flicker of the content before it is rendered to the panel.</div>
513
+ * </ul></li>
514
+ * </ul></div>
515
+ */
516
+ /**
517
+ * @cfg {Object/Array} keys
518
+ * A {@link Ext.KeyMap} config object (in the format expected by {@link Ext.KeyMap#addBinding}
519
+ * used to assign custom key handling to this panel (defaults to <tt>null</tt>).
520
+ */
521
+ /**
522
+ * @cfg {Boolean/Object} draggable
523
+ * <p><tt>true</tt> to enable dragging of this Panel (defaults to <tt>false</tt>).</p>
524
+ * <p>For custom drag/drop implementations, an <b>Ext.Panel.DD</b> config could also be passed
525
+ * in this config instead of <tt>true</tt>. Ext.Panel.DD is an internal, undocumented class which
526
+ * moves a proxy Element around in place of the Panel's element, but provides no other behaviour
527
+ * during dragging or on drop. It is a subclass of {@link Ext.dd.DragSource}, so behaviour may be
528
+ * added by implementing the interface methods of {@link Ext.dd.DragDrop} e.g.:
529
+ * <pre><code>
530
+ new Ext.Panel({
531
+ title: 'Drag me',
532
+ x: 100,
533
+ y: 100,
534
+ renderTo: Ext.getBody(),
535
+ floating: true,
536
+ frame: true,
537
+ width: 400,
538
+ height: 200,
539
+ draggable: {
540
+ // Config option of Ext.Panel.DD class.
541
+ // It&#39;s a floating Panel, so do not show a placeholder proxy in the original position.
542
+ insertProxy: false,
543
+
544
+ // Called for each mousemove event while dragging the DD object.
545
+ onDrag : function(e){
546
+ // Record the x,y position of the drag proxy so that we can
547
+ // position the Panel at end of drag.
548
+ var pel = this.proxy.getEl();
549
+ this.x = pel.getLeft(true);
550
+ this.y = pel.getTop(true);
551
+
552
+ // Keep the Shadow aligned if there is one.
553
+ var s = this.panel.getEl().shadow;
554
+ if (s) {
555
+ s.realign(this.x, this.y, pel.getWidth(), pel.getHeight());
556
+ }
557
+ },
558
+
559
+ // Called on the mouseup event.
560
+ endDrag : function(e){
561
+ this.panel.setPosition(this.x, this.y);
562
+ }
563
+ }
564
+ }).show();
565
+ </code></pre>
566
+ */
567
+ /**
568
+ * @cfg {String} tabTip
569
+ * A string to be used as innerHTML (html tags are accepted) to show in a tooltip when mousing over
570
+ * the tab of a Ext.Panel which is an item of a {@link Ext.TabPanel}. {@link Ext.QuickTips}.init()
571
+ * must be called in order for the tips to render.
572
+ */
573
+ /**
574
+ * @cfg {Boolean} disabled
575
+ * Render this panel disabled (default is <tt>false</tt>). An important note when using the disabled
576
+ * config on panels is that IE will often fail to initialize the disabled mask element correectly if
577
+ * the panel's layout has not yet completed by the time the Panel is disabled during the render process.
578
+ * If you experience this issue, you may need to instead use the {@link #afterlayout} event to initialize
579
+ * the disabled state:
580
+ * <pre><code>
581
+ new Ext.Panel({
582
+ ...
583
+ listeners: {
584
+ 'afterlayout': {
585
+ fn: function(p){
586
+ p.disable();
587
+ },
588
+ single: true // important, as many layouts can occur
589
+ }
590
+ }
591
+ });
592
+ </code></pre>
593
+ */
594
+ /**
595
+ * @cfg {Boolean} autoHeight
596
+ * <tt>true</tt> to use height:'auto', <tt>false</tt> to use fixed height (defaults to <tt>false</tt>).
597
+ * <b>Note</b>: Setting <tt>autoHeight:true</tt> means that the browser will manage the panel's height
598
+ * based on its contents, and that Ext will not manage it at all. If the panel is within a layout that
599
+ * manages dimensions (<tt>fit</tt>, <tt>border</tt>, etc.) then setting <tt>autoHeight:true</tt>
600
+ * can cause issues with scrolling and will not generally work as expected since the panel will take
601
+ * on the height of its contents rather than the height required by the Ext layout.
602
+ */
603
+
604
+
605
+ /**
606
+ * @cfg {String} baseCls
607
+ * The base CSS class to apply to this panel's element (defaults to <tt>'x-panel'</tt>).
608
+ * <p>Another option available by default is to specify <tt>'x-plain'</tt> which strips all styling
609
+ * except for required attributes for Ext layouts to function (e.g. overflow:hidden).
610
+ * See <tt>{@link #unstyled}</tt> also.</p>
611
+ */
612
+ baseCls : 'x-panel',
613
+ /**
614
+ * @cfg {String} collapsedCls
615
+ * A CSS class to add to the panel's element after it has been collapsed (defaults to
616
+ * <tt>'x-panel-collapsed'</tt>).
617
+ */
618
+ collapsedCls : 'x-panel-collapsed',
619
+ /**
620
+ * @cfg {Boolean} maskDisabled
621
+ * <tt>true</tt> to mask the panel when it is {@link #disabled}, <tt>false</tt> to not mask it (defaults
622
+ * to <tt>true</tt>). Either way, the panel will always tell its contained elements to disable themselves
623
+ * when it is disabled, but masking the panel can provide an additional visual cue that the panel is
624
+ * disabled.
625
+ */
626
+ maskDisabled : true,
627
+ /**
628
+ * @cfg {Boolean} animCollapse
629
+ * <tt>true</tt> to animate the transition when the panel is collapsed, <tt>false</tt> to skip the
630
+ * animation (defaults to <tt>true</tt> if the {@link Ext.Fx} class is available, otherwise <tt>false</tt>).
631
+ */
632
+ animCollapse : Ext.enableFx,
633
+ /**
634
+ * @cfg {Boolean} headerAsText
635
+ * <tt>true</tt> to display the panel <tt>{@link #title}</tt> in the <tt>{@link #header}</tt>,
636
+ * <tt>false</tt> to hide it (defaults to <tt>true</tt>).
637
+ */
638
+ headerAsText : true,
639
+ /**
640
+ * @cfg {String} buttonAlign
641
+ * The alignment of any {@link #buttons} added to this panel. Valid values are <tt>'right'</tt>,
642
+ * <tt>'left'</tt> and <tt>'center'</tt> (defaults to <tt>'right'</tt>).
643
+ */
644
+ buttonAlign : 'right',
645
+ /**
646
+ * @cfg {Boolean} collapsed
647
+ * <tt>true</tt> to render the panel collapsed, <tt>false</tt> to render it expanded (defaults to
648
+ * <tt>false</tt>).
649
+ */
650
+ collapsed : false,
651
+ /**
652
+ * @cfg {Boolean} collapseFirst
653
+ * <tt>true</tt> to make sure the collapse/expand toggle button always renders first (to the left of)
654
+ * any other tools in the panel's title bar, <tt>false</tt> to render it last (defaults to <tt>true</tt>).
655
+ */
656
+ collapseFirst : true,
657
+ /**
658
+ * @cfg {Number} minButtonWidth
659
+ * Minimum width in pixels of all {@link #buttons} in this panel (defaults to <tt>75</tt>)
660
+ */
661
+ minButtonWidth : 75,
662
+ /**
663
+ * @cfg {Boolean} unstyled
664
+ * Overrides the <tt>{@link #baseCls}</tt> setting to <tt>{@link #baseCls} = 'x-plain'</tt> which renders
665
+ * the panel unstyled except for required attributes for Ext layouts to function (e.g. overflow:hidden).
666
+ */
667
+ /**
668
+ * @cfg {String} elements
669
+ * A comma-delimited list of panel elements to initialize when the panel is rendered. Normally, this list will be
670
+ * generated automatically based on the items added to the panel at config time, but sometimes it might be useful to
671
+ * make sure a structural element is rendered even if not specified at config time (for example, you may want
672
+ * to add a button or toolbar dynamically after the panel has been rendered). Adding those elements to this
673
+ * list will allocate the required placeholders in the panel when it is rendered. Valid values are<div class="mdetail-params"><ul>
674
+ * <li><tt>header</tt></li>
675
+ * <li><tt>tbar</tt> (top bar)</li>
676
+ * <li><tt>body</tt></li>
677
+ * <li><tt>bbar</tt> (bottom bar)</li>
678
+ * <li><tt>footer</tt></li>
679
+ * </ul></div>
680
+ * Defaults to '<tt>body</tt>'.
681
+ */
682
+ elements : 'body',
683
+ /**
684
+ * @cfg {Boolean} preventBodyReset
685
+ * Defaults to <tt>false</tt>. When set to <tt>true</tt>, an extra css class <tt>'x-panel-normal'</tt>
686
+ * will be added to the panel's element, effectively applying css styles suggested by the W3C
687
+ * (see http://www.w3.org/TR/CSS21/sample.html) to the Panel's <b>body</b> element (not the header,
688
+ * footer, etc.).
689
+ */
690
+ preventBodyReset : false,
691
+
692
+ // protected - these could be used to customize the behavior of the window,
693
+ // but changing them would not be useful without further mofifications and
694
+ // could lead to unexpected or undesirable results.
695
+ toolTarget : 'header',
696
+ collapseEl : 'bwrap',
697
+ slideAnchor : 't',
698
+ disabledClass : '',
699
+
700
+ // private, notify box this class will handle heights
701
+ deferHeight : true,
702
+ // private
703
+ expandDefaults: {
704
+ duration : 0.25
705
+ },
706
+ // private
707
+ collapseDefaults : {
708
+ duration : 0.25
709
+ },
710
+
711
+ // private
712
+ initComponent : function(){
713
+ Ext.Panel.superclass.initComponent.call(this);
714
+
715
+ this.addEvents(
716
+ /**
717
+ * @event bodyresize
718
+ * Fires after the Panel has been resized.
719
+ * @param {Ext.Panel} p the Panel which has been resized.
720
+ * @param {Number} width The Panel's new width.
721
+ * @param {Number} height The Panel's new height.
722
+ */
723
+ 'bodyresize',
724
+ /**
725
+ * @event titlechange
726
+ * Fires after the Panel title has been {@link #title set} or {@link #setTitle changed}.
727
+ * @param {Ext.Panel} p the Panel which has had its title changed.
728
+ * @param {String} The new title.
729
+ */
730
+ 'titlechange',
731
+ /**
732
+ * @event iconchange
733
+ * Fires after the Panel icon class has been {@link #iconCls set} or {@link #setIconClass changed}.
734
+ * @param {Ext.Panel} p the Panel which has had its {@link #iconCls icon class} changed.
735
+ * @param {String} The new icon class.
736
+ * @param {String} The old icon class.
737
+ */
738
+ 'iconchange',
739
+ /**
740
+ * @event collapse
741
+ * Fires after the Panel has been collapsed.
742
+ * @param {Ext.Panel} p the Panel that has been collapsed.
743
+ */
744
+ 'collapse',
745
+ /**
746
+ * @event expand
747
+ * Fires after the Panel has been expanded.
748
+ * @param {Ext.Panel} p The Panel that has been expanded.
749
+ */
750
+ 'expand',
751
+ /**
752
+ * @event beforecollapse
753
+ * Fires before the Panel is collapsed. A handler can return false to cancel the collapse.
754
+ * @param {Ext.Panel} p the Panel being collapsed.
755
+ * @param {Boolean} animate True if the collapse is animated, else false.
756
+ */
757
+ 'beforecollapse',
758
+ /**
759
+ * @event beforeexpand
760
+ * Fires before the Panel is expanded. A handler can return false to cancel the expand.
761
+ * @param {Ext.Panel} p The Panel being expanded.
762
+ * @param {Boolean} animate True if the expand is animated, else false.
763
+ */
764
+ 'beforeexpand',
765
+ /**
766
+ * @event beforeclose
767
+ * Fires before the Panel is closed. Note that Panels do not directly support being closed, but some
768
+ * Panel subclasses do (like {@link Ext.Window}) or a Panel within a Ext.TabPanel. This event only
769
+ * applies to such subclasses.
770
+ * A handler can return false to cancel the close.
771
+ * @param {Ext.Panel} p The Panel being closed.
772
+ */
773
+ 'beforeclose',
774
+ /**
775
+ * @event close
776
+ * Fires after the Panel is closed. Note that Panels do not directly support being closed, but some
777
+ * Panel subclasses do (like {@link Ext.Window}) or a Panel within a Ext.TabPanel.
778
+ * @param {Ext.Panel} p The Panel that has been closed.
779
+ */
780
+ 'close',
781
+ /**
782
+ * @event activate
783
+ * Fires after the Panel has been visually activated.
784
+ * Note that Panels do not directly support being activated, but some Panel subclasses
785
+ * do (like {@link Ext.Window}). Panels which are child Components of a TabPanel fire the
786
+ * activate and deactivate events under the control of the TabPanel.
787
+ * @param {Ext.Panel} p The Panel that has been activated.
788
+ */
789
+ 'activate',
790
+ /**
791
+ * @event deactivate
792
+ * Fires after the Panel has been visually deactivated.
793
+ * Note that Panels do not directly support being deactivated, but some Panel subclasses
794
+ * do (like {@link Ext.Window}). Panels which are child Components of a TabPanel fire the
795
+ * activate and deactivate events under the control of the TabPanel.
796
+ * @param {Ext.Panel} p The Panel that has been deactivated.
797
+ */
798
+ 'deactivate'
799
+ );
800
+
801
+ if(this.unstyled){
802
+ this.baseCls = 'x-plain';
803
+ }
804
+
805
+ // shortcuts
806
+ if(this.tbar){
807
+ this.elements += ',tbar';
808
+ if(Ext.isObject(this.tbar)){
809
+ this.topToolbar = this.tbar;
810
+ }
811
+ delete this.tbar;
812
+ }
813
+ if(this.bbar){
814
+ this.elements += ',bbar';
815
+ if(Ext.isObject(this.bbar)){
816
+ this.bottomToolbar = this.bbar;
817
+ }
818
+ delete this.bbar;
819
+ }
820
+
821
+ if(this.header === true){
822
+ this.elements += ',header';
823
+ delete this.header;
824
+ }else if(this.headerCfg || (this.title && this.header !== false)){
825
+ this.elements += ',header';
826
+ }
827
+
828
+ if(this.footerCfg || this.footer === true){
829
+ this.elements += ',footer';
830
+ delete this.footer;
831
+ }
832
+
833
+ if(this.buttons){
834
+ this.elements += ',footer';
835
+ var btns = this.buttons;
836
+ /**
837
+ * This Panel's Array of buttons as created from the <tt>{@link #buttons}</tt>
838
+ * config property. Read only.
839
+ * @type Array
840
+ * @property buttons
841
+ */
842
+ this.buttons = [];
843
+ for(var i = 0, len = btns.length; i < len; i++) {
844
+ if(btns[i].render){ // button instance
845
+ this.buttons.push(btns[i]);
846
+ }else if(btns[i].xtype){
847
+ this.buttons.push(Ext.create(btns[i], 'button'));
848
+ }else{
849
+ this.addButton(btns[i]);
850
+ }
851
+ }
852
+ }
853
+ if(this.fbar){
854
+ this.elements += ',footer';
855
+ }
856
+ if(this.autoLoad){
857
+ this.on('render', this.doAutoLoad, this, {delay:10});
858
+ }
859
+ },
860
+
861
+ // private
862
+ createElement : function(name, pnode){
863
+ if(this[name]){
864
+ pnode.appendChild(this[name].dom);
865
+ return;
866
+ }
867
+
868
+ if(name === 'bwrap' || this.elements.indexOf(name) != -1){
869
+ if(this[name+'Cfg']){
870
+ this[name] = Ext.fly(pnode).createChild(this[name+'Cfg']);
871
+ }else{
872
+ var el = document.createElement('div');
873
+ el.className = this[name+'Cls'];
874
+ this[name] = Ext.get(pnode.appendChild(el));
875
+ }
876
+ if(this[name+'CssClass']){
877
+ this[name].addClass(this[name+'CssClass']);
878
+ }
879
+ if(this[name+'Style']){
880
+ this[name].applyStyles(this[name+'Style']);
881
+ }
882
+ }
883
+ },
884
+
885
+ // private
886
+ onRender : function(ct, position){
887
+ Ext.Panel.superclass.onRender.call(this, ct, position);
888
+ this.createClasses();
889
+
890
+ var el = this.el,
891
+ d = el.dom,
892
+ bw;
893
+ el.addClass(this.baseCls);
894
+ if(d.firstChild){ // existing markup
895
+ this.header = el.down('.'+this.headerCls);
896
+ this.bwrap = el.down('.'+this.bwrapCls);
897
+ var cp = this.bwrap ? this.bwrap : el;
898
+ this.tbar = cp.down('.'+this.tbarCls);
899
+ this.body = cp.down('.'+this.bodyCls);
900
+ this.bbar = cp.down('.'+this.bbarCls);
901
+ this.footer = cp.down('.'+this.footerCls);
902
+ this.fromMarkup = true;
903
+ }
904
+ if (this.preventBodyReset === true) {
905
+ el.addClass('x-panel-reset');
906
+ }
907
+ if(this.cls){
908
+ el.addClass(this.cls);
909
+ }
910
+
911
+ if(this.buttons){
912
+ this.elements += ',footer';
913
+ }
914
+
915
+ // This block allows for maximum flexibility and performance when using existing markup
916
+
917
+ // framing requires special markup
918
+ if(this.frame){
919
+ el.insertHtml('afterBegin', String.format(Ext.Element.boxMarkup, this.baseCls));
920
+
921
+ this.createElement('header', d.firstChild.firstChild.firstChild);
922
+ this.createElement('bwrap', d);
923
+
924
+ // append the mid and bottom frame to the bwrap
925
+ bw = this.bwrap.dom;
926
+ var ml = d.childNodes[1], bl = d.childNodes[2];
927
+ bw.appendChild(ml);
928
+ bw.appendChild(bl);
929
+
930
+ var mc = bw.firstChild.firstChild.firstChild;
931
+ this.createElement('tbar', mc);
932
+ this.createElement('body', mc);
933
+ this.createElement('bbar', mc);
934
+ this.createElement('footer', bw.lastChild.firstChild.firstChild);
935
+
936
+ if(!this.footer){
937
+ this.bwrap.dom.lastChild.className += ' x-panel-nofooter';
938
+ }
939
+ }else{
940
+ this.createElement('header', d);
941
+ this.createElement('bwrap', d);
942
+
943
+ // append the mid and bottom frame to the bwrap
944
+ bw = this.bwrap.dom;
945
+ this.createElement('tbar', bw);
946
+ this.createElement('body', bw);
947
+ this.createElement('bbar', bw);
948
+ this.createElement('footer', bw);
949
+
950
+ if(!this.header){
951
+ this.body.addClass(this.bodyCls + '-noheader');
952
+ if(this.tbar){
953
+ this.tbar.addClass(this.tbarCls + '-noheader');
954
+ }
955
+ }
956
+ }
957
+
958
+ if(this.padding !== undefined) {
959
+ this.body.setStyle('padding', this.body.addUnits(this.padding));
960
+ }
961
+
962
+ if(this.border === false){
963
+ this.el.addClass(this.baseCls + '-noborder');
964
+ this.body.addClass(this.bodyCls + '-noborder');
965
+ if(this.header){
966
+ this.header.addClass(this.headerCls + '-noborder');
967
+ }
968
+ if(this.footer){
969
+ this.footer.addClass(this.footerCls + '-noborder');
970
+ }
971
+ if(this.tbar){
972
+ this.tbar.addClass(this.tbarCls + '-noborder');
973
+ }
974
+ if(this.bbar){
975
+ this.bbar.addClass(this.bbarCls + '-noborder');
976
+ }
977
+ }
978
+
979
+ if(this.bodyBorder === false){
980
+ this.body.addClass(this.bodyCls + '-noborder');
981
+ }
982
+
983
+ this.bwrap.enableDisplayMode('block');
984
+
985
+ if(this.header){
986
+ this.header.unselectable();
987
+
988
+ // for tools, we need to wrap any existing header markup
989
+ if(this.headerAsText){
990
+ this.header.dom.innerHTML =
991
+ '<span class="' + this.headerTextCls + '">'+this.header.dom.innerHTML+'</span>';
992
+
993
+ if(this.iconCls){
994
+ this.setIconClass(this.iconCls);
995
+ }
996
+ }
997
+ }
998
+
999
+ if(this.floating){
1000
+ this.makeFloating(this.floating);
1001
+ }
1002
+
1003
+ if(this.collapsible){
1004
+ this.tools = this.tools ? this.tools.slice(0) : [];
1005
+ if(!this.hideCollapseTool){
1006
+ this.tools[this.collapseFirst?'unshift':'push']({
1007
+ id: 'toggle',
1008
+ handler : this.toggleCollapse,
1009
+ scope: this
1010
+ });
1011
+ }
1012
+ if(this.titleCollapse && this.header){
1013
+ this.mon(this.header, 'click', this.toggleCollapse, this);
1014
+ this.header.setStyle('cursor', 'pointer');
1015
+ }
1016
+ }
1017
+ if(this.tools){
1018
+ var ts = this.tools;
1019
+ this.tools = {};
1020
+ this.addTool.apply(this, ts);
1021
+ }else{
1022
+ this.tools = {};
1023
+ }
1024
+
1025
+ if(this.buttons && this.buttons.length > 0){
1026
+ this.fbar = new Ext.Toolbar({
1027
+ items: this.buttons,
1028
+ toolbarCls: 'x-panel-fbar'
1029
+ });
1030
+ }
1031
+ this.toolbars = [];
1032
+ if(this.fbar){
1033
+ this.fbar = Ext.create(this.fbar, 'toolbar');
1034
+ this.fbar.enableOverflow = false;
1035
+ if(this.fbar.items){
1036
+ this.fbar.items.each(function(c){
1037
+ c.minWidth = c.minWidth || this.minButtonWidth;
1038
+ }, this);
1039
+ }
1040
+ this.fbar.toolbarCls = 'x-panel-fbar';
1041
+
1042
+ var bct = this.footer.createChild({cls: 'x-panel-btns x-panel-btns-'+this.buttonAlign});
1043
+ this.fbar.ownerCt = this;
1044
+ this.fbar.render(bct);
1045
+ bct.createChild({cls:'x-clear'});
1046
+ this.toolbars.push(this.fbar);
1047
+ }
1048
+
1049
+ if(this.tbar && this.topToolbar){
1050
+ if(Ext.isArray(this.topToolbar)){
1051
+ this.topToolbar = new Ext.Toolbar(this.topToolbar);
1052
+ }else if(!this.topToolbar.events){
1053
+ this.topToolbar = Ext.create(this.topToolbar, 'toolbar');
1054
+ }
1055
+ this.topToolbar.ownerCt = this;
1056
+ this.topToolbar.render(this.tbar);
1057
+ this.toolbars.push(this.topToolbar);
1058
+ }
1059
+ if(this.bbar && this.bottomToolbar){
1060
+ if(Ext.isArray(this.bottomToolbar)){
1061
+ this.bottomToolbar = new Ext.Toolbar(this.bottomToolbar);
1062
+ }else if(!this.bottomToolbar.events){
1063
+ this.bottomToolbar = Ext.create(this.bottomToolbar, 'toolbar');
1064
+ }
1065
+ this.bottomToolbar.ownerCt = this;
1066
+ this.bottomToolbar.render(this.bbar);
1067
+ this.toolbars.push(this.bottomToolbar);
1068
+ }
1069
+ Ext.each(this.toolbars, function(tb){
1070
+ tb.on({
1071
+ scope: this,
1072
+ afterlayout: this.syncHeight,
1073
+ remove: this.syncHeight
1074
+ });
1075
+ }, this);
1076
+ },
1077
+
1078
+ /**
1079
+ * Sets the CSS class that provides the icon image for this panel. This method will replace any existing
1080
+ * icon class if one has already been set and fire the {@link #iconchange} event after completion.
1081
+ * @param {String} cls The new CSS class name
1082
+ */
1083
+ setIconClass : function(cls){
1084
+ var old = this.iconCls;
1085
+ this.iconCls = cls;
1086
+ if(this.rendered && this.header){
1087
+ if(this.frame){
1088
+ this.header.addClass('x-panel-icon');
1089
+ this.header.replaceClass(old, this.iconCls);
1090
+ }else{
1091
+ var hd = this.header.dom;
1092
+ var img = hd.firstChild && String(hd.firstChild.tagName).toLowerCase() == 'img' ? hd.firstChild : null;
1093
+ if(img){
1094
+ Ext.fly(img).replaceClass(old, this.iconCls);
1095
+ }else{
1096
+ Ext.DomHelper.insertBefore(hd.firstChild, {
1097
+ tag:'img', src: Ext.BLANK_IMAGE_URL, cls:'x-panel-inline-icon '+this.iconCls
1098
+ });
1099
+ }
1100
+ }
1101
+ }
1102
+ this.fireEvent('iconchange', this, cls, old);
1103
+ },
1104
+
1105
+ // private
1106
+ makeFloating : function(cfg){
1107
+ this.floating = true;
1108
+ this.el = new Ext.Layer(
1109
+ Ext.isObject(cfg) ? cfg : {
1110
+ shadow: this.shadow !== undefined ? this.shadow : 'sides',
1111
+ shadowOffset: this.shadowOffset,
1112
+ constrain:false,
1113
+ shim: this.shim === false ? false : undefined
1114
+ }, this.el
1115
+ );
1116
+ },
1117
+
1118
+ /**
1119
+ * Returns the {@link Ext.Toolbar toolbar} from the top (<tt>{@link #tbar}</tt>) section of the panel.
1120
+ * @return {Ext.Toolbar} The toolbar
1121
+ */
1122
+ getTopToolbar : function(){
1123
+ return this.topToolbar;
1124
+ },
1125
+
1126
+ /**
1127
+ * Returns the {@link Ext.Toolbar toolbar} from the bottom (<tt>{@link #bbar}</tt>) section of the panel.
1128
+ * @return {Ext.Toolbar} The toolbar
1129
+ */
1130
+ getBottomToolbar : function(){
1131
+ return this.bottomToolbar;
1132
+ },
1133
+
1134
+ /**
1135
+ * Adds a button to this panel. Note that this method must be called prior to rendering. The preferred
1136
+ * approach is to add buttons via the {@link #buttons} config.
1137
+ * @param {String/Object} config A valid {@link Ext.Button} config. A string will become the text for a default
1138
+ * button config, an object will be treated as a button config object.
1139
+ * @param {Function} handler The function to be called on button {@link Ext.Button#click}
1140
+ * @param {Object} scope The scope to use for the button handler function
1141
+ * @return {Ext.Button} The button that was added
1142
+ */
1143
+ addButton : function(config, handler, scope){
1144
+ var bc = {
1145
+ handler: handler,
1146
+ scope: scope,
1147
+ minWidth: this.minButtonWidth,
1148
+ hideParent:true
1149
+ };
1150
+ if(typeof config == "string"){
1151
+ bc.text = config;
1152
+ }else{
1153
+ Ext.apply(bc, config);
1154
+ }
1155
+ var btn = new Ext.Button(bc);
1156
+ if(!this.buttons){
1157
+ this.buttons = [];
1158
+ }
1159
+ this.buttons.push(btn);
1160
+ return btn;
1161
+ },
1162
+
1163
+ // private
1164
+ addTool : function(){
1165
+ if(!this[this.toolTarget]) { // no where to render tools!
1166
+ return;
1167
+ }
1168
+ if(!this.toolTemplate){
1169
+ // initialize the global tool template on first use
1170
+ var tt = new Ext.Template(
1171
+ '<div class="x-tool x-tool-{id}">&#160;</div>'
1172
+ );
1173
+ tt.disableFormats = true;
1174
+ tt.compile();
1175
+ Ext.Panel.prototype.toolTemplate = tt;
1176
+ }
1177
+ for(var i = 0, a = arguments, len = a.length; i < len; i++) {
1178
+ var tc = a[i];
1179
+ if(!this.tools[tc.id]){
1180
+ var overCls = 'x-tool-'+tc.id+'-over';
1181
+ var t = this.toolTemplate.insertFirst((tc.align !== 'left') ? this[this.toolTarget] : this[this.toolTarget].child('span'), tc, true);
1182
+ this.tools[tc.id] = t;
1183
+ t.enableDisplayMode('block');
1184
+ this.mon(t, 'click', this.createToolHandler(t, tc, overCls, this));
1185
+ if(tc.on){
1186
+ this.mon(t, tc.on);
1187
+ }
1188
+ if(tc.hidden){
1189
+ t.hide();
1190
+ }
1191
+ if(tc.qtip){
1192
+ if(Ext.isObject(tc.qtip)){
1193
+ Ext.QuickTips.register(Ext.apply({
1194
+ target: t.id
1195
+ }, tc.qtip));
1196
+ } else {
1197
+ t.dom.qtip = tc.qtip;
1198
+ }
1199
+ }
1200
+ t.addClassOnOver(overCls);
1201
+ }
1202
+ }
1203
+ },
1204
+
1205
+ onLayout : function(){
1206
+ if(this.toolbars.length > 0){
1207
+ this.duringLayout = true;
1208
+ Ext.each(this.toolbars, function(tb){
1209
+ tb.doLayout();
1210
+ });
1211
+ delete this.duringLayout;
1212
+ this.syncHeight();
1213
+ }
1214
+ },
1215
+
1216
+ syncHeight : function(){
1217
+ if(!(this.autoHeight || this.duringLayout)){
1218
+ var last = this.lastSize;
1219
+ if(last && !Ext.isEmpty(last.height)){
1220
+ var old = last.height, h = this.el.getHeight();
1221
+ if(old != 'auto' && old != h){
1222
+ var bd = this.body, bdh = bd.getHeight();
1223
+ h = Math.max(bdh + old - h, 0);
1224
+ if(bdh > 0 && bdh != h){
1225
+ bd.setHeight(h);
1226
+ if(Ext.isIE && h <= 0){
1227
+ return;
1228
+ }
1229
+ var sz = bd.getSize();
1230
+ this.fireEvent('bodyresize', sz.width, sz.height);
1231
+ }
1232
+ }
1233
+ }
1234
+ }
1235
+ },
1236
+
1237
+ // private
1238
+ onShow : function(){
1239
+ if(this.floating){
1240
+ return this.el.show();
1241
+ }
1242
+ Ext.Panel.superclass.onShow.call(this);
1243
+ },
1244
+
1245
+ // private
1246
+ onHide : function(){
1247
+ if(this.floating){
1248
+ return this.el.hide();
1249
+ }
1250
+ Ext.Panel.superclass.onHide.call(this);
1251
+ },
1252
+
1253
+ // private
1254
+ createToolHandler : function(t, tc, overCls, panel){
1255
+ return function(e){
1256
+ t.removeClass(overCls);
1257
+ if(tc.stopEvent !== false){
1258
+ e.stopEvent();
1259
+ }
1260
+ if(tc.handler){
1261
+ tc.handler.call(tc.scope || t, e, t, panel, tc);
1262
+ }
1263
+ };
1264
+ },
1265
+
1266
+ // private
1267
+ afterRender : function(){
1268
+ if(this.floating && !this.hidden){
1269
+ this.el.show();
1270
+ }
1271
+ if(this.title){
1272
+ this.setTitle(this.title);
1273
+ }
1274
+ this.setAutoScroll();
1275
+ if(this.html){
1276
+ this.body.update(Ext.isObject(this.html) ?
1277
+ Ext.DomHelper.markup(this.html) :
1278
+ this.html);
1279
+ delete this.html;
1280
+ }
1281
+ if(this.contentEl){
1282
+ var ce = Ext.getDom(this.contentEl);
1283
+ Ext.fly(ce).removeClass(['x-hidden', 'x-hide-display']);
1284
+ this.body.dom.appendChild(ce);
1285
+ }
1286
+ if(this.collapsed){
1287
+ this.collapsed = false;
1288
+ this.collapse(false);
1289
+ }
1290
+ Ext.Panel.superclass.afterRender.call(this); // do sizing calcs last
1291
+ this.initEvents();
1292
+ },
1293
+
1294
+ // private
1295
+ setAutoScroll : function(){
1296
+ if(this.rendered && this.autoScroll){
1297
+ var el = this.body || this.el;
1298
+ if(el){
1299
+ el.setOverflow('auto');
1300
+ }
1301
+ }
1302
+ },
1303
+
1304
+ // private
1305
+ getKeyMap : function(){
1306
+ if(!this.keyMap){
1307
+ this.keyMap = new Ext.KeyMap(this.el, this.keys);
1308
+ }
1309
+ return this.keyMap;
1310
+ },
1311
+
1312
+ // private
1313
+ initEvents : function(){
1314
+ if(this.keys){
1315
+ this.getKeyMap();
1316
+ }
1317
+ if(this.draggable){
1318
+ this.initDraggable();
1319
+ }
1320
+ },
1321
+
1322
+ // private
1323
+ initDraggable : function(){
1324
+ /**
1325
+ * <p>If this Panel is configured {@link #draggable}, this property will contain
1326
+ * an instance of {@link Ext.dd.DragSource} which handles dragging the Panel.</p>
1327
+ * The developer must provide implementations of the abstract methods of {@link Ext.dd.DragSource}
1328
+ * in order to supply behaviour for each stage of the drag/drop process. See {@link #draggable}.
1329
+ * @type Ext.dd.DragSource.
1330
+ * @property dd
1331
+ */
1332
+ this.dd = new Ext.Panel.DD(this, typeof this.draggable == 'boolean' ? null : this.draggable);
1333
+ },
1334
+
1335
+ // private
1336
+ beforeEffect : function(){
1337
+ if(this.floating){
1338
+ this.el.beforeAction();
1339
+ }
1340
+ this.el.addClass('x-panel-animated');
1341
+ },
1342
+
1343
+ // private
1344
+ afterEffect : function(){
1345
+ this.syncShadow();
1346
+ this.el.removeClass('x-panel-animated');
1347
+ },
1348
+
1349
+ // private - wraps up an animation param with internal callbacks
1350
+ createEffect : function(a, cb, scope){
1351
+ var o = {
1352
+ scope:scope,
1353
+ block:true
1354
+ };
1355
+ if(a === true){
1356
+ o.callback = cb;
1357
+ return o;
1358
+ }else if(!a.callback){
1359
+ o.callback = cb;
1360
+ }else { // wrap it up
1361
+ o.callback = function(){
1362
+ cb.call(scope);
1363
+ Ext.callback(a.callback, a.scope);
1364
+ };
1365
+ }
1366
+ return Ext.applyIf(o, a);
1367
+ },
1368
+
1369
+ /**
1370
+ * Collapses the panel body so that it becomes hidden. Fires the {@link #beforecollapse} event which will
1371
+ * cancel the collapse action if it returns false.
1372
+ * @param {Boolean} animate True to animate the transition, else false (defaults to the value of the
1373
+ * {@link #animCollapse} panel config)
1374
+ * @return {Ext.Panel} this
1375
+ */
1376
+ collapse : function(animate){
1377
+ if(this.collapsed || this.el.hasFxBlock() || this.fireEvent('beforecollapse', this, animate) === false){
1378
+ return;
1379
+ }
1380
+ var doAnim = animate === true || (animate !== false && this.animCollapse);
1381
+ this.beforeEffect();
1382
+ this.onCollapse(doAnim, animate);
1383
+ return this;
1384
+ },
1385
+
1386
+ // private
1387
+ onCollapse : function(doAnim, animArg){
1388
+ if(doAnim){
1389
+ this[this.collapseEl].slideOut(this.slideAnchor,
1390
+ Ext.apply(this.createEffect(animArg||true, this.afterCollapse, this),
1391
+ this.collapseDefaults));
1392
+ }else{
1393
+ this[this.collapseEl].hide();
1394
+ this.afterCollapse();
1395
+ }
1396
+ },
1397
+
1398
+ // private
1399
+ afterCollapse : function(){
1400
+ this.collapsed = true;
1401
+ this.el.addClass(this.collapsedCls);
1402
+ this.afterEffect();
1403
+ this.fireEvent('collapse', this);
1404
+ },
1405
+
1406
+ /**
1407
+ * Expands the panel body so that it becomes visible. Fires the {@link #beforeexpand} event which will
1408
+ * cancel the expand action if it returns false.
1409
+ * @param {Boolean} animate True to animate the transition, else false (defaults to the value of the
1410
+ * {@link #animCollapse} panel config)
1411
+ * @return {Ext.Panel} this
1412
+ */
1413
+ expand : function(animate){
1414
+ if(!this.collapsed || this.el.hasFxBlock() || this.fireEvent('beforeexpand', this, animate) === false){
1415
+ return;
1416
+ }
1417
+ var doAnim = animate === true || (animate !== false && this.animCollapse);
1418
+ this.el.removeClass(this.collapsedCls);
1419
+ this.beforeEffect();
1420
+ this.onExpand(doAnim, animate);
1421
+ return this;
1422
+ },
1423
+
1424
+ // private
1425
+ onExpand : function(doAnim, animArg){
1426
+ if(doAnim){
1427
+ this[this.collapseEl].slideIn(this.slideAnchor,
1428
+ Ext.apply(this.createEffect(animArg||true, this.afterExpand, this),
1429
+ this.expandDefaults));
1430
+ }else{
1431
+ this[this.collapseEl].show();
1432
+ this.afterExpand();
1433
+ }
1434
+ },
1435
+
1436
+ // private
1437
+ afterExpand : function(){
1438
+ this.collapsed = false;
1439
+ this.afterEffect();
1440
+ if(this.deferLayout !== undefined){
1441
+ this.doLayout(true);
1442
+ }
1443
+ this.fireEvent('expand', this);
1444
+ },
1445
+
1446
+ /**
1447
+ * Shortcut for performing an {@link #expand} or {@link #collapse} based on the current state of the panel.
1448
+ * @param {Boolean} animate True to animate the transition, else false (defaults to the value of the
1449
+ * {@link #animCollapse} panel config)
1450
+ * @return {Ext.Panel} this
1451
+ */
1452
+ toggleCollapse : function(animate){
1453
+ this[this.collapsed ? 'expand' : 'collapse'](animate);
1454
+ return this;
1455
+ },
1456
+
1457
+ // private
1458
+ onDisable : function(){
1459
+ if(this.rendered && this.maskDisabled){
1460
+ this.el.mask();
1461
+ }
1462
+ Ext.Panel.superclass.onDisable.call(this);
1463
+ },
1464
+
1465
+ // private
1466
+ onEnable : function(){
1467
+ if(this.rendered && this.maskDisabled){
1468
+ this.el.unmask();
1469
+ }
1470
+ Ext.Panel.superclass.onEnable.call(this);
1471
+ },
1472
+
1473
+ // private
1474
+ onResize : function(w, h){
1475
+ if(w !== undefined || h !== undefined){
1476
+ if(!this.collapsed){
1477
+ if(typeof w == 'number'){
1478
+ w = this.adjustBodyWidth(w - this.getFrameWidth());
1479
+ if(this.tbar){
1480
+ this.tbar.setWidth(w);
1481
+ if(this.topToolbar){
1482
+ this.topToolbar.setSize(w);
1483
+ }
1484
+ }
1485
+ if(this.bbar){
1486
+ this.bbar.setWidth(w);
1487
+ if(this.bottomToolbar){
1488
+ this.bottomToolbar.setSize(w);
1489
+ }
1490
+ }
1491
+ if(this.fbar){
1492
+ var f = this.fbar,
1493
+ fWidth = 1,
1494
+ strict = Ext.isStrict;
1495
+ if(this.buttonAlign == 'left'){
1496
+ fWidth = w - f.container.getFrameWidth('lr');
1497
+ }else{
1498
+ //center/right alignment off in webkit
1499
+ if(Ext.isIE || Ext.isWebKit){
1500
+ //center alignment ok on webkit.
1501
+ //right broken in both, center on IE
1502
+ if(!(this.buttonAlign == 'center' && Ext.isWebKit) && (!strict || (!Ext.isIE8 && strict))){
1503
+ (function(){
1504
+ f.setWidth(f.getEl().child('.x-toolbar-ct').getWidth());
1505
+ }).defer(1);
1506
+ }else{
1507
+ fWidth = 'auto';
1508
+ }
1509
+ }else{
1510
+ fWidth = 'auto';
1511
+ }
1512
+ }
1513
+ f.setWidth(fWidth);
1514
+ }
1515
+ this.body.setWidth(w);
1516
+ }else if(w == 'auto'){
1517
+ this.body.setWidth(w);
1518
+ }
1519
+
1520
+ if(typeof h == 'number'){
1521
+ h = Math.max(0, this.adjustBodyHeight(h - this.getFrameHeight()));
1522
+ this.body.setHeight(h);
1523
+ }else if(h == 'auto'){
1524
+ this.body.setHeight(h);
1525
+ }
1526
+
1527
+ if(this.disabled && this.el._mask){
1528
+ this.el._mask.setSize(this.el.dom.clientWidth, this.el.getHeight());
1529
+ }
1530
+ }else{
1531
+ this.queuedBodySize = {width: w, height: h};
1532
+ if(!this.queuedExpand && this.allowQueuedExpand !== false){
1533
+ this.queuedExpand = true;
1534
+ this.on('expand', function(){
1535
+ delete this.queuedExpand;
1536
+ this.onResize(this.queuedBodySize.width, this.queuedBodySize.height);
1537
+ this.doLayout();
1538
+ }, this, {single:true});
1539
+ }
1540
+ }
1541
+ this.fireEvent('bodyresize', this, w, h);
1542
+ }
1543
+ this.syncShadow();
1544
+ },
1545
+
1546
+ // private
1547
+ adjustBodyHeight : function(h){
1548
+ return h;
1549
+ },
1550
+
1551
+ // private
1552
+ adjustBodyWidth : function(w){
1553
+ return w;
1554
+ },
1555
+
1556
+ // private
1557
+ onPosition : function(){
1558
+ this.syncShadow();
1559
+ },
1560
+
1561
+ /**
1562
+ * Returns the width in pixels of the framing elements of this panel (not including the body width). To
1563
+ * retrieve the body width see {@link #getInnerWidth}.
1564
+ * @return {Number} The frame width
1565
+ */
1566
+ getFrameWidth : function(){
1567
+ var w = this.el.getFrameWidth('lr')+this.bwrap.getFrameWidth('lr');
1568
+
1569
+ if(this.frame){
1570
+ var l = this.bwrap.dom.firstChild;
1571
+ w += (Ext.fly(l).getFrameWidth('l') + Ext.fly(l.firstChild).getFrameWidth('r'));
1572
+ var mc = this.bwrap.dom.firstChild.firstChild.firstChild;
1573
+ w += Ext.fly(mc).getFrameWidth('lr');
1574
+ }
1575
+ return w;
1576
+ },
1577
+
1578
+ /**
1579
+ * Returns the height in pixels of the framing elements of this panel (including any top and bottom bars and
1580
+ * header and footer elements, but not including the body height). To retrieve the body height see {@link #getInnerHeight}.
1581
+ * @return {Number} The frame height
1582
+ */
1583
+ getFrameHeight : function(){
1584
+ var h = this.el.getFrameWidth('tb')+this.bwrap.getFrameWidth('tb');
1585
+ h += (this.tbar ? this.tbar.getHeight() : 0) +
1586
+ (this.bbar ? this.bbar.getHeight() : 0);
1587
+
1588
+ if(this.frame){
1589
+ var hd = this.el.dom.firstChild;
1590
+ var ft = this.bwrap.dom.lastChild;
1591
+ h += (hd.offsetHeight + ft.offsetHeight);
1592
+ var mc = this.bwrap.dom.firstChild.firstChild.firstChild;
1593
+ h += Ext.fly(mc).getFrameWidth('tb');
1594
+ }else{
1595
+ h += (this.header ? this.header.getHeight() : 0) +
1596
+ (this.footer ? this.footer.getHeight() : 0);
1597
+ }
1598
+ return h;
1599
+ },
1600
+
1601
+ /**
1602
+ * Returns the width in pixels of the body element (not including the width of any framing elements).
1603
+ * For the frame width see {@link #getFrameWidth}.
1604
+ * @return {Number} The body width
1605
+ */
1606
+ getInnerWidth : function(){
1607
+ return this.getSize().width - this.getFrameWidth();
1608
+ },
1609
+
1610
+ /**
1611
+ * Returns the height in pixels of the body element (not including the height of any framing elements).
1612
+ * For the frame height see {@link #getFrameHeight}.
1613
+ * @return {Number} The body height
1614
+ */
1615
+ getInnerHeight : function(){
1616
+ return this.getSize().height - this.getFrameHeight();
1617
+ },
1618
+
1619
+ // private
1620
+ syncShadow : function(){
1621
+ if(this.floating){
1622
+ this.el.sync(true);
1623
+ }
1624
+ },
1625
+
1626
+ // private
1627
+ getLayoutTarget : function(){
1628
+ return this.body;
1629
+ },
1630
+
1631
+ /**
1632
+ * <p>Sets the title text for the panel and optionally the {@link #iconCls icon class}.</p>
1633
+ * <p>In order to be able to set the title, a header element must have been created
1634
+ * for the Panel. This is triggered either by configuring the Panel with a non-blank <tt>{@link #title}</tt>,
1635
+ * or configuring it with <tt><b>{@link #header}: true</b></tt>.</p>
1636
+ * @param {String} title The title text to set
1637
+ * @param {String} iconCls (optional) {@link #iconCls iconCls} A user-defined CSS class that provides the icon image for this panel
1638
+ */
1639
+ setTitle : function(title, iconCls){
1640
+ this.title = title;
1641
+ if(this.header && this.headerAsText){
1642
+ this.header.child('span').update(title);
1643
+ }
1644
+ if(iconCls){
1645
+ this.setIconClass(iconCls);
1646
+ }
1647
+ this.fireEvent('titlechange', this, title);
1648
+ return this;
1649
+ },
1650
+
1651
+ /**
1652
+ * Get the {@link Ext.Updater} for this panel. Enables you to perform Ajax updates of this panel's body.
1653
+ * @return {Ext.Updater} The Updater
1654
+ */
1655
+ getUpdater : function(){
1656
+ return this.body.getUpdater();
1657
+ },
1658
+
1659
+ /**
1660
+ * Loads this content panel immediately with content returned from an XHR call.
1661
+ * @param {Object/String/Function} config A config object containing any of the following options:
1662
+ <pre><code>
1663
+ panel.load({
1664
+ url: "your-url.php",
1665
+ params: {param1: "foo", param2: "bar"}, // or a URL encoded string
1666
+ callback: yourFunction,
1667
+ scope: yourObject, // optional scope for the callback
1668
+ discardUrl: false,
1669
+ nocache: false,
1670
+ text: "Loading...",
1671
+ timeout: 30,
1672
+ scripts: false
1673
+ });
1674
+ </code></pre>
1675
+ * The only required property is url. The optional properties nocache, text and scripts
1676
+ * are shorthand for disableCaching, indicatorText and loadScripts and are used to set their
1677
+ * associated property on this panel Updater instance.
1678
+ * @return {Ext.Panel} this
1679
+ */
1680
+ load : function(){
1681
+ var um = this.body.getUpdater();
1682
+ um.update.apply(um, arguments);
1683
+ return this;
1684
+ },
1685
+
1686
+ // private
1687
+ beforeDestroy : function(){
1688
+ if(this.header){
1689
+ this.header.removeAllListeners();
1690
+ if(this.headerAsText){
1691
+ Ext.Element.uncache(this.header.child('span'));
1692
+ }
1693
+ }
1694
+ Ext.Element.uncache(
1695
+ this.header,
1696
+ this.tbar,
1697
+ this.bbar,
1698
+ this.footer,
1699
+ this.body,
1700
+ this.bwrap
1701
+ );
1702
+ if(this.tools){
1703
+ for(var k in this.tools){
1704
+ Ext.destroy(this.tools[k]);
1705
+ }
1706
+ }
1707
+ if(this.buttons){
1708
+ for(var b in this.buttons){
1709
+ Ext.destroy(this.buttons[b]);
1710
+ }
1711
+ }
1712
+ Ext.destroy(this.toolbars);
1713
+ Ext.Panel.superclass.beforeDestroy.call(this);
1714
+ },
1715
+
1716
+ // private
1717
+ createClasses : function(){
1718
+ this.headerCls = this.baseCls + '-header';
1719
+ this.headerTextCls = this.baseCls + '-header-text';
1720
+ this.bwrapCls = this.baseCls + '-bwrap';
1721
+ this.tbarCls = this.baseCls + '-tbar';
1722
+ this.bodyCls = this.baseCls + '-body';
1723
+ this.bbarCls = this.baseCls + '-bbar';
1724
+ this.footerCls = this.baseCls + '-footer';
1725
+ },
1726
+
1727
+ // private
1728
+ createGhost : function(cls, useShim, appendTo){
1729
+ var el = document.createElement('div');
1730
+ el.className = 'x-panel-ghost ' + (cls ? cls : '');
1731
+ if(this.header){
1732
+ el.appendChild(this.el.dom.firstChild.cloneNode(true));
1733
+ }
1734
+ Ext.fly(el.appendChild(document.createElement('ul'))).setHeight(this.bwrap.getHeight());
1735
+ el.style.width = this.el.dom.offsetWidth + 'px';;
1736
+ if(!appendTo){
1737
+ this.container.dom.appendChild(el);
1738
+ }else{
1739
+ Ext.getDom(appendTo).appendChild(el);
1740
+ }
1741
+ if(useShim !== false && this.el.useShim !== false){
1742
+ var layer = new Ext.Layer({shadow:false, useDisplay:true, constrain:false}, el);
1743
+ layer.show();
1744
+ return layer;
1745
+ }else{
1746
+ return new Ext.Element(el);
1747
+ }
1748
+ },
1749
+
1750
+ // private
1751
+ doAutoLoad : function(){
1752
+ var u = this.body.getUpdater();
1753
+ if(this.renderer){
1754
+ u.setRenderer(this.renderer);
1755
+ }
1756
+ u.update(Ext.isObject(this.autoLoad) ? this.autoLoad : {url: this.autoLoad});
1757
+ },
1758
+
1759
+ /**
1760
+ * Retrieve a tool by id.
1761
+ * @param {String} id
1762
+ * @return {Object} tool
1763
+ */
1764
+ getTool : function(id) {
1765
+ return this.tools[id];
1766
+ }
1767
+
1768
+ /**
1769
+ * @cfg {String} autoEl @hide
1770
+ */
1771
+ });
1772
+ Ext.reg('panel', Ext.Panel);