lpmp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,7 @@
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
+ Ext.Tip=Ext.extend(Ext.Panel,{minWidth:40,maxWidth:300,shadow:"sides",defaultAlign:"tl-bl?",autoRender:true,quickShowInterval:250,frame:true,hidden:true,baseCls:"x-tip",floating:{shadow:true,shim:true,useDisplay:true,constrain:false},autoHeight:true,closeAction:"hide",initComponent:function(){Ext.Tip.superclass.initComponent.call(this);if(this.closable&&!this.title){this.elements+=",header"}},afterRender:function(){Ext.Tip.superclass.afterRender.call(this);if(this.closable){this.addTool({id:"close",handler:this[this.closeAction],scope:this})}},showAt:function(a){Ext.Tip.superclass.show.call(this);if(this.measureWidth!==false&&(!this.initialConfig||typeof this.initialConfig.width!="number")){this.doAutoWidth()}if(this.constrainPosition){a=this.el.adjustForConstraints(a)}this.setPagePosition(a[0],a[1])},doAutoWidth:function(){var a=this.body.getTextWidth();if(this.title){a=Math.max(a,this.header.child("span").getTextWidth(this.title))}a+=this.getFrameWidth()+(this.closable?20:0)+this.body.getPadding("lr");this.setWidth(a.constrain(this.minWidth,this.maxWidth));if(Ext.isIE7&&!this.repainted){this.el.repaint();this.repainted=true}},showBy:function(a,b){if(!this.rendered){this.render(Ext.getBody())}this.showAt(this.el.getAlignToXY(a,b||this.defaultAlign))},initDraggable:function(){this.dd=new Ext.Tip.DD(this,typeof this.draggable=="boolean"?null:this.draggable);this.header.addClass("x-tip-draggable")}});Ext.Tip.DD=function(b,a){Ext.apply(this,a);this.tip=b;Ext.Tip.DD.superclass.constructor.call(this,b.el.id,"WindowDD-"+b.id);this.setHandleElId(b.header.id);this.scroll=false};Ext.extend(Ext.Tip.DD,Ext.dd.DD,{moveOnly:true,scroll:false,headerOffsets:[100,25],startDrag:function(){this.tip.el.disableShadow()},endDrag:function(a){this.tip.el.enableShadow(true)}});Ext.ToolTip=Ext.extend(Ext.Tip,{showDelay:500,hideDelay:200,dismissDelay:5000,trackMouse:false,anchorToTarget:true,anchorOffset:0,targetCounter:0,constrainPosition:false,initComponent:function(){Ext.ToolTip.superclass.initComponent.call(this);this.lastActive=new Date();this.initTarget(this.target);this.origAnchor=this.anchor},onRender:function(b,a){Ext.ToolTip.superclass.onRender.call(this,b,a);this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl=this.el.createChild({cls:"x-tip-anchor "+this.anchorCls})},afterRender:function(){Ext.ToolTip.superclass.afterRender.call(this);this.anchorEl.setStyle("z-index",this.el.getZIndex()+1)},initTarget:function(b){var a;if((a=Ext.get(b))){if(this.target){this.target=Ext.get(this.target);this.target.un("mouseover",this.onTargetOver,this);this.target.un("mouseout",this.onTargetOut,this);this.target.un("mousemove",this.onMouseMove,this)}this.mon(a,{mouseover:this.onTargetOver,mouseout:this.onTargetOut,mousemove:this.onMouseMove,scope:this});this.target=a}if(this.anchor){this.anchorTarget=this.target}},onMouseMove:function(b){var a=this.delegate?b.getTarget(this.delegate):this.triggerElement=true;if(a){this.targetXY=b.getXY();if(a===this.triggerElement){if(!this.hidden&&this.trackMouse){this.setPagePosition(this.getTargetXY())}}else{this.hide();this.lastActive=new Date(0);this.onTargetOver(b)}}else{if(!this.closable&&this.isVisible()){this.hide()}}},getTargetXY:function(){if(this.anchor){this.targetCounter++;var c=this.getOffsets();var i=(this.anchorToTarget&&!this.trackMouse)?this.el.getAlignToXY(this.anchorTarget,this.getAnchorAlign()):this.targetXY;var a=Ext.lib.Dom.getViewWidth()-5;var f=Ext.lib.Dom.getViewHeight()-5;var h=(document.documentElement.scrollLeft||document.body.scrollLeft||0)+5;var g=(document.documentElement.scrollTop||document.body.scrollTop||0)+5;var b=[i[0]+c[0],i[1]+c[1]];var e=this.getSize();this.anchorEl.removeClass(this.anchorCls);if(this.targetCounter<2){if(b[0]<h){if(this.anchorToTarget){this.defaultAlign="l-r";if(this.mouseOffset){this.mouseOffset[0]*=-1}}this.anchor="left";return this.getTargetXY()}if(b[0]+e.width>a){if(this.anchorToTarget){this.defaultAlign="r-l";if(this.mouseOffset){this.mouseOffset[0]*=-1}}this.anchor="right";return this.getTargetXY()}if(b[1]<g){if(this.anchorToTarget){this.defaultAlign="t-b";if(this.mouseOffset){this.mouseOffset[1]*=-1}}this.anchor="top";return this.getTargetXY()}if(b[1]+e.height>f){if(this.anchorToTarget){this.defaultAlign="b-t";if(this.mouseOffset){this.mouseOffset[1]*=-1}}this.anchor="bottom";return this.getTargetXY()}}this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();this.anchorEl.addClass(this.anchorCls);this.targetCounter=0;return b}else{var d=this.getMouseOffset();return[this.targetXY[0]+d[0],this.targetXY[1]+d[1]]}},getMouseOffset:function(){var a=this.anchor?[0,0]:[15,18];if(this.mouseOffset){a[0]+=this.mouseOffset[0];a[1]+=this.mouseOffset[1]}return a},getAnchorPosition:function(){if(this.anchor){this.tipAnchor=this.anchor.charAt(0)}else{var a=this.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!a){throw"AnchorTip.defaultAlign is invalid"}this.tipAnchor=a[1].charAt(0)}switch(this.tipAnchor){case"t":return"top";case"b":return"bottom";case"r":return"right"}return"left"},getAnchorAlign:function(){switch(this.anchor){case"top":return"tl-bl";case"left":return"tl-tr";case"right":return"tr-tl";default:return"bl-tl"}},getOffsets:function(){var b,a=this.getAnchorPosition().charAt(0);if(this.anchorToTarget&&!this.trackMouse){switch(a){case"t":b=[0,9];break;case"b":b=[0,-13];break;case"r":b=[-13,0];break;default:b=[9,0];break}}else{switch(a){case"t":b=[-15-this.anchorOffset,30];break;case"b":b=[-19-this.anchorOffset,-13-this.el.dom.offsetHeight];break;case"r":b=[-15-this.el.dom.offsetWidth,-13-this.anchorOffset];break;default:b=[25,-13-this.anchorOffset];break}}var c=this.getMouseOffset();b[0]+=c[0];b[1]+=c[1];return b},onTargetOver:function(b){if(this.disabled||b.within(this.target.dom,true)){return}var a=b.getTarget(this.delegate);if(a){this.triggerElement=a;this.clearTimer("hide");this.targetXY=b.getXY();this.delayShow()}},delayShow:function(){if(this.hidden&&!this.showTimer){if(this.lastActive.getElapsed()<this.quickShowInterval){this.show()}else{this.showTimer=this.show.defer(this.showDelay,this)}}else{if(!this.hidden&&this.autoHide!==false){this.show()}}},onTargetOut:function(a){if(this.disabled||a.within(this.target.dom,true)){return}this.clearTimer("show");if(this.autoHide!==false){this.delayHide()}},delayHide:function(){if(!this.hidden&&!this.hideTimer){this.hideTimer=this.hide.defer(this.hideDelay,this)}},hide:function(){this.clearTimer("dismiss");this.lastActive=new Date();if(this.anchorEl){this.anchorEl.hide()}Ext.ToolTip.superclass.hide.call(this);delete this.triggerElement},show:function(){if(this.anchor){this.showAt([-1000,-1000]);this.origConstrainPosition=this.constrainPosition;this.constrainPosition=false;this.anchor=this.origAnchor}this.showAt(this.getTargetXY());if(this.anchor){this.syncAnchor();this.anchorEl.show();this.constrainPosition=this.origConstrainPosition}else{this.anchorEl.hide()}},showAt:function(a){this.lastActive=new Date();this.clearTimers();Ext.ToolTip.superclass.showAt.call(this,a);if(this.dismissDelay&&this.autoHide!==false){this.dismissTimer=this.hide.defer(this.dismissDelay,this)}},syncAnchor:function(){var a,b,c;switch(this.tipAnchor.charAt(0)){case"t":a="b";b="tl";c=[20+this.anchorOffset,2];break;case"r":a="l";b="tr";c=[-2,11+this.anchorOffset];break;case"b":a="t";b="bl";c=[20+this.anchorOffset,-2];break;default:a="r";b="tl";c=[2,11+this.anchorOffset];break}this.anchorEl.alignTo(this.el,a+"-"+b,c)},setPagePosition:function(a,b){Ext.ToolTip.superclass.setPagePosition.call(this,a,b);if(this.anchor){this.syncAnchor()}},clearTimer:function(a){a=a+"Timer";clearTimeout(this[a]);delete this[a]},clearTimers:function(){this.clearTimer("show");this.clearTimer("dismiss");this.clearTimer("hide")},onShow:function(){Ext.ToolTip.superclass.onShow.call(this);Ext.getDoc().on("mousedown",this.onDocMouseDown,this)},onHide:function(){Ext.ToolTip.superclass.onHide.call(this);Ext.getDoc().un("mousedown",this.onDocMouseDown,this)},onDocMouseDown:function(a){if(this.autoHide!==true&&!this.closable&&!a.within(this.el.dom)){this.disable();this.enable.defer(100,this)}},onDisable:function(){this.clearTimers();this.hide()},adjustPosition:function(a,d){if(this.contstrainPosition){var c=this.targetXY[1],b=this.getSize().height;if(d<=c&&(d+b)>=c){d=c-b-5}}return{x:a,y:d}},onDestroy:function(){Ext.getDoc().un("mousedown",this.onDocMouseDown,this);Ext.ToolTip.superclass.onDestroy.call(this)}});Ext.QuickTip=Ext.extend(Ext.ToolTip,{interceptTitles:false,tagConfig:{namespace:"ext",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign",anchor:"anchor"},initComponent:function(){this.target=this.target||Ext.getDoc();this.targets=this.targets||{};Ext.QuickTip.superclass.initComponent.call(this)},register:function(e){var g=Ext.isArray(e)?e:arguments;for(var f=0,a=g.length;f<a;f++){var k=g[f];var h=k.target;if(h){if(Ext.isArray(h)){for(var d=0,b=h.length;d<b;d++){this.targets[Ext.id(h[d])]=k}}else{this.targets[Ext.id(h)]=k}}}},unregister:function(a){delete this.targets[Ext.id(a)]},cancelShow:function(b){var a=this.activeTarget;b=Ext.get(b).dom;if(this.isVisible()){if(a&&a.el==b){this.hide()}}else{if(a&&a.el==b){this.clearTimer("show")}}},onTargetOver:function(h){if(this.disabled){return}this.targetXY=h.getXY();var c=h.getTarget();if(!c||c.nodeType!==1||c==document||c==document.body){return}if(this.activeTarget&&c==this.activeTarget.el){this.clearTimer("hide");this.show();return}if(c&&this.targets[c.id]){this.activeTarget=this.targets[c.id];this.activeTarget.el=c;this.anchor=this.activeTarget.anchor;if(this.anchor){this.anchorTarget=c}this.delayShow();return}var f,g=Ext.fly(c),b=this.tagConfig;var d=b.namespace;if(this.interceptTitles&&c.title){f=c.title;c.qtip=f;c.removeAttribute("title");h.preventDefault()}else{f=c.qtip||g.getAttribute(b.attribute,d)}if(f){var a=g.getAttribute(b.hide,d);this.activeTarget={el:c,text:f,width:g.getAttribute(b.width,d),autoHide:a!="user"&&a!=="false",title:g.getAttribute(b.title,d),cls:g.getAttribute(b.cls,d),align:g.getAttribute(b.align,d)};this.anchor=g.getAttribute(b.anchor,d);if(this.anchor){this.anchorTarget=c}this.delayShow()}},onTargetOut:function(a){this.clearTimer("show");if(this.autoHide!==false){this.delayHide()}},showAt:function(b){var a=this.activeTarget;if(a){if(!this.rendered){this.render(Ext.getBody());this.activeTarget=a}if(a.width){this.setWidth(a.width);this.body.setWidth(this.adjustBodyWidth(a.width-this.getFrameWidth()));this.measureWidth=false}else{this.measureWidth=true}this.setTitle(a.title||"");this.body.update(a.text);this.autoHide=a.autoHide;this.dismissDelay=a.dismissDelay||this.dismissDelay;if(this.lastCls){this.el.removeClass(this.lastCls);delete this.lastCls}if(a.cls){this.el.addClass(a.cls);this.lastCls=a.cls}if(this.anchor){this.constrainPosition=false}else{if(a.align){b=this.el.getAlignToXY(a.el,a.align);this.constrainPosition=false}else{this.constrainPosition=true}}}Ext.QuickTip.superclass.showAt.call(this,b)},hide:function(){delete this.activeTarget;Ext.QuickTip.superclass.hide.call(this)}});Ext.QuickTips=function(){var b,a=[];return{init:function(c){if(!b){if(!Ext.isReady){Ext.onReady(function(){Ext.QuickTips.init(c)});return}b=new Ext.QuickTip({elements:"header,body"});if(c!==false){b.render(Ext.getBody())}}},enable:function(){if(b){a.pop();if(a.length<1){b.enable()}}},disable:function(){if(b){b.disable()}a.push(1)},isEnabled:function(){return b!==undefined&&!b.disabled},getQuickTip:function(){return b},register:function(){b.register.apply(b,arguments)},unregister:function(){b.unregister.apply(b,arguments)},tips:function(){b.register.apply(b,arguments)}}}();
@@ -0,0 +1,1374 @@
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.layout.ToolbarLayout
9
+ * @extends Ext.layout.ContainerLayout
10
+ * Layout manager implicitly used by Ext.Toolbar.
11
+ */
12
+ Ext.layout.ToolbarLayout = Ext.extend(Ext.layout.ContainerLayout, {
13
+ monitorResize : true,
14
+ triggerWidth : 18,
15
+ lastOverflow : false,
16
+
17
+ noItemsMenuText : '<div class="x-toolbar-no-items">(None)</div>',
18
+ // private
19
+ onLayout : function(ct, target){
20
+ if(!this.leftTr){
21
+ target.addClass('x-toolbar-layout-ct');
22
+ target.insertHtml('beforeEnd',
23
+ '<table cellspacing="0" class="x-toolbar-ct"><tbody><tr><td class="x-toolbar-left" align="left"><table cellspacing="0"><tbody><tr class="x-toolbar-left-row"></tr></tbody></table></td><td class="x-toolbar-right" align="right"><table cellspacing="0" class="x-toolbar-right-ct"><tbody><tr><td><table cellspacing="0"><tbody><tr class="x-toolbar-right-row"></tr></tbody></table></td><td><table cellspacing="0"><tbody><tr class="x-toolbar-extras-row"></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table>');
24
+ this.leftTr = target.child('tr.x-toolbar-left-row', true);
25
+ this.rightTr = target.child('tr.x-toolbar-right-row', true);
26
+ this.extrasTr = target.child('tr.x-toolbar-extras-row', true);
27
+ }
28
+ var side = this.leftTr;
29
+ var pos = 0;
30
+
31
+ var items = ct.items.items;
32
+ for(var i = 0, len = items.length, c; i < len; i++, pos++) {
33
+ c = items[i];
34
+ if(c.isFill){
35
+ side = this.rightTr;
36
+ pos = -1;
37
+ }else if(!c.rendered){
38
+ c.render(this.insertCell(c, side, pos));
39
+ }else{
40
+ if(!c.xtbHidden && !this.isValidParent(c, side.childNodes[pos])){
41
+ var td = this.insertCell(c, side, pos);
42
+ td.appendChild(c.getDomPositionEl().dom);
43
+ c.container = Ext.get(td);
44
+ }
45
+ }
46
+ }
47
+ //strip extra empty cells
48
+ this.cleanup(this.leftTr);
49
+ this.cleanup(this.rightTr);
50
+ this.cleanup(this.extrasTr);
51
+ this.fitToSize(target);
52
+ },
53
+
54
+ cleanup : function(row){
55
+ var cn = row.childNodes;
56
+ for(var i = cn.length-1, c; i >= 0 && (c = cn[i]); i--){
57
+ if(!c.firstChild){
58
+ row.removeChild(c);
59
+ }
60
+ }
61
+ },
62
+
63
+ insertCell : function(c, side, pos){
64
+ var td = document.createElement('td');
65
+ td.className='x-toolbar-cell';
66
+ side.insertBefore(td, side.childNodes[pos]||null);
67
+ return td;
68
+ },
69
+
70
+ hideItem : function(item){
71
+ var h = (this.hiddens = this.hiddens || []);
72
+ h.push(item);
73
+ item.xtbHidden = true;
74
+ item.xtbWidth = item.getDomPositionEl().dom.parentNode.offsetWidth;
75
+ item.hide();
76
+ },
77
+
78
+ unhideItem : function(item){
79
+ item.show();
80
+ item.xtbHidden = false;
81
+ this.hiddens.remove(item);
82
+ if(this.hiddens.length < 1){
83
+ delete this.hiddens;
84
+ }
85
+ },
86
+
87
+ getItemWidth : function(c){
88
+ return c.hidden ? (c.xtbWidth || 0) : c.getDomPositionEl().dom.parentNode.offsetWidth;
89
+ },
90
+
91
+ fitToSize : function(t){
92
+ if(this.container.enableOverflow === false){
93
+ return;
94
+ }
95
+ var w = t.dom.clientWidth;
96
+ var lw = this.lastWidth || 0;
97
+ this.lastWidth = w;
98
+ var iw = t.dom.firstChild.offsetWidth;
99
+
100
+ var clipWidth = w - this.triggerWidth;
101
+ var hideIndex = -1;
102
+
103
+ if(iw > w || (this.hiddens && w >= lw)){
104
+ var i, items = this.container.items.items, len = items.length, c;
105
+ var loopWidth = 0;
106
+ for(i = 0; i < len; i++) {
107
+ c = items[i];
108
+ if(!c.isFill){
109
+ loopWidth += this.getItemWidth(c);
110
+ if(loopWidth > clipWidth){
111
+ if(!c.xtbHidden){
112
+ this.hideItem(c);
113
+ }
114
+ }else{
115
+ if(c.xtbHidden){
116
+ this.unhideItem(c);
117
+ }
118
+ }
119
+ }
120
+ }
121
+ }
122
+ if(this.hiddens){
123
+ this.initMore();
124
+ if(!this.lastOverflow){
125
+ this.container.fireEvent('overflowchange', this.container, true);
126
+ this.lastOverflow = true;
127
+ }
128
+ }else if(this.more){
129
+ this.clearMenu();
130
+ this.more.destroy();
131
+ delete this.more;
132
+ if(this.lastOverflow){
133
+ this.container.fireEvent('overflowchange', this.container, false);
134
+ this.lastOverflow = false;
135
+ }
136
+ }
137
+ },
138
+
139
+ createMenuConfig : function(c, hideOnClick){
140
+ var cfg = Ext.apply({}, c.initialConfig),
141
+ group = c.toggleGroup;
142
+
143
+ Ext.apply(cfg, {
144
+ text: c.overflowText || c.text,
145
+ iconCls: c.iconCls,
146
+ icon: c.icon,
147
+ itemId: c.itemId,
148
+ disabled: c.disabled,
149
+ handler: c.handler,
150
+ scope: c.scope,
151
+ menu: c.menu,
152
+ hideOnClick: hideOnClick
153
+ });
154
+ if(group || c.enableToggle){
155
+ Ext.apply(cfg, {
156
+ group: group,
157
+ checked: c.pressed,
158
+ listeners: {
159
+ checkchange: function(item, checked){
160
+ c.toggle(checked);
161
+ }
162
+ }
163
+ });
164
+ }
165
+ delete cfg.xtype;
166
+ delete cfg.id;
167
+ return cfg;
168
+ },
169
+
170
+ // private
171
+ addComponentToMenu : function(m, c){
172
+ if(c instanceof Ext.Toolbar.Separator){
173
+ m.add('-');
174
+ }else if(Ext.isFunction(c.isXType)){
175
+ if(c.isXType('splitbutton')){
176
+ m.add(this.createMenuConfig(c, true));
177
+ }else if(c.isXType('button')){
178
+ m.add(this.createMenuConfig(c, !c.menu));
179
+ }else if(c.isXType('buttongroup')){
180
+ c.items.each(function(item){
181
+ this.addComponentToMenu(m, item);
182
+ }, this);
183
+ }
184
+ }
185
+ },
186
+
187
+ clearMenu : function(){
188
+ var m = this.moreMenu;
189
+ if(m && m.items){
190
+ this.moreMenu.items.each(function(item){
191
+ delete item.menu;
192
+ });
193
+ }
194
+ },
195
+
196
+ // private
197
+ beforeMoreShow : function(m){
198
+ var h = this.container.items.items,
199
+ len = h.length,
200
+ c,
201
+ prev,
202
+ needsSep = function(group, item){
203
+ return group.isXType('buttongroup') && !(item instanceof Ext.Toolbar.Separator);
204
+ };
205
+
206
+ this.clearMenu();
207
+ m.removeAll();
208
+ for(var i = 0; i < len; i++){
209
+ c = h[i];
210
+ if(c.xtbHidden){
211
+ if(prev && (needsSep(c, prev) || needsSep(prev, c))){
212
+ m.add('-');
213
+ }
214
+ this.addComponentToMenu(m, c);
215
+ prev = c;
216
+ }
217
+ }
218
+ // put something so the menu isn't empty
219
+ // if no compatible items found
220
+ if(m.items.length < 1){
221
+ m.add(this.noItemsMenuText);
222
+ }
223
+ },
224
+
225
+ initMore : function(){
226
+ if(!this.more){
227
+ this.moreMenu = new Ext.menu.Menu({
228
+ listeners: {
229
+ beforeshow: this.beforeMoreShow,
230
+ scope: this
231
+ }
232
+ });
233
+ this.more = new Ext.Button({
234
+ iconCls: 'x-toolbar-more-icon',
235
+ cls: 'x-toolbar-more',
236
+ menu: this.moreMenu
237
+ });
238
+ var td = this.insertCell(this.more, this.extrasTr, 100);
239
+ this.more.render(td);
240
+ }
241
+ },
242
+
243
+ destroy : function(){
244
+ Ext.destroy(this.more, this.moreMenu);
245
+ Ext.layout.ToolbarLayout.superclass.destroy.call(this);
246
+ }
247
+ /**
248
+ * @property activeItem
249
+ * @hide
250
+ */
251
+ });
252
+
253
+ Ext.Container.LAYOUTS.toolbar = Ext.layout.ToolbarLayout;
254
+
255
+ /**
256
+ * @class Ext.Toolbar
257
+ * @extends Ext.Container
258
+ * <p>Basic Toolbar class. Although the <tt>{@link Ext.Container#defaultType defaultType}</tt> for Toolbar
259
+ * is <tt>{@link Ext.Button button}</tt>, Toolbar elements (child items for the Toolbar container) may
260
+ * be virtually any type of Component. Toolbar elements can be created explicitly via their constructors,
261
+ * or implicitly via their xtypes, and can be <tt>{@link #add}</tt>ed dynamically.</p>
262
+ * <p>Some items have shortcut strings for creation:</p>
263
+ * <pre>
264
+ <u>Shortcut</u> <u>xtype</u> <u>Class</u> <u>Description</u>
265
+ '->' 'tbfill' {@link Ext.Toolbar.Fill} begin using the right-justified button container
266
+ '-' 'tbseparator' {@link Ext.Toolbar.Separator} add a vertical separator bar between toolbar items
267
+ ' ' 'tbspacer' {@link Ext.Toolbar.Spacer} add horiztonal space between elements
268
+ * </pre>
269
+ *
270
+ * Example usage of various elements:
271
+ * <pre><code>
272
+ var tb = new Ext.Toolbar({
273
+ renderTo: document.body,
274
+ width: 600,
275
+ height: 100,
276
+ items: [
277
+ {
278
+ // xtype: 'button', // default for Toolbars, same as 'tbbutton'
279
+ text: 'Button'
280
+ },
281
+ {
282
+ xtype: 'splitbutton', // same as 'tbsplitbutton'
283
+ text: 'Split Button'
284
+ },
285
+ // begin using the right-justified button container
286
+ '->', // same as {xtype: 'tbfill'}, // Ext.Toolbar.Fill
287
+ {
288
+ xtype: 'textfield',
289
+ name: 'field1',
290
+ emptyText: 'enter search term'
291
+ },
292
+ // add a vertical separator bar between toolbar items
293
+ '-', // same as {xtype: 'tbseparator'} to create Ext.Toolbar.Separator
294
+ 'text 1', // same as {xtype: 'tbtext', text: 'text1'} to create Ext.Toolbar.TextItem
295
+ {xtype: 'tbspacer'},// same as ' ' to create Ext.Toolbar.Spacer
296
+ 'text 2',
297
+ {xtype: 'tbspacer', width: 50}, // add a 50px space
298
+ 'text 3'
299
+ ]
300
+ });
301
+ * </code></pre>
302
+ * Example adding a ComboBox within a menu of a button:
303
+ * <pre><code>
304
+ // ComboBox creation
305
+ var combo = new Ext.form.ComboBox({
306
+ store: new Ext.data.ArrayStore({
307
+ autoDestroy: true,
308
+ fields: ['initials', 'fullname'],
309
+ data : [
310
+ ['FF', 'Fred Flintstone'],
311
+ ['BR', 'Barney Rubble']
312
+ ]
313
+ }),
314
+ displayField: 'fullname',
315
+ typeAhead: true,
316
+ mode: 'local',
317
+ forceSelection: true,
318
+ triggerAction: 'all',
319
+ emptyText: 'Select a name...',
320
+ selectOnFocus: true,
321
+ width: 135,
322
+ getListParent: function() {
323
+ return this.el.up('.x-menu');
324
+ },
325
+ iconCls: 'no-icon' //use iconCls if placing within menu to shift to right side of menu
326
+ });
327
+
328
+ // put ComboBox in a Menu
329
+ var menu = new Ext.menu.Menu({
330
+ id: 'mainMenu',
331
+ items: [
332
+ combo // A Field in a Menu
333
+ ]
334
+ });
335
+
336
+ // add a Button with the menu
337
+ tb.add({
338
+ text:'Button w/ Menu',
339
+ menu: menu // assign menu by instance
340
+ });
341
+ tb.doLayout();
342
+ * </code></pre>
343
+ * @constructor
344
+ * Creates a new Toolbar
345
+ * @param {Object/Array} config A config object or an array of buttons to <tt>{@link #add}</tt>
346
+ * @xtype toolbar
347
+ */
348
+ Ext.Toolbar = function(config){
349
+ if(Ext.isArray(config)){
350
+ config = {items: config, layout: 'toolbar'};
351
+ } else {
352
+ config = Ext.apply({
353
+ layout: 'toolbar'
354
+ }, config);
355
+ if(config.buttons) {
356
+ config.items = config.buttons;
357
+ }
358
+ }
359
+ Ext.Toolbar.superclass.constructor.call(this, config);
360
+ };
361
+
362
+ (function(){
363
+
364
+ var T = Ext.Toolbar;
365
+
366
+ Ext.extend(T, Ext.Container, {
367
+
368
+ defaultType: 'button',
369
+
370
+ trackMenus : true,
371
+ internalDefaults: {removeMode: 'container', hideParent: true},
372
+ toolbarCls: 'x-toolbar',
373
+
374
+ initComponent : function(){
375
+ T.superclass.initComponent.call(this);
376
+
377
+ /**
378
+ * @event overflowchange
379
+ * Fires after the overflow state has changed.
380
+ * @param {Object} c The Container
381
+ * @param {Boolean} lastOverflow overflow state
382
+ */
383
+ this.addEvents('overflowchange');
384
+ },
385
+
386
+ // private
387
+ onRender : function(ct, position){
388
+ if(!this.el){
389
+ if(!this.autoCreate){
390
+ this.autoCreate = {
391
+ cls: this.toolbarCls + ' x-small-editor'
392
+ };
393
+ }
394
+ this.el = ct.createChild(Ext.apply({ id: this.id },this.autoCreate), position);
395
+ }
396
+ },
397
+
398
+ /**
399
+ * Adds element(s) to the toolbar -- this function takes a variable number of
400
+ * arguments of mixed type and adds them to the toolbar.
401
+ * @param {Mixed} arg1 The following types of arguments are all valid:<br />
402
+ * <ul>
403
+ * <li>{@link Ext.Button} config: A valid button config object (equivalent to {@link #addButton})</li>
404
+ * <li>HtmlElement: Any standard HTML element (equivalent to {@link #addElement})</li>
405
+ * <li>Field: Any form field (equivalent to {@link #addField})</li>
406
+ * <li>Item: Any subclass of {@link Ext.Toolbar.Item} (equivalent to {@link #addItem})</li>
407
+ * <li>String: Any generic string (gets wrapped in a {@link Ext.Toolbar.TextItem}, equivalent to {@link #addText}).
408
+ * Note that there are a few special strings that are treated differently as explained next.</li>
409
+ * <li>'-': Creates a separator element (equivalent to {@link #addSeparator})</li>
410
+ * <li>' ': Creates a spacer element (equivalent to {@link #addSpacer})</li>
411
+ * <li>'->': Creates a fill element (equivalent to {@link #addFill})</li>
412
+ * </ul>
413
+ * @param {Mixed} arg2
414
+ * @param {Mixed} etc.
415
+ * @method add
416
+ */
417
+
418
+ // private
419
+ lookupComponent : function(c){
420
+ if(Ext.isString(c)){
421
+ if(c == '-'){
422
+ c = new T.Separator();
423
+ }else if(c == ' '){
424
+ c = new T.Spacer();
425
+ }else if(c == '->'){
426
+ c = new T.Fill();
427
+ }else{
428
+ c = new T.TextItem(c);
429
+ }
430
+ this.applyDefaults(c);
431
+ }else{
432
+ if(c.isFormField || c.render){ // some kind of form field, some kind of Toolbar.Item
433
+ c = this.constructItem(c);
434
+ }else if(c.tag){ // DomHelper spec
435
+ c = new T.Item({autoEl: c});
436
+ }else if(c.tagName){ // element
437
+ c = new T.Item({el:c});
438
+ }else if(Ext.isObject(c)){ // must be button config?
439
+ c = c.xtype ? this.constructItem(c) : this.constructButton(c);
440
+ }
441
+ }
442
+ return c;
443
+ },
444
+
445
+ // private
446
+ applyDefaults : function(c){
447
+ if(!Ext.isString(c)){
448
+ c = Ext.Toolbar.superclass.applyDefaults.call(this, c);
449
+ var d = this.internalDefaults;
450
+ if(c.events){
451
+ Ext.applyIf(c.initialConfig, d);
452
+ Ext.apply(c, d);
453
+ }else{
454
+ Ext.applyIf(c, d);
455
+ }
456
+ }
457
+ return c;
458
+ },
459
+
460
+ // private
461
+ constructItem : function(item, type){
462
+ return Ext.create(item, type || this.defaultType);
463
+ },
464
+
465
+ /**
466
+ * Adds a separator
467
+ * @return {Ext.Toolbar.Item} The separator {@link Ext.Toolbar.Item item}
468
+ */
469
+ addSeparator : function(){
470
+ return this.add(new T.Separator());
471
+ },
472
+
473
+ /**
474
+ * Adds a spacer element
475
+ * @return {Ext.Toolbar.Spacer} The spacer item
476
+ */
477
+ addSpacer : function(){
478
+ return this.add(new T.Spacer());
479
+ },
480
+
481
+ /**
482
+ * Forces subsequent additions into the float:right toolbar
483
+ */
484
+ addFill : function(){
485
+ this.add(new T.Fill());
486
+ },
487
+
488
+ /**
489
+ * Adds any standard HTML element to the toolbar
490
+ * @param {Mixed} el The element or id of the element to add
491
+ * @return {Ext.Toolbar.Item} The element's item
492
+ */
493
+ addElement : function(el){
494
+ return this.addItem(new T.Item({el:el}));
495
+ },
496
+
497
+ /**
498
+ * Adds any Toolbar.Item or subclass
499
+ * @param {Ext.Toolbar.Item} item
500
+ * @return {Ext.Toolbar.Item} The item
501
+ */
502
+ addItem : function(item){
503
+ return Ext.Toolbar.superclass.add.apply(this, arguments);
504
+ },
505
+
506
+ /**
507
+ * Adds a button (or buttons). See {@link Ext.Button} for more info on the config.
508
+ * @param {Object/Array} config A button config or array of configs
509
+ * @return {Ext.Button/Array}
510
+ */
511
+ addButton : function(config){
512
+ if(Ext.isArray(config)){
513
+ var buttons = [];
514
+ for(var i = 0, len = config.length; i < len; i++) {
515
+ buttons.push(this.addButton(config[i]));
516
+ }
517
+ return buttons;
518
+ }
519
+ return this.add(this.constructButton(config));
520
+ },
521
+
522
+ /**
523
+ * Adds text to the toolbar
524
+ * @param {String} text The text to add
525
+ * @return {Ext.Toolbar.Item} The element's item
526
+ */
527
+ addText : function(text){
528
+ return this.addItem(new T.TextItem(text));
529
+ },
530
+
531
+ /**
532
+ * Adds a new element to the toolbar from the passed {@link Ext.DomHelper} config
533
+ * @param {Object} config
534
+ * @return {Ext.Toolbar.Item} The element's item
535
+ */
536
+ addDom : function(config){
537
+ return this.add(new T.Item({autoEl: config}));
538
+ },
539
+
540
+ /**
541
+ * Adds a dynamically rendered Ext.form field (TextField, ComboBox, etc). Note: the field should not have
542
+ * been rendered yet. For a field that has already been rendered, use {@link #addElement}.
543
+ * @param {Ext.form.Field} field
544
+ * @return {Ext.Toolbar.Item}
545
+ */
546
+ addField : function(field){
547
+ return this.add(field);
548
+ },
549
+
550
+ /**
551
+ * Inserts any {@link Ext.Toolbar.Item}/{@link Ext.Button} at the specified index.
552
+ * @param {Number} index The index where the item is to be inserted
553
+ * @param {Object/Ext.Toolbar.Item/Ext.Button/Array} item The button, or button config object to be
554
+ * inserted, or an array of buttons/configs.
555
+ * @return {Ext.Button/Item}
556
+ */
557
+ insertButton : function(index, item){
558
+ if(Ext.isArray(item)){
559
+ var buttons = [];
560
+ for(var i = 0, len = item.length; i < len; i++) {
561
+ buttons.push(this.insertButton(index + i, item[i]));
562
+ }
563
+ return buttons;
564
+ }
565
+ return Ext.Toolbar.superclass.insert.call(this, index, item);
566
+ },
567
+
568
+ // private
569
+ initMenuTracking : function(item){
570
+ if(this.trackMenus && item.menu){
571
+ this.mon(item, {
572
+ 'menutriggerover' : this.onButtonTriggerOver,
573
+ 'menushow' : this.onButtonMenuShow,
574
+ 'menuhide' : this.onButtonMenuHide,
575
+ scope: this
576
+ });
577
+ }
578
+ },
579
+
580
+ // private
581
+ constructButton : function(item){
582
+ var b = item.events ? item : this.constructItem(item, item.split ? 'splitbutton' : this.defaultType);
583
+ this.initMenuTracking(b);
584
+ return b;
585
+ },
586
+
587
+ // private
588
+ onDisable : function(){
589
+ this.items.each(function(item){
590
+ if(item.disable){
591
+ item.disable();
592
+ }
593
+ });
594
+ },
595
+
596
+ // private
597
+ onEnable : function(){
598
+ this.items.each(function(item){
599
+ if(item.enable){
600
+ item.enable();
601
+ }
602
+ });
603
+ },
604
+
605
+ // private
606
+ onButtonTriggerOver : function(btn){
607
+ if(this.activeMenuBtn && this.activeMenuBtn != btn){
608
+ this.activeMenuBtn.hideMenu();
609
+ btn.showMenu();
610
+ this.activeMenuBtn = btn;
611
+ }
612
+ },
613
+
614
+ // private
615
+ onButtonMenuShow : function(btn){
616
+ this.activeMenuBtn = btn;
617
+ },
618
+
619
+ // private
620
+ onButtonMenuHide : function(btn){
621
+ delete this.activeMenuBtn;
622
+ }
623
+ });
624
+ Ext.reg('toolbar', Ext.Toolbar);
625
+
626
+ /**
627
+ * @class Ext.Toolbar.Item
628
+ * @extends Ext.BoxComponent
629
+ * The base class that other non-interacting Toolbar Item classes should extend in order to
630
+ * get some basic common toolbar item functionality.
631
+ * @constructor
632
+ * Creates a new Item
633
+ * @param {HTMLElement} el
634
+ * @xtype tbitem
635
+ */
636
+ T.Item = Ext.extend(Ext.BoxComponent, {
637
+ hideParent: true, // Hiding a Toolbar.Item hides its containing TD
638
+ enable:Ext.emptyFn,
639
+ disable:Ext.emptyFn,
640
+ focus:Ext.emptyFn
641
+ /**
642
+ * @cfg {String} overflowText Text to be used for the menu if the item is overflowed.
643
+ */
644
+ });
645
+ Ext.reg('tbitem', T.Item);
646
+
647
+ /**
648
+ * @class Ext.Toolbar.Separator
649
+ * @extends Ext.Toolbar.Item
650
+ * A simple class that adds a vertical separator bar between toolbar items
651
+ * (css class:<tt>'xtb-sep'</tt>). Example usage:
652
+ * <pre><code>
653
+ new Ext.Panel({
654
+ tbar : [
655
+ 'Item 1',
656
+ {xtype: 'tbseparator'}, // or '-'
657
+ 'Item 2'
658
+ ]
659
+ });
660
+ </code></pre>
661
+ * @constructor
662
+ * Creates a new Separator
663
+ * @xtype tbseparator
664
+ */
665
+ T.Separator = Ext.extend(T.Item, {
666
+ onRender : function(ct, position){
667
+ this.el = ct.createChild({tag:'span', cls:'xtb-sep'}, position);
668
+ }
669
+ });
670
+ Ext.reg('tbseparator', T.Separator);
671
+
672
+ /**
673
+ * @class Ext.Toolbar.Spacer
674
+ * @extends Ext.Toolbar.Item
675
+ * A simple element that adds extra horizontal space between items in a toolbar.
676
+ * By default a 2px wide space is added via css specification:<pre><code>
677
+ .x-toolbar .xtb-spacer {
678
+ width:2px;
679
+ }
680
+ * </code></pre>
681
+ * <p>Example usage:</p>
682
+ * <pre><code>
683
+ new Ext.Panel({
684
+ tbar : [
685
+ 'Item 1',
686
+ {xtype: 'tbspacer'}, // or ' '
687
+ 'Item 2',
688
+ // space width is also configurable via javascript
689
+ {xtype: 'tbspacer', width: 50}, // add a 50px space
690
+ 'Item 3'
691
+ ]
692
+ });
693
+ </code></pre>
694
+ * @constructor
695
+ * Creates a new Spacer
696
+ * @xtype tbspacer
697
+ */
698
+ T.Spacer = Ext.extend(T.Item, {
699
+ /**
700
+ * @cfg {Number} width
701
+ * The width of the spacer in pixels (defaults to 2px via css style <tt>.x-toolbar .xtb-spacer</tt>).
702
+ */
703
+
704
+ onRender : function(ct, position){
705
+ this.el = ct.createChild({tag:'div', cls:'xtb-spacer', style: this.width?'width:'+this.width+'px':''}, position);
706
+ }
707
+ });
708
+ Ext.reg('tbspacer', T.Spacer);
709
+
710
+ /**
711
+ * @class Ext.Toolbar.Fill
712
+ * @extends Ext.Toolbar.Spacer
713
+ * A non-rendering placeholder item which instructs the Toolbar's Layout to begin using
714
+ * the right-justified button container.
715
+ * <pre><code>
716
+ new Ext.Panel({
717
+ tbar : [
718
+ 'Item 1',
719
+ {xtype: 'tbfill'}, // or '->'
720
+ 'Item 2'
721
+ ]
722
+ });
723
+ </code></pre>
724
+ * @constructor
725
+ * Creates a new Fill
726
+ * @xtype tbfill
727
+ */
728
+ T.Fill = Ext.extend(T.Item, {
729
+ // private
730
+ render : Ext.emptyFn,
731
+ isFill : true
732
+ });
733
+ Ext.reg('tbfill', T.Fill);
734
+
735
+ /**
736
+ * @class Ext.Toolbar.TextItem
737
+ * @extends Ext.Toolbar.Item
738
+ * A simple class that renders text directly into a toolbar
739
+ * (with css class:<tt>'xtb-text'</tt>). Example usage:
740
+ * <pre><code>
741
+ new Ext.Panel({
742
+ tbar : [
743
+ {xtype: 'tbtext', text: 'Item 1'} // or simply 'Item 1'
744
+ ]
745
+ });
746
+ </code></pre>
747
+ * @constructor
748
+ * Creates a new TextItem
749
+ * @param {String/Object} text A text string, or a config object containing a <tt>text</tt> property
750
+ * @xtype tbtext
751
+ */
752
+ T.TextItem = Ext.extend(T.Item, {
753
+ constructor: function(config){
754
+ if (Ext.isString(config)) {
755
+ config = { autoEl: {cls: 'xtb-text', html: config }};
756
+ } else {
757
+ config.autoEl = {cls: 'xtb-text', html: config.text || ''};
758
+ }
759
+ T.TextItem.superclass.constructor.call(this, config);
760
+ },
761
+ /**
762
+ * Updates this item's text, setting the text to be used as innerHTML.
763
+ * @param {String} t The text to display (html accepted).
764
+ */
765
+ setText : function(t) {
766
+ if (this.rendered) {
767
+ this.el.dom.innerHTML = t;
768
+ } else {
769
+ this.autoEl.html = t;
770
+ }
771
+ }
772
+ });
773
+ Ext.reg('tbtext', T.TextItem);
774
+
775
+ // backwards compat
776
+ T.Button = Ext.extend(Ext.Button, {});
777
+ T.SplitButton = Ext.extend(Ext.SplitButton, {});
778
+ Ext.reg('tbbutton', T.Button);
779
+ Ext.reg('tbsplit', T.SplitButton);
780
+
781
+ })();
782
+ /**
783
+ * @class Ext.ButtonGroup
784
+ * @extends Ext.Panel
785
+ * Container for a group of buttons. Example usage:
786
+ * <pre><code>
787
+ var p = new Ext.Panel({
788
+ title: 'Panel with Button Group',
789
+ width: 300,
790
+ height:200,
791
+ renderTo: document.body,
792
+ html: 'whatever',
793
+ tbar: [{
794
+ xtype: 'buttongroup',
795
+ {@link #columns}: 3,
796
+ title: 'Clipboard',
797
+ items: [{
798
+ text: 'Paste',
799
+ scale: 'large',
800
+ rowspan: 3, iconCls: 'add',
801
+ iconAlign: 'top',
802
+ cls: 'x-btn-as-arrow'
803
+ },{
804
+ xtype:'splitbutton',
805
+ text: 'Menu Button',
806
+ scale: 'large',
807
+ rowspan: 3,
808
+ iconCls: 'add',
809
+ iconAlign: 'top',
810
+ arrowAlign:'bottom',
811
+ menu: [{text: 'Menu Item 1'}]
812
+ },{
813
+ xtype:'splitbutton', text: 'Cut', iconCls: 'add16', menu: [{text: 'Cut Menu Item'}]
814
+ },{
815
+ text: 'Copy', iconCls: 'add16'
816
+ },{
817
+ text: 'Format', iconCls: 'add16'
818
+ }]
819
+ }]
820
+ });
821
+ * </code></pre>
822
+ * @xtype buttongroup
823
+ */
824
+ Ext.ButtonGroup = Ext.extend(Ext.Panel, {
825
+ /**
826
+ * @cfg {Number} columns The <tt>columns</tt> configuration property passed to the
827
+ * {@link #layout configured layout manager}. See {@link Ext.layout.TableLayout#columns}.
828
+ */
829
+ /**
830
+ * @cfg {String} baseCls Defaults to <tt>'x-btn-group'</tt>. See {@link Ext.Panel#baseCls}.
831
+ */
832
+ baseCls: 'x-btn-group',
833
+ /**
834
+ * @cfg {String} layout Defaults to <tt>'table'</tt>. See {@link Ext.Container#layout}.
835
+ */
836
+ layout:'table',
837
+ defaultType: 'button',
838
+ /**
839
+ * @cfg {Boolean} frame Defaults to <tt>true</tt>. See {@link Ext.Panel#frame}.
840
+ */
841
+ frame: true,
842
+ internalDefaults: {removeMode: 'container', hideParent: true},
843
+
844
+ initComponent : function(){
845
+ this.layoutConfig = this.layoutConfig || {};
846
+ Ext.applyIf(this.layoutConfig, {
847
+ columns : this.columns
848
+ });
849
+ if(!this.title){
850
+ this.addClass('x-btn-group-notitle');
851
+ }
852
+ this.on('afterlayout', this.onAfterLayout, this);
853
+ Ext.ButtonGroup.superclass.initComponent.call(this);
854
+ },
855
+
856
+ applyDefaults : function(c){
857
+ c = Ext.ButtonGroup.superclass.applyDefaults.call(this, c);
858
+ var d = this.internalDefaults;
859
+ if(c.events){
860
+ Ext.applyIf(c.initialConfig, d);
861
+ Ext.apply(c, d);
862
+ }else{
863
+ Ext.applyIf(c, d);
864
+ }
865
+ return c;
866
+ },
867
+
868
+ onAfterLayout : function(){
869
+ var bodyWidth = this.body.getFrameWidth('lr') + this.body.dom.firstChild.offsetWidth;
870
+ this.body.setWidth(bodyWidth);
871
+ this.el.setWidth(bodyWidth + this.getFrameWidth());
872
+ }
873
+ /**
874
+ * @cfg {Array} tools @hide
875
+ */
876
+ });
877
+
878
+ Ext.reg('buttongroup', Ext.ButtonGroup);
879
+ /**
880
+ * @class Ext.PagingToolbar
881
+ * @extends Ext.Toolbar
882
+ * <p>As the amount of records increases, the time required for the browser to render
883
+ * them increases. Paging is used to reduce the amount of data exchanged with the client.
884
+ * Note: if there are more records/rows than can be viewed in the available screen area, vertical
885
+ * scrollbars will be added.</p>
886
+ * <p>Paging is typically handled on the server side (see exception below). The client sends
887
+ * parameters to the server side, which the server needs to interpret and then respond with the
888
+ * approprate data.</p>
889
+ * <p><b>Ext.PagingToolbar</b> is a specialized toolbar that is bound to a {@link Ext.data.Store}
890
+ * and provides automatic paging control. This Component {@link Ext.data.Store#load load}s blocks
891
+ * of data into the <tt>{@link #store}</tt> by passing {@link Ext.data.Store#paramNames paramNames} used for
892
+ * paging criteria.</p>
893
+ * <p>PagingToolbar is typically used as one of the Grid's toolbars:</p>
894
+ * <pre><code>
895
+ Ext.QuickTips.init(); // to display button quicktips
896
+
897
+ var myStore = new Ext.data.Store({
898
+ ...
899
+ });
900
+
901
+ var myPageSize = 25; // server script should only send back 25 items
902
+
903
+ var grid = new Ext.grid.GridPanel({
904
+ ...
905
+ store: myStore,
906
+ bbar: new Ext.PagingToolbar({
907
+ {@link #store}: myStore, // grid and PagingToolbar using same store
908
+ {@link #displayInfo}: true,
909
+ {@link #pageSize}: myPageSize,
910
+ {@link #prependButtons}: true,
911
+ items: [
912
+ 'text 1'
913
+ ]
914
+ })
915
+ });
916
+ * </code></pre>
917
+ *
918
+ * <p>To use paging, pass the paging requirements to the server when the store is first loaded.</p>
919
+ * <pre><code>
920
+ store.load({
921
+ params: {
922
+ start: 0, // specify params for the first page load if using paging
923
+ limit: myPageSize,
924
+ foo: 'bar'
925
+ }
926
+ });
927
+ * </code></pre>
928
+ * <p><u>Paging with Local Data</u></p>
929
+ * <p>Paging can also be accomplished with local data using extensions:</p>
930
+ * <div class="mdetail-params"><ul>
931
+ * <li><a href="http://extjs.com/forum/showthread.php?t=57386">Ext.ux.data.PagingStore</a></li>
932
+ * <li>Paging Memory Proxy (examples/ux/PagingMemoryProxy.js)</li>
933
+ * </ul></div>
934
+ * @constructor
935
+ * Create a new PagingToolbar
936
+ * @param {Object} config The config object
937
+ * @xtype paging
938
+ */
939
+ (function() {
940
+
941
+ var T = Ext.Toolbar;
942
+
943
+ Ext.PagingToolbar = Ext.extend(Ext.Toolbar, {
944
+ /**
945
+ * @cfg {Ext.data.Store} store
946
+ * The {@link Ext.data.Store} the paging toolbar should use as its data source (required).
947
+ */
948
+ /**
949
+ * @cfg {Boolean} displayInfo
950
+ * <tt>true</tt> to display the displayMsg (defaults to <tt>false</tt>)
951
+ */
952
+ /**
953
+ * @cfg {Number} pageSize
954
+ * The number of records to display per page (defaults to <tt>20</tt>)
955
+ */
956
+ pageSize : 20,
957
+ /**
958
+ * @cfg {Boolean} prependButtons
959
+ * <tt>true</tt> to insert any configured <tt>items</tt> <i>before</i> the paging buttons.
960
+ * Defaults to <tt>false</tt>.
961
+ */
962
+ /**
963
+ * @cfg {String} displayMsg
964
+ * The paging status message to display (defaults to <tt>'Displaying {0} - {1} of {2}'</tt>).
965
+ * Note that this string is formatted using the braced numbers <tt>{0}-{2}</tt> as tokens
966
+ * that are replaced by the values for start, end and total respectively. These tokens should
967
+ * be preserved when overriding this string if showing those values is desired.
968
+ */
969
+ displayMsg : 'Displaying {0} - {1} of {2}',
970
+ /**
971
+ * @cfg {String} emptyMsg
972
+ * The message to display when no records are found (defaults to 'No data to display')
973
+ */
974
+ emptyMsg : 'No data to display',
975
+ /**
976
+ * @cfg {String} beforePageText
977
+ * The text displayed before the input item (defaults to <tt>'Page'</tt>).
978
+ */
979
+ beforePageText : 'Page',
980
+ /**
981
+ * @cfg {String} afterPageText
982
+ * Customizable piece of the default paging text (defaults to <tt>'of {0}'</tt>). Note that
983
+ * this string is formatted using <tt>{0}</tt> as a token that is replaced by the number of
984
+ * total pages. This token should be preserved when overriding this string if showing the
985
+ * total page count is desired.
986
+ */
987
+ afterPageText : 'of {0}',
988
+ /**
989
+ * @cfg {String} firstText
990
+ * The quicktip text displayed for the first page button (defaults to <tt>'First Page'</tt>).
991
+ * <b>Note</b>: quick tips must be initialized for the quicktip to show.
992
+ */
993
+ firstText : 'First Page',
994
+ /**
995
+ * @cfg {String} prevText
996
+ * The quicktip text displayed for the previous page button (defaults to <tt>'Previous Page'</tt>).
997
+ * <b>Note</b>: quick tips must be initialized for the quicktip to show.
998
+ */
999
+ prevText : 'Previous Page',
1000
+ /**
1001
+ * @cfg {String} nextText
1002
+ * The quicktip text displayed for the next page button (defaults to <tt>'Next Page'</tt>).
1003
+ * <b>Note</b>: quick tips must be initialized for the quicktip to show.
1004
+ */
1005
+ nextText : 'Next Page',
1006
+ /**
1007
+ * @cfg {String} lastText
1008
+ * The quicktip text displayed for the last page button (defaults to <tt>'Last Page'</tt>).
1009
+ * <b>Note</b>: quick tips must be initialized for the quicktip to show.
1010
+ */
1011
+ lastText : 'Last Page',
1012
+ /**
1013
+ * @cfg {String} refreshText
1014
+ * The quicktip text displayed for the Refresh button (defaults to <tt>'Refresh'</tt>).
1015
+ * <b>Note</b>: quick tips must be initialized for the quicktip to show.
1016
+ */
1017
+ refreshText : 'Refresh',
1018
+
1019
+ /**
1020
+ * @deprecated
1021
+ * <b>The defaults for these should be set in the data store.</b>
1022
+ * Object mapping of parameter names used for load calls, initially set to:
1023
+ * <pre>{start: 'start', limit: 'limit'}</pre>
1024
+ */
1025
+
1026
+ /**
1027
+ * The number of records to display per page. See also <tt>{@link #cursor}</tt>.
1028
+ * @type Number
1029
+ * @property pageSize
1030
+ */
1031
+
1032
+ /**
1033
+ * Indicator for the record position. This property might be used to get the active page
1034
+ * number for example:<pre><code>
1035
+ * // t is reference to the paging toolbar instance
1036
+ * var activePage = Math.ceil((t.cursor + t.pageSize) / t.pageSize);
1037
+ * </code></pre>
1038
+ * @type Number
1039
+ * @property cursor
1040
+ */
1041
+
1042
+ initComponent : function(){
1043
+ var pagingItems = [this.first = new T.Button({
1044
+ tooltip: this.firstText,
1045
+ overflowText: this.firstText,
1046
+ iconCls: 'x-tbar-page-first',
1047
+ disabled: true,
1048
+ handler: this.moveFirst,
1049
+ scope: this
1050
+ }), this.prev = new T.Button({
1051
+ tooltip: this.prevText,
1052
+ overflowText: this.prevText,
1053
+ iconCls: 'x-tbar-page-prev',
1054
+ disabled: true,
1055
+ handler: this.movePrevious,
1056
+ scope: this
1057
+ }), '-', this.beforePageText,
1058
+ this.inputItem = new Ext.form.NumberField({
1059
+ cls: 'x-tbar-page-number',
1060
+ allowDecimals: false,
1061
+ allowNegative: false,
1062
+ enableKeyEvents: true,
1063
+ selectOnFocus: true,
1064
+ listeners: {
1065
+ scope: this,
1066
+ keydown: this.onPagingKeyDown,
1067
+ blur: this.onPagingBlur
1068
+ }
1069
+ }), this.afterTextItem = new T.TextItem({
1070
+ text: String.format(this.afterPageText, 1)
1071
+ }), '-', this.next = new T.Button({
1072
+ tooltip: this.nextText,
1073
+ overflowText: this.nextText,
1074
+ iconCls: 'x-tbar-page-next',
1075
+ disabled: true,
1076
+ handler: this.moveNext,
1077
+ scope: this
1078
+ }), this.last = new T.Button({
1079
+ tooltip: this.lastText,
1080
+ overflowText: this.lastText,
1081
+ iconCls: 'x-tbar-page-last',
1082
+ disabled: true,
1083
+ handler: this.moveLast,
1084
+ scope: this
1085
+ }), '-', this.refresh = new T.Button({
1086
+ tooltip: this.refreshText,
1087
+ overflowText: this.refreshText,
1088
+ iconCls: 'x-tbar-loading',
1089
+ handler: this.refresh,
1090
+ scope: this
1091
+ })];
1092
+
1093
+
1094
+ var userItems = this.items || this.buttons || [];
1095
+ if (this.prependButtons) {
1096
+ this.items = userItems.concat(pagingItems);
1097
+ }else{
1098
+ this.items = pagingItems.concat(userItems);
1099
+ }
1100
+ delete this.buttons;
1101
+ if(this.displayInfo){
1102
+ this.items.push('->');
1103
+ this.items.push(this.displayItem = new T.TextItem({}));
1104
+ }
1105
+ Ext.PagingToolbar.superclass.initComponent.call(this);
1106
+ this.addEvents(
1107
+ /**
1108
+ * @event change
1109
+ * Fires after the active page has been changed.
1110
+ * @param {Ext.PagingToolbar} this
1111
+ * @param {Object} pageData An object that has these properties:<ul>
1112
+ * <li><code>total</code> : Number <div class="sub-desc">The total number of records in the dataset as
1113
+ * returned by the server</div></li>
1114
+ * <li><code>activePage</code> : Number <div class="sub-desc">The current page number</div></li>
1115
+ * <li><code>pages</code> : Number <div class="sub-desc">The total number of pages (calculated from
1116
+ * the total number of records in the dataset as returned by the server and the current {@link #pageSize})</div></li>
1117
+ * </ul>
1118
+ */
1119
+ 'change',
1120
+ /**
1121
+ * @event beforechange
1122
+ * Fires just before the active page is changed.
1123
+ * Return false to prevent the active page from being changed.
1124
+ * @param {Ext.PagingToolbar} this
1125
+ * @param {Object} params An object hash of the parameters which the PagingToolbar will send when
1126
+ * loading the required page. This will contain:<ul>
1127
+ * <li><code>start</code> : Number <div class="sub-desc">The starting row number for the next page of records to
1128
+ * be retrieved from the server</div></li>
1129
+ * <li><code>limit</code> : Number <div class="sub-desc">The number of records to be retrieved from the server</div></li>
1130
+ * </ul>
1131
+ * <p>(note: the names of the <b>start</b> and <b>limit</b> properties are determined
1132
+ * by the store's {@link Ext.data.Store#paramNames paramNames} property.)</p>
1133
+ * <p>Parameters may be added as required in the event handler.</p>
1134
+ */
1135
+ 'beforechange'
1136
+ );
1137
+ this.on('afterlayout', this.onFirstLayout, this, {single: true});
1138
+ this.cursor = 0;
1139
+ this.bindStore(this.store);
1140
+ },
1141
+
1142
+ // private
1143
+ onFirstLayout : function(){
1144
+ if(this.dsLoaded){
1145
+ this.onLoad.apply(this, this.dsLoaded);
1146
+ }
1147
+ },
1148
+
1149
+ // private
1150
+ updateInfo : function(){
1151
+ if(this.displayItem){
1152
+ var count = this.store.getCount();
1153
+ var msg = count == 0 ?
1154
+ this.emptyMsg :
1155
+ String.format(
1156
+ this.displayMsg,
1157
+ this.cursor+1, this.cursor+count, this.store.getTotalCount()
1158
+ );
1159
+ this.displayItem.setText(msg);
1160
+ }
1161
+ },
1162
+
1163
+ // private
1164
+ onLoad : function(store, r, o){
1165
+ if(!this.rendered){
1166
+ this.dsLoaded = [store, r, o];
1167
+ return;
1168
+ }
1169
+ var p = this.getParams();
1170
+ this.cursor = (o.params && o.params[p.start]) ? o.params[p.start] : 0;
1171
+ var d = this.getPageData(), ap = d.activePage, ps = d.pages;
1172
+
1173
+ this.afterTextItem.setText(String.format(this.afterPageText, d.pages));
1174
+ this.inputItem.setValue(ap);
1175
+ this.first.setDisabled(ap == 1);
1176
+ this.prev.setDisabled(ap == 1);
1177
+ this.next.setDisabled(ap == ps);
1178
+ this.last.setDisabled(ap == ps);
1179
+ this.refresh.enable();
1180
+ this.updateInfo();
1181
+ this.fireEvent('change', this, d);
1182
+ },
1183
+
1184
+ // private
1185
+ getPageData : function(){
1186
+ var total = this.store.getTotalCount();
1187
+ return {
1188
+ total : total,
1189
+ activePage : Math.ceil((this.cursor+this.pageSize)/this.pageSize),
1190
+ pages : total < this.pageSize ? 1 : Math.ceil(total/this.pageSize)
1191
+ };
1192
+ },
1193
+
1194
+ /**
1195
+ * Change the active page
1196
+ * @param {Integer} page The page to display
1197
+ */
1198
+ changePage : function(page){
1199
+ this.doLoad(((page-1) * this.pageSize).constrain(0, this.store.getTotalCount()));
1200
+ },
1201
+
1202
+ // private
1203
+ onLoadError : function(){
1204
+ if(!this.rendered){
1205
+ return;
1206
+ }
1207
+ this.refresh.enable();
1208
+ },
1209
+
1210
+ // private
1211
+ readPage : function(d){
1212
+ var v = this.inputItem.getValue(), pageNum;
1213
+ if (!v || isNaN(pageNum = parseInt(v, 10))) {
1214
+ this.inputItem.setValue(d.activePage);
1215
+ return false;
1216
+ }
1217
+ return pageNum;
1218
+ },
1219
+
1220
+ onPagingFocus : function(){
1221
+ this.inputItem.select();
1222
+ },
1223
+
1224
+ //private
1225
+ onPagingBlur : function(e){
1226
+ this.inputItem.setValue(this.getPageData().activePage);
1227
+ },
1228
+
1229
+ // private
1230
+ onPagingKeyDown : function(field, e){
1231
+ var k = e.getKey(), d = this.getPageData(), pageNum;
1232
+ if (k == e.RETURN) {
1233
+ e.stopEvent();
1234
+ pageNum = this.readPage(d);
1235
+ if(pageNum !== false){
1236
+ pageNum = Math.min(Math.max(1, pageNum), d.pages) - 1;
1237
+ this.doLoad(pageNum * this.pageSize);
1238
+ }
1239
+ }else if (k == e.HOME || k == e.END){
1240
+ e.stopEvent();
1241
+ pageNum = k == e.HOME ? 1 : d.pages;
1242
+ field.setValue(pageNum);
1243
+ }else if (k == e.UP || k == e.PAGEUP || k == e.DOWN || k == e.PAGEDOWN){
1244
+ e.stopEvent();
1245
+ if((pageNum = this.readPage(d))){
1246
+ var increment = e.shiftKey ? 10 : 1;
1247
+ if(k == e.DOWN || k == e.PAGEDOWN){
1248
+ increment *= -1;
1249
+ }
1250
+ pageNum += increment;
1251
+ if(pageNum >= 1 & pageNum <= d.pages){
1252
+ field.setValue(pageNum);
1253
+ }
1254
+ }
1255
+ }
1256
+ },
1257
+
1258
+ // private
1259
+ getParams : function(){
1260
+ //retain backwards compat, allow params on the toolbar itself, if they exist.
1261
+ return this.paramNames || this.store.paramNames;
1262
+ },
1263
+
1264
+ // private
1265
+ beforeLoad : function(){
1266
+ if(this.rendered && this.refresh){
1267
+ this.refresh.disable();
1268
+ }
1269
+ },
1270
+
1271
+ // private
1272
+ doLoad : function(start){
1273
+ var o = {}, pn = this.getParams();
1274
+ o[pn.start] = start;
1275
+ o[pn.limit] = this.pageSize;
1276
+ if(this.fireEvent('beforechange', this, o) !== false){
1277
+ this.store.load({params:o});
1278
+ }
1279
+ },
1280
+
1281
+ /**
1282
+ * Move to the first page, has the same effect as clicking the 'first' button.
1283
+ */
1284
+ moveFirst : function(){
1285
+ this.doLoad(0);
1286
+ },
1287
+
1288
+ /**
1289
+ * Move to the previous page, has the same effect as clicking the 'previous' button.
1290
+ */
1291
+ movePrevious : function(){
1292
+ this.doLoad(Math.max(0, this.cursor-this.pageSize));
1293
+ },
1294
+
1295
+ /**
1296
+ * Move to the next page, has the same effect as clicking the 'next' button.
1297
+ */
1298
+ moveNext : function(){
1299
+ this.doLoad(this.cursor+this.pageSize);
1300
+ },
1301
+
1302
+ /**
1303
+ * Move to the last page, has the same effect as clicking the 'last' button.
1304
+ */
1305
+ moveLast : function(){
1306
+ var total = this.store.getTotalCount(),
1307
+ extra = total % this.pageSize;
1308
+
1309
+ this.doLoad(extra ? (total - extra) : total - this.pageSize);
1310
+ },
1311
+
1312
+ /**
1313
+ * Refresh the current page, has the same effect as clicking the 'refresh' button.
1314
+ */
1315
+ refresh : function(){
1316
+ this.doLoad(this.cursor);
1317
+ },
1318
+
1319
+ /**
1320
+ * Binds the paging toolbar to the specified {@link Ext.data.Store}
1321
+ * @param {Store} store The store to bind to this toolbar
1322
+ * @param {Boolean} initial (Optional) true to not remove listeners
1323
+ */
1324
+ bindStore : function(store, initial){
1325
+ var doLoad;
1326
+ if(!initial && this.store){
1327
+ this.store.un('beforeload', this.beforeLoad, this);
1328
+ this.store.un('load', this.onLoad, this);
1329
+ this.store.un('exception', this.onLoadError, this);
1330
+ if(store !== this.store && this.store.autoDestroy){
1331
+ this.store.destroy();
1332
+ }
1333
+ }
1334
+ if(store){
1335
+ store = Ext.StoreMgr.lookup(store);
1336
+ store.on({
1337
+ scope: this,
1338
+ beforeload: this.beforeLoad,
1339
+ load: this.onLoad,
1340
+ exception: this.onLoadError
1341
+ });
1342
+ doLoad = store.getCount() > 0;
1343
+ }
1344
+ this.store = store;
1345
+ if(doLoad){
1346
+ this.onLoad(store, null, {});
1347
+ }
1348
+ },
1349
+
1350
+ /**
1351
+ * Unbinds the paging toolbar from the specified {@link Ext.data.Store} <b>(deprecated)</b>
1352
+ * @param {Ext.data.Store} store The data store to unbind
1353
+ */
1354
+ unbind : function(store){
1355
+ this.bindStore(null);
1356
+ },
1357
+
1358
+ /**
1359
+ * Binds the paging toolbar to the specified {@link Ext.data.Store} <b>(deprecated)</b>
1360
+ * @param {Ext.data.Store} store The data store to bind
1361
+ */
1362
+ bind : function(store){
1363
+ this.bindStore(store);
1364
+ },
1365
+
1366
+ // private
1367
+ onDestroy : function(){
1368
+ this.bindStore(null);
1369
+ Ext.PagingToolbar.superclass.onDestroy.call(this);
1370
+ }
1371
+ });
1372
+
1373
+ })();
1374
+ Ext.reg('paging', Ext.PagingToolbar);