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,69 @@
1
+ /**
2
+ * @private
3
+ */
4
+ Ext.define('Ext.grid.header.DragZone', {
5
+ extend: 'Ext.dd.DragZone',
6
+ colHeaderCls: Ext.baseCSSPrefix + 'column-header',
7
+ maxProxyWidth: 120,
8
+
9
+ constructor: function(headerCt) {
10
+ this.headerCt = headerCt;
11
+ this.ddGroup = this.getDDGroup();
12
+ this.callParent([headerCt.el]);
13
+ this.proxy.el.addCls(Ext.baseCSSPrefix + 'grid-col-dd');
14
+ },
15
+
16
+ getDDGroup: function() {
17
+ return 'header-dd-zone-' + this.headerCt.up('[scrollerOwner]').id;
18
+ },
19
+
20
+ getDragData: function(e) {
21
+ var header = e.getTarget('.'+this.colHeaderCls),
22
+ headerCmp,
23
+ ddel;
24
+
25
+ if (header) {
26
+ headerCmp = Ext.getCmp(header.id);
27
+ if (!this.headerCt.dragging && headerCmp.draggable && !(headerCmp.isOnLeftEdge(e) || headerCmp.isOnRightEdge(e))) {
28
+ ddel = document.createElement('div');
29
+ ddel.innerHTML = Ext.getCmp(header.id).text;
30
+ return {
31
+ ddel: ddel,
32
+ header: headerCmp
33
+ };
34
+ }
35
+ }
36
+ return false;
37
+ },
38
+
39
+ onBeforeDrag: function() {
40
+ return !(this.headerCt.dragging || this.disabled);
41
+ },
42
+
43
+ onInitDrag: function() {
44
+ this.headerCt.dragging = true;
45
+ this.callParent(arguments);
46
+ },
47
+
48
+ onDragDrop: function() {
49
+ this.headerCt.dragging = false;
50
+ this.callParent(arguments);
51
+ },
52
+
53
+ afterRepair: function() {
54
+ this.callParent();
55
+ this.headerCt.dragging = false;
56
+ },
57
+
58
+ getRepairXY: function() {
59
+ return this.dragData.header.el.getXY();
60
+ },
61
+
62
+ disable: function() {
63
+ this.disabled = true;
64
+ },
65
+
66
+ enable: function() {
67
+ this.disabled = false;
68
+ }
69
+ });
@@ -0,0 +1,265 @@
1
+ /**
2
+ * @private
3
+ */
4
+ Ext.define('Ext.grid.header.DropZone', {
5
+ extend: 'Ext.dd.DropZone',
6
+ colHeaderCls: Ext.baseCSSPrefix + 'column-header',
7
+ proxyOffsets: [-4, -9],
8
+
9
+ constructor: function(headerCt){
10
+ this.headerCt = headerCt;
11
+ this.ddGroup = this.getDDGroup();
12
+ this.callParent([headerCt.el]);
13
+ },
14
+
15
+ getDDGroup: function() {
16
+ return 'header-dd-zone-' + this.headerCt.up('[scrollerOwner]').id;
17
+ },
18
+
19
+ getTargetFromEvent : function(e){
20
+ return e.getTarget('.' + this.colHeaderCls);
21
+ },
22
+
23
+ getTopIndicator: function() {
24
+ if (!this.topIndicator) {
25
+ this.topIndicator = Ext.DomHelper.append(Ext.getBody(), {
26
+ cls: "col-move-top",
27
+ html: " "
28
+ }, true);
29
+ }
30
+ return this.topIndicator;
31
+ },
32
+
33
+ getBottomIndicator: function() {
34
+ if (!this.bottomIndicator) {
35
+ this.bottomIndicator = Ext.DomHelper.append(Ext.getBody(), {
36
+ cls: "col-move-bottom",
37
+ html: " "
38
+ }, true);
39
+ }
40
+ return this.bottomIndicator;
41
+ },
42
+
43
+ getLocation: function(e, t) {
44
+ var x = e.getXY()[0],
45
+ region = Ext.fly(t).getRegion(),
46
+ pos, header;
47
+
48
+ if ((region.right - x) <= (region.right - region.left) / 2) {
49
+ pos = "after";
50
+ } else {
51
+ pos = "before";
52
+ }
53
+ return {
54
+ pos: pos,
55
+ header: Ext.getCmp(t.id),
56
+ node: t
57
+ };
58
+ },
59
+
60
+ positionIndicator: function(draggedHeader, node, e){
61
+ var location = this.getLocation(e, node),
62
+ header = location.header,
63
+ pos = location.pos,
64
+ nextHd = draggedHeader.nextSibling('gridcolumn:not([hidden])'),
65
+ prevHd = draggedHeader.previousSibling('gridcolumn:not([hidden])'),
66
+ region, topIndicator, bottomIndicator, topAnchor, bottomAnchor,
67
+ topXY, bottomXY, headerCtEl, minX, maxX,
68
+ allDropZones, ln, i, dropZone;
69
+
70
+ // Cannot drag beyond non-draggable start column
71
+ if (!header.draggable && header.getIndex() === 0) {
72
+ return false;
73
+ }
74
+
75
+ this.lastLocation = location;
76
+
77
+ if ((draggedHeader !== header) &&
78
+ ((pos === "before" && nextHd !== header) ||
79
+ (pos === "after" && prevHd !== header)) &&
80
+ !header.isDescendantOf(draggedHeader)) {
81
+
82
+ // As we move in between different DropZones that are in the same
83
+ // group (such as the case when in a locked grid), invalidateDrop
84
+ // on the other dropZones.
85
+ allDropZones = Ext.dd.DragDropManager.getRelated(this);
86
+ ln = allDropZones.length;
87
+ i = 0;
88
+
89
+ for (; i < ln; i++) {
90
+ dropZone = allDropZones[i];
91
+ if (dropZone !== this && dropZone.invalidateDrop) {
92
+ dropZone.invalidateDrop();
93
+ }
94
+ }
95
+
96
+
97
+ this.valid = true;
98
+ topIndicator = this.getTopIndicator();
99
+ bottomIndicator = this.getBottomIndicator();
100
+ if (pos === 'before') {
101
+ topAnchor = 'tl';
102
+ bottomAnchor = 'bl';
103
+ } else {
104
+ topAnchor = 'tr';
105
+ bottomAnchor = 'br';
106
+ }
107
+ topXY = header.el.getAnchorXY(topAnchor);
108
+ bottomXY = header.el.getAnchorXY(bottomAnchor);
109
+
110
+ // constrain the indicators to the viewable section
111
+ headerCtEl = this.headerCt.el;
112
+ minX = headerCtEl.getLeft();
113
+ maxX = headerCtEl.getRight();
114
+
115
+ topXY[0] = Ext.Number.constrain(topXY[0], minX, maxX);
116
+ bottomXY[0] = Ext.Number.constrain(bottomXY[0], minX, maxX);
117
+
118
+ // adjust by offsets, this is to center the arrows so that they point
119
+ // at the split point
120
+ topXY[0] -= 4;
121
+ topXY[1] -= 9;
122
+ bottomXY[0] -= 4;
123
+
124
+ // position and show indicators
125
+ topIndicator.setXY(topXY);
126
+ bottomIndicator.setXY(bottomXY);
127
+ topIndicator.show();
128
+ bottomIndicator.show();
129
+ // invalidate drop operation and hide indicators
130
+ } else {
131
+ this.invalidateDrop();
132
+ }
133
+ },
134
+
135
+ invalidateDrop: function() {
136
+ this.valid = false;
137
+ this.hideIndicators();
138
+ },
139
+
140
+ onNodeOver: function(node, dragZone, e, data) {
141
+ var me = this,
142
+ header = me.headerCt,
143
+ doPosition = true,
144
+ from = data.header,
145
+ to;
146
+
147
+ if (data.header.el.dom === node) {
148
+ doPosition = false;
149
+ } else {
150
+ to = me.getLocation(e, node).header;
151
+ doPosition = (from.ownerCt === to.ownerCt) || (!from.ownerCt.sealed && !to.ownerCt.sealed);
152
+ }
153
+
154
+ if (doPosition) {
155
+ me.positionIndicator(data.header, node, e);
156
+ } else {
157
+ me.valid = false;
158
+ }
159
+ return me.valid ? me.dropAllowed : me.dropNotAllowed;
160
+ },
161
+
162
+ hideIndicators: function() {
163
+ this.getTopIndicator().hide();
164
+ this.getBottomIndicator().hide();
165
+ },
166
+
167
+ onNodeOut: function() {
168
+ this.hideIndicators();
169
+ },
170
+
171
+ onNodeDrop: function(node, dragZone, e, data) {
172
+ if (this.valid) {
173
+ this.invalidateDrop();
174
+ var dragHeader = data.header,
175
+ lastLocation = this.lastLocation,
176
+ targetHeader = lastLocation.header,
177
+ fromCt = dragHeader.ownerCt,
178
+ localFromIdx = fromCt.items.indexOf(dragHeader), // Container.items is a MixedCollection
179
+ toCt = targetHeader.ownerCt,
180
+ localToIdx = toCt.items.indexOf(targetHeader),
181
+ headerCt = this.headerCt,
182
+ fromIdx = headerCt.getHeaderIndex(dragHeader),
183
+ colsToMove = dragHeader.isGroupHeader ? dragHeader.query(':not([isGroupHeader])').length : 1,
184
+ toIdx = headerCt.getHeaderIndex(targetHeader),
185
+ groupCt,
186
+ scrollerOwner;
187
+
188
+ // Drop position is to the right of the targetHeader, increment the toIdx correctly
189
+ if (lastLocation.pos === 'after') {
190
+ localToIdx++;
191
+ toIdx += targetHeader.isGroupHeader ? targetHeader.query(':not([isGroupHeader])').length : 1;
192
+ }
193
+
194
+ // If we are dragging in between two HeaderContainers that have had the lockable
195
+ // mixin injected we will lock/unlock headers in between sections. Note that lockable
196
+ // does NOT currently support grouped headers.
197
+ if (fromCt !== toCt && fromCt.lockableInjected && toCt.lockableInjected && toCt.lockedCt) {
198
+ scrollerOwner = fromCt.up('[scrollerOwner]');
199
+ scrollerOwner.lock(dragHeader, localToIdx);
200
+ } else if (fromCt !== toCt && fromCt.lockableInjected && toCt.lockableInjected && fromCt.lockedCt) {
201
+ scrollerOwner = fromCt.up('[scrollerOwner]');
202
+ scrollerOwner.unlock(dragHeader, localToIdx);
203
+ } else {
204
+ // If dragging rightwards, then after removal, the insertion index will be less when moving
205
+ // within the same container.
206
+ if ((fromCt === toCt) && (localToIdx > localFromIdx)) {
207
+
208
+ // Wer're dragging whole headers, so locally, the adjustment is only one
209
+ localToIdx -= 1;
210
+ }
211
+
212
+ // Suspend layouts while we sort all this out.
213
+ Ext.suspendLayouts();
214
+
215
+ // Remove dragged header from where it was.
216
+ if (fromCt !== toCt) {
217
+ fromCt.remove(dragHeader, false);
218
+
219
+ // Dragged the last header out of the fromCt group... The fromCt group must die
220
+ if (fromCt.isGroupHeader) {
221
+ if (!fromCt.items.getCount()) {
222
+ groupCt = fromCt.ownerCt;
223
+ groupCt.remove(fromCt, false);
224
+ fromCt.el.dom.parentNode.removeChild(fromCt.el.dom);
225
+ }
226
+ }
227
+ }
228
+
229
+ // Move dragged header into its drop position
230
+ if (fromCt === toCt) {
231
+ toCt.move(localFromIdx, localToIdx);
232
+ } else {
233
+ toCt.insert(localToIdx, dragHeader);
234
+ }
235
+
236
+ // Group headers acquire the aggregate width of their child headers
237
+ // Therefore a child header may not flex; it must contribute a fixed width.
238
+ // But we restore the flex value when moving back into the main header container
239
+ if (toCt.isGroupHeader) {
240
+ // Adjust the width of the "to" group header only if we dragged in from somewhere else.
241
+ if (toCt !== fromCt) {
242
+ dragHeader.savedFlex = dragHeader.flex;
243
+ delete dragHeader.flex;
244
+ dragHeader.width = dragHeader.getWidth();
245
+ }
246
+ } else {
247
+ if (dragHeader.savedFlex) {
248
+ dragHeader.flex = dragHeader.savedFlex;
249
+ delete dragHeader.width;
250
+ }
251
+ }
252
+
253
+ // Refresh columns cache in case we remove an emptied group column
254
+ headerCt.purgeCache();
255
+ Ext.resumeLayouts(true);
256
+ headerCt.onHeaderMoved(dragHeader, colsToMove, fromIdx, toIdx);
257
+
258
+ // Emptied group header can only be destroyed after the header and grid have been refreshed
259
+ if (!fromCt.items.getCount()) {
260
+ fromCt.destroy();
261
+ }
262
+ }
263
+ }
264
+ }
265
+ });
@@ -0,0 +1,453 @@
1
+ /**
2
+ * The Ext.grid.plugin.CellEditing plugin injects editing at a cell level for a Grid. Only a single
3
+ * cell will be editable at a time. The field that will be used for the editor is defined at the
4
+ * {@link Ext.grid.column.Column#editor editor}. The editor can be a field instance or a field configuration.
5
+ *
6
+ * If an editor is not specified for a particular column then that cell will not be editable and it will
7
+ * be skipped when activated via the mouse or the keyboard.
8
+ *
9
+ * The editor may be shared for each column in the grid, or a different one may be specified for each column.
10
+ * An appropriate field type should be chosen to match the data structure that it will be editing. For example,
11
+ * to edit a date, it would be useful to specify {@link Ext.form.field.Date} as the editor.
12
+ *
13
+ * @example
14
+ * Ext.create('Ext.data.Store', {
15
+ * storeId:'simpsonsStore',
16
+ * fields:['name', 'email', 'phone'],
17
+ * data:{'items':[
18
+ * {"name":"Lisa", "email":"lisa@simpsons.com", "phone":"555-111-1224"},
19
+ * {"name":"Bart", "email":"bart@simpsons.com", "phone":"555-222-1234"},
20
+ * {"name":"Homer", "email":"home@simpsons.com", "phone":"555-222-1244"},
21
+ * {"name":"Marge", "email":"marge@simpsons.com", "phone":"555-222-1254"}
22
+ * ]},
23
+ * proxy: {
24
+ * type: 'memory',
25
+ * reader: {
26
+ * type: 'json',
27
+ * root: 'items'
28
+ * }
29
+ * }
30
+ * });
31
+ *
32
+ * Ext.create('Ext.grid.Panel', {
33
+ * title: 'Simpsons',
34
+ * store: Ext.data.StoreManager.lookup('simpsonsStore'),
35
+ * columns: [
36
+ * {header: 'Name', dataIndex: 'name', editor: 'textfield'},
37
+ * {header: 'Email', dataIndex: 'email', flex:1,
38
+ * editor: {
39
+ * xtype: 'textfield',
40
+ * allowBlank: false
41
+ * }
42
+ * },
43
+ * {header: 'Phone', dataIndex: 'phone'}
44
+ * ],
45
+ * selType: 'cellmodel',
46
+ * plugins: [
47
+ * Ext.create('Ext.grid.plugin.CellEditing', {
48
+ * clicksToEdit: 1
49
+ * })
50
+ * ],
51
+ * height: 200,
52
+ * width: 400,
53
+ * renderTo: Ext.getBody()
54
+ * });
55
+ */
56
+ Ext.define('Ext.grid.plugin.CellEditing', {
57
+ alias: 'plugin.cellediting',
58
+ extend: 'Ext.grid.plugin.Editing',
59
+ requires: ['Ext.grid.CellEditor', 'Ext.util.DelayedTask'],
60
+
61
+ constructor: function() {
62
+ /**
63
+ * @event beforeedit
64
+ * Fires before cell editing is triggered. Return false from event handler to stop the editing.
65
+ *
66
+ * @param {Ext.grid.plugin.CellEditing} editor
67
+ * @param {Object} e An edit event with the following properties:
68
+ *
69
+ * - grid - The grid
70
+ * - record - The record being edited
71
+ * - field - The field name being edited
72
+ * - value - The value for the field being edited.
73
+ * - row - The grid table row
74
+ * - column - The grid {@link Ext.grid.column.Column Column} defining the column that is being edited.
75
+ * - rowIdx - The row index that is being edited
76
+ * - colIdx - The column index that is being edited
77
+ * - cancel - Set this to true to cancel the edit or return false from your handler.
78
+ */
79
+ /**
80
+ * @event edit
81
+ * Fires after a cell is edited. Usage example:
82
+ *
83
+ * grid.on('edit', function(editor, e) {
84
+ * // commit the changes right after editing finished
85
+ * e.record.commit();
86
+ * };
87
+ *
88
+ * @param {Ext.grid.plugin.CellEditing} editor
89
+ * @param {Object} e An edit event with the following properties:
90
+ *
91
+ * - grid - The grid
92
+ * - record - The record that was edited
93
+ * - field - The field name that was edited
94
+ * - value - The value being set
95
+ * - originalValue - The original value for the field, before the edit.
96
+ * - row - The grid table row
97
+ * - column - The grid {@link Ext.grid.column.Column Column} defining the column that was edited.
98
+ * - rowIdx - The row index that was edited
99
+ * - colIdx - The column index that was edited
100
+ */
101
+ /**
102
+ * @event validateedit
103
+ * Fires after a cell is edited, but before the value is set in the record. Return false from event handler to
104
+ * cancel the change.
105
+ *
106
+ * Usage example showing how to remove the red triangle (dirty record indicator) from some records (not all). By
107
+ * observing the grid's validateedit event, it can be cancelled if the edit occurs on a targeted row (for
108
+ * example) and then setting the field's new value in the Record directly:
109
+ *
110
+ * grid.on('validateedit', function(editor, e) {
111
+ * var myTargetRow = 6;
112
+ *
113
+ * if (e.row == myTargetRow) {
114
+ * e.cancel = true;
115
+ * e.record.data[e.field] = e.value;
116
+ * }
117
+ * });
118
+ *
119
+ * @param {Ext.grid.plugin.CellEditing} editor
120
+ * @param {Object} e An edit event with the following properties:
121
+ *
122
+ * - grid - The grid
123
+ * - record - The record being edited
124
+ * - field - The field name being edited
125
+ * - value - The value being set
126
+ * - originalValue - The original value for the field, before the edit.
127
+ * - row - The grid table row
128
+ * - column - The grid {@link Ext.grid.column.Column Column} defining the column that is being edited.
129
+ * - rowIdx - The row index that is being edited
130
+ * - colIdx - The column index that is being edited
131
+ * - cancel - Set this to true to cancel the edit or return false from your handler.
132
+ */
133
+ /**
134
+ * @event canceledit
135
+ * Fires when the user started editing a cell but then cancelled the edit.
136
+ * @param {Ext.grid.plugin.CellEditing} editor
137
+ * @param {Object} e An edit event with the following properties:
138
+ *
139
+ * - grid - The grid
140
+ * - record - The record that was edited
141
+ * - field - The field name that was edited
142
+ * - value - The value being set
143
+ * - row - The grid table row
144
+ * - column - The grid {@link Ext.grid.column.Column Column} defining the column that was edited.
145
+ * - rowIdx - The row index that was edited
146
+ * - colIdx - The column index that was edited
147
+ */
148
+
149
+ this.callParent(arguments);
150
+ this.editors = new Ext.util.MixedCollection(false, function(editor) {
151
+ return editor.editorId;
152
+ });
153
+ this.editTask = new Ext.util.DelayedTask();
154
+ },
155
+
156
+ onReconfigure: function(){
157
+ this.editors.clear();
158
+ this.callParent();
159
+ },
160
+
161
+ /**
162
+ * @private
163
+ * AbstractComponent calls destroy on all its plugins at destroy time.
164
+ */
165
+ destroy: function() {
166
+ var me = this;
167
+ me.editTask.cancel();
168
+ me.editors.each(Ext.destroy, Ext);
169
+ me.editors.clear();
170
+ me.callParent(arguments);
171
+ },
172
+
173
+ onBodyScroll: function() {
174
+ var me = this,
175
+ ed = me.getActiveEditor(),
176
+ scroll = me.view.el.getScroll();
177
+
178
+ // Scroll happened during editing...
179
+ if (ed && ed.editing) {
180
+ // Terminate editing only on vertical scroll. Horiz scroll can be caused by tabbing between cells.
181
+ if (scroll.top !== me.scroll.top) {
182
+ if (ed.field) {
183
+ if (ed.field.triggerBlur) {
184
+ ed.field.triggerBlur();
185
+ } else {
186
+ ed.field.blur();
187
+ }
188
+ }
189
+ }
190
+ // Horiz scroll just requires that the editor be realigned.
191
+ else {
192
+ ed.realign();
193
+ }
194
+ }
195
+ me.scroll = scroll;
196
+ },
197
+
198
+ // private
199
+ // Template method called from base class's initEvents
200
+ initCancelTriggers: function() {
201
+ var me = this,
202
+ grid = me.grid,
203
+ view = grid.view;
204
+
205
+ view.addElListener('mousewheel', me.cancelEdit, me);
206
+ me.mon(view, 'bodyscroll', me.onBodyScroll, me);
207
+ me.mon(grid, {
208
+ columnresize: me.cancelEdit,
209
+ columnmove: me.cancelEdit,
210
+ scope: me
211
+ });
212
+ },
213
+
214
+ isCellEditable: function(record, columnHeader) {
215
+ var me = this,
216
+ context = me.getEditingContext(record, columnHeader);
217
+
218
+ if (me.grid.view.isVisible(true) && context) {
219
+ columnHeader = context.column;
220
+ record = context.record;
221
+ if (columnHeader && me.getEditor(record, columnHeader)) {
222
+ return true;
223
+ }
224
+ }
225
+ },
226
+
227
+ /**
228
+ * Starts editing the specified record, using the specified Column definition to define which field is being edited.
229
+ * @param {Ext.data.Model} record The Store data record which backs the row to be edited.
230
+ * @param {Ext.grid.column.Column} columnHeader The Column object defining the column to be edited.
231
+ * @return `true` if editing was started, `false` otherwise.
232
+ */
233
+ startEdit: function(record, columnHeader) {
234
+ var me = this,
235
+ context = me.getEditingContext(record, columnHeader),
236
+ value, ed;
237
+
238
+ // Complete the edit now, before getting the editor's target
239
+ // cell DOM element. Completing the edit causes a row refresh.
240
+ // Also allows any post-edit events to take effect before continuing
241
+ me.completeEdit();
242
+
243
+ // Cancel editing if EditingContext could not be found (possibly because record has been deleted by an intervening listener), or if the grid view is not currently visible
244
+ if (!context || !me.grid.view.isVisible(true)) {
245
+ return false;
246
+ }
247
+
248
+ record = context.record;
249
+ columnHeader = context.column;
250
+
251
+ // See if the field is editable for the requested record
252
+ if (columnHeader && !columnHeader.getEditor(record)) {
253
+ return false;
254
+ }
255
+
256
+ value = record.get(columnHeader.dataIndex);
257
+ context.originalValue = context.value = value;
258
+ if (me.beforeEdit(context) === false || me.fireEvent('beforeedit', me, context) === false || context.cancel) {
259
+ return false;
260
+ }
261
+
262
+ ed = me.getEditor(record, columnHeader);
263
+
264
+ // Whether we are going to edit or not, ensure the edit cell is scrolled into view
265
+ me.grid.view.cancelFocus();
266
+ me.view.focusCell({
267
+ row: context.row,
268
+ column: context.colIdx
269
+ });
270
+ if (ed) {
271
+ me.context = context;
272
+ me.setActiveEditor(ed);
273
+ me.setActiveRecord(record);
274
+ me.setActiveColumn(columnHeader);
275
+
276
+ // Defer, so we have some time between view scroll to sync up the editor
277
+ me.editTask.delay(15, ed.startEdit, ed, [me.getCell(record, columnHeader), value]);
278
+ me.editing = true;
279
+ me.scroll = me.view.el.getScroll();
280
+ return true;
281
+ }
282
+ return false;
283
+ },
284
+
285
+ completeEdit: function() {
286
+ var activeEd = this.getActiveEditor();
287
+ if (activeEd) {
288
+ activeEd.completeEdit();
289
+ this.editing = false;
290
+ }
291
+ },
292
+
293
+ // internal getters/setters
294
+ setActiveEditor: function(ed) {
295
+ this.activeEditor = ed;
296
+ },
297
+
298
+ getActiveEditor: function() {
299
+ return this.activeEditor;
300
+ },
301
+
302
+ setActiveColumn: function(column) {
303
+ this.activeColumn = column;
304
+ },
305
+
306
+ getActiveColumn: function() {
307
+ return this.activeColumn;
308
+ },
309
+
310
+ setActiveRecord: function(record) {
311
+ this.activeRecord = record;
312
+ },
313
+
314
+ getActiveRecord: function() {
315
+ return this.activeRecord;
316
+ },
317
+
318
+ getEditor: function(record, column) {
319
+ var me = this,
320
+ editors = me.editors,
321
+ editorId = column.getItemId(),
322
+ editor = editors.getByKey(editorId);
323
+
324
+ if (editor) {
325
+ return editor;
326
+ } else {
327
+ editor = column.getEditor(record);
328
+ if (!editor) {
329
+ return false;
330
+ }
331
+
332
+ // Allow them to specify a CellEditor in the Column
333
+ if (!(editor instanceof Ext.grid.CellEditor)) {
334
+ editor = new Ext.grid.CellEditor({
335
+ editorId: editorId,
336
+ field: editor,
337
+ ownerCt: me.grid
338
+ });
339
+ }
340
+ editor.editingPlugin = me;
341
+ editor.isForTree = me.grid.isTree;
342
+ editor.on({
343
+ scope: me,
344
+ specialkey: me.onSpecialKey,
345
+ complete: me.onEditComplete,
346
+ canceledit: me.cancelEdit
347
+ });
348
+ editors.add(editor);
349
+ return editor;
350
+ }
351
+ },
352
+
353
+ // inherit docs
354
+ setColumnField: function(column, field) {
355
+ var ed = this.editors.getByKey(column.getItemId());
356
+ Ext.destroy(ed, column.field);
357
+ this.editors.removeAtKey(column.getItemId());
358
+ this.callParent(arguments);
359
+ },
360
+
361
+ /**
362
+ * Gets the cell (td) for a particular record and column.
363
+ * @param {Ext.data.Model} record
364
+ * @param {Ext.grid.column.Column} column
365
+ * @private
366
+ */
367
+ getCell: function(record, column) {
368
+ return this.grid.getView().getCell(record, column);
369
+ },
370
+
371
+ onSpecialKey: function(ed, field, e) {
372
+ var me = this,
373
+ grid = me.grid,
374
+ sm;
375
+
376
+ if (e.getKey() === e.TAB) {
377
+ e.stopEvent();
378
+
379
+ if (ed) {
380
+ // Allow the field to act on tabs before onEditorTab, which ends
381
+ // up calling completeEdit. This is useful for picker type fields.
382
+ ed.onEditorTab(e);
383
+ }
384
+
385
+ sm = grid.getSelectionModel();
386
+ if (sm.onEditorTab) {
387
+ sm.onEditorTab(me, e);
388
+ }
389
+ }
390
+ },
391
+
392
+ onEditComplete : function(ed, value, startValue) {
393
+ var me = this,
394
+ grid = me.grid,
395
+ activeColumn = me.getActiveColumn(),
396
+ record;
397
+
398
+ if (activeColumn) {
399
+ record = me.context.record;
400
+
401
+ me.setActiveEditor(null);
402
+ me.setActiveColumn(null);
403
+ me.setActiveRecord(null);
404
+
405
+ if (!me.validateEdit()) {
406
+ return;
407
+ }
408
+ // Only update the record if the new value is different than the
409
+ // startValue. When the view refreshes its el will gain focus
410
+ if (!record.isEqual(value, startValue)) {
411
+ record.set(activeColumn.dataIndex, value);
412
+ // Restore focus back to the view's element.
413
+ } else {
414
+ grid.getView().getEl(activeColumn).focus();
415
+ }
416
+ me.context.value = value;
417
+ me.fireEvent('edit', me, me.context);
418
+ }
419
+ },
420
+
421
+ /**
422
+ * Cancels any active editing.
423
+ */
424
+ cancelEdit: function() {
425
+ var me = this,
426
+ activeEd = me.getActiveEditor(),
427
+ viewEl = me.grid.getView().getEl(me.getActiveColumn());
428
+
429
+ me.setActiveEditor(null);
430
+ me.setActiveColumn(null);
431
+ me.setActiveRecord(null);
432
+ if (activeEd) {
433
+ activeEd.cancelEdit();
434
+ viewEl.focus();
435
+ me.callParent(arguments);
436
+ }
437
+ },
438
+
439
+ /**
440
+ * Starts editing by position (row/column)
441
+ * @param {Object} position A position with keys of row and column.
442
+ */
443
+ startEditByPosition: function(position) {
444
+ var sm = this.grid.getSelectionModel();
445
+
446
+ // Coerce the column position to the closest visible column
447
+ position.column = this.view.getHeaderCt().getVisibleHeaderClosestToIndex(position.column).getIndex();
448
+ if (sm.selectByPosition) {
449
+ sm.selectByPosition(position);
450
+ }
451
+ return this.startEdit(position.row, position.column);
452
+ }
453
+ });