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,131 @@
1
+ /**
2
+ * A custom drag proxy implementation specific to {@link Ext.panel.Panel}s. This class
3
+ * is primarily used internally for the Panel's drag drop implementation, and
4
+ * should never need to be created directly.
5
+ * @private
6
+ */
7
+ Ext.define('Ext.panel.Proxy', {
8
+
9
+ alternateClassName: 'Ext.dd.PanelProxy',
10
+
11
+ /**
12
+ * @cfg {Boolean} [moveOnDrag=true]
13
+ * True to move the panel to the dragged position when dropped
14
+ */
15
+ moveOnDrag: true,
16
+
17
+ /**
18
+ * Creates new panel proxy.
19
+ * @param {Ext.panel.Panel} panel The {@link Ext.panel.Panel} to proxy for
20
+ * @param {Object} [config] Config object
21
+ */
22
+ constructor: function(panel, config){
23
+ var me = this;
24
+
25
+ /**
26
+ * @property panel
27
+ * @type Ext.panel.Panel
28
+ */
29
+ me.panel = panel;
30
+ me.id = me.panel.id +'-ddproxy';
31
+ Ext.apply(me, config);
32
+ },
33
+
34
+ /**
35
+ * @cfg {Boolean} insertProxy
36
+ * True to insert a placeholder proxy element while dragging the panel, false to drag with no proxy.
37
+ * Most Panels are not absolute positioned and therefore we need to reserve this space.
38
+ */
39
+ insertProxy: true,
40
+
41
+ // private overrides
42
+ setStatus: Ext.emptyFn,
43
+ reset: Ext.emptyFn,
44
+ update: Ext.emptyFn,
45
+ stop: Ext.emptyFn,
46
+ sync: Ext.emptyFn,
47
+
48
+ /**
49
+ * Gets the proxy's element
50
+ * @return {Ext.Element} The proxy's element
51
+ */
52
+ getEl: function(){
53
+ return this.ghost.el;
54
+ },
55
+
56
+ /**
57
+ * Gets the proxy's ghost Panel
58
+ * @return {Ext.panel.Panel} The proxy's ghost Panel
59
+ */
60
+ getGhost: function(){
61
+ return this.ghost;
62
+ },
63
+
64
+ /**
65
+ * Gets the proxy element. This is the element that represents where the
66
+ * Panel was before we started the drag operation.
67
+ * @return {Ext.Element} The proxy's element
68
+ */
69
+ getProxy: function(){
70
+ return this.proxy;
71
+ },
72
+
73
+ /**
74
+ * Hides the proxy
75
+ */
76
+ hide : function(){
77
+ var me = this;
78
+
79
+ if (me.ghost) {
80
+ if (me.proxy) {
81
+ me.proxy.remove();
82
+ delete me.proxy;
83
+ }
84
+
85
+ // Unghost the Panel, do not move the Panel to where the ghost was
86
+ me.panel.unghost(null, me.moveOnDrag);
87
+ delete me.ghost;
88
+ }
89
+ },
90
+
91
+ /**
92
+ * Shows the proxy
93
+ */
94
+ show: function(){
95
+ var me = this,
96
+ panelSize;
97
+
98
+ if (!me.ghost) {
99
+ panelSize = me.panel.getSize();
100
+ me.panel.el.setVisibilityMode(Ext.Element.DISPLAY);
101
+ me.ghost = me.panel.ghost();
102
+ if (me.insertProxy) {
103
+ // bc Panels aren't absolute positioned we need to take up the space
104
+ // of where the panel previously was
105
+ me.proxy = me.panel.el.insertSibling({cls: Ext.baseCSSPrefix + 'panel-dd-spacer'});
106
+ me.proxy.setSize(panelSize);
107
+ }
108
+ }
109
+ },
110
+
111
+ // private
112
+ repair: function(xy, callback, scope) {
113
+ this.hide();
114
+ Ext.callback(callback, scope || this);
115
+ },
116
+
117
+ /**
118
+ * Moves the proxy to a different position in the DOM. This is typically
119
+ * called while dragging the Panel to keep the proxy sync'd to the Panel's
120
+ * location.
121
+ * @param {HTMLElement} parentNode The proxy's parent DOM node
122
+ * @param {HTMLElement} [before] The sibling node before which the
123
+ * proxy should be inserted. Defaults to the parent's last child if not
124
+ * specified.
125
+ */
126
+ moveProxy : function(parentNode, before){
127
+ if (this.proxy) {
128
+ parentNode.insertBefore(this.proxy.dom, before);
129
+ }
130
+ }
131
+ });
@@ -0,0 +1,1018 @@
1
+ /**
2
+ * @author Nicolas Ferrero
3
+ *
4
+ * TablePanel is the basis of both {@link Ext.tree.Panel TreePanel} and {@link Ext.grid.Panel GridPanel}.
5
+ *
6
+ * TablePanel aggregates:
7
+ *
8
+ * - a Selection Model
9
+ * - a View
10
+ * - a Store
11
+ * - Scrollers
12
+ * - Ext.grid.header.Container
13
+ */
14
+ Ext.define('Ext.panel.Table', {
15
+ extend: 'Ext.panel.Panel',
16
+
17
+ alias: 'widget.tablepanel',
18
+
19
+ uses: [
20
+ 'Ext.selection.RowModel',
21
+ 'Ext.grid.PagingScroller',
22
+ 'Ext.grid.header.Container',
23
+ 'Ext.grid.Lockable'
24
+ ],
25
+
26
+ extraBaseCls: Ext.baseCSSPrefix + 'grid',
27
+ extraBodyCls: Ext.baseCSSPrefix + 'grid-body',
28
+
29
+ layout: 'fit',
30
+ /**
31
+ * @property {Boolean} hasView
32
+ * True to indicate that a view has been injected into the panel.
33
+ */
34
+ hasView: false,
35
+
36
+ // each panel should dictate what viewType and selType to use
37
+ /**
38
+ * @cfg {String} viewType
39
+ * An xtype of view to use. This is automatically set to 'gridview' by {@link Ext.grid.Panel Grid}
40
+ * and to 'treeview' by {@link Ext.tree.Panel Tree}.
41
+ */
42
+ viewType: null,
43
+
44
+ /**
45
+ * @cfg {Object} viewConfig
46
+ * A config object that will be applied to the grid's UI view. Any of the config options available for
47
+ * {@link Ext.view.Table} can be specified here. This option is ignored if {@link #view} is specified.
48
+ */
49
+
50
+ /**
51
+ * @cfg {Ext.view.Table} view
52
+ * The {@link Ext.view.Table} used by the grid. Use {@link #viewConfig} to just supply some config options to
53
+ * view (instead of creating an entire View instance).
54
+ */
55
+
56
+ /**
57
+ * @cfg {String} selType
58
+ * An xtype of selection model to use. Defaults to 'rowmodel'. This is used to create selection model if just
59
+ * a config object or nothing at all given in {@link #selModel} config.
60
+ */
61
+ selType: 'rowmodel',
62
+
63
+ /**
64
+ * @cfg {Ext.selection.Model/Object} selModel
65
+ * A {@link Ext.selection.Model selection model} instance or config object. In latter case the {@link #selType}
66
+ * config option determines to which type of selection model this config is applied.
67
+ */
68
+
69
+ /**
70
+ * @cfg {Boolean} multiSelect
71
+ * True to enable 'MULTI' selection mode on selection model. See {@link Ext.selection.Model#mode}.
72
+ */
73
+
74
+ /**
75
+ * @cfg {Boolean} simpleSelect
76
+ * True to enable 'SIMPLE' selection mode on selection model. See {@link Ext.selection.Model#mode}.
77
+ */
78
+
79
+ /**
80
+ * @cfg {Ext.data.Store} store (required)
81
+ * The {@link Ext.data.Store Store} the grid should use as its data source.
82
+ */
83
+
84
+ /**
85
+ * @cfg {String/Boolean} scroll
86
+ * Scrollers configuration. Valid values are 'both', 'horizontal' or 'vertical'.
87
+ * True implies 'both'. False implies 'none'.
88
+ */
89
+ scroll: true,
90
+
91
+ /**
92
+ * @cfg {Ext.grid.column.Column[]/Object} columns
93
+ * An array of {@link Ext.grid.column.Column column} definition objects which define all columns that appear in this
94
+ * grid. Each column definition provides the header text for the column, and a definition of where the data for that
95
+ * column comes from.
96
+ *
97
+ * This can also be a configuration object for a {Ext.grid.header.Container HeaderContainer} which may override
98
+ * certain default configurations if necessary. For example, the special layout may be overridden to use a simpler
99
+ * layout, or one can set default values shared by all columns:
100
+ *
101
+ * columns: {
102
+ * items: [
103
+ * {
104
+ * text: "Column A"
105
+ * dataIndex: "field_A"
106
+ * },{
107
+ * text: "Column B",
108
+ * dataIndex: "field_B"
109
+ * },
110
+ * ...
111
+ * ],
112
+ * defaults: {
113
+ * flex: 1
114
+ * }
115
+ * }
116
+ */
117
+
118
+ /**
119
+ * @cfg {Boolean} forceFit
120
+ * Ttrue to force the columns to fit into the available width. Headers are first sized according to configuration,
121
+ * whether that be a specific width, or flex. Then they are all proportionally changed in width so that the entire
122
+ * content width is used.
123
+ */
124
+
125
+ /**
126
+ * @cfg {Ext.grid.feature.Feature[]} features
127
+ * An array of grid Features to be added to this grid. See {@link Ext.grid.feature.Feature} for usage.
128
+ */
129
+
130
+ /**
131
+ * @cfg {Boolean} [hideHeaders=false]
132
+ * True to hide column headers.
133
+ */
134
+
135
+ /**
136
+ * @cfg {Boolean} deferRowRender
137
+ * Defaults to true to enable deferred row rendering.
138
+ *
139
+ * This allows the View to execute a refresh quickly, with the expensive update of the row structure deferred so
140
+ * that layouts with GridPanels appear, and lay out more quickly.
141
+ */
142
+
143
+ /**
144
+ * @cfg {Object} verticalScroller
145
+ * A config object to be used when configuring the {@link Ext.grid.PagingScroller scroll monitor} to control
146
+ * refreshing of data in an "infinite grid".
147
+ *
148
+ * Configurations of this object allow fine tuning of data caching which can improve performance and usability
149
+ * of the infinite grid.
150
+ */
151
+
152
+ deferRowRender: true,
153
+
154
+ /**
155
+ * @cfg {Boolean} sortableColumns
156
+ * False to disable column sorting via clicking the header and via the Sorting menu items.
157
+ */
158
+ sortableColumns: true,
159
+
160
+ /**
161
+ * @cfg {Boolean} [enableLocking=false]
162
+ * True to enable locking support for this grid. Alternatively, locking will also be automatically
163
+ * enabled if any of the columns in the column configuration contain the locked config option.
164
+ */
165
+ enableLocking: false,
166
+
167
+ // private property used to determine where to go down to find views
168
+ // this is here to support locking.
169
+ scrollerOwner: true,
170
+
171
+ /**
172
+ * @cfg {Boolean} [enableColumnMove=true]
173
+ * False to disable column dragging within this grid.
174
+ */
175
+ enableColumnMove: true,
176
+
177
+ /**
178
+ * @cfg {Boolean} [restrictColumnReorder=false]
179
+ * True to constrain column dragging so that a column cannot be dragged in or out of it's
180
+ * current group. Only relevant while {@link #enableColumnMove} is enabled.
181
+ */
182
+ restrictColumnReorder: false,
183
+
184
+ /**
185
+ * @cfg {Boolean} [enableColumnResize=true]
186
+ * False to disable column resizing within this grid.
187
+ */
188
+ enableColumnResize: true,
189
+
190
+ /**
191
+ * @cfg {Boolean} [enableColumnHide=true]
192
+ * False to disable column hiding within this grid.
193
+ */
194
+ enableColumnHide: true,
195
+
196
+ /**
197
+ * @cfg {Boolean} columnLines Adds column line styling
198
+ */
199
+
200
+ /**
201
+ * @cfg {Boolean} [rowLines=true] Adds row line styling
202
+ */
203
+ rowLines: true,
204
+
205
+ /**
206
+ * @cfg {Boolean} [disableSelection=false]
207
+ * True to disable selection model.
208
+ */
209
+
210
+ /**
211
+ * @cfg {String} emptyText Default text (html tags are accepted) to display in the Panel body when the Store
212
+ * is empty. When specified, and the Store is empty, the text will be rendered inside a DIV with the CSS class "x-grid-empty".
213
+ */
214
+
215
+ /**
216
+ * @property {Boolean} optimizedColumnMove
217
+ * If you are writing a grid plugin or a {Ext.grid.feature.Feature Feature} which creates a column-based structure which
218
+ * needs a view refresh when columns are moved, then set this property in the grid.
219
+ *
220
+ * An example is the built in {@link Ext.grid.feature.AbstractSummary Summary} Feature. This creates summary rows, and the
221
+ * summary columns must be in the same order as the data columns. This plugin sets the `optimizedColumnMove` to `false.
222
+ */
223
+
224
+ initComponent: function() {
225
+ //<debug>
226
+ if (!this.viewType) {
227
+ Ext.Error.raise("You must specify a viewType config.");
228
+ }
229
+ if (this.headers) {
230
+ Ext.Error.raise("The headers config is not supported. Please specify columns instead.");
231
+ }
232
+ //</debug>
233
+
234
+ var me = this,
235
+ scroll = me.scroll,
236
+ vertical = false,
237
+ horizontal = false,
238
+ headerCtCfg = me.columns || me.colModel,
239
+ view,
240
+ border = me.border,
241
+ i, len;
242
+
243
+ if (me.columnLines) {
244
+ me.addCls(Ext.baseCSSPrefix + 'grid-with-col-lines');
245
+ }
246
+
247
+ if (me.rowLines) {
248
+ me.addCls(Ext.baseCSSPrefix + 'grid-with-row-lines');
249
+ }
250
+
251
+ // Look up the configured Store. If none configured, use the fieldless, empty Store defined in Ext.data.Store.
252
+ me.store = Ext.data.StoreManager.lookup(me.store || 'ext-empty-store');
253
+
254
+ //<debug>
255
+ if (!headerCtCfg) {
256
+ Ext.Error.raise("A column configuration must be specified");
257
+ }
258
+ //</debug>
259
+
260
+ // The columns/colModel config may be either a fully instantiated HeaderContainer, or an array of Column definitions, or a config object of a HeaderContainer
261
+ // Either way, we extract a columns property referencing an array of Column definitions.
262
+ if (headerCtCfg instanceof Ext.grid.header.Container) {
263
+ me.headerCt = headerCtCfg;
264
+ me.headerCt.border = border;
265
+ me.columns = me.headerCt.items.items;
266
+ } else {
267
+ if (Ext.isArray(headerCtCfg)) {
268
+ headerCtCfg = {
269
+ items: headerCtCfg,
270
+ border: border
271
+ };
272
+ }
273
+ Ext.apply(headerCtCfg, {
274
+ forceFit: me.forceFit,
275
+ sortable: me.sortableColumns,
276
+ enableColumnMove: me.enableColumnMove,
277
+ enableColumnResize: me.enableColumnResize,
278
+ enableColumnHide: me.enableColumnHide,
279
+ border: border,
280
+ restrictReorder: me.restrictColumnReorder
281
+ });
282
+ me.columns = headerCtCfg.items;
283
+
284
+ // If any of the Column objects contain a locked property, and are not processed, this is a lockable TablePanel, a
285
+ // special view will be injected by the Ext.grid.Lockable mixin, so no processing of .
286
+ if (me.enableLocking || Ext.ComponentQuery.query('{locked !== undefined}{processed != true}', me.columns).length) {
287
+ me.self.mixin('lockable', Ext.grid.Lockable);
288
+ me.injectLockable();
289
+ }
290
+ }
291
+
292
+ me.scrollTask = new Ext.util.DelayedTask(me.syncHorizontalScroll, me);
293
+
294
+ me.addEvents(
295
+ // documented on GridPanel
296
+ 'reconfigure',
297
+ /**
298
+ * @event viewready
299
+ * Fires when the grid view is available (use this for selecting a default row).
300
+ * @param {Ext.panel.Table} this
301
+ */
302
+ 'viewready'
303
+ );
304
+
305
+ me.bodyCls = me.bodyCls || '';
306
+ me.bodyCls += (' ' + me.extraBodyCls);
307
+
308
+ me.cls = me.cls || '';
309
+ me.cls += (' ' + me.extraBaseCls);
310
+
311
+ // autoScroll is not a valid configuration
312
+ delete me.autoScroll;
313
+
314
+ // If this TablePanel is lockable (Either configured lockable, or any of the defined columns has a 'locked' property)
315
+ // than a special lockable view containing 2 side-by-side grids will have been injected so we do not need to set up any UI.
316
+ if (!me.hasView) {
317
+
318
+ // If we were not configured with a ready-made headerCt (either by direct config with a headerCt property, or by passing
319
+ // a HeaderContainer instance as the 'columns' property, then go ahead and create one from the config object created above.
320
+ if (!me.headerCt) {
321
+ me.headerCt = new Ext.grid.header.Container(headerCtCfg);
322
+ }
323
+
324
+ // Extract the array of Column objects
325
+ me.columns = me.headerCt.items.items;
326
+
327
+ // If the Store is paging blocks of the dataset in, then it can only be sorted remotely.
328
+ if (me.store.buffered && !me.store.remoteSort) {
329
+ for (i = 0, len = me.columns.length; i < len; i++) {
330
+ me.columns[i].sortable = false;
331
+ }
332
+ }
333
+
334
+ if (me.hideHeaders) {
335
+ me.headerCt.height = 0;
336
+ me.headerCt.addCls(Ext.baseCSSPrefix + 'grid-header-ct-hidden');
337
+ me.addCls(Ext.baseCSSPrefix + 'grid-header-hidden');
338
+ // IE Quirks Mode fix
339
+ // If hidden configuration option was used, several layout calculations will be bypassed.
340
+ if (Ext.isIEQuirks) {
341
+ me.headerCt.style = {
342
+ display: 'none'
343
+ };
344
+ }
345
+ }
346
+
347
+ // turn both on.
348
+ if (scroll === true || scroll === 'both') {
349
+ vertical = horizontal = true;
350
+ } else if (scroll === 'horizontal') {
351
+ horizontal = true;
352
+ } else if (scroll === 'vertical') {
353
+ vertical = true;
354
+ }
355
+
356
+ me.relayHeaderCtEvents(me.headerCt);
357
+ me.features = me.features || [];
358
+ if (!Ext.isArray(me.features)) {
359
+ me.features = [me.features];
360
+ }
361
+ me.dockedItems = [].concat(me.dockedItems || []);
362
+ me.dockedItems.unshift(me.headerCt);
363
+ me.viewConfig = me.viewConfig || {};
364
+
365
+ // Buffered scrolling must preserve scroll on refresh
366
+ if (me.store && me.store.buffered) {
367
+ me.viewConfig.preserveScrollOnRefresh = true;
368
+ } else if (me.invalidateScrollerOnRefresh !== undefined) {
369
+ me.viewConfig.preserveScrollOnRefresh = !me.invalidateScrollerOnRefresh;
370
+ }
371
+
372
+ // AbstractDataView will look up a Store configured as an object
373
+ // getView converts viewConfig into a View instance
374
+ view = me.getView();
375
+
376
+ me.items = [view];
377
+ me.hasView = true;
378
+
379
+ if (vertical) {
380
+ // If the Store is buffered, create a PagingScroller to monitor the View's scroll progress,
381
+ // load the Store's prefetch buffer when it detects we are nearing an edge.
382
+ if (me.store.buffered) {
383
+ me.verticalScroller = new Ext.grid.PagingScroller(Ext.apply({
384
+ panel: me,
385
+ store: me.store,
386
+ view: me.view
387
+ }, me.verticalScroller));
388
+ }
389
+ }
390
+
391
+ if (horizontal) {
392
+ // Add a listener to synchronize the horizontal scroll position of the headers
393
+ // with the table view's element... Unless we are not showing headers!
394
+ if (!me.hideHeaders) {
395
+ view.on({
396
+ scroll: {
397
+ fn: me.onHorizontalScroll,
398
+ element: 'el',
399
+ scope: me
400
+ }
401
+ });
402
+ }
403
+ }
404
+
405
+ me.mon(view.store, {
406
+ load: me.onStoreLoad,
407
+ scope: me
408
+ });
409
+ me.mon(view, {
410
+ viewready: me.onViewReady,
411
+ refresh: me.onRestoreHorzScroll,
412
+ scope: me
413
+ });
414
+ }
415
+
416
+ // Relay events from the View whether it be a LockingView, or a regular GridView
417
+ this.relayEvents(me.view, [
418
+ /**
419
+ * @event beforeitemmousedown
420
+ * @inheritdoc Ext.view.View#beforeitemmousedown
421
+ */
422
+ 'beforeitemmousedown',
423
+ /**
424
+ * @event beforeitemmouseup
425
+ * @inheritdoc Ext.view.View#beforeitemmouseup
426
+ */
427
+ 'beforeitemmouseup',
428
+ /**
429
+ * @event beforeitemmouseenter
430
+ * @inheritdoc Ext.view.View#beforeitemmouseenter
431
+ */
432
+ 'beforeitemmouseenter',
433
+ /**
434
+ * @event beforeitemmouseleave
435
+ * @inheritdoc Ext.view.View#beforeitemmouseleave
436
+ */
437
+ 'beforeitemmouseleave',
438
+ /**
439
+ * @event beforeitemclick
440
+ * @inheritdoc Ext.view.View#beforeitemclick
441
+ */
442
+ 'beforeitemclick',
443
+ /**
444
+ * @event beforeitemdblclick
445
+ * @inheritdoc Ext.view.View#beforeitemdblclick
446
+ */
447
+ 'beforeitemdblclick',
448
+ /**
449
+ * @event beforeitemcontextmenu
450
+ * @inheritdoc Ext.view.View#beforeitemcontextmenu
451
+ */
452
+ 'beforeitemcontextmenu',
453
+ /**
454
+ * @event itemmousedown
455
+ * @inheritdoc Ext.view.View#itemmousedown
456
+ */
457
+ 'itemmousedown',
458
+ /**
459
+ * @event itemmouseup
460
+ * @inheritdoc Ext.view.View#itemmouseup
461
+ */
462
+ 'itemmouseup',
463
+ /**
464
+ * @event itemmouseenter
465
+ * @inheritdoc Ext.view.View#itemmouseenter
466
+ */
467
+ 'itemmouseenter',
468
+ /**
469
+ * @event itemmouseleave
470
+ * @inheritdoc Ext.view.View#itemmouseleave
471
+ */
472
+ 'itemmouseleave',
473
+ /**
474
+ * @event itemclick
475
+ * @inheritdoc Ext.view.View#itemclick
476
+ */
477
+ 'itemclick',
478
+ /**
479
+ * @event itemdblclick
480
+ * @inheritdoc Ext.view.View#itemdblclick
481
+ */
482
+ 'itemdblclick',
483
+ /**
484
+ * @event itemcontextmenu
485
+ * @inheritdoc Ext.view.View#itemcontextmenu
486
+ */
487
+ 'itemcontextmenu',
488
+ /**
489
+ * @event beforecontainermousedown
490
+ * @inheritdoc Ext.view.View#beforecontainermousedown
491
+ */
492
+ 'beforecontainermousedown',
493
+ /**
494
+ * @event beforecontainermouseup
495
+ * @inheritdoc Ext.view.View#beforecontainermouseup
496
+ */
497
+ 'beforecontainermouseup',
498
+ /**
499
+ * @event beforecontainermouseover
500
+ * @inheritdoc Ext.view.View#beforecontainermouseover
501
+ */
502
+ 'beforecontainermouseover',
503
+ /**
504
+ * @event beforecontainermouseout
505
+ * @inheritdoc Ext.view.View#beforecontainermouseout
506
+ */
507
+ 'beforecontainermouseout',
508
+ /**
509
+ * @event beforecontainerclick
510
+ * @inheritdoc Ext.view.View#beforecontainerclick
511
+ */
512
+ 'beforecontainerclick',
513
+ /**
514
+ * @event beforecontainerdblclick
515
+ * @inheritdoc Ext.view.View#beforecontainerdblclick
516
+ */
517
+ 'beforecontainerdblclick',
518
+ /**
519
+ * @event beforecontainercontextmenu
520
+ * @inheritdoc Ext.view.View#beforecontainercontextmenu
521
+ */
522
+ 'beforecontainercontextmenu',
523
+ /**
524
+ * @event containermouseup
525
+ * @inheritdoc Ext.view.View#containermouseup
526
+ */
527
+ 'containermouseup',
528
+ /**
529
+ * @event containermouseover
530
+ * @inheritdoc Ext.view.View#containermouseover
531
+ */
532
+ 'containermouseover',
533
+ /**
534
+ * @event containermouseout
535
+ * @inheritdoc Ext.view.View#containermouseout
536
+ */
537
+ 'containermouseout',
538
+ /**
539
+ * @event containerclick
540
+ * @inheritdoc Ext.view.View#containerclick
541
+ */
542
+ 'containerclick',
543
+ /**
544
+ * @event containerdblclick
545
+ * @inheritdoc Ext.view.View#containerdblclick
546
+ */
547
+ 'containerdblclick',
548
+ /**
549
+ * @event containercontextmenu
550
+ * @inheritdoc Ext.view.View#containercontextmenu
551
+ */
552
+ 'containercontextmenu',
553
+ /**
554
+ * @event selectionchange
555
+ * @inheritdoc Ext.selection.Model#selectionchange
556
+ */
557
+ 'selectionchange',
558
+ /**
559
+ * @event beforeselect
560
+ * @inheritdoc Ext.selection.RowModel#beforeselect
561
+ */
562
+ 'beforeselect',
563
+ /**
564
+ * @event select
565
+ * @inheritdoc Ext.selection.RowModel#select
566
+ */
567
+ 'select',
568
+ /**
569
+ * @event beforedeselect
570
+ * @inheritdoc Ext.selection.RowModel#beforedeselect
571
+ */
572
+ 'beforedeselect',
573
+ /**
574
+ * @event deselect
575
+ * @inheritdoc Ext.selection.RowModel#deselect
576
+ */
577
+ 'deselect'
578
+ ]);
579
+
580
+ me.callParent(arguments);
581
+ me.addStateEvents(['columnresize', 'columnmove', 'columnhide', 'columnshow', 'sortchange']);
582
+
583
+ if (me.headerCt) {
584
+ me.headerCt.on('afterlayout', me.onRestoreHorzScroll, me);
585
+ }
586
+ },
587
+
588
+ relayHeaderCtEvents: function (headerCt) {
589
+ this.relayEvents(headerCt, [
590
+ /**
591
+ * @event columnresize
592
+ * @inheritdoc Ext.grid.header.Container#columnresize
593
+ */
594
+ 'columnresize',
595
+ /**
596
+ * @event columnmove
597
+ * @inheritdoc Ext.grid.header.Container#columnmove
598
+ */
599
+ 'columnmove',
600
+ /**
601
+ * @event columnhide
602
+ * @inheritdoc Ext.grid.header.Container#columnhide
603
+ */
604
+ 'columnhide',
605
+ /**
606
+ * @event columnshow
607
+ * @inheritdoc Ext.grid.header.Container#columnshow
608
+ */
609
+ 'columnshow',
610
+ /**
611
+ * @event sortchange
612
+ * @inheritdoc Ext.grid.header.Container#sortchange
613
+ */
614
+ 'sortchange'
615
+ ]);
616
+ },
617
+
618
+ getState: function(){
619
+ var me = this,
620
+ state = me.callParent(),
621
+ sorter = me.store.sorters.first();
622
+
623
+ state = me.addPropertyToState(state, 'columns', (me.headerCt || me).getColumnsState());
624
+
625
+ if (sorter) {
626
+ state = me.addPropertyToState(state, 'sort', {
627
+ property: sorter.property,
628
+ direction: sorter.direction,
629
+ root: sorter.root
630
+ });
631
+ }
632
+ return state;
633
+ },
634
+
635
+ applyState: function(state) {
636
+ var me = this,
637
+ sorter = state.sort,
638
+ store = me.store,
639
+ columns = state.columns;
640
+
641
+ delete state.columns;
642
+
643
+ // Ensure superclass has applied *its* state.
644
+ // AbstractComponent saves dimensions (and anchor/flex) plus collapsed state.
645
+ me.callParent(arguments);
646
+
647
+ if (columns) {
648
+ (me.headerCt || me).applyColumnsState(columns);
649
+ }
650
+
651
+ if (sorter) {
652
+ if (store.remoteSort) {
653
+ // Pass false to prevent a sort from occurring
654
+ store.sort({
655
+ property: sorter.property,
656
+ direction: sorter.direction,
657
+ root: sorter.root
658
+ }, null, false);
659
+ } else {
660
+ store.sort(sorter.property, sorter.direction);
661
+ }
662
+ }
663
+ },
664
+
665
+ /**
666
+ * Returns the store associated with this Panel.
667
+ * @return {Ext.data.Store} The store
668
+ */
669
+ getStore: function(){
670
+ return this.store;
671
+ },
672
+
673
+ /**
674
+ * Gets the view for this panel.
675
+ * @return {Ext.view.Table}
676
+ */
677
+ getView: function() {
678
+ var me = this,
679
+ sm;
680
+
681
+ if (!me.view) {
682
+ sm = me.getSelectionModel();
683
+ me.view = Ext.widget(Ext.apply({}, me.viewConfig, {
684
+
685
+ // Features need a reference to the grid, so configure a reference into the View
686
+ grid: me,
687
+ deferInitialRefresh: me.deferRowRender !== false,
688
+ scroll: me.scroll,
689
+ xtype: me.viewType,
690
+ store: me.store,
691
+ headerCt: me.headerCt,
692
+ selModel: sm,
693
+ features: me.features,
694
+ panel: me,
695
+ emptyText : me.emptyText ? '<div class="' + Ext.baseCSSPrefix + 'grid-empty">' + me.emptyText + '</div>' : ''
696
+ }));
697
+ me.mon(me.view, {
698
+ uievent: me.processEvent,
699
+ scope: me
700
+ });
701
+ sm.view = me.view;
702
+ me.headerCt.view = me.view;
703
+ me.relayEvents(me.view, [
704
+ /**
705
+ * @event cellclick
706
+ * Fired when table cell is clicked.
707
+ * @param {Ext.view.Table} this
708
+ * @param {HTMLElement} td The TD element that was clicked.
709
+ * @param {Number} cellIndex
710
+ * @param {Ext.data.Model} record
711
+ * @param {HTMLElement} tr The TR element that was clicked.
712
+ * @param {Number} rowIndex
713
+ * @param {Ext.EventObject} e
714
+ */
715
+ 'cellclick',
716
+ /**
717
+ * @event celldblclick
718
+ * Fired when table cell is double clicked.
719
+ * @param {Ext.view.Table} this
720
+ * @param {HTMLElement} td The TD element that was clicked.
721
+ * @param {Number} cellIndex
722
+ * @param {Ext.data.Model} record
723
+ * @param {HTMLElement} tr The TR element that was clicked.
724
+ * @param {Number} rowIndex
725
+ * @param {Ext.EventObject} e
726
+ */
727
+ 'celldblclick'
728
+ ]);
729
+ }
730
+ return me.view;
731
+ },
732
+
733
+ /**
734
+ * @private
735
+ * autoScroll is never valid for all classes which extend TablePanel.
736
+ */
737
+ setAutoScroll: Ext.emptyFn,
738
+
739
+ /**
740
+ * @private
741
+ * Processes UI events from the view. Propagates them to whatever internal Components need to process them.
742
+ * @param {String} type Event type, eg 'click'
743
+ * @param {Ext.view.Table} view TableView Component
744
+ * @param {HTMLElement} cell Cell HtmlElement the event took place within
745
+ * @param {Number} recordIndex Index of the associated Store Model (-1 if none)
746
+ * @param {Number} cellIndex Cell index within the row
747
+ * @param {Ext.EventObject} e Original event
748
+ */
749
+ processEvent: function(type, view, cell, recordIndex, cellIndex, e) {
750
+ var me = this,
751
+ header;
752
+
753
+ if (cellIndex !== -1) {
754
+ header = me.headerCt.getGridColumns()[cellIndex];
755
+ return header.processEvent.apply(header, arguments);
756
+ }
757
+ },
758
+
759
+ /**
760
+ * This method is obsolete in 4.1. The closest equivalent in
761
+ * 4.1 is {@link #doLayout}, but it is also possible that no
762
+ * layout is needed.
763
+ * @deprecated 4.1
764
+ */
765
+ determineScrollbars: function () {
766
+ //<debug>
767
+ Ext.log.warn('Obsolete');
768
+ //</debug>
769
+ },
770
+
771
+ /**
772
+ * This method is obsolete in 4.1. The closest equivalent in 4.1 is
773
+ * {@link Ext.AbstractComponent#updateLayout}, but it is also possible that no layout
774
+ * is needed.
775
+ * @deprecated 4.1
776
+ */
777
+ invalidateScroller: function () {
778
+ //<debug>
779
+ Ext.log.warn('Obsolete');
780
+ //</debug>
781
+ },
782
+
783
+ scrollByDeltaY: function(yDelta, animate) {
784
+ this.getView().scrollBy(0, yDelta, animate);
785
+ },
786
+
787
+ scrollByDeltaX: function(xDelta, animate) {
788
+ this.getView().scrollBy(xDelta, 0, animate);
789
+ },
790
+
791
+ afterCollapse: function() {
792
+ var me = this;
793
+ me.saveScrollPos();
794
+ me.saveScrollPos();
795
+ me.callParent(arguments);
796
+ },
797
+
798
+ afterExpand: function() {
799
+ var me = this;
800
+ me.callParent(arguments);
801
+ me.restoreScrollPos();
802
+ me.restoreScrollPos();
803
+ },
804
+
805
+ saveScrollPos: Ext.emptyFn,
806
+
807
+ restoreScrollPos: Ext.emptyFn,
808
+
809
+ onHeaderResize: function(){
810
+ this.delayScroll();
811
+ },
812
+
813
+ // Update the view when a header moves
814
+ onHeaderMove: function(headerCt, header, colsToMove, fromIdx, toIdx) {
815
+ var me = this;
816
+
817
+ // If there are Features or Plugins which create DOM which must match column order, they set the optimizedColumnMove flag to false.
818
+ // In this case we must refresh the view on column move.
819
+ if (me.optimizedColumnMove === false) {
820
+ me.view.refresh();
821
+ }
822
+
823
+ // Simplest case for default DOM structure is just to swap the columns round in the view.
824
+ else {
825
+ me.view.moveColumn(fromIdx, toIdx, colsToMove);
826
+ }
827
+ me.delayScroll();
828
+ },
829
+
830
+ // Section onHeaderHide is invoked after view.
831
+ onHeaderHide: function(headerCt, header) {
832
+ this.delayScroll();
833
+ },
834
+
835
+ onHeaderShow: function(headerCt, header) {
836
+ this.delayScroll();
837
+ },
838
+
839
+ delayScroll: function(){
840
+ var target = this.getScrollTarget().el;
841
+ if (target) {
842
+ this.scrollTask.delay(10, null, null, [target.dom.scrollLeft]);
843
+ }
844
+ },
845
+
846
+ /**
847
+ * @private
848
+ * Fires the TablePanel's viewready event when the view declares that its internal DOM is ready
849
+ */
850
+ onViewReady: function() {
851
+ this.fireEvent('viewready', this);
852
+ },
853
+
854
+ /**
855
+ * @private
856
+ * Tracks when things happen to the view and preserves the horizontal scroll position.
857
+ */
858
+ onRestoreHorzScroll: function() {
859
+ var left = this.scrollLeftPos;
860
+ if (left) {
861
+ this.syncHorizontalScroll(left);
862
+ }
863
+ },
864
+
865
+ /**
866
+ * Sets the scrollTop of the TablePanel.
867
+ * @param {Number} top
868
+ */
869
+ setScrollTop: function(top) {
870
+ var me = this,
871
+ rootCmp = me.getScrollerOwner();
872
+
873
+ rootCmp.virtualScrollTop = top;
874
+ },
875
+
876
+ getScrollerOwner: function() {
877
+ var rootCmp = this;
878
+ if (!this.scrollerOwner) {
879
+ rootCmp = this.up('[scrollerOwner]');
880
+ }
881
+ return rootCmp;
882
+ },
883
+
884
+ /**
885
+ * Gets left hand side marker for header resizing.
886
+ * @private
887
+ */
888
+ getLhsMarker: function() {
889
+ var me = this;
890
+ return me.lhsMarker || (me.lhsMarker = Ext.DomHelper.append(me.el, {
891
+ cls: Ext.baseCSSPrefix + 'grid-resize-marker'
892
+ }, true));
893
+ },
894
+
895
+ /**
896
+ * Gets right hand side marker for header resizing.
897
+ * @private
898
+ */
899
+ getRhsMarker: function() {
900
+ var me = this;
901
+
902
+ return me.rhsMarker || (me.rhsMarker = Ext.DomHelper.append(me.el, {
903
+ cls: Ext.baseCSSPrefix + 'grid-resize-marker'
904
+ }, true));
905
+ },
906
+
907
+ /**
908
+ * Returns the selection model being used and creates it via the configuration if it has not been created already.
909
+ * @return {Ext.selection.Model} selModel
910
+ */
911
+ getSelectionModel: function(){
912
+ if (!this.selModel) {
913
+ this.selModel = {};
914
+ }
915
+
916
+ var mode = 'SINGLE',
917
+ type;
918
+ if (this.simpleSelect) {
919
+ mode = 'SIMPLE';
920
+ } else if (this.multiSelect) {
921
+ mode = 'MULTI';
922
+ }
923
+
924
+ Ext.applyIf(this.selModel, {
925
+ allowDeselect: this.allowDeselect,
926
+ mode: mode
927
+ });
928
+
929
+ if (!this.selModel.events) {
930
+ type = this.selModel.selType || this.selType;
931
+ this.selModel = Ext.create('selection.' + type, this.selModel);
932
+ }
933
+
934
+ if (!this.selModel.hasRelaySetup) {
935
+ this.relayEvents(this.selModel, [
936
+ 'selectionchange', 'beforeselect', 'beforedeselect', 'select', 'deselect'
937
+ ]);
938
+ this.selModel.hasRelaySetup = true;
939
+ }
940
+
941
+ // lock the selection model if user
942
+ // has disabled selection
943
+ if (this.disableSelection) {
944
+ this.selModel.locked = true;
945
+ }
946
+ return this.selModel;
947
+ },
948
+
949
+ getScrollTarget: function(){
950
+ var owner = this.getScrollerOwner(),
951
+ items = owner.query('tableview');
952
+
953
+ return items[1] || items[0];
954
+ },
955
+
956
+ onHorizontalScroll: function(event, target) {
957
+ this.syncHorizontalScroll(target.scrollLeft);
958
+ },
959
+
960
+ syncHorizontalScroll: function(left) {
961
+ var me = this,
962
+ scrollTarget;
963
+
964
+ if (me.rendered) {
965
+ scrollTarget = me.getScrollTarget();
966
+ scrollTarget.el.dom.scrollLeft = left;
967
+ me.headerCt.el.dom.scrollLeft = left;
968
+ me.scrollLeftPos = left;
969
+ }
970
+ },
971
+
972
+ // template method meant to be overriden
973
+ onStoreLoad: Ext.emptyFn,
974
+
975
+ getEditorParent: function() {
976
+ return this.body;
977
+ },
978
+
979
+ bindStore: function(store) {
980
+ var me = this;
981
+ me.store = store;
982
+ me.getView().bindStore(store);
983
+ },
984
+
985
+ beforeDestroy: function(){
986
+ Ext.destroy(this.verticalScroller);
987
+ this.callParent();
988
+ },
989
+
990
+ // documented on GridPanel
991
+ reconfigure: function(store, columns) {
992
+ var me = this,
993
+ headerCt = me.headerCt;
994
+
995
+ if (me.lockable) {
996
+ me.reconfigureLockable(store, columns);
997
+ } else {
998
+ if (columns) {
999
+ // new columns, delete scroll pos
1000
+ delete me.scrollLeftPos;
1001
+ headerCt.suspendLayouts();
1002
+ headerCt.removeAll();
1003
+ headerCt.add(columns);
1004
+ }
1005
+ if (store) {
1006
+ store = Ext.StoreManager.lookup(store);
1007
+ me.bindStore(store);
1008
+ } else {
1009
+ me.getView().refresh();
1010
+ }
1011
+ if (columns) {
1012
+ headerCt.resumeLayouts(true);
1013
+ }
1014
+ headerCt.setSortState();
1015
+ }
1016
+ me.fireEvent('reconfigure', me, store, columns);
1017
+ }
1018
+ });