extjs-rails 4.1.0.alpha1

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 (517) hide show
  1. data/.gitignore +18 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +36 -0
  4. data/README.md +29 -0
  5. data/Rakefile +2 -0
  6. data/app/assets/javascripts/extjs-rails/extjs-rails.js +1 -0
  7. data/app/assets/javascripts/extjs-rails/index.js.erb +9 -0
  8. data/app/assets/javascripts/extjs-rails/sdk.jsb3 +2017 -0
  9. data/app/assets/javascripts/extjs-rails/src/AbstractComponent.js +3290 -0
  10. data/app/assets/javascripts/extjs-rails/src/AbstractManager.js +144 -0
  11. data/app/assets/javascripts/extjs-rails/src/AbstractPlugin.js +72 -0
  12. data/app/assets/javascripts/extjs-rails/src/Action.js +276 -0
  13. data/app/assets/javascripts/extjs-rails/src/Ajax.js +99 -0
  14. data/app/assets/javascripts/extjs-rails/src/Component.js +1344 -0
  15. data/app/assets/javascripts/extjs-rails/src/ComponentLoader.js +202 -0
  16. data/app/assets/javascripts/extjs-rails/src/ComponentManager.js +47 -0
  17. data/app/assets/javascripts/extjs-rails/src/ComponentQuery.js +521 -0
  18. data/app/assets/javascripts/extjs-rails/src/Editor.js +494 -0
  19. data/app/assets/javascripts/extjs-rails/src/ElementLoader.js +404 -0
  20. data/app/assets/javascripts/extjs-rails/src/FocusManager.js +712 -0
  21. data/app/assets/javascripts/extjs-rails/src/Img.js +111 -0
  22. data/app/assets/javascripts/extjs-rails/src/Layer.js +543 -0
  23. data/app/assets/javascripts/extjs-rails/src/LoadMask.js +432 -0
  24. data/app/assets/javascripts/extjs-rails/src/ModelManager.js +186 -0
  25. data/app/assets/javascripts/extjs-rails/src/PluginManager.js +110 -0
  26. data/app/assets/javascripts/extjs-rails/src/ProgressBar.js +336 -0
  27. data/app/assets/javascripts/extjs-rails/src/Shadow.js +233 -0
  28. data/app/assets/javascripts/extjs-rails/src/ShadowPool.js +43 -0
  29. data/app/assets/javascripts/extjs-rails/src/Template.js +331 -0
  30. data/app/assets/javascripts/extjs-rails/src/XTemplate.js +365 -0
  31. data/app/assets/javascripts/extjs-rails/src/XTemplateCompiler.js +450 -0
  32. data/app/assets/javascripts/extjs-rails/src/XTemplateParser.js +249 -0
  33. data/app/assets/javascripts/extjs-rails/src/ZIndexManager.js +519 -0
  34. data/app/assets/javascripts/extjs-rails/src/app/Application.js +271 -0
  35. data/app/assets/javascripts/extjs-rails/src/app/Controller.js +458 -0
  36. data/app/assets/javascripts/extjs-rails/src/app/EventBus.js +112 -0
  37. data/app/assets/javascripts/extjs-rails/src/button/Button.js +1483 -0
  38. data/app/assets/javascripts/extjs-rails/src/button/Cycle.js +215 -0
  39. data/app/assets/javascripts/extjs-rails/src/button/Split.js +99 -0
  40. data/app/assets/javascripts/extjs-rails/src/chart/Callout.js +140 -0
  41. data/app/assets/javascripts/extjs-rails/src/chart/Chart.js +966 -0
  42. data/app/assets/javascripts/extjs-rails/src/chart/Highlight.js +172 -0
  43. data/app/assets/javascripts/extjs-rails/src/chart/Label.js +241 -0
  44. data/app/assets/javascripts/extjs-rails/src/chart/Legend.js +474 -0
  45. data/app/assets/javascripts/extjs-rails/src/chart/LegendItem.js +217 -0
  46. data/app/assets/javascripts/extjs-rails/src/chart/Mask.js +230 -0
  47. data/app/assets/javascripts/extjs-rails/src/chart/MaskLayer.js +48 -0
  48. data/app/assets/javascripts/extjs-rails/src/chart/Navigation.js +79 -0
  49. data/app/assets/javascripts/extjs-rails/src/chart/Shape.js +106 -0
  50. data/app/assets/javascripts/extjs-rails/src/chart/Tip.js +98 -0
  51. data/app/assets/javascripts/extjs-rails/src/chart/TipSurface.js +42 -0
  52. data/app/assets/javascripts/extjs-rails/src/chart/axis/Abstract.js +73 -0
  53. data/app/assets/javascripts/extjs-rails/src/chart/axis/Axis.js +961 -0
  54. data/app/assets/javascripts/extjs-rails/src/chart/axis/Category.js +130 -0
  55. data/app/assets/javascripts/extjs-rails/src/chart/axis/Gauge.js +203 -0
  56. data/app/assets/javascripts/extjs-rails/src/chart/axis/Numeric.js +235 -0
  57. data/app/assets/javascripts/extjs-rails/src/chart/axis/Radial.js +204 -0
  58. data/app/assets/javascripts/extjs-rails/src/chart/axis/Time.js +135 -0
  59. data/app/assets/javascripts/extjs-rails/src/chart/series/Area.js +803 -0
  60. data/app/assets/javascripts/extjs-rails/src/chart/series/Bar.js +853 -0
  61. data/app/assets/javascripts/extjs-rails/src/chart/series/Cartesian.js +328 -0
  62. data/app/assets/javascripts/extjs-rails/src/chart/series/Column.js +104 -0
  63. data/app/assets/javascripts/extjs-rails/src/chart/series/Gauge.js +490 -0
  64. data/app/assets/javascripts/extjs-rails/src/chart/series/Line.js +1104 -0
  65. data/app/assets/javascripts/extjs-rails/src/chart/series/Pie.js +1072 -0
  66. data/app/assets/javascripts/extjs-rails/src/chart/series/Radar.js +440 -0
  67. data/app/assets/javascripts/extjs-rails/src/chart/series/Scatter.js +668 -0
  68. data/app/assets/javascripts/extjs-rails/src/chart/series/Series.js +443 -0
  69. data/app/assets/javascripts/extjs-rails/src/chart/theme/Base.js +175 -0
  70. data/app/assets/javascripts/extjs-rails/src/chart/theme/Theme.js +253 -0
  71. data/app/assets/javascripts/extjs-rails/src/container/AbstractContainer.js +1062 -0
  72. data/app/assets/javascripts/extjs-rails/src/container/ButtonGroup.js +143 -0
  73. data/app/assets/javascripts/extjs-rails/src/container/Container.js +212 -0
  74. data/app/assets/javascripts/extjs-rails/src/container/DockingContainer.js +265 -0
  75. data/app/assets/javascripts/extjs-rails/src/container/Viewport.js +184 -0
  76. data/app/assets/javascripts/extjs-rails/src/core/dom/Element.form.js +50 -0
  77. data/app/assets/javascripts/extjs-rails/src/core/dom/Element.static-more.js +159 -0
  78. data/app/assets/javascripts/extjs-rails/src/core/examples/index.html +321 -0
  79. data/app/assets/javascripts/extjs-rails/src/core/examples/index.js +6 -0
  80. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CTO.js +25 -0
  81. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CoolGuy.js +20 -0
  82. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Developer.js +43 -0
  83. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Gun.js +3 -0
  84. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/HumanResource.js +23 -0
  85. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Musician.js +20 -0
  86. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Person.js +50 -0
  87. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanComposeSongs.js +9 -0
  88. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanPlayGuitar.js +9 -0
  89. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanSing.js +18 -0
  90. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/A.js +3 -0
  91. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/B.js +3 -0
  92. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/C.js +3 -0
  93. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/D.js +3 -0
  94. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/E.js +3 -0
  95. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/A.js +3 -0
  96. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/B.js +4 -0
  97. data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/C.js +3 -0
  98. data/app/assets/javascripts/extjs-rails/src/core/src/EventManager.js +1167 -0
  99. data/app/assets/javascripts/extjs-rails/src/core/src/EventObject.js +883 -0
  100. data/app/assets/javascripts/extjs-rails/src/core/src/Ext-more.js +1283 -0
  101. data/app/assets/javascripts/extjs-rails/src/core/src/Ext.js +736 -0
  102. data/app/assets/javascripts/extjs-rails/src/core/src/Support.js +662 -0
  103. data/app/assets/javascripts/extjs-rails/src/core/src/class/Base.js +1085 -0
  104. data/app/assets/javascripts/extjs-rails/src/core/src/class/Class.js +676 -0
  105. data/app/assets/javascripts/extjs-rails/src/core/src/class/ClassManager.js +1591 -0
  106. data/app/assets/javascripts/extjs-rails/src/core/src/class/Loader.js +1423 -0
  107. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.alignment.js +173 -0
  108. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.insertion.js +193 -0
  109. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.js +681 -0
  110. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.position.js +356 -0
  111. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.static.js +474 -0
  112. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.style.js +851 -0
  113. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.traversal.js +180 -0
  114. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractHelper.js +291 -0
  115. data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractQuery.js +72 -0
  116. data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElement.js +75 -0
  117. data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElementLite.js +436 -0
  118. data/app/assets/javascripts/extjs-rails/src/core/src/dom/DomQuery-aria.js +1049 -0
  119. data/app/assets/javascripts/extjs-rails/src/core/src/env/Browser.js +186 -0
  120. data/app/assets/javascripts/extjs-rails/src/core/src/env/FeatureDetector.js +274 -0
  121. data/app/assets/javascripts/extjs-rails/src/core/src/env/OS.js +141 -0
  122. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Array.js +1205 -0
  123. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Date.js +1463 -0
  124. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Error.js +326 -0
  125. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Function.js +485 -0
  126. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Number.js +175 -0
  127. data/app/assets/javascripts/extjs-rails/src/core/src/lang/Object.js +606 -0
  128. data/app/assets/javascripts/extjs-rails/src/core/src/lang/String.js +333 -0
  129. data/app/assets/javascripts/extjs-rails/src/core/src/misc/JSON.js +236 -0
  130. data/app/assets/javascripts/extjs-rails/src/core/src/perf/Accumulator.js +244 -0
  131. data/app/assets/javascripts/extjs-rails/src/core/src/perf/Monitor.js +197 -0
  132. data/app/assets/javascripts/extjs-rails/src/core/src/util/DelayedTask.js +71 -0
  133. data/app/assets/javascripts/extjs-rails/src/core/src/util/Event.js +215 -0
  134. data/app/assets/javascripts/extjs-rails/src/core/src/util/Format.js +551 -0
  135. data/app/assets/javascripts/extjs-rails/src/core/src/util/TaskManager.js +417 -0
  136. data/app/assets/javascripts/extjs-rails/src/core/src/version/Version.js +364 -0
  137. data/app/assets/javascripts/extjs-rails/src/core/test/unit/README.MD +91 -0
  138. data/app/assets/javascripts/extjs-rails/src/core/test/unit/bootstrap.js +39 -0
  139. data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build-data.js +34 -0
  140. data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build.sh +2 -0
  141. data/app/assets/javascripts/extjs-rails/src/core/test/unit/data.js +27 -0
  142. data/app/assets/javascripts/extjs-rails/src/core/test/unit/index.html +15 -0
  143. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom.html +40 -0
  144. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/extjs-api.js +12 -0
  145. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/platform-api.js +134 -0
  146. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/sanity.js +4 -0
  147. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api-out.js +128 -0
  148. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api.js +89 -0
  149. data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/env/Environment.js +357 -0
  150. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/APITest.js +37 -0
  151. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/jsb3.js +14 -0
  152. data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/test-setup.js +137 -0
  153. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/EventManager.js +629 -0
  154. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-mess.backup +198 -0
  155. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-more.js +520 -0
  156. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext.js +1550 -0
  157. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Support.js +250 -0
  158. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Base.js +47 -0
  159. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Class.js +561 -0
  160. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/ClassManager.js +555 -0
  161. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/CompositeElementLite.js +409 -0
  162. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/DomHelper.js +444 -0
  163. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.insertion.js +342 -0
  164. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.js +731 -0
  165. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.static.js +201 -0
  166. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.style.js +118 -0
  167. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.traversal.js +336 -0
  168. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Array.js +1229 -0
  169. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Date.js +697 -0
  170. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Error.js +277 -0
  171. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Function.js +536 -0
  172. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Number.js +323 -0
  173. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Object.js +591 -0
  174. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/String.js +451 -0
  175. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/misc/JSON.js +252 -0
  176. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/util/Format.js +521 -0
  177. data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/version/Version.js +148 -0
  178. data/app/assets/javascripts/extjs-rails/src/core/test/unit/specs.html +19 -0
  179. data/app/assets/javascripts/extjs-rails/src/data/AbstractStore.js +887 -0
  180. data/app/assets/javascripts/extjs-rails/src/data/ArrayStore.js +74 -0
  181. data/app/assets/javascripts/extjs-rails/src/data/Batch.js +236 -0
  182. data/app/assets/javascripts/extjs-rails/src/data/BufferStore.js +13 -0
  183. data/app/assets/javascripts/extjs-rails/src/data/Connection.js +969 -0
  184. data/app/assets/javascripts/extjs-rails/src/data/DirectStore.js +50 -0
  185. data/app/assets/javascripts/extjs-rails/src/data/Errors.js +52 -0
  186. data/app/assets/javascripts/extjs-rails/src/data/Field.js +341 -0
  187. data/app/assets/javascripts/extjs-rails/src/data/IdGenerator.js +198 -0
  188. data/app/assets/javascripts/extjs-rails/src/data/JsonP.js +253 -0
  189. data/app/assets/javascripts/extjs-rails/src/data/JsonPStore.js +51 -0
  190. data/app/assets/javascripts/extjs-rails/src/data/JsonStore.js +60 -0
  191. data/app/assets/javascripts/extjs-rails/src/data/Model.js +1673 -0
  192. data/app/assets/javascripts/extjs-rails/src/data/NodeInterface.js +1294 -0
  193. data/app/assets/javascripts/extjs-rails/src/data/NodeStore.js +254 -0
  194. data/app/assets/javascripts/extjs-rails/src/data/Operation.js +331 -0
  195. data/app/assets/javascripts/extjs-rails/src/data/Request.js +40 -0
  196. data/app/assets/javascripts/extjs-rails/src/data/ResultSet.js +56 -0
  197. data/app/assets/javascripts/extjs-rails/src/data/SequentialIdGenerator.js +61 -0
  198. data/app/assets/javascripts/extjs-rails/src/data/SortTypes.js +125 -0
  199. data/app/assets/javascripts/extjs-rails/src/data/Store.js +2609 -0
  200. data/app/assets/javascripts/extjs-rails/src/data/StoreManager.js +156 -0
  201. data/app/assets/javascripts/extjs-rails/src/data/Tree.js +290 -0
  202. data/app/assets/javascripts/extjs-rails/src/data/TreeStore.js +655 -0
  203. data/app/assets/javascripts/extjs-rails/src/data/Types.js +190 -0
  204. data/app/assets/javascripts/extjs-rails/src/data/UuidGenerator.js +215 -0
  205. data/app/assets/javascripts/extjs-rails/src/data/XmlStore.js +76 -0
  206. data/app/assets/javascripts/extjs-rails/src/data/association/Association.js +243 -0
  207. data/app/assets/javascripts/extjs-rails/src/data/association/BelongsTo.js +291 -0
  208. data/app/assets/javascripts/extjs-rails/src/data/association/HasMany.js +289 -0
  209. data/app/assets/javascripts/extjs-rails/src/data/association/HasOne.js +304 -0
  210. data/app/assets/javascripts/extjs-rails/src/data/proxy/Ajax.js +282 -0
  211. data/app/assets/javascripts/extjs-rails/src/data/proxy/Client.js +21 -0
  212. data/app/assets/javascripts/extjs-rails/src/data/proxy/Direct.js +181 -0
  213. data/app/assets/javascripts/extjs-rails/src/data/proxy/JsonP.js +313 -0
  214. data/app/assets/javascripts/extjs-rails/src/data/proxy/LocalStorage.js +69 -0
  215. data/app/assets/javascripts/extjs-rails/src/data/proxy/Memory.js +156 -0
  216. data/app/assets/javascripts/extjs-rails/src/data/proxy/Proxy.js +433 -0
  217. data/app/assets/javascripts/extjs-rails/src/data/proxy/Rest.js +173 -0
  218. data/app/assets/javascripts/extjs-rails/src/data/proxy/Server.js +460 -0
  219. data/app/assets/javascripts/extjs-rails/src/data/proxy/SessionStorage.js +39 -0
  220. data/app/assets/javascripts/extjs-rails/src/data/proxy/WebStorage.js +546 -0
  221. data/app/assets/javascripts/extjs-rails/src/data/reader/Array.js +68 -0
  222. data/app/assets/javascripts/extjs-rails/src/data/reader/Json.js +383 -0
  223. data/app/assets/javascripts/extjs-rails/src/data/reader/Reader.js +735 -0
  224. data/app/assets/javascripts/extjs-rails/src/data/reader/Xml.js +292 -0
  225. data/app/assets/javascripts/extjs-rails/src/data/validations.js +149 -0
  226. data/app/assets/javascripts/extjs-rails/src/data/writer/Json.js +81 -0
  227. data/app/assets/javascripts/extjs-rails/src/data/writer/Writer.js +147 -0
  228. data/app/assets/javascripts/extjs-rails/src/data/writer/Xml.js +88 -0
  229. data/app/assets/javascripts/extjs-rails/src/dd/DD.js +300 -0
  230. data/app/assets/javascripts/extjs-rails/src/dd/DDProxy.js +204 -0
  231. data/app/assets/javascripts/extjs-rails/src/dd/DDTarget.js +171 -0
  232. data/app/assets/javascripts/extjs-rails/src/dd/DragDrop.js +1101 -0
  233. data/app/assets/javascripts/extjs-rails/src/dd/DragDropManager.js +1264 -0
  234. data/app/assets/javascripts/extjs-rails/src/dd/DragSource.js +392 -0
  235. data/app/assets/javascripts/extjs-rails/src/dd/DragTracker.js +562 -0
  236. data/app/assets/javascripts/extjs-rails/src/dd/DragZone.js +137 -0
  237. data/app/assets/javascripts/extjs-rails/src/dd/DropTarget.js +118 -0
  238. data/app/assets/javascripts/extjs-rails/src/dd/DropZone.js +254 -0
  239. data/app/assets/javascripts/extjs-rails/src/dd/Registry.js +117 -0
  240. data/app/assets/javascripts/extjs-rails/src/dd/ScrollManager.js +218 -0
  241. data/app/assets/javascripts/extjs-rails/src/dd/StatusProxy.js +179 -0
  242. data/app/assets/javascripts/extjs-rails/src/diag/layout/Context.js +523 -0
  243. data/app/assets/javascripts/extjs-rails/src/diag/layout/ContextItem.js +179 -0
  244. data/app/assets/javascripts/extjs-rails/src/direct/Event.js +35 -0
  245. data/app/assets/javascripts/extjs-rails/src/direct/ExceptionEvent.js +16 -0
  246. data/app/assets/javascripts/extjs-rails/src/direct/JsonProvider.js +82 -0
  247. data/app/assets/javascripts/extjs-rails/src/direct/Manager.js +263 -0
  248. data/app/assets/javascripts/extjs-rails/src/direct/PollingProvider.js +156 -0
  249. data/app/assets/javascripts/extjs-rails/src/direct/Provider.js +96 -0
  250. data/app/assets/javascripts/extjs-rails/src/direct/RemotingEvent.js +24 -0
  251. data/app/assets/javascripts/extjs-rails/src/direct/RemotingMethod.js +100 -0
  252. data/app/assets/javascripts/extjs-rails/src/direct/RemotingProvider.js +510 -0
  253. data/app/assets/javascripts/extjs-rails/src/direct/Transaction.js +41 -0
  254. data/app/assets/javascripts/extjs-rails/src/dom/Element.alignment.js +378 -0
  255. data/app/assets/javascripts/extjs-rails/src/dom/Element.anim.js +962 -0
  256. data/app/assets/javascripts/extjs-rails/src/dom/Element.dd.js +40 -0
  257. data/app/assets/javascripts/extjs-rails/src/dom/Element.fx.js +194 -0
  258. data/app/assets/javascripts/extjs-rails/src/dom/Element.js +1407 -0
  259. data/app/assets/javascripts/extjs-rails/src/dom/Element.position.js +501 -0
  260. data/app/assets/javascripts/extjs-rails/src/dom/Element.scroll.js +214 -0
  261. data/app/assets/javascripts/extjs-rails/src/dom/Element.style.js +792 -0
  262. data/app/assets/javascripts/extjs-rails/src/dom/Element.traversal.js +8 -0
  263. data/app/assets/javascripts/extjs-rails/src/dom/Helper.js +466 -0
  264. data/app/assets/javascripts/extjs-rails/src/dom/Query.js +1067 -0
  265. data/app/assets/javascripts/extjs-rails/src/draw/Color.js +303 -0
  266. data/app/assets/javascripts/extjs-rails/src/draw/Component.js +245 -0
  267. data/app/assets/javascripts/extjs-rails/src/draw/CompositeSprite.js +299 -0
  268. data/app/assets/javascripts/extjs-rails/src/draw/Draw.js +1217 -0
  269. data/app/assets/javascripts/extjs-rails/src/draw/Matrix.js +183 -0
  270. data/app/assets/javascripts/extjs-rails/src/draw/Sprite.js +554 -0
  271. data/app/assets/javascripts/extjs-rails/src/draw/SpriteDD.js +87 -0
  272. data/app/assets/javascripts/extjs-rails/src/draw/Surface.js +1001 -0
  273. data/app/assets/javascripts/extjs-rails/src/draw/Text.js +175 -0
  274. data/app/assets/javascripts/extjs-rails/src/draw/engine/ImageExporter.js +106 -0
  275. data/app/assets/javascripts/extjs-rails/src/draw/engine/Svg.js +734 -0
  276. data/app/assets/javascripts/extjs-rails/src/draw/engine/SvgExporter.js +280 -0
  277. data/app/assets/javascripts/extjs-rails/src/draw/engine/Vml.js +916 -0
  278. data/app/assets/javascripts/extjs-rails/src/flash/Component.js +248 -0
  279. data/app/assets/javascripts/extjs-rails/src/form/Basic.js +1018 -0
  280. data/app/assets/javascripts/extjs-rails/src/form/CheckboxGroup.js +441 -0
  281. data/app/assets/javascripts/extjs-rails/src/form/CheckboxManager.js +26 -0
  282. data/app/assets/javascripts/extjs-rails/src/form/FieldAncestor.js +210 -0
  283. data/app/assets/javascripts/extjs-rails/src/form/FieldContainer.js +290 -0
  284. data/app/assets/javascripts/extjs-rails/src/form/FieldSet.js +506 -0
  285. data/app/assets/javascripts/extjs-rails/src/form/Label.js +110 -0
  286. data/app/assets/javascripts/extjs-rails/src/form/Labelable.js +764 -0
  287. data/app/assets/javascripts/extjs-rails/src/form/Panel.js +335 -0
  288. data/app/assets/javascripts/extjs-rails/src/form/RadioGroup.js +124 -0
  289. data/app/assets/javascripts/extjs-rails/src/form/RadioManager.js +26 -0
  290. data/app/assets/javascripts/extjs-rails/src/form/action/Action.js +307 -0
  291. data/app/assets/javascripts/extjs-rails/src/form/action/DirectLoad.js +107 -0
  292. data/app/assets/javascripts/extjs-rails/src/form/action/DirectSubmit.js +119 -0
  293. data/app/assets/javascripts/extjs-rails/src/form/action/Load.js +120 -0
  294. data/app/assets/javascripts/extjs-rails/src/form/action/StandardSubmit.js +34 -0
  295. data/app/assets/javascripts/extjs-rails/src/form/action/Submit.js +257 -0
  296. data/app/assets/javascripts/extjs-rails/src/form/field/Base.js +813 -0
  297. data/app/assets/javascripts/extjs-rails/src/form/field/Checkbox.js +505 -0
  298. data/app/assets/javascripts/extjs-rails/src/form/field/ComboBox.js +1427 -0
  299. data/app/assets/javascripts/extjs-rails/src/form/field/Date.js +578 -0
  300. data/app/assets/javascripts/extjs-rails/src/form/field/Display.js +155 -0
  301. data/app/assets/javascripts/extjs-rails/src/form/field/Field.js +430 -0
  302. data/app/assets/javascripts/extjs-rails/src/form/field/File.js +265 -0
  303. data/app/assets/javascripts/extjs-rails/src/form/field/Hidden.js +75 -0
  304. data/app/assets/javascripts/extjs-rails/src/form/field/HtmlEditor.js +1439 -0
  305. data/app/assets/javascripts/extjs-rails/src/form/field/Number.js +380 -0
  306. data/app/assets/javascripts/extjs-rails/src/form/field/Picker.js +321 -0
  307. data/app/assets/javascripts/extjs-rails/src/form/field/Radio.js +279 -0
  308. data/app/assets/javascripts/extjs-rails/src/form/field/Spinner.js +321 -0
  309. data/app/assets/javascripts/extjs-rails/src/form/field/Text.js +727 -0
  310. data/app/assets/javascripts/extjs-rails/src/form/field/TextArea.js +228 -0
  311. data/app/assets/javascripts/extjs-rails/src/form/field/Time.js +459 -0
  312. data/app/assets/javascripts/extjs-rails/src/form/field/Trigger.js +469 -0
  313. data/app/assets/javascripts/extjs-rails/src/form/field/VTypes.js +172 -0
  314. data/app/assets/javascripts/extjs-rails/src/fx/Anim.js +472 -0
  315. data/app/assets/javascripts/extjs-rails/src/fx/Animator.js +410 -0
  316. data/app/assets/javascripts/extjs-rails/src/fx/CubicBezier.js +77 -0
  317. data/app/assets/javascripts/extjs-rails/src/fx/Easing.js +136 -0
  318. data/app/assets/javascripts/extjs-rails/src/fx/Manager.js +353 -0
  319. data/app/assets/javascripts/extjs-rails/src/fx/PropertyHandler.js +381 -0
  320. data/app/assets/javascripts/extjs-rails/src/fx/Queue.js +123 -0
  321. data/app/assets/javascripts/extjs-rails/src/fx/target/Component.js +118 -0
  322. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElement.js +46 -0
  323. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElementCSS.js +22 -0
  324. data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeSprite.js +34 -0
  325. data/app/assets/javascripts/extjs-rails/src/fx/target/Element.js +83 -0
  326. data/app/assets/javascripts/extjs-rails/src/fx/target/ElementCSS.js +77 -0
  327. data/app/assets/javascripts/extjs-rails/src/fx/target/Sprite.js +128 -0
  328. data/app/assets/javascripts/extjs-rails/src/fx/target/Target.js +36 -0
  329. data/app/assets/javascripts/extjs-rails/src/grid/CellEditor.js +172 -0
  330. data/app/assets/javascripts/extjs-rails/src/grid/ColumnComponentLayout.js +34 -0
  331. data/app/assets/javascripts/extjs-rails/src/grid/ColumnLayout.js +201 -0
  332. data/app/assets/javascripts/extjs-rails/src/grid/Lockable.js +863 -0
  333. data/app/assets/javascripts/extjs-rails/src/grid/LockingView.js +169 -0
  334. data/app/assets/javascripts/extjs-rails/src/grid/PagingScroller.js +539 -0
  335. data/app/assets/javascripts/extjs-rails/src/grid/Panel.js +393 -0
  336. data/app/assets/javascripts/extjs-rails/src/grid/RowEditor.js +731 -0
  337. data/app/assets/javascripts/extjs-rails/src/grid/RowNumberer.js +76 -0
  338. data/app/assets/javascripts/extjs-rails/src/grid/Scroller.js +5 -0
  339. data/app/assets/javascripts/extjs-rails/src/grid/View.js +44 -0
  340. data/app/assets/javascripts/extjs-rails/src/grid/ViewDropZone.js +41 -0
  341. data/app/assets/javascripts/extjs-rails/src/grid/column/Action.js +318 -0
  342. data/app/assets/javascripts/extjs-rails/src/grid/column/Boolean.js +82 -0
  343. data/app/assets/javascripts/extjs-rails/src/grid/column/Column.js +835 -0
  344. data/app/assets/javascripts/extjs-rails/src/grid/column/Date.js +63 -0
  345. data/app/assets/javascripts/extjs-rails/src/grid/column/Number.js +52 -0
  346. data/app/assets/javascripts/extjs-rails/src/grid/column/Template.js +58 -0
  347. data/app/assets/javascripts/extjs-rails/src/grid/feature/AbstractSummary.js +154 -0
  348. data/app/assets/javascripts/extjs-rails/src/grid/feature/Chunking.js +77 -0
  349. data/app/assets/javascripts/extjs-rails/src/grid/feature/Feature.js +158 -0
  350. data/app/assets/javascripts/extjs-rails/src/grid/feature/Grouping.js +822 -0
  351. data/app/assets/javascripts/extjs-rails/src/grid/feature/GroupingSummary.js +243 -0
  352. data/app/assets/javascripts/extjs-rails/src/grid/feature/RowBody.js +116 -0
  353. data/app/assets/javascripts/extjs-rails/src/grid/feature/RowWrap.js +120 -0
  354. data/app/assets/javascripts/extjs-rails/src/grid/feature/Summary.js +167 -0
  355. data/app/assets/javascripts/extjs-rails/src/grid/header/Container.js +965 -0
  356. data/app/assets/javascripts/extjs-rails/src/grid/header/DragZone.js +69 -0
  357. data/app/assets/javascripts/extjs-rails/src/grid/header/DropZone.js +265 -0
  358. data/app/assets/javascripts/extjs-rails/src/grid/plugin/CellEditing.js +453 -0
  359. data/app/assets/javascripts/extjs-rails/src/grid/plugin/DragDrop.js +254 -0
  360. data/app/assets/javascripts/extjs-rails/src/grid/plugin/Editing.js +561 -0
  361. data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderReorderer.js +49 -0
  362. data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderResizer.js +292 -0
  363. data/app/assets/javascripts/extjs-rails/src/grid/plugin/RowEditing.js +339 -0
  364. data/app/assets/javascripts/extjs-rails/src/grid/property/Grid.js +351 -0
  365. data/app/assets/javascripts/extjs-rails/src/grid/property/HeaderContainer.js +109 -0
  366. data/app/assets/javascripts/extjs-rails/src/grid/property/Property.js +36 -0
  367. data/app/assets/javascripts/extjs-rails/src/grid/property/Store.js +141 -0
  368. data/app/assets/javascripts/extjs-rails/src/layout/ClassList.js +90 -0
  369. data/app/assets/javascripts/extjs-rails/src/layout/Context.js +1232 -0
  370. data/app/assets/javascripts/extjs-rails/src/layout/ContextItem.js +1470 -0
  371. data/app/assets/javascripts/extjs-rails/src/layout/Layout.js +761 -0
  372. data/app/assets/javascripts/extjs-rails/src/layout/component/Auto.js +220 -0
  373. data/app/assets/javascripts/extjs-rails/src/layout/component/Body.js +80 -0
  374. data/app/assets/javascripts/extjs-rails/src/layout/component/BoundList.js +95 -0
  375. data/app/assets/javascripts/extjs-rails/src/layout/component/Button.js +261 -0
  376. data/app/assets/javascripts/extjs-rails/src/layout/component/Component.js +427 -0
  377. data/app/assets/javascripts/extjs-rails/src/layout/component/Dock.js +1132 -0
  378. data/app/assets/javascripts/extjs-rails/src/layout/component/Draw.js +79 -0
  379. data/app/assets/javascripts/extjs-rails/src/layout/component/FieldSet.js +62 -0
  380. data/app/assets/javascripts/extjs-rails/src/layout/component/ProgressBar.js +54 -0
  381. data/app/assets/javascripts/extjs-rails/src/layout/component/Tab.js +23 -0
  382. data/app/assets/javascripts/extjs-rails/src/layout/component/field/ComboBox.js +52 -0
  383. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Field.js +372 -0
  384. data/app/assets/javascripts/extjs-rails/src/layout/component/field/FieldContainer.js +48 -0
  385. data/app/assets/javascripts/extjs-rails/src/layout/component/field/HtmlEditor.js +54 -0
  386. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Slider.js +58 -0
  387. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Text.js +75 -0
  388. data/app/assets/javascripts/extjs-rails/src/layout/component/field/TextArea.js +51 -0
  389. data/app/assets/javascripts/extjs-rails/src/layout/component/field/Trigger.js +132 -0
  390. data/app/assets/javascripts/extjs-rails/src/layout/container/Absolute.js +121 -0
  391. data/app/assets/javascripts/extjs-rails/src/layout/container/Accordion.js +308 -0
  392. data/app/assets/javascripts/extjs-rails/src/layout/container/Anchor.js +403 -0
  393. data/app/assets/javascripts/extjs-rails/src/layout/container/Auto.js +70 -0
  394. data/app/assets/javascripts/extjs-rails/src/layout/container/Border-old-js +1079 -0
  395. data/app/assets/javascripts/extjs-rails/src/layout/container/Border.js +816 -0
  396. data/app/assets/javascripts/extjs-rails/src/layout/container/Box.js +929 -0
  397. data/app/assets/javascripts/extjs-rails/src/layout/container/Card.js +361 -0
  398. data/app/assets/javascripts/extjs-rails/src/layout/container/CheckboxGroup.js +376 -0
  399. data/app/assets/javascripts/extjs-rails/src/layout/container/Column.js +234 -0
  400. data/app/assets/javascripts/extjs-rails/src/layout/container/Container.js +961 -0
  401. data/app/assets/javascripts/extjs-rails/src/layout/container/Editor.js +74 -0
  402. data/app/assets/javascripts/extjs-rails/src/layout/container/Fit.js +287 -0
  403. data/app/assets/javascripts/extjs-rails/src/layout/container/Form.js +157 -0
  404. data/app/assets/javascripts/extjs-rails/src/layout/container/HBox.js +134 -0
  405. data/app/assets/javascripts/extjs-rails/src/layout/container/Table.js +412 -0
  406. data/app/assets/javascripts/extjs-rails/src/layout/container/VBox.js +139 -0
  407. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Menu.js +365 -0
  408. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/None.js +83 -0
  409. data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Scroller.js +475 -0
  410. data/app/assets/javascripts/extjs-rails/src/menu/CheckItem.js +169 -0
  411. data/app/assets/javascripts/extjs-rails/src/menu/ColorPicker.js +110 -0
  412. data/app/assets/javascripts/extjs-rails/src/menu/DatePicker.js +100 -0
  413. data/app/assets/javascripts/extjs-rails/src/menu/Item.js +553 -0
  414. data/app/assets/javascripts/extjs-rails/src/menu/KeyNav.js +134 -0
  415. data/app/assets/javascripts/extjs-rails/src/menu/Manager.js +219 -0
  416. data/app/assets/javascripts/extjs-rails/src/menu/Menu.js +579 -0
  417. data/app/assets/javascripts/extjs-rails/src/menu/Separator.js +126 -0
  418. data/app/assets/javascripts/extjs-rails/src/panel/AbstractPanel.js +323 -0
  419. data/app/assets/javascripts/extjs-rails/src/panel/DD.js +99 -0
  420. data/app/assets/javascripts/extjs-rails/src/panel/Header.js +518 -0
  421. data/app/assets/javascripts/extjs-rails/src/panel/Panel.js +2150 -0
  422. data/app/assets/javascripts/extjs-rails/src/panel/Proxy.js +131 -0
  423. data/app/assets/javascripts/extjs-rails/src/panel/Table.js +1018 -0
  424. data/app/assets/javascripts/extjs-rails/src/panel/Tool.js +304 -0
  425. data/app/assets/javascripts/extjs-rails/src/picker/Color.js +219 -0
  426. data/app/assets/javascripts/extjs-rails/src/picker/Date.js +1140 -0
  427. data/app/assets/javascripts/extjs-rails/src/picker/Month.js +490 -0
  428. data/app/assets/javascripts/extjs-rails/src/picker/Time.js +165 -0
  429. data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitter.js +22 -0
  430. data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitterTracker.js +210 -0
  431. data/app/assets/javascripts/extjs-rails/src/resizer/Handle.js +29 -0
  432. data/app/assets/javascripts/extjs-rails/src/resizer/ResizeTracker.js +346 -0
  433. data/app/assets/javascripts/extjs-rails/src/resizer/Resizer.js +477 -0
  434. data/app/assets/javascripts/extjs-rails/src/resizer/Splitter.js +242 -0
  435. data/app/assets/javascripts/extjs-rails/src/resizer/SplitterTracker.js +230 -0
  436. data/app/assets/javascripts/extjs-rails/src/selection/CellModel.js +395 -0
  437. data/app/assets/javascripts/extjs-rails/src/selection/CheckboxModel.js +234 -0
  438. data/app/assets/javascripts/extjs-rails/src/selection/DataViewModel.js +160 -0
  439. data/app/assets/javascripts/extjs-rails/src/selection/Model.js +646 -0
  440. data/app/assets/javascripts/extjs-rails/src/selection/RowModel.js +499 -0
  441. data/app/assets/javascripts/extjs-rails/src/selection/TreeModel.js +78 -0
  442. data/app/assets/javascripts/extjs-rails/src/slider/Multi.js +835 -0
  443. data/app/assets/javascripts/extjs-rails/src/slider/Single.js +56 -0
  444. data/app/assets/javascripts/extjs-rails/src/slider/Thumb.js +259 -0
  445. data/app/assets/javascripts/extjs-rails/src/slider/Tip.js +130 -0
  446. data/app/assets/javascripts/extjs-rails/src/state/CookieProvider.js +120 -0
  447. data/app/assets/javascripts/extjs-rails/src/state/LocalStorageProvider.js +72 -0
  448. data/app/assets/javascripts/extjs-rails/src/state/Manager.js +70 -0
  449. data/app/assets/javascripts/extjs-rails/src/state/Provider.js +182 -0
  450. data/app/assets/javascripts/extjs-rails/src/state/Stateful.js +364 -0
  451. data/app/assets/javascripts/extjs-rails/src/tab/Bar.js +258 -0
  452. data/app/assets/javascripts/extjs-rails/src/tab/Panel.js +654 -0
  453. data/app/assets/javascripts/extjs-rails/src/tab/Tab.js +358 -0
  454. data/app/assets/javascripts/extjs-rails/src/tail.js +10 -0
  455. data/app/assets/javascripts/extjs-rails/src/tip/QuickTip.js +335 -0
  456. data/app/assets/javascripts/extjs-rails/src/tip/QuickTipManager.js +239 -0
  457. data/app/assets/javascripts/extjs-rails/src/tip/Tip.js +160 -0
  458. data/app/assets/javascripts/extjs-rails/src/tip/ToolTip.js +691 -0
  459. data/app/assets/javascripts/extjs-rails/src/toolbar/Fill.js +28 -0
  460. data/app/assets/javascripts/extjs-rails/src/toolbar/Item.js +16 -0
  461. data/app/assets/javascripts/extjs-rails/src/toolbar/Paging.js +600 -0
  462. data/app/assets/javascripts/extjs-rails/src/toolbar/Separator.js +23 -0
  463. data/app/assets/javascripts/extjs-rails/src/toolbar/Spacer.js +33 -0
  464. data/app/assets/javascripts/extjs-rails/src/toolbar/TextItem.js +57 -0
  465. data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar-legacy.js +123 -0
  466. data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar.js +447 -0
  467. data/app/assets/javascripts/extjs-rails/src/tree/Column.js +90 -0
  468. data/app/assets/javascripts/extjs-rails/src/tree/Panel.js +505 -0
  469. data/app/assets/javascripts/extjs-rails/src/tree/View.js +658 -0
  470. data/app/assets/javascripts/extjs-rails/src/tree/ViewDragZone.js +49 -0
  471. data/app/assets/javascripts/extjs-rails/src/tree/ViewDropZone.js +287 -0
  472. data/app/assets/javascripts/extjs-rails/src/tree/plugin/TreeViewDragDrop.js +244 -0
  473. data/app/assets/javascripts/extjs-rails/src/util/AbstractMixedCollection.js +772 -0
  474. data/app/assets/javascripts/extjs-rails/src/util/Animate.js +426 -0
  475. data/app/assets/javascripts/extjs-rails/src/util/Bindable.js +102 -0
  476. data/app/assets/javascripts/extjs-rails/src/util/CSS.js +185 -0
  477. data/app/assets/javascripts/extjs-rails/src/util/ClickRepeater.js +238 -0
  478. data/app/assets/javascripts/extjs-rails/src/util/ComponentDragger.js +126 -0
  479. data/app/assets/javascripts/extjs-rails/src/util/Cookies.js +91 -0
  480. data/app/assets/javascripts/extjs-rails/src/util/ElementContainer.js +293 -0
  481. data/app/assets/javascripts/extjs-rails/src/util/Filter.js +159 -0
  482. data/app/assets/javascripts/extjs-rails/src/util/Floating.js +321 -0
  483. data/app/assets/javascripts/extjs-rails/src/util/Grouper.js +26 -0
  484. data/app/assets/javascripts/extjs-rails/src/util/HashMap.js +356 -0
  485. data/app/assets/javascripts/extjs-rails/src/util/History.js +285 -0
  486. data/app/assets/javascripts/extjs-rails/src/util/Inflector.js +297 -0
  487. data/app/assets/javascripts/extjs-rails/src/util/KeyMap.js +427 -0
  488. data/app/assets/javascripts/extjs-rails/src/util/KeyNav.js +239 -0
  489. data/app/assets/javascripts/extjs-rails/src/util/LruCache.js +257 -0
  490. data/app/assets/javascripts/extjs-rails/src/util/Memento.js +131 -0
  491. data/app/assets/javascripts/extjs-rails/src/util/MixedCollection.js +239 -0
  492. data/app/assets/javascripts/extjs-rails/src/util/Observable.js +1003 -0
  493. data/app/assets/javascripts/extjs-rails/src/util/Offset.js +60 -0
  494. data/app/assets/javascripts/extjs-rails/src/util/Point.js +93 -0
  495. data/app/assets/javascripts/extjs-rails/src/util/ProtoElement.js +205 -0
  496. data/app/assets/javascripts/extjs-rails/src/util/Queue.js +76 -0
  497. data/app/assets/javascripts/extjs-rails/src/util/Region.js +388 -0
  498. data/app/assets/javascripts/extjs-rails/src/util/Renderable.js +1079 -0
  499. data/app/assets/javascripts/extjs-rails/src/util/Sortable.js +248 -0
  500. data/app/assets/javascripts/extjs-rails/src/util/Sorter.js +179 -0
  501. data/app/assets/javascripts/extjs-rails/src/util/TextMetrics.js +148 -0
  502. data/app/assets/javascripts/extjs-rails/src/view/AbstractView.js +1103 -0
  503. data/app/assets/javascripts/extjs-rails/src/view/BoundList.js +207 -0
  504. data/app/assets/javascripts/extjs-rails/src/view/BoundListKeyNav.js +92 -0
  505. data/app/assets/javascripts/extjs-rails/src/view/DragZone.js +106 -0
  506. data/app/assets/javascripts/extjs-rails/src/view/DropZone.js +240 -0
  507. data/app/assets/javascripts/extjs-rails/src/view/Table.js +1229 -0
  508. data/app/assets/javascripts/extjs-rails/src/view/TableChunker.js +139 -0
  509. data/app/assets/javascripts/extjs-rails/src/view/View.js +636 -0
  510. data/app/assets/javascripts/extjs-rails/src/window/MessageBox.js +880 -0
  511. data/app/assets/javascripts/extjs-rails/src/window/Window-legacy.js +56 -0
  512. data/app/assets/javascripts/extjs-rails/src/window/Window.js +793 -0
  513. data/extjs-rails.gemspec +24 -0
  514. data/lib/extjs-rails.rb +7 -0
  515. data/lib/extjs-rails/engine.rb +7 -0
  516. data/lib/extjs-rails/version.rb +5 -0
  517. metadata +660 -0
