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,139 @@
1
+ /**
2
+ * Produces optimized XTemplates for chunks of tables to be
3
+ * used in grids, trees and other table based widgets.
4
+ */
5
+ Ext.define('Ext.view.TableChunker', {
6
+ singleton: true,
7
+ requires: ['Ext.XTemplate'],
8
+ metaTableTpl: [
9
+ '{%if (this.openTableWrap)out.push(this.openTableWrap())%}',
10
+ '<table class="' + Ext.baseCSSPrefix + 'grid-table ' + Ext.baseCSSPrefix + 'grid-table-resizer" border="0" cellspacing="0" cellpadding="0" {[this.embedFullWidth(values)]}>',
11
+ '<tbody>',
12
+ '<tr class="' + Ext.baseCSSPrefix + 'grid-header-row">',
13
+ '<tpl for="columns">',
14
+ '<th class="' + Ext.baseCSSPrefix + 'grid-col-resizer-{id}" style="width: {width}px; height: 0px;"></th>',
15
+ '</tpl>',
16
+ '</tr>',
17
+ '{[this.openRows()]}',
18
+ '{row}',
19
+ '<tpl for="features">',
20
+ '{[this.embedFeature(values, parent, xindex, xcount)]}',
21
+ '</tpl>',
22
+ '{[this.closeRows()]}',
23
+ '</tbody>',
24
+ '</table>',
25
+ '{%if (this.closeTableWrap)out.push(this.closeTableWrap())%}'
26
+ ],
27
+
28
+ constructor: function() {
29
+ Ext.XTemplate.prototype.recurse = function(values, reference) {
30
+ return this.apply(reference ? values[reference] : values);
31
+ };
32
+ },
33
+
34
+ embedFeature: function(values, parent, x, xcount) {
35
+ var tpl = '';
36
+ if (!values.disabled) {
37
+ tpl = values.getFeatureTpl(values, parent, x, xcount);
38
+ }
39
+ return tpl;
40
+ },
41
+
42
+ embedFullWidth: function(values) {
43
+ var result = 'style="width:{fullWidth}px;';
44
+
45
+ // If there are no records, we need to give the table a height so that it
46
+ // is displayed and causes q scrollbar if the width exceeds the View's width.
47
+ if (!values.rowCount) {
48
+ result += 'height:1px;';
49
+ }
50
+ return result + '"';
51
+ },
52
+
53
+ openRows: function() {
54
+ return '<tpl for="rows">';
55
+ },
56
+
57
+ closeRows: function() {
58
+ return '</tpl>';
59
+ },
60
+
61
+ metaRowTpl: [
62
+ '<tr class="' + Ext.baseCSSPrefix + 'grid-row {[this.embedRowCls()]}" {[this.embedRowAttr()]}>',
63
+ '<tpl for="columns">',
64
+ '<td class="{cls} ' + Ext.baseCSSPrefix + 'grid-cell ' + Ext.baseCSSPrefix + 'grid-cell-{columnId} {{id}-modified} {{id}-tdCls} {[this.firstOrLastCls(xindex, xcount)]}" {{id}-tdAttr}>',
65
+ '<div {unselectableAttr} class="' + Ext.baseCSSPrefix + 'grid-cell-inner {unselectableCls}" style="text-align: {align}; {{id}-style};">{{id}}</div>',
66
+ '</td>',
67
+ '</tpl>',
68
+ '</tr>'
69
+ ],
70
+
71
+ firstOrLastCls: function(xindex, xcount) {
72
+ if (xindex === 1) {
73
+ return Ext.view.Table.prototype.firstCls;
74
+ } else if (xindex === xcount) {
75
+ return Ext.view.Table.prototype.lastCls;
76
+ }
77
+ },
78
+
79
+ embedRowCls: function() {
80
+ return '{rowCls}';
81
+ },
82
+
83
+ embedRowAttr: function() {
84
+ return '{rowAttr}';
85
+ },
86
+
87
+ openTableWrap: undefined,
88
+
89
+ closeTableWrap: undefined,
90
+
91
+ getTableTpl: function(cfg, textOnly) {
92
+ var tpl,
93
+ tableTplMemberFns = {
94
+ openRows: this.openRows,
95
+ closeRows: this.closeRows,
96
+ embedFeature: this.embedFeature,
97
+ embedFullWidth: this.embedFullWidth,
98
+ openTableWrap: this.openTableWrap,
99
+ closeTableWrap: this.closeTableWrap
100
+ },
101
+ tplMemberFns = {},
102
+ features = cfg.features || [],
103
+ ln = features.length,
104
+ i = 0,
105
+ memberFns = {
106
+ embedRowCls: this.embedRowCls,
107
+ embedRowAttr: this.embedRowAttr,
108
+ firstOrLastCls: this.firstOrLastCls,
109
+ unselectableAttr: cfg.enableTextSelection ? '' : 'unselectable="on"',
110
+ unselectableCls: cfg.enableTextSelection ? '' : Ext.baseCSSPrefix + 'unselectable'
111
+ },
112
+ // copy the default
113
+ metaRowTpl = Array.prototype.slice.call(this.metaRowTpl, 0),
114
+ metaTableTpl;
115
+
116
+ for (; i < ln; i++) {
117
+ if (!features[i].disabled) {
118
+ features[i].mutateMetaRowTpl(metaRowTpl);
119
+ Ext.apply(memberFns, features[i].getMetaRowTplFragments());
120
+ Ext.apply(tplMemberFns, features[i].getFragmentTpl());
121
+ Ext.apply(tableTplMemberFns, features[i].getTableFragments());
122
+ }
123
+ }
124
+
125
+ metaRowTpl = new Ext.XTemplate(metaRowTpl.join(''), memberFns);
126
+ cfg.row = metaRowTpl.applyTemplate(cfg);
127
+
128
+ metaTableTpl = new Ext.XTemplate(this.metaTableTpl.join(''), tableTplMemberFns);
129
+
130
+ tpl = metaTableTpl.applyTemplate(cfg);
131
+
132
+ // TODO: Investigate eliminating.
133
+ if (!textOnly) {
134
+ tpl = new Ext.XTemplate(tpl, tplMemberFns);
135
+ }
136
+ return tpl;
137
+
138
+ }
139
+ });
@@ -0,0 +1,636 @@
1
+ /**
2
+ * A mechanism for displaying data using custom layout templates and formatting.
3
+ *
4
+ * The View uses an {@link Ext.XTemplate} as its internal templating mechanism, and is bound to an
5
+ * {@link Ext.data.Store} so that as the data in the store changes the view is automatically updated
6
+ * to reflect the changes. The view also provides built-in behavior for many common events that can
7
+ * occur for its contained items including click, doubleclick, mouseover, mouseout, etc. as well as a
8
+ * built-in selection model. **In order to use these features, an {@link #itemSelector} config must
9
+ * be provided for the DataView to determine what nodes it will be working with.**
10
+ *
11
+ * The example below binds a View to a {@link Ext.data.Store} and renders it into an {@link Ext.panel.Panel}.
12
+ *
13
+ * @example
14
+ * Ext.define('Image', {
15
+ * extend: 'Ext.data.Model',
16
+ * fields: [
17
+ * { name:'src', type:'string' },
18
+ * { name:'caption', type:'string' }
19
+ * ]
20
+ * });
21
+ *
22
+ * Ext.create('Ext.data.Store', {
23
+ * id:'imagesStore',
24
+ * model: 'Image',
25
+ * data: [
26
+ * { src:'http://www.sencha.com/img/20110215-feat-drawing.png', caption:'Drawing & Charts' },
27
+ * { src:'http://www.sencha.com/img/20110215-feat-data.png', caption:'Advanced Data' },
28
+ * { src:'http://www.sencha.com/img/20110215-feat-html5.png', caption:'Overhauled Theme' },
29
+ * { src:'http://www.sencha.com/img/20110215-feat-perf.png', caption:'Performance Tuned' }
30
+ * ]
31
+ * });
32
+ *
33
+ * var imageTpl = new Ext.XTemplate(
34
+ * '<tpl for=".">',
35
+ * '<div style="margin-bottom: 10px;" class="thumb-wrap">',
36
+ * '<img src="{src}" />',
37
+ * '<br/><span>{caption}</span>',
38
+ * '</div>',
39
+ * '</tpl>'
40
+ * );
41
+ *
42
+ * Ext.create('Ext.view.View', {
43
+ * store: Ext.data.StoreManager.lookup('imagesStore'),
44
+ * tpl: imageTpl,
45
+ * itemSelector: 'div.thumb-wrap',
46
+ * emptyText: 'No images available',
47
+ * renderTo: Ext.getBody()
48
+ * });
49
+ */
50
+ Ext.define('Ext.view.View', {
51
+ extend: 'Ext.view.AbstractView',
52
+ alternateClassName: 'Ext.DataView',
53
+ alias: 'widget.dataview',
54
+
55
+ inheritableStatics: {
56
+ EventMap: {
57
+ mousedown: 'MouseDown',
58
+ mouseup: 'MouseUp',
59
+ click: 'Click',
60
+ dblclick: 'DblClick',
61
+ contextmenu: 'ContextMenu',
62
+ mouseover: 'MouseOver',
63
+ mouseout: 'MouseOut',
64
+ mouseenter: 'MouseEnter',
65
+ mouseleave: 'MouseLeave',
66
+ keydown: 'KeyDown',
67
+ focus: 'Focus'
68
+ }
69
+ },
70
+
71
+ addCmpEvents: function() {
72
+ this.addEvents(
73
+ /**
74
+ * @event beforeitemmousedown
75
+ * Fires before the mousedown event on an item is processed. Returns false to cancel the default action.
76
+ * @param {Ext.view.View} this
77
+ * @param {Ext.data.Model} record The record that belongs to the item
78
+ * @param {HTMLElement} item The item's element
79
+ * @param {Number} index The item's index
80
+ * @param {Ext.EventObject} e The raw event object
81
+ */
82
+ 'beforeitemmousedown',
83
+ /**
84
+ * @event beforeitemmouseup
85
+ * Fires before the mouseup event on an item is processed. Returns false to cancel the default action.
86
+ * @param {Ext.view.View} this
87
+ * @param {Ext.data.Model} record The record that belongs to the item
88
+ * @param {HTMLElement} item The item's element
89
+ * @param {Number} index The item's index
90
+ * @param {Ext.EventObject} e The raw event object
91
+ */
92
+ 'beforeitemmouseup',
93
+ /**
94
+ * @event beforeitemmouseenter
95
+ * Fires before the mouseenter event on an item is processed. Returns false to cancel the default action.
96
+ * @param {Ext.view.View} this
97
+ * @param {Ext.data.Model} record The record that belongs to the item
98
+ * @param {HTMLElement} item The item's element
99
+ * @param {Number} index The item's index
100
+ * @param {Ext.EventObject} e The raw event object
101
+ */
102
+ 'beforeitemmouseenter',
103
+ /**
104
+ * @event beforeitemmouseleave
105
+ * Fires before the mouseleave event on an item is processed. Returns false to cancel the default action.
106
+ * @param {Ext.view.View} this
107
+ * @param {Ext.data.Model} record The record that belongs to the item
108
+ * @param {HTMLElement} item The item's element
109
+ * @param {Number} index The item's index
110
+ * @param {Ext.EventObject} e The raw event object
111
+ */
112
+ 'beforeitemmouseleave',
113
+ /**
114
+ * @event beforeitemclick
115
+ * Fires before the click event on an item is processed. Returns false to cancel the default action.
116
+ * @param {Ext.view.View} this
117
+ * @param {Ext.data.Model} record The record that belongs to the item
118
+ * @param {HTMLElement} item The item's element
119
+ * @param {Number} index The item's index
120
+ * @param {Ext.EventObject} e The raw event object
121
+ */
122
+ 'beforeitemclick',
123
+ /**
124
+ * @event beforeitemdblclick
125
+ * Fires before the dblclick event on an item is processed. Returns false to cancel the default action.
126
+ * @param {Ext.view.View} this
127
+ * @param {Ext.data.Model} record The record that belongs to the item
128
+ * @param {HTMLElement} item The item's element
129
+ * @param {Number} index The item's index
130
+ * @param {Ext.EventObject} e The raw event object
131
+ */
132
+ 'beforeitemdblclick',
133
+ /**
134
+ * @event beforeitemcontextmenu
135
+ * Fires before the contextmenu event on an item is processed. Returns false to cancel the default action.
136
+ * @param {Ext.view.View} this
137
+ * @param {Ext.data.Model} record The record that belongs to the item
138
+ * @param {HTMLElement} item The item's element
139
+ * @param {Number} index The item's index
140
+ * @param {Ext.EventObject} e The raw event object
141
+ */
142
+ 'beforeitemcontextmenu',
143
+ /**
144
+ * @event beforeitemkeydown
145
+ * Fires before the keydown event on an item is processed. Returns false to cancel the default action.
146
+ * @param {Ext.view.View} this
147
+ * @param {Ext.data.Model} record The record that belongs to the item
148
+ * @param {HTMLElement} item The item's element
149
+ * @param {Number} index The item's index
150
+ * @param {Ext.EventObject} e The raw event object. Use {@link Ext.EventObject#getKey getKey()} to retrieve the key that was pressed.
151
+ */
152
+ 'beforeitemkeydown',
153
+ /**
154
+ * @event itemmousedown
155
+ * Fires when there is a mouse down on an item
156
+ * @param {Ext.view.View} this
157
+ * @param {Ext.data.Model} record The record that belongs to the item
158
+ * @param {HTMLElement} item The item's element
159
+ * @param {Number} index The item's index
160
+ * @param {Ext.EventObject} e The raw event object
161
+ */
162
+ 'itemmousedown',
163
+ /**
164
+ * @event itemmouseup
165
+ * Fires when there is a mouse up on an item
166
+ * @param {Ext.view.View} this
167
+ * @param {Ext.data.Model} record The record that belongs to the item
168
+ * @param {HTMLElement} item The item's element
169
+ * @param {Number} index The item's index
170
+ * @param {Ext.EventObject} e The raw event object
171
+ */
172
+ 'itemmouseup',
173
+ /**
174
+ * @event itemmouseenter
175
+ * Fires when the mouse enters an item.
176
+ * @param {Ext.view.View} this
177
+ * @param {Ext.data.Model} record The record that belongs to the item
178
+ * @param {HTMLElement} item The item's element
179
+ * @param {Number} index The item's index
180
+ * @param {Ext.EventObject} e The raw event object
181
+ */
182
+ 'itemmouseenter',
183
+ /**
184
+ * @event itemmouseleave
185
+ * Fires when the mouse leaves an item.
186
+ * @param {Ext.view.View} this
187
+ * @param {Ext.data.Model} record The record that belongs to the item
188
+ * @param {HTMLElement} item The item's element
189
+ * @param {Number} index The item's index
190
+ * @param {Ext.EventObject} e The raw event object
191
+ */
192
+ 'itemmouseleave',
193
+ /**
194
+ * @event itemclick
195
+ * Fires when an item is clicked.
196
+ * @param {Ext.view.View} this
197
+ * @param {Ext.data.Model} record The record that belongs to the item
198
+ * @param {HTMLElement} item The item's element
199
+ * @param {Number} index The item's index
200
+ * @param {Ext.EventObject} e The raw event object
201
+ */
202
+ 'itemclick',
203
+ /**
204
+ * @event itemdblclick
205
+ * Fires when an item is double clicked.
206
+ * @param {Ext.view.View} this
207
+ * @param {Ext.data.Model} record The record that belongs to the item
208
+ * @param {HTMLElement} item The item's element
209
+ * @param {Number} index The item's index
210
+ * @param {Ext.EventObject} e The raw event object
211
+ */
212
+ 'itemdblclick',
213
+ /**
214
+ * @event itemcontextmenu
215
+ * Fires when an item is right clicked.
216
+ * @param {Ext.view.View} this
217
+ * @param {Ext.data.Model} record The record that belongs to the item
218
+ * @param {HTMLElement} item The item's element
219
+ * @param {Number} index The item's index
220
+ * @param {Ext.EventObject} e The raw event object
221
+ */
222
+ 'itemcontextmenu',
223
+ /**
224
+ * @event itemkeydown
225
+ * Fires when a key is pressed while an item is currently selected.
226
+ * @param {Ext.view.View} this
227
+ * @param {Ext.data.Model} record The record that belongs to the item
228
+ * @param {HTMLElement} item The item's element
229
+ * @param {Number} index The item's index
230
+ * @param {Ext.EventObject} e The raw event object. Use {@link Ext.EventObject#getKey getKey()} to retrieve the key that was pressed.
231
+ */
232
+ 'itemkeydown',
233
+ /**
234
+ * @event beforecontainermousedown
235
+ * Fires before the mousedown event on the container is processed. Returns false to cancel the default action.
236
+ * @param {Ext.view.View} this
237
+ * @param {Ext.EventObject} e The raw event object
238
+ */
239
+ 'beforecontainermousedown',
240
+ /**
241
+ * @event beforecontainermouseup
242
+ * Fires before the mouseup event on the container is processed. Returns false to cancel the default action.
243
+ * @param {Ext.view.View} this
244
+ * @param {Ext.EventObject} e The raw event object
245
+ */
246
+ 'beforecontainermouseup',
247
+ /**
248
+ * @event beforecontainermouseover
249
+ * Fires before the mouseover event on the container is processed. Returns false to cancel the default action.
250
+ * @param {Ext.view.View} this
251
+ * @param {Ext.EventObject} e The raw event object
252
+ */
253
+ 'beforecontainermouseover',
254
+ /**
255
+ * @event beforecontainermouseout
256
+ * Fires before the mouseout event on the container is processed. Returns false to cancel the default action.
257
+ * @param {Ext.view.View} this
258
+ * @param {Ext.EventObject} e The raw event object
259
+ */
260
+ 'beforecontainermouseout',
261
+ /**
262
+ * @event beforecontainerclick
263
+ * Fires before the click event on the container is processed. Returns false to cancel the default action.
264
+ * @param {Ext.view.View} this
265
+ * @param {Ext.EventObject} e The raw event object
266
+ */
267
+ 'beforecontainerclick',
268
+ /**
269
+ * @event beforecontainerdblclick
270
+ * Fires before the dblclick event on the container is processed. Returns false to cancel the default action.
271
+ * @param {Ext.view.View} this
272
+ * @param {Ext.EventObject} e The raw event object
273
+ */
274
+ 'beforecontainerdblclick',
275
+ /**
276
+ * @event beforecontainercontextmenu
277
+ * Fires before the contextmenu event on the container is processed. Returns false to cancel the default action.
278
+ * @param {Ext.view.View} this
279
+ * @param {Ext.EventObject} e The raw event object
280
+ */
281
+ 'beforecontainercontextmenu',
282
+ /**
283
+ * @event beforecontainerkeydown
284
+ * Fires before the keydown event on the container is processed. Returns false to cancel the default action.
285
+ * @param {Ext.view.View} this
286
+ * @param {Ext.EventObject} e The raw event object. Use {@link Ext.EventObject#getKey getKey()} to retrieve the key that was pressed.
287
+ */
288
+ 'beforecontainerkeydown',
289
+ /**
290
+ * @event containermouseup
291
+ * Fires when there is a mouse up on the container
292
+ * @param {Ext.view.View} this
293
+ * @param {Ext.EventObject} e The raw event object
294
+ */
295
+ 'containermouseup',
296
+ /**
297
+ * @event containermouseover
298
+ * Fires when you move the mouse over the container.
299
+ * @param {Ext.view.View} this
300
+ * @param {Ext.EventObject} e The raw event object
301
+ */
302
+ 'containermouseover',
303
+ /**
304
+ * @event containermouseout
305
+ * Fires when you move the mouse out of the container.
306
+ * @param {Ext.view.View} this
307
+ * @param {Ext.EventObject} e The raw event object
308
+ */
309
+ 'containermouseout',
310
+ /**
311
+ * @event containerclick
312
+ * Fires when the container is clicked.
313
+ * @param {Ext.view.View} this
314
+ * @param {Ext.EventObject} e The raw event object
315
+ */
316
+ 'containerclick',
317
+ /**
318
+ * @event containerdblclick
319
+ * Fires when the container is double clicked.
320
+ * @param {Ext.view.View} this
321
+ * @param {Ext.EventObject} e The raw event object
322
+ */
323
+ 'containerdblclick',
324
+ /**
325
+ * @event containercontextmenu
326
+ * Fires when the container is right clicked.
327
+ * @param {Ext.view.View} this
328
+ * @param {Ext.EventObject} e The raw event object
329
+ */
330
+ 'containercontextmenu',
331
+ /**
332
+ * @event containerkeydown
333
+ * Fires when a key is pressed while the container is focused, and no item is currently selected.
334
+ * @param {Ext.view.View} this
335
+ * @param {Ext.EventObject} e The raw event object. Use {@link Ext.EventObject#getKey getKey()} to retrieve the key that was pressed.
336
+ */
337
+ 'containerkeydown',
338
+
339
+ /**
340
+ * @event selectionchange
341
+ * Fires when the selected nodes change. Relayed event from the underlying selection model.
342
+ * @param {Ext.view.View} this
343
+ * @param {HTMLElement[]} selections Array of the selected nodes
344
+ */
345
+ 'selectionchange',
346
+ /**
347
+ * @event beforeselect
348
+ * Fires before a selection is made. If any handlers return false, the selection is cancelled.
349
+ * @param {Ext.view.View} this
350
+ * @param {HTMLElement} node The node to be selected
351
+ * @param {HTMLElement[]} selections Array of currently selected nodes
352
+ */
353
+ 'beforeselect',
354
+
355
+ /**
356
+ * @event highlightitem
357
+ * Fires when a node is highlighted using keyboard navigation, or mouseover.
358
+ * @param {Ext.view.View} view This View Component.
359
+ * @param {Ext.Element} node The highlighted node.
360
+ */
361
+ 'highlightitem',
362
+
363
+ /**
364
+ * @event unhighlightitem
365
+ * Fires when a node is unhighlighted using keyboard navigation, or mouseout.
366
+ * @param {Ext.view.View} view This View Component.
367
+ * @param {Ext.Element} node The previously highlighted node.
368
+ */
369
+ 'unhighlightitem'
370
+ );
371
+ },
372
+
373
+ getFocusEl: function() {
374
+ return this.getTargetEl();
375
+ },
376
+
377
+ // private
378
+ afterRender: function(){
379
+ var me = this;
380
+ me.callParent();
381
+ me.mon(me.getTargetEl(), {
382
+ scope: me,
383
+ /*
384
+ * We need to make copies of this since some of the events fired here will end up triggering
385
+ * a new event to be called and the shared event object will be mutated. In future we should
386
+ * investigate if there are any issues with creating a new event object for each event that
387
+ * is fired.
388
+ */
389
+ freezeEvent: true,
390
+ click: me.handleEvent,
391
+ mousedown: me.handleEvent,
392
+ mouseup: me.handleEvent,
393
+ dblclick: me.handleEvent,
394
+ contextmenu: me.handleEvent,
395
+ mouseover: me.handleEvent,
396
+ mouseout: me.handleEvent,
397
+ keydown: me.handleEvent
398
+ });
399
+ },
400
+
401
+ handleEvent: function(e) {
402
+ var key = e.type == 'keydown' && e.getKey();
403
+
404
+ if (this.processUIEvent(e) !== false) {
405
+ this.processSpecialEvent(e);
406
+ }
407
+
408
+ // After all listeners have processed the event, prevent browser's default action
409
+ // on SPACE which is to focus the event's target element.
410
+ // Focusing causes the browser to attempt to scroll the element into view.
411
+ if (key === e.SPACE) {
412
+ e.stopEvent();
413
+ }
414
+ },
415
+
416
+ // Private template method
417
+ processItemEvent: Ext.emptyFn,
418
+ processContainerEvent: Ext.emptyFn,
419
+ processSpecialEvent: Ext.emptyFn,
420
+
421
+ /*
422
+ * Returns true if this mouseover/out event is still over the overItem.
423
+ */
424
+ stillOverItem: function (event, overItem) {
425
+ var nowOver;
426
+
427
+ // There is this weird bug when you hover over the border of a cell it is saying
428
+ // the target is the table.
429
+ // BrowserBug: IE6 & 7. If me.mouseOverItem has been removed and is no longer
430
+ // in the DOM then accessing .offsetParent will throw an "Unspecified error." exception.
431
+ // typeof'ng and checking to make sure the offsetParent is an object will NOT throw
432
+ // this hard exception.
433
+ if (overItem && typeof(overItem.offsetParent) === "object") {
434
+ // mouseout : relatedTarget == nowOver, target == wasOver
435
+ // mouseover: relatedTarget == wasOver, target == nowOver
436
+ nowOver = (event.type == 'mouseout') ? event.getRelatedTarget() : event.getTarget();
437
+ return Ext.fly(overItem).contains(nowOver);
438
+ }
439
+
440
+ return false;
441
+ },
442
+
443
+ processUIEvent: function(e) {
444
+ var me = this,
445
+ item = e.getTarget(me.getItemSelector(), me.getTargetEl()),
446
+ map = this.statics().EventMap,
447
+ index, record,
448
+ type = e.type,
449
+ overItem = me.mouseOverItem,
450
+ newType;
451
+
452
+ if (!item) {
453
+ if (type == 'mouseover' && me.stillOverItem(e, overItem)) {
454
+ item = overItem;
455
+ }
456
+
457
+ // Try to get the selected item to handle the keydown event, otherwise we'll just fire a container keydown event
458
+ if (type == 'keydown') {
459
+ record = me.getSelectionModel().getLastSelected();
460
+ if (record) {
461
+ item = me.getNode(record);
462
+ }
463
+ }
464
+ }
465
+
466
+ if (item) {
467
+ index = me.indexOf(item);
468
+ if (!record) {
469
+ record = me.getRecord(item);
470
+ }
471
+
472
+ // It is possible for an event to arrive for which there is no record... this
473
+ // can happen with dblclick where the clicks are on removal actions (think a
474
+ // grid w/"delete row" action column)
475
+ if (!record || me.processItemEvent(record, item, index, e) === false) {
476
+ return false;
477
+ }
478
+
479
+ newType = me.isNewItemEvent(item, e);
480
+ if (newType === false) {
481
+ return false;
482
+ }
483
+
484
+ if (
485
+ (me['onBeforeItem' + map[newType]](record, item, index, e) === false) ||
486
+ (me.fireEvent('beforeitem' + newType, me, record, item, index, e) === false) ||
487
+ (me['onItem' + map[newType]](record, item, index, e) === false)
488
+ ) {
489
+ return false;
490
+ }
491
+
492
+ me.fireEvent('item' + newType, me, record, item, index, e);
493
+ }
494
+ else {
495
+ if (
496
+ (me.processContainerEvent(e) === false) ||
497
+ (me['onBeforeContainer' + map[type]](e) === false) ||
498
+ (me.fireEvent('beforecontainer' + type, me, e) === false) ||
499
+ (me['onContainer' + map[type]](e) === false)
500
+ ) {
501
+ return false;
502
+ }
503
+
504
+ me.fireEvent('container' + type, me, e);
505
+ }
506
+
507
+ return true;
508
+ },
509
+
510
+ isNewItemEvent: function (item, e) {
511
+ var me = this,
512
+ overItem = me.mouseOverItem,
513
+ type = e.type;
514
+
515
+ switch (type) {
516
+ case 'mouseover':
517
+ if (item === overItem) {
518
+ return false;
519
+ }
520
+ me.mouseOverItem = item;
521
+ return 'mouseenter';
522
+
523
+ case 'mouseout':
524
+ // If the currently mouseovered item contains the mouseover target, it's *NOT* a mouseleave
525
+ if (me.stillOverItem(e, overItem)) {
526
+ return false;
527
+ }
528
+ me.mouseOverItem = null;
529
+ return 'mouseleave';
530
+ }
531
+ return type;
532
+ },
533
+
534
+ // private
535
+ onItemMouseEnter: function(record, item, index, e) {
536
+ if (this.trackOver) {
537
+ this.highlightItem(item);
538
+ }
539
+ },
540
+
541
+ // private
542
+ onItemMouseLeave : function(record, item, index, e) {
543
+ if (this.trackOver) {
544
+ this.clearHighlight();
545
+ }
546
+ },
547
+
548
+ // @private, template methods
549
+ onItemMouseDown: Ext.emptyFn,
550
+ onItemMouseUp: Ext.emptyFn,
551
+ onItemFocus: Ext.emptyFn,
552
+ onItemClick: Ext.emptyFn,
553
+ onItemDblClick: Ext.emptyFn,
554
+ onItemContextMenu: Ext.emptyFn,
555
+ onItemKeyDown: Ext.emptyFn,
556
+ onBeforeItemMouseDown: Ext.emptyFn,
557
+ onBeforeItemMouseUp: Ext.emptyFn,
558
+ onBeforeItemFocus: Ext.emptyFn,
559
+ onBeforeItemMouseEnter: Ext.emptyFn,
560
+ onBeforeItemMouseLeave: Ext.emptyFn,
561
+ onBeforeItemClick: Ext.emptyFn,
562
+ onBeforeItemDblClick: Ext.emptyFn,
563
+ onBeforeItemContextMenu: Ext.emptyFn,
564
+ onBeforeItemKeyDown: Ext.emptyFn,
565
+
566
+ // @private, template methods
567
+ onContainerMouseDown: Ext.emptyFn,
568
+ onContainerMouseUp: Ext.emptyFn,
569
+ onContainerMouseOver: Ext.emptyFn,
570
+ onContainerMouseOut: Ext.emptyFn,
571
+ onContainerClick: Ext.emptyFn,
572
+ onContainerDblClick: Ext.emptyFn,
573
+ onContainerContextMenu: Ext.emptyFn,
574
+ onContainerKeyDown: Ext.emptyFn,
575
+ onBeforeContainerMouseDown: Ext.emptyFn,
576
+ onBeforeContainerMouseUp: Ext.emptyFn,
577
+ onBeforeContainerMouseOver: Ext.emptyFn,
578
+ onBeforeContainerMouseOut: Ext.emptyFn,
579
+ onBeforeContainerClick: Ext.emptyFn,
580
+ onBeforeContainerDblClick: Ext.emptyFn,
581
+ onBeforeContainerContextMenu: Ext.emptyFn,
582
+ onBeforeContainerKeyDown: Ext.emptyFn,
583
+
584
+ /**
585
+ * Highlights a given item in the DataView. This is called by the mouseover handler if {@link #overItemCls}
586
+ * and {@link #trackOver} are configured, but can also be called manually by other code, for instance to
587
+ * handle stepping through the list via keyboard navigation.
588
+ * @param {HTMLElement} item The item to highlight
589
+ */
590
+ highlightItem: function(item) {
591
+ var me = this;
592
+ me.clearHighlight();
593
+ me.highlightedItem = item;
594
+ Ext.fly(item).addCls(me.overItemCls);
595
+ me.fireEvent('highlightitem', me, item);
596
+ },
597
+
598
+ /**
599
+ * Un-highlights the currently highlighted item, if any.
600
+ */
601
+ clearHighlight: function() {
602
+ var me = this,
603
+ highlighted = me.highlightedItem;
604
+
605
+ if (highlighted) {
606
+ Ext.fly(highlighted).removeCls(me.overItemCls);
607
+ me.fireEvent('unhighlightitem', me, highlighted);
608
+ delete me.highlightedItem;
609
+ }
610
+ },
611
+
612
+ onUpdate: function(store, record){
613
+ var me = this,
614
+ node,
615
+ newNode,
616
+ highlighted;
617
+
618
+ if (me.rendered) {
619
+ node = me.getNode(record);
620
+ newNode = me.callParent(arguments);
621
+ highlighted = me.highlightedItem;
622
+
623
+ if (highlighted && highlighted === node) {
624
+ delete me.highlightedItem;
625
+ if (newNode) {
626
+ me.highlightItem(newNode);
627
+ }
628
+ }
629
+ }
630
+ },
631
+
632
+ refresh: function() {
633
+ this.clearHighlight();
634
+ this.callParent(arguments);
635
+ }
636
+ });