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,326 @@
1
+ /**
2
+ * @author Brian Moeskau <brian@sencha.com>
3
+ * @docauthor Brian Moeskau <brian@sencha.com>
4
+ *
5
+ * A wrapper class for the native JavaScript Error object that adds a few useful capabilities for handling
6
+ * errors in an Ext application. When you use Ext.Error to {@link #raise} an error from within any class that
7
+ * uses the Ext 4 class system, the Error class can automatically add the source class and method from which
8
+ * the error was raised. It also includes logic to automatically log the eroor to the console, if available,
9
+ * with additional metadata about the error. In all cases, the error will always be thrown at the end so that
10
+ * execution will halt.
11
+ *
12
+ * Ext.Error also offers a global error {@link #handle handling} method that can be overridden in order to
13
+ * handle application-wide errors in a single spot. You can optionally {@link #ignore} errors altogether,
14
+ * although in a real application it's usually a better idea to override the handling function and perform
15
+ * logging or some other method of reporting the errors in a way that is meaningful to the application.
16
+ *
17
+ * At its simplest you can simply raise an error as a simple string from within any code:
18
+ *
19
+ * Example usage:
20
+ *
21
+ * Ext.Error.raise('Something bad happened!');
22
+ *
23
+ * If raised from plain JavaScript code, the error will be logged to the console (if available) and the message
24
+ * displayed. In most cases however you'll be raising errors from within a class, and it may often be useful to add
25
+ * additional metadata about the error being raised. The {@link #raise} method can also take a config object.
26
+ * In this form the `msg` attribute becomes the error description, and any other data added to the config gets
27
+ * added to the error object and, if the console is available, logged to the console for inspection.
28
+ *
29
+ * Example usage:
30
+ *
31
+ * Ext.define('Ext.Foo', {
32
+ * doSomething: function(option){
33
+ * if (someCondition === false) {
34
+ * Ext.Error.raise({
35
+ * msg: 'You cannot do that!',
36
+ * option: option, // whatever was passed into the method
37
+ * 'error code': 100 // other arbitrary info
38
+ * });
39
+ * }
40
+ * }
41
+ * });
42
+ *
43
+ * If a console is available (that supports the `console.dir` function) you'll see console output like:
44
+ *
45
+ * An error was raised with the following data:
46
+ * option: Object { foo: "bar"}
47
+ * foo: "bar"
48
+ * error code: 100
49
+ * msg: "You cannot do that!"
50
+ * sourceClass: "Ext.Foo"
51
+ * sourceMethod: "doSomething"
52
+ *
53
+ * uncaught exception: You cannot do that!
54
+ *
55
+ * As you can see, the error will report exactly where it was raised and will include as much information as the
56
+ * raising code can usefully provide.
57
+ *
58
+ * If you want to handle all application errors globally you can simply override the static {@link #handle} method
59
+ * and provide whatever handling logic you need. If the method returns true then the error is considered handled
60
+ * and will not be thrown to the browser. If anything but true is returned then the error will be thrown normally.
61
+ *
62
+ * Example usage:
63
+ *
64
+ * Ext.Error.handle = function(err) {
65
+ * if (err.someProperty == 'NotReallyAnError') {
66
+ * // maybe log something to the application here if applicable
67
+ * return true;
68
+ * }
69
+ * // any non-true return value (including none) will cause the error to be thrown
70
+ * }
71
+ *
72
+ */
73
+ Ext.Error = Ext.extend(Error, {
74
+ statics: {
75
+ /**
76
+ * @property {Boolean} ignore
77
+ * Static flag that can be used to globally disable error reporting to the browser if set to true
78
+ * (defaults to false). Note that if you ignore Ext errors it's likely that some other code may fail
79
+ * and throw a native JavaScript error thereafter, so use with caution. In most cases it will probably
80
+ * be preferable to supply a custom error {@link #handle handling} function instead.
81
+ *
82
+ * Example usage:
83
+ *
84
+ * Ext.Error.ignore = true;
85
+ *
86
+ * @static
87
+ */
88
+ ignore: false,
89
+
90
+ /**
91
+ * @property {Boolean} notify
92
+ * Static flag that can be used to globally control error notification to the user. Unlike
93
+ * Ex.Error.ignore, this does not effect exceptions. They are still thrown. This value can be
94
+ * set to false to disable the alert notification (default is true for IE6 and IE7).
95
+ *
96
+ * Only the first error will generate an alert. Internally this flag is set to false when the
97
+ * first error occurs prior to displaying the alert.
98
+ *
99
+ * This flag is not used in a release build.
100
+ *
101
+ * Example usage:
102
+ *
103
+ * Ext.Error.notify = false;
104
+ *
105
+ * @static
106
+ */
107
+ //notify: Ext.isIE6 || Ext.isIE7,
108
+
109
+ /**
110
+ * Raise an error that can include additional data and supports automatic console logging if available.
111
+ * You can pass a string error message or an object with the `msg` attribute which will be used as the
112
+ * error message. The object can contain any other name-value attributes (or objects) to be logged
113
+ * along with the error.
114
+ *
115
+ * Note that after displaying the error message a JavaScript error will ultimately be thrown so that
116
+ * execution will halt.
117
+ *
118
+ * Example usage:
119
+ *
120
+ * Ext.Error.raise('A simple string error message');
121
+ *
122
+ * // or...
123
+ *
124
+ * Ext.define('Ext.Foo', {
125
+ * doSomething: function(option){
126
+ * if (someCondition === false) {
127
+ * Ext.Error.raise({
128
+ * msg: 'You cannot do that!',
129
+ * option: option, // whatever was passed into the method
130
+ * 'error code': 100 // other arbitrary info
131
+ * });
132
+ * }
133
+ * }
134
+ * });
135
+ *
136
+ * @param {String/Object} err The error message string, or an object containing the attribute "msg" that will be
137
+ * used as the error message. Any other data included in the object will also be logged to the browser console,
138
+ * if available.
139
+ * @static
140
+ */
141
+ raise: function(err){
142
+ err = err || {};
143
+ if (Ext.isString(err)) {
144
+ err = { msg: err };
145
+ }
146
+
147
+ var method = this.raise.caller,
148
+ msg;
149
+
150
+ if (method) {
151
+ if (method.$name) {
152
+ err.sourceMethod = method.$name;
153
+ }
154
+ if (method.$owner) {
155
+ err.sourceClass = method.$owner.$className;
156
+ }
157
+ }
158
+
159
+ if (Ext.Error.handle(err) !== true) {
160
+ msg = Ext.Error.prototype.toString.call(err);
161
+
162
+ Ext.log({
163
+ msg: msg,
164
+ level: 'error',
165
+ dump: err,
166
+ stack: true
167
+ });
168
+
169
+ throw new Ext.Error(err);
170
+ }
171
+ },
172
+
173
+ /**
174
+ * Globally handle any Ext errors that may be raised, optionally providing custom logic to
175
+ * handle different errors individually. Return true from the function to bypass throwing the
176
+ * error to the browser, otherwise the error will be thrown and execution will halt.
177
+ *
178
+ * Example usage:
179
+ *
180
+ * Ext.Error.handle = function(err) {
181
+ * if (err.someProperty == 'NotReallyAnError') {
182
+ * // maybe log something to the application here if applicable
183
+ * return true;
184
+ * }
185
+ * // any non-true return value (including none) will cause the error to be thrown
186
+ * }
187
+ *
188
+ * @param {Ext.Error} err The Ext.Error object being raised. It will contain any attributes that were originally
189
+ * raised with it, plus properties about the method and class from which the error originated (if raised from a
190
+ * class that uses the Ext 4 class system).
191
+ * @static
192
+ */
193
+ handle: function(){
194
+ return Ext.Error.ignore;
195
+ }
196
+ },
197
+
198
+ // This is the standard property that is the name of the constructor.
199
+ name: 'Ext.Error',
200
+
201
+ /**
202
+ * Creates new Error object.
203
+ * @param {String/Object} config The error message string, or an object containing the
204
+ * attribute "msg" that will be used as the error message. Any other data included in
205
+ * the object will be applied to the error instance and logged to the browser console, if available.
206
+ */
207
+ constructor: function(config){
208
+ if (Ext.isString(config)) {
209
+ config = { msg: config };
210
+ }
211
+
212
+ var me = this;
213
+
214
+ Ext.apply(me, config);
215
+
216
+ me.message = me.message || me.msg; // 'message' is standard ('msg' is non-standard)
217
+ // note: the above does not work in old WebKit (me.message is readonly) (Safari 4)
218
+ },
219
+
220
+ /**
221
+ * Provides a custom string representation of the error object. This is an override of the base JavaScript
222
+ * `Object.toString` method, which is useful so that when logged to the browser console, an error object will
223
+ * be displayed with a useful message instead of `[object Object]`, the default `toString` result.
224
+ *
225
+ * The default implementation will include the error message along with the raising class and method, if available,
226
+ * but this can be overridden with a custom implementation either at the prototype level (for all errors) or on
227
+ * a particular error instance, if you want to provide a custom description that will show up in the console.
228
+ * @return {String} The error message. If raised from within the Ext 4 class system, the error message will also
229
+ * include the raising class and method names, if available.
230
+ */
231
+ toString: function(){
232
+ var me = this,
233
+ className = me.sourceClass ? me.sourceClass : '',
234
+ methodName = me.sourceMethod ? '.' + me.sourceMethod + '(): ' : '',
235
+ msg = me.msg || '(No description provided)';
236
+
237
+ return className + methodName + msg;
238
+ }
239
+ });
240
+
241
+ /*
242
+ * Create a function that will throw an error if called (in debug mode) with a message that
243
+ * indicates the method has been removed.
244
+ * @param {String} suggestion Optional text to include in the message (a workaround perhaps).
245
+ * @return {Function} The generated function.
246
+ * @private
247
+ */
248
+ Ext.deprecated = function (suggestion) {
249
+ //<debug>
250
+ if (!suggestion) {
251
+ suggestion = '';
252
+ }
253
+
254
+ function fail () {
255
+ Ext.Error.raise('The method "' + fail.$owner.$className + '.' + fail.$name +
256
+ '" has been removed. ' + suggestion);
257
+ }
258
+
259
+ return fail;
260
+ //</debug>
261
+ return Ext.emptyFn;
262
+ };
263
+
264
+ /*
265
+ * This mechanism is used to notify the user of the first error encountered on the page. This
266
+ * was previously internal to Ext.Error.raise and is a desirable feature since errors often
267
+ * slip silently under the radar. It cannot live in Ext.Error.raise since there are times
268
+ * where exceptions are handled in a try/catch.
269
+ */
270
+ //<debug>
271
+ (function () {
272
+ var timer, errors = 0,
273
+ win = Ext.global,
274
+ msg;
275
+
276
+ if (typeof window === 'undefined') {
277
+ return; // build system or some such environment...
278
+ }
279
+
280
+ // This method is called to notify the user of the current error status.
281
+ function notify () {
282
+ var counters = Ext.log.counters,
283
+ supports = Ext.supports,
284
+ hasOnError = supports && supports.WindowOnError; // TODO - timing
285
+
286
+ // Put log counters to the status bar (for most browsers):
287
+ if (counters && (counters.error + counters.warn + counters.info + counters.log)) {
288
+ msg = [ 'Logged Errors:',counters.error, 'Warnings:',counters.warn,
289
+ 'Info:',counters.info, 'Log:',counters.log].join(' ');
290
+ if (errors) {
291
+ msg = '*** Errors: ' + errors + ' - ' + msg;
292
+ } else if (counters.error) {
293
+ msg = '*** ' + msg;
294
+ }
295
+ win.status = msg;
296
+ }
297
+
298
+ // Display an alert on the first error:
299
+ if (!Ext.isDefined(Ext.Error.notify)) {
300
+ Ext.Error.notify = Ext.isIE6 || Ext.isIE7; // TODO - timing
301
+ }
302
+ if (Ext.Error.notify && (hasOnError ? errors : (counters && counters.error))) {
303
+ Ext.Error.notify = false;
304
+
305
+ if (timer) {
306
+ win.clearInterval(timer); // ticks can queue up so stop...
307
+ timer = null;
308
+ }
309
+
310
+ alert('Unhandled error on page: See console or log');
311
+ poll();
312
+ }
313
+ }
314
+
315
+ // Sets up polling loop. This is the only way to know about errors in some browsers
316
+ // (Opera/Safari) and is the only way to update the status bar for warnings and other
317
+ // non-errors.
318
+ function poll () {
319
+ timer = win.setInterval(notify, 1000);
320
+ }
321
+
322
+ // window.onerror sounds ideal but it prevents the built-in error dialog from doing
323
+ // its (better) thing.
324
+ poll();
325
+ }());
326
+ //</debug>
@@ -0,0 +1,485 @@
1
+ /**
2
+ * @class Ext.Function
3
+ *
4
+ * A collection of useful static methods to deal with function callbacks
5
+ * @singleton
6
+ * @alternateClassName Ext.util.Functions
7
+ */
8
+ Ext.Function = {
9
+
10
+ /**
11
+ * A very commonly used method throughout the framework. It acts as a wrapper around another method
12
+ * which originally accepts 2 arguments for `name` and `value`.
13
+ * The wrapped function then allows "flexible" value setting of either:
14
+ *
15
+ * - `name` and `value` as 2 arguments
16
+ * - one single object argument with multiple key - value pairs
17
+ *
18
+ * For example:
19
+ *
20
+ * var setValue = Ext.Function.flexSetter(function(name, value) {
21
+ * this[name] = value;
22
+ * });
23
+ *
24
+ * // Afterwards
25
+ * // Setting a single name - value
26
+ * setValue('name1', 'value1');
27
+ *
28
+ * // Settings multiple name - value pairs
29
+ * setValue({
30
+ * name1: 'value1',
31
+ * name2: 'value2',
32
+ * name3: 'value3'
33
+ * });
34
+ *
35
+ * @param {Function} setter
36
+ * @returns {Function} flexSetter
37
+ */
38
+ flexSetter: function(fn) {
39
+ return function(a, b) {
40
+ var k, i;
41
+
42
+ if (a === null) {
43
+ return this;
44
+ }
45
+
46
+ if (typeof a !== 'string') {
47
+ for (k in a) {
48
+ if (a.hasOwnProperty(k)) {
49
+ fn.call(this, k, a[k]);
50
+ }
51
+ }
52
+
53
+ if (Ext.enumerables) {
54
+ for (i = Ext.enumerables.length; i--;) {
55
+ k = Ext.enumerables[i];
56
+ if (a.hasOwnProperty(k)) {
57
+ fn.call(this, k, a[k]);
58
+ }
59
+ }
60
+ }
61
+ } else {
62
+ fn.call(this, a, b);
63
+ }
64
+
65
+ return this;
66
+ };
67
+ },
68
+
69
+ /**
70
+ * Create a new function from the provided `fn`, change `this` to the provided scope, optionally
71
+ * overrides arguments for the call. (Defaults to the arguments passed by the caller)
72
+ *
73
+ * {@link Ext#bind Ext.bind} is alias for {@link Ext.Function#bind Ext.Function.bind}
74
+ *
75
+ * @param {Function} fn The function to delegate.
76
+ * @param {Object} scope (optional) The scope (`this` reference) in which the function is executed.
77
+ * **If omitted, defaults to the default global environment object (usually the browser window).**
78
+ * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)
79
+ * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
80
+ * if a number the args are inserted at the specified position
81
+ * @return {Function} The new function
82
+ */
83
+ bind: function(fn, scope, args, appendArgs) {
84
+ if (arguments.length === 2) {
85
+ return function() {
86
+ return fn.apply(scope, arguments);
87
+ };
88
+ }
89
+
90
+ var method = fn,
91
+ slice = Array.prototype.slice;
92
+
93
+ return function() {
94
+ var callArgs = args || arguments;
95
+
96
+ if (appendArgs === true) {
97
+ callArgs = slice.call(arguments, 0);
98
+ callArgs = callArgs.concat(args);
99
+ }
100
+ else if (typeof appendArgs == 'number') {
101
+ callArgs = slice.call(arguments, 0); // copy arguments first
102
+ Ext.Array.insert(callArgs, appendArgs, args);
103
+ }
104
+
105
+ return method.apply(scope || Ext.global, callArgs);
106
+ };
107
+ },
108
+
109
+ /**
110
+ * Create a new function from the provided `fn`, the arguments of which are pre-set to `args`.
111
+ * New arguments passed to the newly created callback when it's invoked are appended after the pre-set ones.
112
+ * This is especially useful when creating callbacks.
113
+ *
114
+ * For example:
115
+ *
116
+ * var originalFunction = function(){
117
+ * alert(Ext.Array.from(arguments).join(' '));
118
+ * };
119
+ *
120
+ * var callback = Ext.Function.pass(originalFunction, ['Hello', 'World']);
121
+ *
122
+ * callback(); // alerts 'Hello World'
123
+ * callback('by Me'); // alerts 'Hello World by Me'
124
+ *
125
+ * {@link Ext#pass Ext.pass} is alias for {@link Ext.Function#pass Ext.Function.pass}
126
+ *
127
+ * @param {Function} fn The original function
128
+ * @param {Array} args The arguments to pass to new callback
129
+ * @param {Object} scope (optional) The scope (`this` reference) in which the function is executed.
130
+ * @return {Function} The new callback function
131
+ */
132
+ pass: function(fn, args, scope) {
133
+ if (!Ext.isArray(args)) {
134
+ if (Ext.isIterable(args)) {
135
+ args = Ext.Array.clone(args);
136
+ } else {
137
+ args = args !== undefined ? [args] : [];
138
+ }
139
+ }
140
+
141
+ return function() {
142
+ var fnArgs = [].concat(args);
143
+ fnArgs.push.apply(fnArgs, arguments);
144
+ return fn.apply(scope || this, fnArgs);
145
+ };
146
+ },
147
+
148
+ /**
149
+ * Create an alias to the provided method property with name `methodName` of `object`.
150
+ * Note that the execution scope will still be bound to the provided `object` itself.
151
+ *
152
+ * @param {Object/Function} object
153
+ * @param {String} methodName
154
+ * @return {Function} aliasFn
155
+ */
156
+ alias: function(object, methodName) {
157
+ return function() {
158
+ return object[methodName].apply(object, arguments);
159
+ };
160
+ },
161
+
162
+ /**
163
+ * Create a "clone" of the provided method. The returned method will call the given
164
+ * method passing along all arguments and the "this" pointer and return its result.
165
+ *
166
+ * @param {Function} method
167
+ * @return {Function} cloneFn
168
+ */
169
+ clone: function(method) {
170
+ return function() {
171
+ return method.apply(this, arguments);
172
+ };
173
+ },
174
+
175
+ /**
176
+ * Creates an interceptor function. The passed function is called before the original one. If it returns false,
177
+ * the original one is not called. The resulting function returns the results of the original function.
178
+ * The passed function is called with the parameters of the original function. Example usage:
179
+ *
180
+ * var sayHi = function(name){
181
+ * alert('Hi, ' + name);
182
+ * }
183
+ *
184
+ * sayHi('Fred'); // alerts "Hi, Fred"
185
+ *
186
+ * // create a new function that validates input without
187
+ * // directly modifying the original function:
188
+ * var sayHiToFriend = Ext.Function.createInterceptor(sayHi, function(name){
189
+ * return name == 'Brian';
190
+ * });
191
+ *
192
+ * sayHiToFriend('Fred'); // no alert
193
+ * sayHiToFriend('Brian'); // alerts "Hi, Brian"
194
+ *
195
+ * @param {Function} origFn The original function.
196
+ * @param {Function} newFn The function to call before the original
197
+ * @param {Object} scope (optional) The scope (`this` reference) in which the passed function is executed.
198
+ * **If omitted, defaults to the scope in which the original function is called or the browser window.**
199
+ * @param {Object} returnValue (optional) The value to return if the passed function return false (defaults to null).
200
+ * @return {Function} The new function
201
+ */
202
+ createInterceptor: function(origFn, newFn, scope, returnValue) {
203
+ var method = origFn;
204
+ if (!Ext.isFunction(newFn)) {
205
+ return origFn;
206
+ }
207
+ else {
208
+ return function() {
209
+ var me = this,
210
+ args = arguments;
211
+ newFn.target = me;
212
+ newFn.method = origFn;
213
+ return (newFn.apply(scope || me || Ext.global, args) !== false) ? origFn.apply(me || Ext.global, args) : returnValue || null;
214
+ };
215
+ }
216
+ },
217
+
218
+ /**
219
+ * Creates a delegate (callback) which, when called, executes after a specific delay.
220
+ *
221
+ * @param {Function} fn The function which will be called on a delay when the returned function is called.
222
+ * Optionally, a replacement (or additional) argument list may be specified.
223
+ * @param {Number} delay The number of milliseconds to defer execution by whenever called.
224
+ * @param {Object} scope (optional) The scope (`this` reference) used by the function at execution time.
225
+ * @param {Array} args (optional) Override arguments for the call. (Defaults to the arguments passed by the caller)
226
+ * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
227
+ * if a number the args are inserted at the specified position.
228
+ * @return {Function} A function which, when called, executes the original function after the specified delay.
229
+ */
230
+ createDelayed: function(fn, delay, scope, args, appendArgs) {
231
+ if (scope || args) {
232
+ fn = Ext.Function.bind(fn, scope, args, appendArgs);
233
+ }
234
+
235
+ return function() {
236
+ var me = this,
237
+ args = Array.prototype.slice.call(arguments);
238
+
239
+ setTimeout(function() {
240
+ fn.apply(me, args);
241
+ }, delay);
242
+ };
243
+ },
244
+
245
+ /**
246
+ * Calls this function after the number of millseconds specified, optionally in a specific scope. Example usage:
247
+ *
248
+ * var sayHi = function(name){
249
+ * alert('Hi, ' + name);
250
+ * }
251
+ *
252
+ * // executes immediately:
253
+ * sayHi('Fred');
254
+ *
255
+ * // executes after 2 seconds:
256
+ * Ext.Function.defer(sayHi, 2000, this, ['Fred']);
257
+ *
258
+ * // this syntax is sometimes useful for deferring
259
+ * // execution of an anonymous function:
260
+ * Ext.Function.defer(function(){
261
+ * alert('Anonymous');
262
+ * }, 100);
263
+ *
264
+ * {@link Ext#defer Ext.defer} is alias for {@link Ext.Function#defer Ext.Function.defer}
265
+ *
266
+ * @param {Function} fn The function to defer.
267
+ * @param {Number} millis The number of milliseconds for the setTimeout call
268
+ * (if less than or equal to 0 the function is executed immediately)
269
+ * @param {Object} scope (optional) The scope (`this` reference) in which the function is executed.
270
+ * **If omitted, defaults to the browser window.**
271
+ * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)
272
+ * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
273
+ * if a number the args are inserted at the specified position
274
+ * @return {Number} The timeout id that can be used with clearTimeout
275
+ */
276
+ defer: function(fn, millis, scope, args, appendArgs) {
277
+ fn = Ext.Function.bind(fn, scope, args, appendArgs);
278
+ if (millis > 0) {
279
+ return setTimeout(Ext.supports.TimeoutActualLateness ? function () {
280
+ fn();
281
+ } : fn, millis);
282
+ }
283
+ fn();
284
+ return 0;
285
+ },
286
+
287
+ /**
288
+ * Create a combined function call sequence of the original function + the passed function.
289
+ * The resulting function returns the results of the original function.
290
+ * The passed function is called with the parameters of the original function. Example usage:
291
+ *
292
+ * var sayHi = function(name){
293
+ * alert('Hi, ' + name);
294
+ * }
295
+ *
296
+ * sayHi('Fred'); // alerts "Hi, Fred"
297
+ *
298
+ * var sayGoodbye = Ext.Function.createSequence(sayHi, function(name){
299
+ * alert('Bye, ' + name);
300
+ * });
301
+ *
302
+ * sayGoodbye('Fred'); // both alerts show
303
+ *
304
+ * @param {Function} originalFn The original function.
305
+ * @param {Function} newFn The function to sequence
306
+ * @param {Object} scope (optional) The scope (`this` reference) in which the passed function is executed.
307
+ * If omitted, defaults to the scope in which the original function is called or the default global environment object (usually the browser window).
308
+ * @return {Function} The new function
309
+ */
310
+ createSequence: function(originalFn, newFn, scope) {
311
+ if (!newFn) {
312
+ return originalFn;
313
+ }
314
+ else {
315
+ return function() {
316
+ var result = originalFn.apply(this, arguments);
317
+ newFn.apply(scope || this, arguments);
318
+ return result;
319
+ };
320
+ }
321
+ },
322
+
323
+ /**
324
+ * Creates a delegate function, optionally with a bound scope which, when called, buffers
325
+ * the execution of the passed function for the configured number of milliseconds.
326
+ * If called again within that period, the impending invocation will be canceled, and the
327
+ * timeout period will begin again.
328
+ *
329
+ * @param {Function} fn The function to invoke on a buffered timer.
330
+ * @param {Number} buffer The number of milliseconds by which to buffer the invocation of the
331
+ * function.
332
+ * @param {Object} scope (optional) The scope (`this` reference) in which
333
+ * the passed function is executed. If omitted, defaults to the scope specified by the caller.
334
+ * @param {Array} args (optional) Override arguments for the call. Defaults to the arguments
335
+ * passed by the caller.
336
+ * @return {Function} A function which invokes the passed function after buffering for the specified time.
337
+ */
338
+ createBuffered: function(fn, buffer, scope, args) {
339
+ var timerId;
340
+
341
+ return function() {
342
+ var callArgs = args || Array.prototype.slice.call(arguments, 0),
343
+ me = scope || this;
344
+
345
+ if (timerId) {
346
+ clearTimeout(timerId);
347
+ }
348
+
349
+ timerId = setTimeout(function(){
350
+ fn.apply(me, callArgs);
351
+ }, buffer);
352
+ };
353
+ },
354
+
355
+ /**
356
+ * Creates a throttled version of the passed function which, when called repeatedly and
357
+ * rapidly, invokes the passed function only after a certain interval has elapsed since the
358
+ * previous invocation.
359
+ *
360
+ * This is useful for wrapping functions which may be called repeatedly, such as
361
+ * a handler of a mouse move event when the processing is expensive.
362
+ *
363
+ * @param {Function} fn The function to execute at a regular time interval.
364
+ * @param {Number} interval The interval **in milliseconds** on which the passed function is executed.
365
+ * @param {Object} scope (optional) The scope (`this` reference) in which
366
+ * the passed function is executed. If omitted, defaults to the scope specified by the caller.
367
+ * @returns {Function} A function which invokes the passed function at the specified interval.
368
+ */
369
+ createThrottled: function(fn, interval, scope) {
370
+ var lastCallTime, elapsed, lastArgs, timer, execute = function() {
371
+ fn.apply(scope || this, lastArgs);
372
+ lastCallTime = new Date().getTime();
373
+ };
374
+
375
+ return function() {
376
+ elapsed = new Date().getTime() - lastCallTime;
377
+ lastArgs = arguments;
378
+
379
+ clearTimeout(timer);
380
+ if (!lastCallTime || (elapsed >= interval)) {
381
+ execute();
382
+ } else {
383
+ timer = setTimeout(execute, interval - elapsed);
384
+ }
385
+ };
386
+ },
387
+
388
+
389
+ /**
390
+ * Adds behavior to an existing method that is executed before the
391
+ * original behavior of the function. For example:
392
+ *
393
+ * var soup = {
394
+ * contents: [],
395
+ * add: function(ingredient) {
396
+ * this.contents.push(ingredient);
397
+ * }
398
+ * };
399
+ * Ext.Function.interceptBefore(soup, "add", function(ingredient){
400
+ * if (!this.contents.length && ingredient !== "water") {
401
+ * // Always add water to start with
402
+ * this.contents.push("water");
403
+ * }
404
+ * });
405
+ * soup.add("onions");
406
+ * soup.add("salt");
407
+ * soup.contents; // will contain: water, onions, salt
408
+ *
409
+ * @param {Object} object The target object
410
+ * @param {String} methodName Name of the method to override
411
+ * @param {Function} fn Function with the new behavior. It will
412
+ * be called with the same arguments as the original method. The
413
+ * return value of this function will be the return value of the
414
+ * new method.
415
+ * @param {Object} [scope] The scope to execute the interceptor function. Defaults to the object.
416
+ * @return {Function} The new function just created.
417
+ */
418
+ interceptBefore: function(object, methodName, fn, scope) {
419
+ var method = object[methodName] || Ext.emptyFn;
420
+
421
+ return (object[methodName] = function() {
422
+ var ret = fn.apply(scope || this, arguments);
423
+ method.apply(this, arguments);
424
+
425
+ return ret;
426
+ });
427
+ },
428
+
429
+ /**
430
+ * Adds behavior to an existing method that is executed after the
431
+ * original behavior of the function. For example:
432
+ *
433
+ * var soup = {
434
+ * contents: [],
435
+ * add: function(ingredient) {
436
+ * this.contents.push(ingredient);
437
+ * }
438
+ * };
439
+ * Ext.Function.interceptAfter(soup, "add", function(ingredient){
440
+ * // Always add a bit of extra salt
441
+ * this.contents.push("salt");
442
+ * });
443
+ * soup.add("water");
444
+ * soup.add("onions");
445
+ * soup.contents; // will contain: water, salt, onions, salt
446
+ *
447
+ * @param {Object} object The target object
448
+ * @param {String} methodName Name of the method to override
449
+ * @param {Function} fn Function with the new behavior. It will
450
+ * be called with the same arguments as the original method. The
451
+ * return value of this function will be the return value of the
452
+ * new method.
453
+ * @param {Object} [scope] The scope to execute the interceptor function. Defaults to the object.
454
+ * @return {Function} The new function just created.
455
+ */
456
+ interceptAfter: function(object, methodName, fn, scope) {
457
+ var method = object[methodName] || Ext.emptyFn;
458
+
459
+ return (object[methodName] = function() {
460
+ method.apply(this, arguments);
461
+ return fn.apply(scope || this, arguments);
462
+ });
463
+ }
464
+ };
465
+
466
+ /**
467
+ * @method
468
+ * @member Ext
469
+ * @inheritdoc Ext.Function#defer
470
+ */
471
+ Ext.defer = Ext.Function.alias(Ext.Function, 'defer');
472
+
473
+ /**
474
+ * @method
475
+ * @member Ext
476
+ * @inheritdoc Ext.Function#pass
477
+ */
478
+ Ext.pass = Ext.Function.alias(Ext.Function, 'pass');
479
+
480
+ /**
481
+ * @method
482
+ * @member Ext
483
+ * @inheritdoc Ext.Function#bind
484
+ */
485
+ Ext.bind = Ext.Function.alias(Ext.Function, 'bind');