@@ -0,0 +1,361 @@
1
+ /**
2
+ * This layout manages multiple child Components, each fitted to the Container, where only a single child Component can be
3
+ * visible at any given time. This layout style is most commonly used for wizards, tab implementations, etc.
4
+ * This class is intended to be extended or created via the layout:'card' {@link Ext.container.Container#layout} config,
5
+ * and should generally not need to be created directly via the new keyword.
6
+ *
7
+ * The CardLayout's focal method is {@link #setActiveItem}. Since only one panel is displayed at a time,
8
+ * the only way to move from one Component to the next is by calling setActiveItem, passing the next panel to display
9
+ * (or its id or index). The layout itself does not provide a user interface for handling this navigation,
10
+ * so that functionality must be provided by the developer.
11
+ *
12
+ * To change the active card of a container, call the setActiveItem method of its layout:
13
+ *
14
+ * Ext.create('Ext.panel.Panel', {
15
+ * layout: 'card',
16
+ * items: [
17
+ * { html: 'Card 1' },
18
+ * { html: 'Card 2' }
19
+ * ],
20
+ * renderTo: Ext.getBody()
21
+ * });
22
+ *
23
+ * p.getLayout().setActiveItem(1);
24
+ *
25
+ * In the following example, a simplistic wizard setup is demonstrated. A button bar is added
26
+ * to the footer of the containing panel to provide navigation buttons. The buttons will be handled by a
27
+ * common navigation routine. Note that other uses of a CardLayout (like a tab control) would require a
28
+ * completely different implementation. For serious implementations, a better approach would be to extend
29
+ * CardLayout to provide the custom functionality needed.
30
+ *
31
+ * @example
32
+ * var navigate = function(panel, direction){
33
+ * // This routine could contain business logic required to manage the navigation steps.
34
+ * // It would call setActiveItem as needed, manage navigation button state, handle any
35
+ * // branching logic that might be required, handle alternate actions like cancellation
36
+ * // or finalization, etc. A complete wizard implementation could get pretty
37
+ * // sophisticated depending on the complexity required, and should probably be
38
+ * // done as a subclass of CardLayout in a real-world implementation.
39
+ * var layout = panel.getLayout();
40
+ * layout[direction]();
41
+ * Ext.getCmp('move-prev').setDisabled(!layout.getPrev());
42
+ * Ext.getCmp('move-next').setDisabled(!layout.getNext());
43
+ * };
44
+ *
45
+ * Ext.create('Ext.panel.Panel', {
46
+ * title: 'Example Wizard',
47
+ * width: 300,
48
+ * height: 200,
49
+ * layout: 'card',
50
+ * bodyStyle: 'padding:15px',
51
+ * defaults: {
52
+ * // applied to each contained panel
53
+ * border: false
54
+ * },
55
+ * // just an example of one possible navigation scheme, using buttons
56
+ * bbar: [
57
+ * {
58
+ * id: 'move-prev',
59
+ * text: 'Back',
60
+ * handler: function(btn) {
61
+ * navigate(btn.up("panel"), "prev");
62
+ * },
63
+ * disabled: true
64
+ * },
65
+ * '->', // greedy spacer so that the buttons are aligned to each side
66
+ * {
67
+ * id: 'move-next',
68
+ * text: 'Next',
69
+ * handler: function(btn) {
70
+ * navigate(btn.up("panel"), "next");
71
+ * }
72
+ * }
73
+ * ],
74
+ * // the panels (or "cards") within the layout
75
+ * items: [{
76
+ * id: 'card-0',
77
+ * html: '<h1>Welcome to the Wizard!</h1><p>Step 1 of 3</p>'
78
+ * },{
79
+ * id: 'card-1',
80
+ * html: '<p>Step 2 of 3</p>'
81
+ * },{
82
+ * id: 'card-2',
83
+ * html: '<h1>Congratulations!</h1><p>Step 3 of 3 - Complete</p>'
84
+ * }],
85
+ * renderTo: Ext.getBody()
86
+ * });
87
+ */
88
+ Ext.define('Ext.layout.container.Card', {
89
+
90
+ /* Begin Definitions */
91
+
92
+ extend: 'Ext.layout.container.Fit',
93
+
94
+ alternateClassName: 'Ext.layout.CardLayout',
95
+
96
+ alias: 'layout.card',
97
+
98
+ /* End Definitions */
99
+
100
+ type: 'card',
101
+
102
+ hideInactive: true,
103
+
104
+ /**
105
+ * @cfg {Boolean} deferredRender
106
+ * True to render each contained item at the time it becomes active, false to render all contained items
107
+ * as soon as the layout is rendered (defaults to false). If there is a significant amount of content or
108
+ * a lot of heavy controls being rendered into panels that are not displayed by default, setting this to
109
+ * true might improve performance.
110
+ */
111
+ deferredRender : false,
112
+
113
+ getRenderTree: function () {
114
+ var me = this,
115
+ activeItem = me.getActiveItem();
116
+
117
+ if (activeItem) {
118
+
119
+ // If they veto the activate, we have no active item
120
+ if (activeItem.hasListeners.beforeactivate && activeItem.fireEvent('beforeactivate', activeItem) === false) {
121
+
122
+ // We must null our activeItem reference, AND the one in our owning Container.
123
+ // Because upon layout invalidation, renderChildren will use this.getActiveItem which
124
+ // uses this.activeItem || this.owner.activeItem
125
+ activeItem = me.activeItem = me.owner.activeItem = null;
126
+ }
127
+
128
+ // Item is to be the active one. Fire event after it is first layed out
129
+ else if (activeItem.hasListeners.activate) {
130
+ activeItem.on({
131
+ boxready: function() {
132
+ activeItem.fireEvent('activate', activeItem);
133
+ },
134
+ single: true
135
+ });
136
+ }
137
+
138
+ if (me.deferredRender) {
139
+ if (activeItem) {
140
+ return me.getItemsRenderTree([activeItem]);
141
+ }
142
+ } else {
143
+ return me.callParent(arguments);
144
+ }
145
+ }
146
+ },
147
+
148
+ renderChildren: function () {
149
+ var me = this,
150
+ active = me.getActiveItem();
151
+
152
+ if (!me.deferredRender) {
153
+ me.callParent();
154
+ } else if (active) {
155
+ // ensure the active item is configured for the layout
156
+ me.renderItems([active], me.getRenderTarget());
157
+ }
158
+ },
159
+
160
+ isValidParent : function(item, target, position) {
161
+ // Note: Card layout does not care about order within the target because only one is ever visible.
162
+ // We only care whether the item is a direct child of the target.
163
+ var itemEl = item.el ? item.el.dom : Ext.getDom(item);
164
+ return (itemEl && itemEl.parentNode === (target.dom || target)) || false;
165
+ },
166
+
167
+ /**
168
+ * Return the active (visible) component in the layout.
169
+ * @returns {Ext.Component}
170
+ */
171
+ getActiveItem: function() {
172
+ var me = this,
173
+ // Ensure the calculated result references a Component
174
+ result = me.parseActiveItem(me.activeItem || (me.owner && me.owner.activeItem));
175
+
176
+ // Sanitize the result in case the active item is no longer there.
177
+ if (result && me.owner.items.indexOf(result) != -1) {
178
+ me.activeItem = result;
179
+ } else {
180
+ me.activeItem = null;
181
+ }
182
+
183
+ return me.activeItem;
184
+ },
185
+
186
+ // @private
187
+ parseActiveItem: function(item) {
188
+ if (item && item.isComponent) {
189
+ return item;
190
+ } else if (typeof item == 'number' || item === undefined) {
191
+ return this.getLayoutItems()[item || 0];
192
+ } else {
193
+ return this.owner.getComponent(item);
194
+ }
195
+ },
196
+
197
+ // @private. Called before both dynamic render, and bulk render.
198
+ // Ensure that the active item starts visible, and inactive ones start invisible
199
+ configureItem: function(item) {
200
+ if (item === this.getActiveItem()) {
201
+ item.hidden = false;
202
+ } else {
203
+ item.hidden = true;
204
+ }
205
+ this.callParent(arguments);
206
+ },
207
+
208
+ onRemove: function(component) {
209
+ var me = this;
210
+
211
+ if (component === me.activeItem) {
212
+ me.activeItem = null;
213
+ }
214
+ },
215
+
216
+ // @private
217
+ getAnimation: function(newCard, owner) {
218
+ var newAnim = (newCard || {}).cardSwitchAnimation;
219
+ if (newAnim === false) {
220
+ return false;
221
+ }
222
+ return newAnim || owner.cardSwitchAnimation;
223
+ },
224
+
225
+ /**
226
+ * Return the active (visible) component in the layout to the next card
227
+ * @returns {Ext.Component} The next component or false.
228
+ */
229
+ getNext: function() {
230
+ //NOTE: Removed the JSDoc for this function's arguments because it is not actually supported in 4.0. This
231
+ //should come back in 4.1
232
+ var wrap = arguments[0],
233
+ items = this.getLayoutItems(),
234
+ index = Ext.Array.indexOf(items, this.activeItem);
235
+
236
+ return items[index + 1] || (wrap ? items[0] : false);
237
+ },
238
+
239
+ /**
240
+ * Sets the active (visible) component in the layout to the next card
241
+ * @return {Ext.Component} the activated component or false when nothing activated.
242
+ */
243
+ next: function() {
244
+ //NOTE: Removed the JSDoc for this function's arguments because it is not actually supported in 4.0. This
245
+ //should come back in 4.1
246
+ var anim = arguments[0],
247
+ wrap = arguments[1];
248
+ return this.setActiveItem(this.getNext(wrap), anim);
249
+ },
250
+
251
+ /**
252
+ * Return the active (visible) component in the layout to the previous card
253
+ * @returns {Ext.Component} The previous component or false.
254
+ */
255
+ getPrev: function() {
256
+ //NOTE: Removed the JSDoc for this function's arguments because it is not actually supported in 4.0. This
257
+ //should come back in 4.1
258
+ var wrap = arguments[0],
259
+ items = this.getLayoutItems(),
260
+ index = Ext.Array.indexOf(items, this.activeItem);
261
+
262
+ return items[index - 1] || (wrap ? items[items.length - 1] : false);
263
+ },
264
+
265
+ /**
266
+ * Sets the active (visible) component in the layout to the previous card
267
+ * @return {Ext.Component} the activated component or false when nothing activated.
268
+ */
269
+ prev: function() {
270
+ //NOTE: Removed the JSDoc for this function's arguments because it is not actually supported in 4.0. This
271
+ //should come back in 4.1
272
+ var anim = arguments[0],
273
+ wrap = arguments[1];
274
+ return this.setActiveItem(this.getPrev(wrap), anim);
275
+ },
276
+
277
+ /**
278
+ * Makes the given card active.
279
+ *
280
+ * var card1 = Ext.create('Ext.panel.Panel', {itemId: 'card-1'});
281
+ * var card2 = Ext.create('Ext.panel.Panel', {itemId: 'card-2'});
282
+ * var panel = Ext.create('Ext.panel.Panel', {
283
+ * layout: 'card',
284
+ * activeItem: 0,
285
+ * items: [card1, card2]
286
+ * });
287
+ * // These are all equivalent
288
+ * panel.getLayout().setActiveItem(card2);
289
+ * panel.getLayout().setActiveItem('card-2');
290
+ * panel.getLayout().setActiveItem(1);
291
+ *
292
+ * @param {Ext.Component/Number/String} newCard The component, component {@link Ext.Component#id id},
293
+ * {@link Ext.Component#itemId itemId}, or index of component.
294
+ * @return {Ext.Component} the activated component or false when nothing activated.
295
+ * False is returned also when trying to activate an already active card.
296
+ */
297
+ setActiveItem: function(newCard) {
298
+ var me = this,
299
+ owner = me.owner,
300
+ oldCard = me.activeItem,
301
+ rendered = owner.rendered,
302
+ newIndex;
303
+
304
+ newCard = me.parseActiveItem(newCard);
305
+ newIndex = owner.items.indexOf(newCard);
306
+
307
+ // If the card is not a child of the owner, then add it.
308
+ // Without doing a layout!
309
+ if (newIndex == -1) {
310
+ newIndex = owner.items.items.length;
311
+ Ext.suspendLayouts();
312
+ newCard = owner.add(newCard);
313
+ Ext.resumeLayouts();
314
+ }
315
+
316
+ // Is this a valid, different card?
317
+ if (newCard && oldCard != newCard) {
318
+ // Fire the beforeactivate and beforedeactivate events on the cards
319
+ if (newCard.fireEvent('beforeactivate', newCard, oldCard) === false) {
320
+ return false;
321
+ }
322
+ if (oldCard && oldCard.fireEvent('beforedeactivate', oldCard, newCard) === false) {
323
+ return false;
324
+ }
325
+
326
+ if (rendered) {
327
+ Ext.suspendLayouts();
328
+
329
+ // If the card has not been rendered yet, now is the time to do so.
330
+ if (!newCard.rendered) {
331
+ me.renderItem(newCard, me.getRenderTarget(), owner.items.length);
332
+ }
333
+
334
+ if (oldCard) {
335
+ if (me.hideInactive) {
336
+ oldCard.hide();
337
+ oldCard.hiddenByLayout = true;
338
+ }
339
+ oldCard.fireEvent('deactivate', oldCard, newCard);
340
+ }
341
+ // Make sure the new card is shown
342
+ if (newCard.hidden) {
343
+ newCard.show();
344
+ }
345
+
346
+ // Layout needs activeItem to be correct, so set it if the show has not been vetoed
347
+ if (!newCard.hidden) {
348
+ me.activeItem = newCard;
349
+ }
350
+ Ext.resumeLayouts(true);
351
+ } else {
352
+ me.activeItem = newCard;
353
+ }
354
+
355
+ newCard.fireEvent('activate', newCard, oldCard);
356
+
357
+ return me.activeItem;
358
+ }
359
+ return false;
360
+ }
361
+ });
@@ -0,0 +1,376 @@
1
+ /**
2
+ * This layout implements the column arrangement for {@link Ext.form.CheckboxGroup} and {@link Ext.form.RadioGroup}.
3
+ * It groups the component's sub-items into columns based on the component's
4
+ * {@link Ext.form.CheckboxGroup#columns columns} and {@link Ext.form.CheckboxGroup#vertical} config properties.
5
+ */
6
+ Ext.define('Ext.layout.container.CheckboxGroup', {
7
+ extend: 'Ext.layout.container.Container',
8
+ alias: ['layout.checkboxgroup'],
9
+
10
+ /**
11
+ * @cfg {Boolean} [autoFlex=true]
12
+ * By default, CheckboxGroup allocates all available space to the configured columns meaning that
13
+ * column are evenly spaced across the container.
14
+ *
15
+ * To have each column only be wide enough to fit the container Checkboxes (or Radios), set `autoFlex` to `false`
16
+ */
17
+ autoFlex: true,
18
+
19
+ type: 'checkboxgroup',
20
+
21
+ childEls: [
22
+ 'innerCt'
23
+ ],
24
+
25
+ renderTpl: [
26
+ '<table id="{ownerId}-innerCt" role="presentation" style="{tableStyle}"><tbody><tr>',
27
+ '<tpl for="columns">',
28
+ '<td class="{parent.colCls}" valign="top" style="{style}">',
29
+ '{% this.renderColumn(out,parent,xindex-1) %}',
30
+ '</td>',
31
+ '</tpl>',
32
+ '</tr></tbody></table>'
33
+ ],
34
+
35
+ beginLayout: function(ownerContext) {
36
+ var me = this,
37
+ columns,
38
+ numCols, numChildren,
39
+ childItems,
40
+ i, width, cwidth,
41
+ totalFlex = 0, flexedCols = 0,
42
+ autoFlex = me.autoFlex,
43
+ currGen = me.owner.items.generation,
44
+ innerCtStyle = me.innerCt.dom.style;
45
+
46
+ me.callParent(arguments);
47
+ childItems = ownerContext.childItems;
48
+
49
+ // If the child items have changed since the last layout then we need to fixup
50
+ // the association of items to columns:
51
+ if (me.lastChildGeneration != currGen) {
52
+ me.lastChildGeneration = currGen;
53
+ me.fixColumns();
54
+ }
55
+
56
+ // fixColumns may have updated the element cache, no need to get the columnEls
57
+ // now...
58
+ columns = me.columnEls;
59
+
60
+ ownerContext.innerCtContext = ownerContext.getEl('innerCt', me);
61
+
62
+ // The columns config may be an array of widths. Any value < 1 is taken to be a fraction:
63
+ if (!ownerContext.widthModel.shrinkWrap) {
64
+ numCols = columns.length;
65
+
66
+ // If columns is an array of numeric widths
67
+ if (me.columnsArray) {
68
+
69
+ // first calculate total flex
70
+ for (i = 0; i < numCols; i++) {
71
+ width = me.owner.columns[i];
72
+ if (width < 1) {
73
+ totalFlex += width;
74
+ flexedCols++;
75
+ }
76
+ }
77
+
78
+ // now apply widths
79
+ for (i = 0; i < numCols; i++) {
80
+ width = me.owner.columns[i];
81
+ if (width < 1) {
82
+ cwidth = ((width / totalFlex) * 100) + '%';
83
+ } else {
84
+ cwidth = width + 'px';
85
+ }
86
+ columns[i].style.width = cwidth;
87
+ }
88
+ }
89
+
90
+ // Otherwise it's the *number* of columns, so distributed the widths evenly
91
+ else {
92
+ for (i = 0; i < numCols; i++) {
93
+ // autoFlex: true will automatically calculate % widths
94
+ // autoFlex: false allows the table to decide (shrinkWrap, in effect)
95
+ // on a per-column basis
96
+ cwidth = autoFlex
97
+ ? (1 / numCols * 100) + '%'
98
+ : '';
99
+ columns[i].style.width = cwidth;
100
+ flexedCols++;
101
+ }
102
+ }
103
+
104
+ // no flexed cols -- all widths are fixed
105
+ if (!flexedCols) {
106
+ innerCtStyle.tableLayout = 'fixed';
107
+ innerCtStyle.width = '';
108
+ // some flexed cols -- need to fix some
109
+ } else if (flexedCols < numCols) {
110
+ innerCtStyle.tableLayout = 'fixed';
111
+ innerCtStyle.width = '100%';
112
+ // let the table decide
113
+ } else {
114
+ innerCtStyle.tableLayout = 'auto';
115
+ // if autoFlex, fill available space, else compact down
116
+ if (autoFlex) {
117
+ innerCtStyle.width = '100%';
118
+ } else {
119
+ innerCtStyle.width = '';
120
+ }
121
+ }
122
+
123
+ } else {
124
+ innerCtStyle.tableLayout = 'auto';
125
+ innerCtStyle.width = '';
126
+ }
127
+ },
128
+
129
+ cacheElements: function () {
130
+ var me = this;
131
+
132
+ // Grab defined childEls
133
+ me.callParent();
134
+
135
+ // Grab columns TDs
136
+ me.columnEls = me.innerCt.query('td.' + me.owner.groupCls);
137
+
138
+ // we just rendered so the items are in the correct columns:
139
+ me.lastChildGeneration = me.owner.items.generation;
140
+ },
141
+
142
+ /*
143
+ * Just wait for the child items to all lay themselves out in the width we are configured
144
+ * to make available to them. Then we can measure our height.
145
+ */
146
+ calculate: function(ownerContext) {
147
+ var me = this,
148
+ targetContext, widthShrinkWrap, heightShrinkWrap, shrinkWrap, table, targetPadding;
149
+
150
+ // The columnEls are widthed using their own width attributes, we just need to wait
151
+ // for all children to have arranged themselves in that width, and then collect our height.
152
+ if (!ownerContext.getDomProp('containerChildrenDone')) {
153
+ me.done = false;
154
+ } else {
155
+ targetContext = ownerContext.innerCtContext;
156
+ widthShrinkWrap = ownerContext.widthModel.shrinkWrap;
157
+ heightShrinkWrap = ownerContext.heightModel.shrinkWrap;
158
+ shrinkWrap = heightShrinkWrap || widthShrinkWrap;
159
+ table = targetContext.el.dom;
160
+ targetPadding = shrinkWrap && targetContext.getPaddingInfo();
161
+
162
+ if (widthShrinkWrap) {
163
+ ownerContext.setContentWidth(table.offsetWidth + targetPadding.width, true);
164
+ }
165
+
166
+ if (heightShrinkWrap) {
167
+ ownerContext.setContentHeight(table.offsetHeight + targetPadding.height, true);
168
+ }
169
+ }
170
+ },
171
+
172
+ doRenderColumn: function (out, renderData, columnIndex) {
173
+ // Careful! This method is bolted on to the renderTpl so all we get for context is
174
+ // the renderData! The "this" pointer is the renderTpl instance!
175
+
176
+ var me = renderData.$layout,
177
+ owner = me.owner,
178
+ columnCount = renderData.columnCount,
179
+ items = owner.items.items,
180
+ itemCount = items.length,
181
+ item, itemIndex, rowCount, increment, tree;
182
+
183
+ // Example:
184
+ // columnCount = 3
185
+ // items.length = 10
186
+
187
+ if (owner.vertical) {
188
+ // 0 1 2
189
+ // +---+---+---+
190
+ // 0 | 0 | 4 | 8 |
191
+ // +---+---+---+
192
+ // 1 | 1 | 5 | 9 |
193
+ // +---+---+---+
194
+ // 2 | 2 | 6 | |
195
+ // +---+---+---+
196
+ // 3 | 3 | 7 | |
197
+ // +---+---+---+
198
+
199
+ rowCount = Math.ceil(itemCount / columnCount); // = 4
200
+ itemIndex = columnIndex * rowCount;
201
+ itemCount = Math.min(itemCount, itemIndex + rowCount);
202
+ increment = 1;
203
+ } else {
204
+ // 0 1 2
205
+ // +---+---+---+
206
+ // 0 | 0 | 1 | 2 |
207
+ // +---+---+---+
208
+ // 1 | 3 | 4 | 5 |
209
+ // +---+---+---+
210
+ // 2 | 6 | 7 | 8 |
211
+ // +---+---+---+
212
+ // 3 | 9 | | |
213
+ // +---+---+---+
214
+
215
+ itemIndex = columnIndex;
216
+ increment = columnCount;
217
+ }
218
+
219
+ for ( ; itemIndex < itemCount; itemIndex += increment) {
220
+ item = items[itemIndex];
221
+ me.configureItem(item);
222
+ tree = item.getRenderTree();
223
+ Ext.DomHelper.generateMarkup(tree, out);
224
+ }
225
+ },
226
+
227
+ // Distribute child items between column elements according to row first or
228
+ // column first order
229
+ fixColumns: function () {
230
+ var me = this,
231
+ owner = me.owner,
232
+ cfgCols = owner.columns,
233
+ columns = me.columnEls,
234
+ items = owner.items.items,
235
+ columnCount = columns.length,
236
+ itemCount = items.length,
237
+ columnIndex, i, rowCount, tr, td, newCount;
238
+
239
+ // if running in 'auto' columns mode, and the number of items has increased (add call)
240
+ // then we need to add a new td to the table
241
+ if ((!cfgCols || cfgCols == 'auto') && (itemCount > columnCount)) {
242
+
243
+ // add column td's for each new item added
244
+ newCount = itemCount - columnCount;
245
+ for (i = 0; i < newCount; i++) {
246
+ tr = me.innerCt.down('tr');
247
+ tr.createChild({
248
+ cls: owner.groupCls,
249
+ tag: 'td',
250
+ vAlign: 'top'
251
+ });
252
+ }
253
+ me.cacheElements();
254
+ columns = me.columnEls;
255
+ columnCount = columns.length;
256
+ }
257
+
258
+ if (owner.vertical) {
259
+ columnIndex = -1; // first loop will increment this to 0
260
+ rowCount = Math.ceil(itemCount / columnCount);
261
+
262
+ for (i = 0; i < itemCount; ++i) {
263
+ if (i % rowCount === 0) {
264
+ ++columnIndex;
265
+ }
266
+ columns[columnIndex].appendChild(items[i].el.dom);
267
+ }
268
+ } else {
269
+ for (i = 0; i < itemCount; ++i) {
270
+ columnIndex = i % columnCount;
271
+ columns[columnIndex].appendChild(items[i].el.dom);
272
+ }
273
+ }
274
+ },
275
+
276
+ /**
277
+ * Returns the number of columns in the checkbox group.
278
+ * @private
279
+ */
280
+ getColumnCount: function() {
281
+ var me = this,
282
+ owner = me.owner,
283
+ ownerColumns = owner.columns;
284
+
285
+ // Our columns config is an array of numeric widths.
286
+ // Calculate our total width
287
+ if (me.columnsArray) {
288
+ return ownerColumns.length;
289
+ }
290
+
291
+ if (Ext.isNumber(ownerColumns)) {
292
+ return ownerColumns;
293
+ }
294
+ return owner.items.length;
295
+ },
296
+
297
+ getItemSizePolicy: function (item) {
298
+ return this.autoSizePolicy;
299
+ },
300
+
301
+ getRenderData: function () {
302
+ var me = this,
303
+ data = me.callParent(),
304
+ owner = me.owner,
305
+ i, columns = me.getColumnCount(),
306
+ width, column, cwidth,
307
+ autoFlex = me.autoFlex,
308
+ totalFlex = 0, flexedCols = 0;
309
+
310
+ // calculate total flex
311
+ if (me.columnsArray) {
312
+ for (i=0; i < columns; i++) {
313
+ width = me.owner.columns[i];
314
+ if (width < 1) {
315
+ totalFlex += width;
316
+ flexedCols++;
317
+ }
318
+ }
319
+ }
320
+
321
+ data.colCls = owner.groupCls;
322
+ data.columnCount = columns;
323
+
324
+ data.columns = [];
325
+ for (i = 0; i < columns; i++) {
326
+ column = (data.columns[i] = {});
327
+
328
+ if (me.columnsArray) {
329
+ width = me.owner.columns[i];
330
+ if (width < 1) {
331
+ cwidth = ((width / totalFlex) * 100) + '%';
332
+ } else {
333
+ cwidth = width + 'px';
334
+ }
335
+ column.style = 'width:' + cwidth;
336
+ } else {
337
+ column.style = 'width:' + (1 / columns * 100) + '%';
338
+ flexedCols++;
339
+ }
340
+ }
341
+
342
+ // If the columns config was an array of column widths, allow table to auto width
343
+ data.tableStyle =
344
+ !flexedCols ? 'table-layout:fixed;' :
345
+ (flexedCols < columns) ? 'table-layout:fixed;width:100%' :
346
+ (autoFlex) ? 'table-layout:auto;width:100%' : 'table-layout:auto;';
347
+
348
+ return data;
349
+ },
350
+
351
+ // Overridden method from AbstractContainer.
352
+ getRenderTarget: function() {
353
+ return this.innerCt;
354
+ },
355
+
356
+ initLayout: function () {
357
+ var me = this,
358
+ owner = me.owner;
359
+
360
+ me.columnsArray = Ext.isArray(owner.columns);
361
+ me.evenColumns = Ext.isNumber(owner.columns);
362
+
363
+ me.callParent();
364
+ },
365
+
366
+ // Always valid. beginLayout ensures the encapsulating elements of all children are in the correct place
367
+ isValidParent: function() {
368
+ return true;
369
+ },
370
+
371
+ setupRenderTpl: function (renderTpl) {
372
+ this.callParent(arguments);
373
+
374
+ renderTpl.renderColumn = this.doRenderColumn;
375
+ }
376
+ });