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,253 @@
1
+ /**
2
+ * @class Ext.chart.theme.Theme
3
+ *
4
+ * Provides chart theming.
5
+ *
6
+ * Used as mixins by Ext.chart.Chart.
7
+ */
8
+ Ext.define('Ext.chart.theme.Theme', {
9
+
10
+ /* Begin Definitions */
11
+
12
+ requires: ['Ext.draw.Color'],
13
+
14
+ /* End Definitions */
15
+
16
+ theme: 'Base',
17
+ themeAttrs: false,
18
+
19
+ initTheme: function(theme) {
20
+ var me = this,
21
+ themes = Ext.chart.theme,
22
+ key, gradients;
23
+ if (theme) {
24
+ theme = theme.split(':');
25
+ for (key in themes) {
26
+ if (key == theme[0]) {
27
+ gradients = theme[1] == 'gradients';
28
+ me.themeAttrs = new themes[key]({
29
+ useGradients: gradients
30
+ });
31
+ if (gradients) {
32
+ me.gradients = me.themeAttrs.gradients;
33
+ }
34
+ if (me.themeAttrs.background) {
35
+ me.background = me.themeAttrs.background;
36
+ }
37
+ return;
38
+ }
39
+ }
40
+ //<debug>
41
+ Ext.Error.raise('No theme found named "' + theme + '"');
42
+ //</debug>
43
+ }
44
+ }
45
+ },
46
+ // This callback is executed right after when the class is created. This scope refers to the newly created class itself
47
+ function() {
48
+ /* Theme constructor: takes either a complex object with styles like:
49
+
50
+ {
51
+ axis: {
52
+ fill: '#000',
53
+ 'stroke-width': 1
54
+ },
55
+ axisLabelTop: {
56
+ fill: '#000',
57
+ font: '11px Arial'
58
+ },
59
+ axisLabelLeft: {
60
+ fill: '#000',
61
+ font: '11px Arial'
62
+ },
63
+ axisLabelRight: {
64
+ fill: '#000',
65
+ font: '11px Arial'
66
+ },
67
+ axisLabelBottom: {
68
+ fill: '#000',
69
+ font: '11px Arial'
70
+ },
71
+ axisTitleTop: {
72
+ fill: '#000',
73
+ font: '11px Arial'
74
+ },
75
+ axisTitleLeft: {
76
+ fill: '#000',
77
+ font: '11px Arial'
78
+ },
79
+ axisTitleRight: {
80
+ fill: '#000',
81
+ font: '11px Arial'
82
+ },
83
+ axisTitleBottom: {
84
+ fill: '#000',
85
+ font: '11px Arial'
86
+ },
87
+ series: {
88
+ 'stroke-width': 1
89
+ },
90
+ seriesLabel: {
91
+ font: '12px Arial',
92
+ fill: '#333'
93
+ },
94
+ marker: {
95
+ stroke: '#555',
96
+ fill: '#000',
97
+ radius: 3,
98
+ size: 3
99
+ },
100
+ seriesThemes: [{
101
+ fill: '#C6DBEF'
102
+ }, {
103
+ fill: '#9ECAE1'
104
+ }, {
105
+ fill: '#6BAED6'
106
+ }, {
107
+ fill: '#4292C6'
108
+ }, {
109
+ fill: '#2171B5'
110
+ }, {
111
+ fill: '#084594'
112
+ }],
113
+ markerThemes: [{
114
+ fill: '#084594',
115
+ type: 'circle'
116
+ }, {
117
+ fill: '#2171B5',
118
+ type: 'cross'
119
+ }, {
120
+ fill: '#4292C6',
121
+ type: 'plus'
122
+ }]
123
+ }
124
+
125
+ ...or also takes just an array of colors and creates the complex object:
126
+
127
+ {
128
+ colors: ['#aaa', '#bcd', '#eee']
129
+ }
130
+
131
+ ...or takes just a base color and makes a theme from it
132
+
133
+ {
134
+ baseColor: '#bce'
135
+ }
136
+
137
+ To create a new theme you may add it to the Themes object:
138
+
139
+ Ext.chart.theme.MyNewTheme = Ext.extend(Object, {
140
+ constructor: function(config) {
141
+ Ext.chart.theme.call(this, config, {
142
+ baseColor: '#mybasecolor'
143
+ });
144
+ }
145
+ });
146
+
147
+ //Proposal:
148
+ Ext.chart.theme.MyNewTheme = Ext.chart.createTheme('#basecolor');
149
+
150
+ ...and then to use it provide the name of the theme (as a lower case string) in the chart config.
151
+
152
+ {
153
+ theme: 'mynewtheme'
154
+ }
155
+ */
156
+
157
+ (function() {
158
+ Ext.chart.theme = function(config, base) {
159
+ config = config || {};
160
+ var i = 0, d = +new Date(), l, colors, color,
161
+ seriesThemes, markerThemes,
162
+ seriesTheme, markerTheme,
163
+ key, gradients = [],
164
+ midColor, midL;
165
+
166
+ if (config.baseColor) {
167
+ midColor = Ext.draw.Color.fromString(config.baseColor);
168
+ midL = midColor.getHSL()[2];
169
+ if (midL < 0.15) {
170
+ midColor = midColor.getLighter(0.3);
171
+ } else if (midL < 0.3) {
172
+ midColor = midColor.getLighter(0.15);
173
+ } else if (midL > 0.85) {
174
+ midColor = midColor.getDarker(0.3);
175
+ } else if (midL > 0.7) {
176
+ midColor = midColor.getDarker(0.15);
177
+ }
178
+ config.colors = [ midColor.getDarker(0.3).toString(),
179
+ midColor.getDarker(0.15).toString(),
180
+ midColor.toString(),
181
+ midColor.getLighter(0.15).toString(),
182
+ midColor.getLighter(0.3).toString()];
183
+
184
+ delete config.baseColor;
185
+ }
186
+ if (config.colors) {
187
+ colors = config.colors.slice();
188
+ markerThemes = base.markerThemes;
189
+ seriesThemes = base.seriesThemes;
190
+ l = colors.length;
191
+ base.colors = colors;
192
+ for (; i < l; i++) {
193
+ color = colors[i];
194
+ markerTheme = markerThemes[i] || {};
195
+ seriesTheme = seriesThemes[i] || {};
196
+ markerTheme.fill = seriesTheme.fill = markerTheme.stroke = seriesTheme.stroke = color;
197
+ markerThemes[i] = markerTheme;
198
+ seriesThemes[i] = seriesTheme;
199
+ }
200
+ base.markerThemes = markerThemes.slice(0, l);
201
+ base.seriesThemes = seriesThemes.slice(0, l);
202
+ //the user is configuring something in particular (either markers, series or pie slices)
203
+ }
204
+ for (key in base) {
205
+ if (key in config) {
206
+ if (Ext.isObject(config[key]) && Ext.isObject(base[key])) {
207
+ Ext.apply(base[key], config[key]);
208
+ } else {
209
+ base[key] = config[key];
210
+ }
211
+ }
212
+ }
213
+ if (config.useGradients) {
214
+ colors = base.colors || (function () {
215
+ var ans = [];
216
+ for (i = 0, seriesThemes = base.seriesThemes, l = seriesThemes.length; i < l; i++) {
217
+ ans.push(seriesThemes[i].fill || seriesThemes[i].stroke);
218
+ }
219
+ return ans;
220
+ }());
221
+ for (i = 0, l = colors.length; i < l; i++) {
222
+ midColor = Ext.draw.Color.fromString(colors[i]);
223
+ if (midColor) {
224
+ color = midColor.getDarker(0.1).toString();
225
+ midColor = midColor.toString();
226
+ key = 'theme-' + midColor.substr(1) + '-' + color.substr(1) + '-' + d;
227
+ gradients.push({
228
+ id: key,
229
+ angle: 45,
230
+ stops: {
231
+ 0: {
232
+ color: midColor.toString()
233
+ },
234
+ 100: {
235
+ color: color.toString()
236
+ }
237
+ }
238
+ });
239
+ colors[i] = 'url(#' + key + ')';
240
+ }
241
+ }
242
+ base.gradients = gradients;
243
+ base.colors = colors;
244
+ }
245
+ /*
246
+ base.axis = Ext.apply(base.axis || {}, config.axis || {});
247
+ base.axisLabel = Ext.apply(base.axisLabel || {}, config.axisLabel || {});
248
+ base.axisTitle = Ext.apply(base.axisTitle || {}, config.axisTitle || {});
249
+ */
250
+ Ext.apply(this, base);
251
+ };
252
+ }());
253
+ });
@@ -0,0 +1,1062 @@
1
+ /**
2
+ * An abstract base class which provides shared methods for Containers across the Sencha product line.
3
+ *
4
+ * Please refer to sub class's documentation
5
+ *
6
+ * @private
7
+ */
8
+ Ext.define('Ext.container.AbstractContainer', {
9
+
10
+ /* Begin Definitions */
11
+
12
+ extend: 'Ext.Component',
13
+
14
+ requires: [
15
+ 'Ext.util.MixedCollection',
16
+ 'Ext.layout.container.Auto',
17
+ 'Ext.ZIndexManager'
18
+ ],
19
+
20
+ /* End Definitions */
21
+
22
+ renderTpl: '{%this.renderContainer(out,values)%}',
23
+
24
+ /**
25
+ * @cfg {String/Object} layout
26
+ * **Important**: In order for child items to be correctly sized and
27
+ * positioned, typically a layout manager **must** be specified through
28
+ * the `layout` configuration option.
29
+ *
30
+ * The sizing and positioning of child {@link #cfg-items} is the responsibility of
31
+ * the Container's layout manager which creates and manages the type of layout
32
+ * you have in mind. For example:
33
+ *
34
+ * If the {@link #layout} configuration is not explicitly specified for
35
+ * a general purpose container (e.g. Container or Panel) the
36
+ * {@link Ext.layout.container.Auto default layout manager} will be used
37
+ * which does nothing but render child components sequentially into the
38
+ * Container (no sizing or positioning will be performed in this situation).
39
+ *
40
+ * **layout** may be specified as either as an Object or as a String:
41
+ *
42
+ * # Specify as an Object
43
+ *
44
+ * Example usage:
45
+ *
46
+ * layout: {
47
+ * type: 'vbox',
48
+ * align: 'left'
49
+ * }
50
+ *
51
+ * - **type**
52
+ *
53
+ * The layout type to be used for this container. If not specified,
54
+ * a default {@link Ext.layout.container.Auto} will be created and used.
55
+ *
56
+ * Valid layout <code>type</code> values are:
57
+ *
58
+ * - {@link Ext.layout.container.Auto Auto} - **Default**
59
+ * - {@link Ext.layout.container.Card card}
60
+ * - {@link Ext.layout.container.Fit fit}
61
+ * - {@link Ext.layout.container.HBox hbox}
62
+ * - {@link Ext.layout.container.VBox vbox}
63
+ * - {@link Ext.layout.container.Anchor anchor}
64
+ * - {@link Ext.layout.container.Table table}
65
+ *
66
+ * - Layout specific configuration properties
67
+ *
68
+ * Additional layout specific configuration properties may also be
69
+ * specified. For complete details regarding the valid config options for
70
+ * each layout type, see the layout class corresponding to the `type`
71
+ * specified.
72
+ *
73
+ * # Specify as a String
74
+ *
75
+ * Example usage:
76
+ *
77
+ * layout: 'vbox'
78
+ *
79
+ * - **layout**
80
+ *
81
+ * The layout `type` to be used for this container (see list
82
+ * of valid layout type values above).
83
+ *
84
+ * Additional layout specific configuration properties. For complete
85
+ * details regarding the valid config options for each layout type, see the
86
+ * layout class corresponding to the `layout` specified.
87
+ *
88
+ * # Configuring the default layout type
89
+ *
90
+ * If a certain Container class has a default layout (For example a {@link Ext.toolbar.Toolbar Toolbar}
91
+ * with a default `Box` layout), then to simply configure the default layout,
92
+ * use an object, but without the `type` property:
93
+ *
94
+ *
95
+ * xtype: 'toolbar',
96
+ * layout: {
97
+ * pack: 'center'
98
+ * }
99
+ */
100
+
101
+ /**
102
+ * @cfg {String/Number} activeItem
103
+ * A string component id or the numeric index of the component that should be
104
+ * initially activated within the container's layout on render. For example,
105
+ * activeItem: 'item-1' or activeItem: 0 (index 0 = the first item in the
106
+ * container's collection). activeItem only applies to layout styles that can
107
+ * display items one at a time (like {@link Ext.layout.container.Card} and
108
+ * {@link Ext.layout.container.Fit}).
109
+ */
110
+
111
+ /**
112
+ * @cfg {Object/Object[]} items
113
+ * A single item, or an array of child Components to be added to this container
114
+ *
115
+ * **Unless configured with a {@link #layout}, a Container simply renders child
116
+ * Components serially into its encapsulating element and performs no sizing or
117
+ * positioning upon them.**
118
+ *
119
+ * Example:
120
+ *
121
+ * // specifying a single item
122
+ * items: {...},
123
+ * layout: 'fit', // The single items is sized to fit
124
+ *
125
+ * // specifying multiple items
126
+ * items: [{...}, {...}],
127
+ * layout: 'hbox', // The items are arranged horizontally
128
+ *
129
+ * Each item may be:
130
+ *
131
+ * - A {@link Ext.Component Component}
132
+ * - A Component configuration object
133
+ *
134
+ * If a configuration object is specified, the actual type of Component to be
135
+ * instantiated my be indicated by using the {@link Ext.Component#xtype xtype} option.
136
+ *
137
+ * Every Component class has its own {@link Ext.Component#xtype xtype}.
138
+ *
139
+ * If an {@link Ext.Component#xtype xtype} is not explicitly specified, the
140
+ * {@link #defaultType} for the Container is used, which by default is usually `panel`.
141
+ *
142
+ * # Notes:
143
+ *
144
+ * Ext uses lazy rendering. Child Components will only be rendered
145
+ * should it become necessary. Items are automatically laid out when they are first
146
+ * shown (no sizing is done while hidden), or in response to a {@link #doLayout} call.
147
+ *
148
+ * Do not specify {@link Ext.panel.Panel#contentEl contentEl} or
149
+ * {@link Ext.panel.Panel#html html} with `items`.
150
+ */
151
+
152
+ /**
153
+ * @cfg {Object/Function} defaults
154
+ * This option is a means of applying default settings to all added items whether added
155
+ * through the {@link #cfg-items} config or via the {@link #method-add} or {@link #insert} methods.
156
+ *
157
+ * Defaults are applied to both config objects and instantiated components conditionally
158
+ * so as not to override existing properties in the item (see {@link Ext#applyIf}).
159
+ *
160
+ * If the defaults option is specified as a function, then the function will be called
161
+ * using this Container as the scope (`this` reference) and passing the added item as
162
+ * the first parameter. Any resulting object from that call is then applied to the item
163
+ * as default properties.
164
+ *
165
+ * For example, to automatically apply padding to the body of each of a set of
166
+ * contained {@link Ext.panel.Panel} items, you could pass:
167
+ * `defaults: {bodyStyle:'padding:15px'}`.
168
+ *
169
+ * Usage:
170
+ *
171
+ * defaults: { // defaults are applied to items, not the container
172
+ * autoScroll: true
173
+ * },
174
+ * items: [
175
+ * // default will not be applied here, panel1 will be autoScroll: false
176
+ * {
177
+ * xtype: 'panel',
178
+ * id: 'panel1',
179
+ * autoScroll: false
180
+ * },
181
+ * // this component will have autoScroll: true
182
+ * new Ext.panel.Panel({
183
+ * id: 'panel2'
184
+ * })
185
+ * ]
186
+ */
187
+
188
+ /**
189
+ * @cfg {Boolean} suspendLayout
190
+ * If true, suspend calls to doLayout. Useful when batching multiple adds to a container
191
+ * and not passing them as multiple arguments or an array.
192
+ */
193
+ suspendLayout : false,
194
+
195
+ /**
196
+ * @cfg {Boolean} [autoDestroy=true]
197
+ * If true the container will automatically destroy any contained component that is removed
198
+ * from it, else destruction must be handled manually.
199
+ */
200
+ autoDestroy : true,
201
+
202
+ /**
203
+ * @cfg {String} [defaultType="panel"]
204
+ * The default {@link Ext.Component xtype} of child Components to create in this Container when
205
+ * a child item is specified as a raw configuration object, rather than as an instantiated Component.
206
+ */
207
+ defaultType: 'panel',
208
+
209
+ /**
210
+ * @cfg {Boolean} [detachOnRemove=true]
211
+ * True to move any component to the {@link Ext#getDetachedBody detachedBody} when the component is
212
+ * removed from this container. This option is only applicable when the component is not destroyed while
213
+ * being removed, see {@link #autoDestroy} and {@link #method-remove}. If this option is set to false, the DOM
214
+ * of the component will remain in the current place until it is explicitly moved.
215
+ */
216
+ detachOnRemove: true,
217
+
218
+ /*
219
+ * @property {Boolean} isContainer
220
+ * `true` in this class to identify an object as an instantiated Container, or subclass thereof.
221
+ */
222
+ isContainer : true,
223
+
224
+ /**
225
+ * @property {Number} layoutCounter
226
+ * The number of container layout calls made on this object.
227
+ * @private
228
+ */
229
+ layoutCounter : 0,
230
+
231
+ baseCls: Ext.baseCSSPrefix + 'container',
232
+
233
+ /**
234
+ * @cfg {String[]} bubbleEvents
235
+ * An array of events that, when fired, should be bubbled to any parent container.
236
+ * See {@link Ext.util.Observable#enableBubble}.
237
+ */
238
+ bubbleEvents: ['add', 'remove'],
239
+
240
+ // @private
241
+ initComponent : function(){
242
+ var me = this;
243
+ me.addEvents(
244
+ /**
245
+ * @event afterlayout
246
+ * Fires when the components in this container are arranged by the associated layout manager.
247
+ * @param {Ext.container.Container} this
248
+ * @param {Ext.layout.container.Container} layout The ContainerLayout implementation for this container
249
+ */
250
+ 'afterlayout',
251
+ /**
252
+ * @event beforeadd
253
+ * Fires before any {@link Ext.Component} is added or inserted into the container.
254
+ * A handler can return false to cancel the add.
255
+ * @param {Ext.container.Container} this
256
+ * @param {Ext.Component} component The component being added
257
+ * @param {Number} index The index at which the component will be added to the container's items collection
258
+ */
259
+ 'beforeadd',
260
+ /**
261
+ * @event beforeremove
262
+ * Fires before any {@link Ext.Component} is removed from the container. A handler can return
263
+ * false to cancel the remove.
264
+ * @param {Ext.container.Container} this
265
+ * @param {Ext.Component} component The component being removed
266
+ */
267
+ 'beforeremove',
268
+ /**
269
+ * @event add
270
+ * Fires after any {@link Ext.Component} is added or inserted into the container.
271
+ *
272
+ * **This event bubbles:** 'add' will also be fired when Component is added to any of
273
+ * the child containers or their childern or ...
274
+ * @param {Ext.container.Container} this
275
+ * @param {Ext.Component} component The component that was added
276
+ * @param {Number} index The index at which the component was added to the container's items collection
277
+ */
278
+ 'add',
279
+ /**
280
+ * @event remove
281
+ * Fires after any {@link Ext.Component} is removed from the container.
282
+ *
283
+ * **This event bubbles:** 'remove' will also be fired when Component is removed from any of
284
+ * the child containers or their children or ...
285
+ * @param {Ext.container.Container} this
286
+ * @param {Ext.Component} component The component that was removed
287
+ */
288
+ 'remove'
289
+ );
290
+
291
+ me.callParent();
292
+
293
+ me.getLayout();
294
+ me.initItems();
295
+ },
296
+
297
+ // @private
298
+ initItems : function() {
299
+ var me = this,
300
+ items = me.items;
301
+
302
+ /**
303
+ * The MixedCollection containing all the child items of this container.
304
+ * @property items
305
+ * @type Ext.util.AbstractMixedCollection
306
+ */
307
+ me.items = new Ext.util.AbstractMixedCollection(false, me.getComponentId);
308
+
309
+ if (items) {
310
+ if (!Ext.isArray(items)) {
311
+ items = [items];
312
+ }
313
+
314
+ me.add(items);
315
+ }
316
+ },
317
+
318
+ /**
319
+ * @private
320
+ * Returns the focus holder element associated with this Container. By default, this is the Container's target
321
+ * element. Subclasses which use embedded focusable elements (such as Window and Button) should override this for use
322
+ * by the {@link #method-focus} method.
323
+ * @returns {Ext.Element} the focus holding element.
324
+ */
325
+ getFocusEl: function() {
326
+ return this.getTargetEl();
327
+ },
328
+
329
+ finishRenderChildren: function () {
330
+ this.callParent();
331
+
332
+ var layout = this.getLayout();
333
+
334
+ if (layout) {
335
+ layout.finishRender();
336
+ }
337
+ },
338
+
339
+ beforeRender: function () {
340
+ var me = this,
341
+ layout = me.getLayout();
342
+
343
+ me.callParent();
344
+
345
+ if (!layout.initialized) {
346
+ layout.initLayout();
347
+ }
348
+ },
349
+
350
+ setupRenderTpl: function (renderTpl) {
351
+ var layout = this.getLayout();
352
+
353
+ this.callParent(arguments);
354
+
355
+ layout.setupRenderTpl(renderTpl);
356
+ },
357
+
358
+ // @private
359
+ setLayout : function(layout) {
360
+ var currentLayout = this.layout;
361
+
362
+ if (currentLayout && currentLayout.isLayout && currentLayout != layout) {
363
+ currentLayout.setOwner(null);
364
+ }
365
+
366
+ this.layout = layout;
367
+ layout.setOwner(this);
368
+ },
369
+
370
+ /**
371
+ * Returns the {@link Ext.layout.container.Container layout} instance currently associated with this Container.
372
+ * If a layout has not been instantiated yet, that is done first
373
+ * @return {Ext.layout.container.Container} The layout
374
+ */
375
+ getLayout : function() {
376
+ var me = this;
377
+ if (!me.layout || !me.layout.isLayout) {
378
+ // Pass any configured in layout property, defaulting to the prototype's layout property, falling back to Auto.
379
+ me.setLayout(Ext.layout.Layout.create(me.layout, me.self.prototype.layout || 'autocontainer'));
380
+ }
381
+
382
+ return me.layout;
383
+ },
384
+
385
+ /**
386
+ * Manually force this container's layout to be recalculated. The framework uses this internally to refresh layouts
387
+ * form most cases.
388
+ * @return {Ext.container.Container} this
389
+ */
390
+ doLayout : function() {
391
+ this.updateLayout();
392
+ return this;
393
+ },
394
+
395
+ /**
396
+ * Invoked after the Container has laid out (and rendered if necessary)
397
+ * its child Components.
398
+ *
399
+ * @param {Ext.layout.container.Container} layout
400
+ *
401
+ * @template
402
+ * @protected
403
+ */
404
+ afterLayout : function(layout) {
405
+ var me = this;
406
+ ++me.layoutCounter;
407
+ if (me.hasListeners.afterlayout) {
408
+ me.fireEvent('afterlayout', me, layout);
409
+ }
410
+ },
411
+
412
+ // @private
413
+ prepareItems : function(items, applyDefaults) {
414
+ // Create an Array which does not refer to the passed array.
415
+ // The passed array is a reference to a user's config object and MUST NOT be mutated.
416
+ if (Ext.isArray(items)) {
417
+ items = items.slice();
418
+ } else {
419
+ items = [items];
420
+ }
421
+
422
+ // Make sure defaults are applied and item is initialized
423
+ var i = 0,
424
+ len = items.length,
425
+ item;
426
+
427
+ for (; i < len; i++) {
428
+ item = items[i];
429
+ if (item == null) {
430
+ Ext.Array.erase(items, i, 1);
431
+ --i;
432
+ --len;
433
+ } else {
434
+ if (applyDefaults) {
435
+ item = this.applyDefaults(item);
436
+ }
437
+ items[i] = this.lookupComponent(item);
438
+ }
439
+ }
440
+
441
+ return items;
442
+ },
443
+
444
+ // @private
445
+ applyDefaults : function(config) {
446
+ var defaults = this.defaults;
447
+
448
+ if (defaults) {
449
+ if (Ext.isFunction(defaults)) {
450
+ defaults = defaults.call(this, config);
451
+ }
452
+
453
+ if (Ext.isString(config)) {
454
+ config = Ext.ComponentManager.get(config);
455
+ }
456
+ Ext.applyIf(config, defaults);
457
+ }
458
+ return config;
459
+ },
460
+
461
+ // @private
462
+ lookupComponent : function(comp) {
463
+ return (typeof comp == 'string') ? Ext.ComponentManager.get(comp)
464
+ : Ext.ComponentManager.create(comp, this.defaultType);
465
+ },
466
+
467
+ // @private - used as the key lookup function for the items collection
468
+ getComponentId : function(comp) {
469
+ return comp.getItemId();
470
+ },
471
+
472
+ /**
473
+ * Adds {@link Ext.Component Component}(s) to this Container.
474
+ *
475
+ * ## Description:
476
+ *
477
+ * - Fires the {@link #beforeadd} event before adding.
478
+ * - The Container's {@link #defaults default config values} will be applied
479
+ * accordingly (see `{@link #defaults}` for details).
480
+ * - Fires the `{@link #event-add}` event after the component has been added.
481
+ *
482
+ * ## Notes:
483
+ *
484
+ * If the Container is __already rendered__ when `add`
485
+ * is called, it will render the newly added Component into its content area.
486
+ *
487
+ * **If** the Container was configured with a size-managing {@link #layout} manager,
488
+ * the Container will recalculate its internal layout at this time too.
489
+ *
490
+ * Note that the default layout manager simply renders child Components sequentially
491
+ * into the content area and thereafter performs no sizing.
492
+ *
493
+ * If adding multiple new child Components, pass them as an array to the `add` method,
494
+ * so that only one layout recalculation is performed.
495
+ *
496
+ * tb = new {@link Ext.toolbar.Toolbar}({
497
+ * renderTo: document.body
498
+ * }); // toolbar is rendered
499
+ * // add multiple items.
500
+ * // ({@link #defaultType} for {@link Ext.toolbar.Toolbar Toolbar} is 'button')
501
+ * tb.add([{text:'Button 1'}, {text:'Button 2'}]);
502
+ *
503
+ * To inject components between existing ones, use the {@link #insert} method.
504
+ *
505
+ * ## Warning:
506
+ *
507
+ * Components directly managed by the BorderLayout layout manager may not be removed
508
+ * or added. See the Notes for {@link Ext.layout.container.Border BorderLayout} for
509
+ * more details.
510
+ *
511
+ * @param {Ext.Component[]/Ext.Component...} component
512
+ * Either one or more Components to add or an Array of Components to add.
513
+ * See `{@link #cfg-items}` for additional information.
514
+ *
515
+ * @return {Ext.Component[]/Ext.Component} The Components that were added.
516
+ */
517
+ add : function() {
518
+ var me = this,
519
+ args = Ext.Array.slice(arguments),
520
+ index = (typeof args[0] == 'number') ? args.shift() : -1,
521
+ layout = me.getLayout(),
522
+ addingArray, items, i, length, item, pos, ret;
523
+
524
+ if (args.length == 1 && Ext.isArray(args[0])) {
525
+ items = args[0];
526
+ addingArray = true;
527
+ } else {
528
+ items = args;
529
+ }
530
+
531
+ ret = items = me.prepareItems(items, true);
532
+ length = items.length;
533
+
534
+ if (me.rendered) {
535
+ Ext.suspendLayouts(); // suspend layouts while adding items...
536
+ }
537
+
538
+ if (!addingArray && length == 1) { // an array of 1 should still return an array...
539
+ ret = items[0];
540
+ }
541
+
542
+ // loop
543
+ for (i = 0; i < length; i++) {
544
+ item = items[i];
545
+ //<debug>
546
+ if (!item) {
547
+ Ext.Error.raise("Cannot add null item to Container with itemId/id: " + me.getItemId());
548
+ }
549
+ //</debug>
550
+
551
+ pos = (index < 0) ? me.items.length : (index + i);
552
+
553
+ // Floating Components are not added into the items collection
554
+ // But they do get an upward ownerCt link so that they can traverse
555
+ // up to their z-index parent.
556
+ if (item.floating) {
557
+ item.onAdded(me, pos);
558
+ } else if ((!me.hasListeners.beforeadd || me.fireEvent('beforeadd', me, item, pos) !== false) && me.onBeforeAdd(item) !== false) {
559
+ me.items.insert(pos, item);
560
+ item.onAdded(me, pos);
561
+ me.onAdd(item, pos);
562
+ layout.onAdd(item, pos);
563
+
564
+ if (me.hasListeners.add) {
565
+ me.fireEvent('add', me, item, pos);
566
+ }
567
+ }
568
+ }
569
+
570
+ // We need to update our layout after adding all passed items
571
+ me.updateLayout();
572
+ if (me.rendered) {
573
+ Ext.resumeLayouts(true);
574
+ }
575
+
576
+ return ret;
577
+ },
578
+
579
+ /**
580
+ * This method is invoked after a new Component has been added. It
581
+ * is passed the Component which has been added. This method may
582
+ * be used to update any internal structure which may depend upon
583
+ * the state of the child items.
584
+ *
585
+ * @param {Ext.Component} component
586
+ * @param {Number} position
587
+ *
588
+ * @template
589
+ * @protected
590
+ */
591
+ onAdd : Ext.emptyFn,
592
+
593
+ /**
594
+ * This method is invoked after a new Component has been
595
+ * removed. It is passed the Component which has been
596
+ * removed. This method may be used to update any internal
597
+ * structure which may depend upon the state of the child items.
598
+ *
599
+ * @param {Ext.Component} component
600
+ * @param {Boolean} autoDestroy
601
+ *
602
+ * @template
603
+ * @protected
604
+ */
605
+ onRemove : Ext.emptyFn,
606
+
607
+ /**
608
+ * Inserts a Component into this Container at a specified index. Fires the
609
+ * {@link #beforeadd} event before inserting, then fires the {@link #event-add}
610
+ * event after the Component has been inserted.
611
+ *
612
+ * @param {Number} index The index at which the Component will be inserted
613
+ * into the Container's items collection
614
+ *
615
+ * @param {Ext.Component} component The child Component to insert.
616
+ *
617
+ * Ext uses lazy rendering, and will only render the inserted Component should
618
+ * it become necessary.
619
+ *
620
+ * A Component config object may be passed in order to avoid the overhead of
621
+ * constructing a real Component object if lazy rendering might mean that the
622
+ * inserted Component will not be rendered immediately. To take advantage of
623
+ * this 'lazy instantiation', set the {@link Ext.Component#xtype} config
624
+ * property to the registered type of the Component wanted.
625
+ *
626
+ * For a list of all available xtypes, see {@link Ext.Component}.
627
+ *
628
+ * @return {Ext.Component} component The Component (or config object) that was
629
+ * inserted with the Container's default config values applied.
630
+ */
631
+ insert : function(index, comp) {
632
+ return this.add(index, comp);
633
+ },
634
+
635
+ /**
636
+ * Moves a Component within the Container
637
+ * @param {Number} fromIdx The index the Component you wish to move is currently at.
638
+ * @param {Number} toIdx The new index for the Component.
639
+ * @return {Ext.Component} component The Component (or config object) that was moved.
640
+ */
641
+ move : function(fromIdx, toIdx) {
642
+ var items = this.items,
643
+ item;
644
+ item = items.removeAt(fromIdx);
645
+ if (item === false) {
646
+ return false;
647
+ }
648
+ items.insert(toIdx, item);
649
+ this.doLayout();
650
+ return item;
651
+ },
652
+
653
+ /**
654
+ * This method is invoked before adding a new child Component. It
655
+ * is passed the new Component, and may be used to modify the
656
+ * Component, or prepare the Container in some way. Returning
657
+ * false aborts the add operation.
658
+ *
659
+ * @param {Ext.Component} item
660
+ *
661
+ * @template
662
+ * @protected
663
+ */
664
+ onBeforeAdd : function(item) {
665
+ var me = this,
666
+ border = item.border;
667
+
668
+ if (item.ownerCt) {
669
+ item.ownerCt.remove(item, false);
670
+ }
671
+
672
+ if (me.border === false || me.border === 0) {
673
+ // If the parent has no border, only use an explicitly defined border
674
+ item.border = Ext.isDefined(border) && border !== false && border !== 0;
675
+ }
676
+ },
677
+
678
+ /**
679
+ * Removes a component from this container. Fires the {@link #beforeremove} event
680
+ * before removing, then fires the {@link #event-remove} event after the component has
681
+ * been removed.
682
+ *
683
+ * @param {Ext.Component/String} component The component reference or id to remove.
684
+ *
685
+ * @param {Boolean} [autoDestroy] True to automatically invoke the removed Component's
686
+ * {@link Ext.Component#method-destroy} function.
687
+ *
688
+ * Defaults to the value of this Container's {@link #autoDestroy} config.
689
+ *
690
+ * @return {Ext.Component} component The Component that was removed.
691
+ */
692
+ remove : function(comp, autoDestroy) {
693
+ var me = this,
694
+ c = me.getComponent(comp);
695
+ //<debug>
696
+ if (Ext.isDefined(Ext.global.console) && !c) {
697
+ Ext.global.console.warn("Attempted to remove a component that does not exist. Ext.container.Container: remove takes an argument of the component to remove. cmp.remove() is incorrect usage.");
698
+ }
699
+ //</debug>
700
+
701
+ if (c && (!me.hasListeners.beforeremove || me.fireEvent('beforeremove', me, c) !== false)) {
702
+ me.doRemove(c, autoDestroy);
703
+ if (me.hasListeners.remove) {
704
+ me.fireEvent('remove', me, c);
705
+ }
706
+
707
+ if (!me.destroying) {
708
+ me.doLayout();
709
+ }
710
+ }
711
+
712
+ return c;
713
+ },
714
+
715
+ // @private
716
+ doRemove : function(component, autoDestroy) {
717
+ var me = this,
718
+ layout = me.layout,
719
+ hasLayout = layout && me.rendered,
720
+ destroying = autoDestroy === true || (autoDestroy !== false && me.autoDestroy);
721
+
722
+ autoDestroy = autoDestroy === true || (autoDestroy !== false && me.autoDestroy);
723
+ me.items.remove(component);
724
+ component.onRemoved(destroying);
725
+
726
+ if (hasLayout) {
727
+ layout.onRemove(component);
728
+ }
729
+
730
+ me.onRemove(component, destroying);
731
+
732
+ // Destroy if we were explicitly told to, or we're defaulting to our autoDestroy configuration
733
+ if (destroying) {
734
+ component.destroy();
735
+ }
736
+ // Only have the layout perform remove postprocessing if the Component is not being destroyed
737
+ else {
738
+ if (hasLayout) {
739
+ layout.afterRemove(component);
740
+ }
741
+ if (me.detachOnRemove && component.rendered) {
742
+ Ext.getDetachedBody().appendChild(component.getEl());
743
+ }
744
+ }
745
+ },
746
+
747
+ /**
748
+ * Removes all components from this container.
749
+ * @param {Boolean} [autoDestroy] True to automatically invoke the removed
750
+ * Component's {@link Ext.Component#method-destroy} function.
751
+ * Defaults to the value of this Container's {@link #autoDestroy} config.
752
+ * @return {Ext.Component[]} Array of the removed components
753
+ */
754
+ removeAll : function(autoDestroy) {
755
+ var me = this,
756
+ removeItems = me.items.items.slice(),
757
+ items = [],
758
+ i = 0,
759
+ len = removeItems.length,
760
+ item;
761
+
762
+ // Suspend Layouts while we remove multiple items from the container
763
+ me.suspendLayouts();
764
+ for (; i < len; i++) {
765
+ item = removeItems[i];
766
+ me.remove(item, autoDestroy);
767
+
768
+ if (item.ownerCt !== me) {
769
+ items.push(item);
770
+ }
771
+ }
772
+
773
+ // Resume Layouts now that all items have been removed and do a single layout (if we removed anything!)
774
+ me.resumeLayouts(!!len);
775
+ return items;
776
+ },
777
+
778
+ // Used by ComponentQuery to retrieve all of the items
779
+ // which can potentially be considered a child of this Container.
780
+ // This should be overriden by components which have child items
781
+ // that are not contained in items. For example dockedItems, menu, etc
782
+ // IMPORTANT note for maintainers:
783
+ // Items are returned in tree traversal order. Each item is appended to the result array
784
+ // followed by the results of that child's getRefItems call.
785
+ // Floating child items are appended after internal child items.
786
+ getRefItems : function(deep) {
787
+ var me = this,
788
+ items = me.items.items,
789
+ len = items.length,
790
+ i = 0,
791
+ item,
792
+ result = [];
793
+
794
+ for (; i < len; i++) {
795
+ item = items[i];
796
+ result.push(item);
797
+ if (deep && item.getRefItems) {
798
+ result.push.apply(result, item.getRefItems(true));
799
+ }
800
+ }
801
+
802
+ // Append floating items to the list.
803
+ // These will only be present after they are rendered.
804
+ if (me.floatingItems && me.floatingItems.accessList) {
805
+ result.push.apply(result, me.floatingItems.accessList);
806
+ }
807
+
808
+ return result;
809
+ },
810
+
811
+ /**
812
+ * Cascades down the component/container heirarchy from this component (passed in
813
+ * the first call), calling the specified function with each component. The scope
814
+ * (this reference) of the function call will be the scope provided or the current
815
+ * component. The arguments to the function will be the args provided or the current
816
+ * component. If the function returns false at any point, the cascade is stopped on
817
+ * that branch.
818
+ * @param {Function} fn The function to call
819
+ * @param {Object} [scope] The scope of the function (defaults to current component)
820
+ * @param {Array} [args] The args to call the function with. The current component
821
+ * always passed as the last argument.
822
+ * @return {Ext.Container} this
823
+ */
824
+ cascade : function(fn, scope, origArgs){
825
+ var me = this,
826
+ cs = me.items ? me.items.items : [],
827
+ len = cs.length,
828
+ i = 0,
829
+ c,
830
+ args = origArgs ? origArgs.concat(me) : [me],
831
+ componentIndex = args.length - 1;
832
+
833
+ if (fn.apply(scope || me, args) !== false) {
834
+ for (; i < len; i++){
835
+ c = cs[i];
836
+ if (c.cascade) {
837
+ c.cascade(fn, scope, origArgs);
838
+ } else {
839
+ args[componentIndex] = c;
840
+ fn.apply(scope || cs, args);
841
+ }
842
+ }
843
+ }
844
+ return this;
845
+ },
846
+
847
+ /**
848
+ * Determines whether **this Container** is an ancestor of the passed Component.
849
+ * This will return `true` if the passed Component is anywhere within the subtree
850
+ * beneath this Container.
851
+ * @param {Ext.Component} possibleDescendant The Component to test for presence
852
+ * within this Container's subtree.
853
+ */
854
+ isAncestor: function(possibleDescendant) {
855
+ while (possibleDescendant) {
856
+ if (possibleDescendant.ownerCt === this) {
857
+ return true;
858
+ }
859
+ possibleDescendant = possibleDescendant.ownerCt;
860
+ }
861
+ },
862
+
863
+ /**
864
+ * Examines this container's {@link #property-items} **property** and gets a direct child
865
+ * component of this container.
866
+ *
867
+ * @param {String/Number} comp This parameter may be any of the following:
868
+ *
869
+ * - a **String** : representing the {@link Ext.Component#itemId itemId}
870
+ * or {@link Ext.Component#id id} of the child component.
871
+ * - a **Number** : representing the position of the child component
872
+ * within the {@link #property-items} **property**
873
+ *
874
+ * For additional information see {@link Ext.util.MixedCollection#get}.
875
+ *
876
+ * @return Ext.Component The component (if found).
877
+ */
878
+ getComponent : function(comp) {
879
+ if (Ext.isObject(comp)) {
880
+ comp = comp.getItemId();
881
+ }
882
+
883
+ return this.items.get(comp);
884
+ },
885
+
886
+ /**
887
+ * Retrieves all descendant components which match the passed selector.
888
+ * Executes an Ext.ComponentQuery.query using this container as its root.
889
+ * @param {String} [selector] Selector complying to an Ext.ComponentQuery selector.
890
+ * If no selector is specified all items will be returned.
891
+ * @return {Ext.Component[]} Components which matched the selector
892
+ */
893
+ query : function(selector) {
894
+ selector = selector || '*';
895
+ return Ext.ComponentQuery.query(selector, this);
896
+ },
897
+
898
+ /**
899
+ * Retrieves all descendant components which match the passed function.
900
+ * The function should return false for components that are to be
901
+ * excluded from the selection.
902
+ * @param {Function} fn The matcher function. It will be called with a single argument,
903
+ * the component being tested.
904
+ * @param {Object} [scope] The scope in which to run the function. If not specified,
905
+ * it will default to the active component.
906
+ * @return {Ext.Component[]} Components matched by the passed function
907
+ */
908
+ queryBy: function(fn, scope) {
909
+ var out = [],
910
+ items = this.getRefItems(true),
911
+ i = 0,
912
+ len = items.length,
913
+ item;
914
+
915
+ for (; i < len; ++i) {
916
+ item = items[i];
917
+ if (fn.call(scope || item, item) !== false) {
918
+ out.push(item);
919
+ }
920
+ }
921
+ return out;
922
+ },
923
+
924
+ /**
925
+ * Finds a component at any level under this container matching the id/itemId.
926
+ * This is a shorthand for calling ct.down('#' + id);
927
+ * @param {String} id The id to find
928
+ * @return {Ext.Component} The matching id, null if not found
929
+ */
930
+ queryById: function(id){
931
+ return this.down('#' + id);
932
+ },
933
+
934
+ /**
935
+ * Retrieves the first direct child of this container which matches the passed selector.
936
+ * The passed in selector must comply with an Ext.ComponentQuery selector.
937
+ * @param {String} [selector] An Ext.ComponentQuery selector. If no selector is
938
+ * specified, the first child will be returned.
939
+ * @return Ext.Component
940
+ */
941
+ child : function(selector) {
942
+ selector = selector || '';
943
+ return this.query('> ' + selector)[0] || null;
944
+ },
945
+
946
+ nextChild: function(child, selector) {
947
+ var me = this,
948
+ result,
949
+ childIndex = me.items.indexOf(child);
950
+
951
+ if (childIndex !== -1) {
952
+ result = selector ? Ext.ComponentQuery(selector, me.items.items.slice(childIndex + 1)) : me.items.getAt(childIndex + 1);
953
+ if (!result && me.ownerCt) {
954
+ result = me.ownerCt.nextChild(me, selector);
955
+ }
956
+ }
957
+ return result;
958
+ },
959
+
960
+ prevChild: function(child, selector) {
961
+ var me = this,
962
+ result,
963
+ childIndex = me.items.indexOf(child);
964
+
965
+ if (childIndex !== -1) {
966
+ result = selector ? Ext.ComponentQuery(selector, me.items.items.slice(childIndex + 1)) : me.items.getAt(childIndex + 1);
967
+ if (!result && me.ownerCt) {
968
+ result = me.ownerCt.nextChild(me, selector);
969
+ }
970
+ }
971
+ return result;
972
+ },
973
+
974
+ /**
975
+ * Retrieves the first descendant of this container which matches the passed selector.
976
+ * The passed in selector must comply with an Ext.ComponentQuery selector.
977
+ * @param {String} [selector] An Ext.ComponentQuery selector. If no selector is
978
+ * specified, the first child will be returned.
979
+ * @return Ext.Component
980
+ */
981
+ down : function(selector) {
982
+ return this.query(selector)[0] || null;
983
+ },
984
+
985
+ // @private
986
+ // Enable all immediate children that was previously disabled
987
+ // Override enable because onEnable only gets called when rendered
988
+ enable: function() {
989
+ this.callParent(arguments);
990
+
991
+ var itemsToDisable = this.getChildItemsToDisable(),
992
+ length = itemsToDisable.length,
993
+ item, i;
994
+
995
+ for (i = 0; i < length; i++) {
996
+ item = itemsToDisable[i];
997
+
998
+ if (item.resetDisable) {
999
+ item.enable();
1000
+ }
1001
+ }
1002
+ },
1003
+
1004
+ // Inherit docs
1005
+ // Disable all immediate children that was previously disabled
1006
+ // Override disable because onDisable only gets called when rendered
1007
+ disable: function() {
1008
+ this.callParent(arguments);
1009
+
1010
+ var itemsToDisable = this.getChildItemsToDisable(),
1011
+ length = itemsToDisable.length,
1012
+ item, i;
1013
+
1014
+ for (i = 0; i < length; i++) {
1015
+ item = itemsToDisable[i];
1016
+
1017
+ if (item.resetDisable !== false && !item.disabled) {
1018
+ item.disable();
1019
+ item.resetDisable = true;
1020
+ }
1021
+ }
1022
+ },
1023
+
1024
+ /**
1025
+ * Gets a list of child components to enable/disable when the container is
1026
+ * enabled/disabled
1027
+ * @private
1028
+ * @return {Ext.Component[]} Items to be enabled/disabled
1029
+ */
1030
+ getChildItemsToDisable: function(){
1031
+ return this.query('[isFormField],button');
1032
+ },
1033
+
1034
+ /**
1035
+ * Occurs before componentLayout is run. Returning false from this method
1036
+ * will prevent the containerLayout from being executed.
1037
+ *
1038
+ * @template
1039
+ * @protected
1040
+ */
1041
+ beforeLayout: function() {
1042
+ return true;
1043
+ },
1044
+
1045
+ // @private
1046
+ beforeDestroy : function() {
1047
+ var me = this,
1048
+ items = me.items,
1049
+ c;
1050
+
1051
+ if (items) {
1052
+ while ((c = items.first())) {
1053
+ me.doRemove(c, true);
1054
+ }
1055
+ }
1056
+
1057
+ Ext.destroy(
1058
+ me.layout
1059
+ );
1060
+ me.callParent();
1061
+ }
1062
+ });