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,392 @@
1
+ /**
2
+ * A simple class that provides the basic implementation needed to make any element draggable.
3
+ */
4
+ Ext.define('Ext.dd.DragSource', {
5
+ extend: 'Ext.dd.DDProxy',
6
+ requires: [
7
+ 'Ext.dd.StatusProxy',
8
+ 'Ext.dd.DragDropManager'
9
+ ],
10
+
11
+ /**
12
+ * @cfg {String} ddGroup
13
+ * A named drag drop group to which this object belongs. If a group is specified, then this object will only
14
+ * interact with other drag drop objects in the same group.
15
+ */
16
+
17
+ /**
18
+ * @cfg {String} dropAllowed
19
+ * The CSS class returned to the drag source when drop is allowed.
20
+ */
21
+ dropAllowed : Ext.baseCSSPrefix + 'dd-drop-ok',
22
+ /**
23
+ * @cfg {String} dropNotAllowed
24
+ * The CSS class returned to the drag source when drop is not allowed.
25
+ */
26
+ dropNotAllowed : Ext.baseCSSPrefix + 'dd-drop-nodrop',
27
+
28
+ /**
29
+ * @cfg {Boolean} animRepair
30
+ * If true, animates the proxy element back to the position of the handle element used to trigger the drag.
31
+ */
32
+ animRepair: true,
33
+
34
+ /**
35
+ * @cfg {String} repairHighlightColor
36
+ * The color to use when visually highlighting the drag source in the afterRepair
37
+ * method after a failed drop (defaults to light blue). The color must be a 6 digit hex value, without
38
+ * a preceding '#'.
39
+ */
40
+ repairHighlightColor: 'c3daf9',
41
+
42
+ /**
43
+ * Creates new drag-source.
44
+ * @param {String/HTMLElement/Ext.Element} el The container element or ID of it.
45
+ * @param {Object} config (optional) Config object.
46
+ */
47
+ constructor: function(el, config) {
48
+ this.el = Ext.get(el);
49
+ if(!this.dragData){
50
+ this.dragData = {};
51
+ }
52
+
53
+ Ext.apply(this, config);
54
+
55
+ if(!this.proxy){
56
+ this.proxy = new Ext.dd.StatusProxy({
57
+ id: this.el.id + '-drag-status-proxy',
58
+ animRepair: this.animRepair
59
+ });
60
+ }
61
+ this.callParent([this.el.dom, this.ddGroup || this.group,
62
+ {dragElId : this.proxy.id, resizeFrame: false, isTarget: false, scroll: this.scroll === true}]);
63
+
64
+ this.dragging = false;
65
+ },
66
+
67
+ /**
68
+ * Returns the data object associated with this drag source
69
+ * @return {Object} data An object containing arbitrary data
70
+ */
71
+ getDragData : function(e){
72
+ return this.dragData;
73
+ },
74
+
75
+ // private
76
+ onDragEnter : function(e, id){
77
+ var target = Ext.dd.DragDropManager.getDDById(id),
78
+ status;
79
+ this.cachedTarget = target;
80
+ if (this.beforeDragEnter(target, e, id) !== false) {
81
+ if (target.isNotifyTarget) {
82
+ status = target.notifyEnter(this, e, this.dragData);
83
+ this.proxy.setStatus(status);
84
+ } else {
85
+ this.proxy.setStatus(this.dropAllowed);
86
+ }
87
+
88
+ if (this.afterDragEnter) {
89
+ /**
90
+ * An empty function by default, but provided so that you can perform a custom action
91
+ * when the dragged item enters the drop target by providing an implementation.
92
+ * @param {Ext.dd.DragDrop} target The drop target
93
+ * @param {Event} e The event object
94
+ * @param {String} id The id of the dragged element
95
+ * @method afterDragEnter
96
+ */
97
+ this.afterDragEnter(target, e, id);
98
+ }
99
+ }
100
+ },
101
+
102
+ /**
103
+ * An empty function by default, but provided so that you can perform a custom action
104
+ * before the dragged item enters the drop target and optionally cancel the onDragEnter.
105
+ * @param {Ext.dd.DragDrop} target The drop target
106
+ * @param {Event} e The event object
107
+ * @param {String} id The id of the dragged element
108
+ * @return {Boolean} isValid True if the drag event is valid, else false to cancel
109
+ */
110
+ beforeDragEnter: function(target, e, id) {
111
+ return true;
112
+ },
113
+
114
+ // private
115
+ onDragOver: function(e, id) {
116
+ var target = this.cachedTarget || Ext.dd.DragDropManager.getDDById(id),
117
+ status;
118
+ if (this.beforeDragOver(target, e, id) !== false) {
119
+ if(target.isNotifyTarget){
120
+ status = target.notifyOver(this, e, this.dragData);
121
+ this.proxy.setStatus(status);
122
+ }
123
+
124
+ if (this.afterDragOver) {
125
+ /**
126
+ * An empty function by default, but provided so that you can perform a custom action
127
+ * while the dragged item is over the drop target by providing an implementation.
128
+ * @param {Ext.dd.DragDrop} target The drop target
129
+ * @param {Event} e The event object
130
+ * @param {String} id The id of the dragged element
131
+ * @method afterDragOver
132
+ */
133
+ this.afterDragOver(target, e, id);
134
+ }
135
+ }
136
+ },
137
+
138
+ /**
139
+ * An empty function by default, but provided so that you can perform a custom action
140
+ * while the dragged item is over the drop target and optionally cancel the onDragOver.
141
+ * @param {Ext.dd.DragDrop} target The drop target
142
+ * @param {Event} e The event object
143
+ * @param {String} id The id of the dragged element
144
+ * @return {Boolean} isValid True if the drag event is valid, else false to cancel
145
+ */
146
+ beforeDragOver: function(target, e, id) {
147
+ return true;
148
+ },
149
+
150
+ // private
151
+ onDragOut: function(e, id) {
152
+ var target = this.cachedTarget || Ext.dd.DragDropManager.getDDById(id);
153
+ if (this.beforeDragOut(target, e, id) !== false) {
154
+ if (target.isNotifyTarget) {
155
+ target.notifyOut(this, e, this.dragData);
156
+ }
157
+ this.proxy.reset();
158
+ if (this.afterDragOut) {
159
+ /**
160
+ * An empty function by default, but provided so that you can perform a custom action
161
+ * after the dragged item is dragged out of the target without dropping.
162
+ * @param {Ext.dd.DragDrop} target The drop target
163
+ * @param {Event} e The event object
164
+ * @param {String} id The id of the dragged element
165
+ * @method afterDragOut
166
+ */
167
+ this.afterDragOut(target, e, id);
168
+ }
169
+ }
170
+ this.cachedTarget = null;
171
+ },
172
+
173
+ /**
174
+ * An empty function by default, but provided so that you can perform a custom action before the dragged
175
+ * item is dragged out of the target without dropping, and optionally cancel the onDragOut.
176
+ * @param {Ext.dd.DragDrop} target The drop target
177
+ * @param {Event} e The event object
178
+ * @param {String} id The id of the dragged element
179
+ * @return {Boolean} isValid True if the drag event is valid, else false to cancel
180
+ */
181
+ beforeDragOut: function(target, e, id){
182
+ return true;
183
+ },
184
+
185
+ // private
186
+ onDragDrop: function(e, id){
187
+ var target = this.cachedTarget || Ext.dd.DragDropManager.getDDById(id);
188
+ if (this.beforeDragDrop(target, e, id) !== false) {
189
+ if (target.isNotifyTarget) {
190
+ if (target.notifyDrop(this, e, this.dragData) !== false) { // valid drop?
191
+ this.onValidDrop(target, e, id);
192
+ } else {
193
+ this.onInvalidDrop(target, e, id);
194
+ }
195
+ } else {
196
+ this.onValidDrop(target, e, id);
197
+ }
198
+
199
+ if (this.afterDragDrop) {
200
+ /**
201
+ * An empty function by default, but provided so that you can perform a custom action
202
+ * after a valid drag drop has occurred by providing an implementation.
203
+ * @param {Ext.dd.DragDrop} target The drop target
204
+ * @param {Event} e The event object
205
+ * @param {String} id The id of the dropped element
206
+ * @method afterDragDrop
207
+ */
208
+ this.afterDragDrop(target, e, id);
209
+ }
210
+ }
211
+ delete this.cachedTarget;
212
+ },
213
+
214
+ /**
215
+ * An empty function by default, but provided so that you can perform a custom action before the dragged
216
+ * item is dropped onto the target and optionally cancel the onDragDrop.
217
+ * @param {Ext.dd.DragDrop} target The drop target
218
+ * @param {Event} e The event object
219
+ * @param {String} id The id of the dragged element
220
+ * @return {Boolean} isValid True if the drag drop event is valid, else false to cancel
221
+ */
222
+ beforeDragDrop: function(target, e, id){
223
+ return true;
224
+ },
225
+
226
+ // private
227
+ onValidDrop: function(target, e, id){
228
+ this.hideProxy();
229
+ if(this.afterValidDrop){
230
+ /**
231
+ * An empty function by default, but provided so that you can perform a custom action
232
+ * after a valid drop has occurred by providing an implementation.
233
+ * @param {Object} target The target DD
234
+ * @param {Event} e The event object
235
+ * @param {String} id The id of the dropped element
236
+ * @method afterValidDrop
237
+ */
238
+ this.afterValidDrop(target, e, id);
239
+ }
240
+ },
241
+
242
+ // private
243
+ getRepairXY: function(e, data){
244
+ return this.el.getXY();
245
+ },
246
+
247
+ // private
248
+ onInvalidDrop: function(target, e, id) {
249
+ this.beforeInvalidDrop(target, e, id);
250
+ if (this.cachedTarget) {
251
+ if(this.cachedTarget.isNotifyTarget){
252
+ this.cachedTarget.notifyOut(this, e, this.dragData);
253
+ }
254
+ this.cacheTarget = null;
255
+ }
256
+ this.proxy.repair(this.getRepairXY(e, this.dragData), this.afterRepair, this);
257
+
258
+ if (this.afterInvalidDrop) {
259
+ /**
260
+ * An empty function by default, but provided so that you can perform a custom action
261
+ * after an invalid drop has occurred by providing an implementation.
262
+ * @param {Event} e The event object
263
+ * @param {String} id The id of the dropped element
264
+ * @method afterInvalidDrop
265
+ */
266
+ this.afterInvalidDrop(e, id);
267
+ }
268
+ },
269
+
270
+ // private
271
+ afterRepair: function() {
272
+ var me = this;
273
+ if (Ext.enableFx) {
274
+ me.el.highlight(me.repairHighlightColor);
275
+ }
276
+ me.dragging = false;
277
+ },
278
+
279
+ /**
280
+ * An empty function by default, but provided so that you can perform a custom action after an invalid
281
+ * drop has occurred.
282
+ * @param {Ext.dd.DragDrop} target The drop target
283
+ * @param {Event} e The event object
284
+ * @param {String} id The id of the dragged element
285
+ * @return {Boolean} isValid True if the invalid drop should proceed, else false to cancel
286
+ */
287
+ beforeInvalidDrop: function(target, e, id) {
288
+ return true;
289
+ },
290
+
291
+ // private
292
+ handleMouseDown: function(e) {
293
+ if (this.dragging) {
294
+ return;
295
+ }
296
+ var data = this.getDragData(e);
297
+ if (data && this.onBeforeDrag(data, e) !== false) {
298
+ this.dragData = data;
299
+ this.proxy.stop();
300
+ this.callParent(arguments);
301
+ }
302
+ },
303
+
304
+ /**
305
+ * An empty function by default, but provided so that you can perform a custom action before the initial
306
+ * drag event begins and optionally cancel it.
307
+ * @param {Object} data An object containing arbitrary data to be shared with drop targets
308
+ * @param {Event} e The event object
309
+ * @return {Boolean} isValid True if the drag event is valid, else false to cancel
310
+ */
311
+ onBeforeDrag: function(data, e){
312
+ return true;
313
+ },
314
+
315
+ /**
316
+ * An empty function by default, but provided so that you can perform a custom action once the initial
317
+ * drag event has begun. The drag cannot be canceled from this function.
318
+ * @param {Number} x The x position of the click on the dragged object
319
+ * @param {Number} y The y position of the click on the dragged object
320
+ * @method
321
+ */
322
+ onStartDrag: Ext.emptyFn,
323
+
324
+ alignElWithMouse: function() {
325
+ this.proxy.ensureAttachedToBody(true);
326
+ return this.callParent(arguments);
327
+ },
328
+
329
+ // private override
330
+ startDrag: function(x, y) {
331
+ this.proxy.reset();
332
+ this.proxy.hidden = false;
333
+ this.dragging = true;
334
+ this.proxy.update("");
335
+ this.onInitDrag(x, y);
336
+ this.proxy.show();
337
+ },
338
+
339
+ // private
340
+ onInitDrag: function(x, y) {
341
+ var clone = this.el.dom.cloneNode(true);
342
+ clone.id = Ext.id(); // prevent duplicate ids
343
+ this.proxy.update(clone);
344
+ this.onStartDrag(x, y);
345
+ return true;
346
+ },
347
+
348
+ /**
349
+ * Returns the drag source's underlying {@link Ext.dd.StatusProxy}
350
+ * @return {Ext.dd.StatusProxy} proxy The StatusProxy
351
+ */
352
+ getProxy: function() {
353
+ return this.proxy;
354
+ },
355
+
356
+ /**
357
+ * Hides the drag source's {@link Ext.dd.StatusProxy}
358
+ */
359
+ hideProxy: function() {
360
+ this.proxy.hide();
361
+ this.proxy.reset(true);
362
+ this.dragging = false;
363
+ },
364
+
365
+ // private
366
+ triggerCacheRefresh: function() {
367
+ Ext.dd.DDM.refreshCache(this.groups);
368
+ },
369
+
370
+ // private - override to prevent hiding
371
+ b4EndDrag: function(e) {
372
+ },
373
+
374
+ // private - override to prevent moving
375
+ endDrag : function(e){
376
+ this.onEndDrag(this.dragData, e);
377
+ },
378
+
379
+ // private
380
+ onEndDrag : function(data, e){
381
+ },
382
+
383
+ // private - pin to cursor
384
+ autoOffset : function(x, y) {
385
+ this.setDelta(-12, -20);
386
+ },
387
+
388
+ destroy: function(){
389
+ this.callParent();
390
+ Ext.destroy(this.proxy);
391
+ }
392
+ });
@@ -0,0 +1,562 @@
1
+ /**
2
+ * A DragTracker listens for drag events on an Element and fires events at the start and end of the drag,
3
+ * as well as during the drag. This is useful for components such as {@link Ext.slider.Multi}, where there is
4
+ * an element that can be dragged around to change the Slider's value.
5
+ *
6
+ * DragTracker provides a series of template methods that should be overridden to provide functionality
7
+ * in response to detected drag operations. These are onBeforeStart, onStart, onDrag and onEnd.
8
+ * See {@link Ext.slider.Multi}'s initEvents function for an example implementation.
9
+ */
10
+ Ext.define('Ext.dd.DragTracker', {
11
+
12
+ uses: ['Ext.util.Region'],
13
+
14
+ mixins: {
15
+ observable: 'Ext.util.Observable'
16
+ },
17
+
18
+ /**
19
+ * @property {Boolean} active
20
+ * Indicates whether the user is currently dragging this tracker.
21
+ * @readonly
22
+ */
23
+ active: false,
24
+
25
+ /**
26
+ * @property {HTMLElement} dragTarget
27
+ * The element being dragged.
28
+ *
29
+ * Only valid during drag operations.
30
+ *
31
+ * If the {@link #delegate} option is used, this will be the delegate element which was mousedowned.
32
+ * @readonly
33
+ */
34
+
35
+ /**
36
+ * @cfg {Boolean} trackOver
37
+ * Set to true to fire mouseover and mouseout events when the mouse enters or leaves the target element.
38
+ *
39
+ * This is implicitly set when an {@link #overCls} is specified.
40
+ *
41
+ * If the {@link #delegate} option is used, these events fire only when a delegate element is entered of left.
42
+ */
43
+ trackOver: false,
44
+
45
+ /**
46
+ * @cfg {String} overCls
47
+ * A CSS class to add to the DragTracker's target element when the element (or, if the {@link #delegate}
48
+ * option is used, when a delegate element) is mouseovered.
49
+ *
50
+ * If the {@link #delegate} option is used, these events fire only when a delegate element is entered of left.
51
+ */
52
+
53
+ /**
54
+ * @cfg {Ext.util.Region/Ext.Element} constrainTo
55
+ * A {@link Ext.util.Region Region} (Or an element from which a Region measurement will be read)
56
+ * which is used to constrain the result of the {@link #getOffset} call.
57
+ *
58
+ * This may be set any time during the DragTracker's lifecycle to set a dynamic constraining region.
59
+ */
60
+
61
+ /**
62
+ * @cfg {Number} tolerance
63
+ * Number of pixels the drag target must be moved before dragging is
64
+ * considered to have started.
65
+ */
66
+ tolerance: 5,
67
+
68
+ /**
69
+ * @cfg {Boolean/Number} autoStart
70
+ * Specify `true` to defer trigger start by 1000 ms.
71
+ * Specify a Number for the number of milliseconds to defer trigger start.
72
+ */
73
+ autoStart: false,
74
+
75
+ /**
76
+ * @cfg {String} delegate
77
+ * A {@link Ext.DomQuery DomQuery} selector which identifies child elements within the DragTracker's encapsulating
78
+ * Element which are the tracked elements. This limits tracking to only begin when the matching elements are mousedowned.
79
+ *
80
+ * This may also be a specific child element within the DragTracker's encapsulating element to use as the tracked element.
81
+ */
82
+
83
+ /**
84
+ * @cfg {Boolean} [preventDefault=true]
85
+ * Specify `false` to enable default actions on onMouseDown events.
86
+ */
87
+
88
+ /**
89
+ * @cfg {Boolean} [stopEvent=false]
90
+ * Specify `true` to stop the `mousedown` event from bubbling to outer listeners from the target element (or its delegates).
91
+ */
92
+
93
+ constructor : function(config){
94
+ Ext.apply(this, config);
95
+ this.addEvents(
96
+ /**
97
+ * @event mouseover
98
+ * Fires when the mouse enters the DragTracker's target element (or if {@link #delegate} is
99
+ * used, when the mouse enters a delegate element).
100
+ *
101
+ * **Only available when {@link #trackOver} is `true`**
102
+ *
103
+ * @param {Object} this
104
+ * @param {Object} e event object
105
+ * @param {HTMLElement} target The element mouseovered.
106
+ */
107
+ 'mouseover',
108
+
109
+ /**
110
+ * @event mouseout
111
+ * Fires when the mouse exits the DragTracker's target element (or if {@link #delegate} is
112
+ * used, when the mouse exits a delegate element).
113
+ *
114
+ * **Only available when {@link #trackOver} is `true`**
115
+ *
116
+ * @param {Object} this
117
+ * @param {Object} e event object
118
+ */
119
+ 'mouseout',
120
+
121
+ /**
122
+ * @event mousedown
123
+ * Fires when the mouse button is pressed down, but before a drag operation begins. The
124
+ * drag operation begins after either the mouse has been moved by {@link #tolerance} pixels,
125
+ * or after the {@link #autoStart} timer fires.
126
+ *
127
+ * Return false to veto the drag operation.
128
+ *
129
+ * @param {Object} this
130
+ * @param {Object} e event object
131
+ */
132
+ 'mousedown',
133
+
134
+ /**
135
+ * @event mouseup
136
+ * @param {Object} this
137
+ * @param {Object} e event object
138
+ */
139
+ 'mouseup',
140
+
141
+ /**
142
+ * @event mousemove
143
+ * Fired when the mouse is moved. Returning false cancels the drag operation.
144
+ * @param {Object} this
145
+ * @param {Object} e event object
146
+ */
147
+ 'mousemove',
148
+
149
+ /**
150
+ * @event beforestart
151
+ * @param {Object} this
152
+ * @param {Object} e event object
153
+ */
154
+ 'beforedragstart',
155
+
156
+ /**
157
+ * @event dragstart
158
+ * @param {Object} this
159
+ * @param {Object} e event object
160
+ */
161
+ 'dragstart',
162
+
163
+ /**
164
+ * @event dragend
165
+ * @param {Object} this
166
+ * @param {Object} e event object
167
+ */
168
+ 'dragend',
169
+
170
+ /**
171
+ * @event drag
172
+ * @param {Object} this
173
+ * @param {Object} e event object
174
+ */
175
+ 'drag'
176
+ );
177
+
178
+ this.dragRegion = new Ext.util.Region(0,0,0,0);
179
+
180
+ if (this.el) {
181
+ this.initEl(this.el);
182
+ }
183
+
184
+ // Dont pass the config so that it is not applied to 'this' again
185
+ this.mixins.observable.constructor.call(this);
186
+ if (this.disabled) {
187
+ this.disable();
188
+ }
189
+
190
+ },
191
+
192
+ /**
193
+ * Initializes the DragTracker on a given element.
194
+ * @param {Ext.Element/HTMLElement} el The element
195
+ */
196
+ initEl: function(el) {
197
+ this.el = Ext.get(el);
198
+
199
+ // The delegate option may also be an element on which to listen
200
+ this.handle = Ext.get(this.delegate);
201
+
202
+ // If delegate specified an actual element to listen on, we do not use the delegate listener option
203
+ this.delegate = this.handle ? undefined : this.delegate;
204
+
205
+ if (!this.handle) {
206
+ this.handle = this.el;
207
+ }
208
+
209
+ // Add a mousedown listener which reacts only on the elements targeted by the delegate config.
210
+ // We process mousedown to begin tracking.
211
+ this.mon(this.handle, {
212
+ mousedown: this.onMouseDown,
213
+ delegate: this.delegate,
214
+ scope: this
215
+ });
216
+
217
+ // If configured to do so, track mouse entry and exit into the target (or delegate).
218
+ // The mouseover and mouseout CANNOT be replaced with mouseenter and mouseleave
219
+ // because delegate cannot work with those pseudoevents. Entry/exit checking is done in the handler.
220
+ if (this.trackOver || this.overCls) {
221
+ this.mon(this.handle, {
222
+ mouseover: this.onMouseOver,
223
+ mouseout: this.onMouseOut,
224
+ delegate: this.delegate,
225
+ scope: this
226
+ });
227
+ }
228
+ },
229
+
230
+ disable: function() {
231
+ this.disabled = true;
232
+ },
233
+
234
+ enable: function() {
235
+ this.disabled = false;
236
+ },
237
+
238
+ destroy : function() {
239
+ this.clearListeners();
240
+ delete this.el;
241
+ },
242
+
243
+ // When the pointer enters a tracking element, fire a mouseover if the mouse entered from outside.
244
+ // This is mouseenter functionality, but we cannot use mouseenter because we are using "delegate" to filter mouse targets
245
+ onMouseOver: function(e, target) {
246
+ var me = this;
247
+ if (!me.disabled) {
248
+ if (Ext.EventManager.contains(e) || me.delegate) {
249
+ me.mouseIsOut = false;
250
+ if (me.overCls) {
251
+ me.el.addCls(me.overCls);
252
+ }
253
+ me.fireEvent('mouseover', me, e, me.delegate ? e.getTarget(me.delegate, target) : me.handle);
254
+ }
255
+ }
256
+ },
257
+
258
+ // When the pointer exits a tracking element, fire a mouseout.
259
+ // This is mouseleave functionality, but we cannot use mouseleave because we are using "delegate" to filter mouse targets
260
+ onMouseOut: function(e) {
261
+ if (this.mouseIsDown) {
262
+ this.mouseIsOut = true;
263
+ } else {
264
+ if (this.overCls) {
265
+ this.el.removeCls(this.overCls);
266
+ }
267
+ this.fireEvent('mouseout', this, e);
268
+ }
269
+ },
270
+
271
+ onMouseDown: function(e, target){
272
+ // If this is disabled, or the mousedown has been processed by an upstream DragTracker, return
273
+ if (this.disabled ||e.dragTracked) {
274
+ return;
275
+ }
276
+
277
+ // This information should be available in mousedown listener and onBeforeStart implementations
278
+ this.dragTarget = this.delegate ? target : this.handle.dom;
279
+ this.startXY = this.lastXY = e.getXY();
280
+ this.startRegion = Ext.fly(this.dragTarget).getRegion();
281
+
282
+ if (this.fireEvent('mousedown', this, e) === false ||
283
+ this.fireEvent('beforedragstart', this, e) === false ||
284
+ this.onBeforeStart(e) === false) {
285
+ return;
286
+ }
287
+
288
+ // Track when the mouse is down so that mouseouts while the mouse is down are not processed.
289
+ // The onMouseOut method will only ever be called after mouseup.
290
+ this.mouseIsDown = true;
291
+
292
+ // Flag for downstream DragTracker instances that the mouse is being tracked.
293
+ e.dragTracked = true;
294
+
295
+ if (this.preventDefault !== false) {
296
+ e.preventDefault();
297
+ }
298
+ Ext.getDoc().on({
299
+ scope: this,
300
+ mouseup: this.onMouseUp,
301
+ mousemove: this.onMouseMove,
302
+ selectstart: this.stopSelect
303
+ });
304
+ if (this.autoStart) {
305
+ this.timer = Ext.defer(this.triggerStart, this.autoStart === true ? 1000 : this.autoStart, this, [e]);
306
+ }
307
+ },
308
+
309
+ onMouseMove: function(e, target){
310
+ // BrowserBug: IE hack to see if button was released outside of window.
311
+ // Needed in IE6-9 in quirks and strictmode
312
+ if (this.active && Ext.isIE && !e.browserEvent.button) {
313
+ e.preventDefault();
314
+ this.onMouseUp(e);
315
+ return;
316
+ }
317
+
318
+ e.preventDefault();
319
+ var xy = e.getXY(),
320
+ s = this.startXY;
321
+
322
+ this.lastXY = xy;
323
+ if (!this.active) {
324
+ if (Math.max(Math.abs(s[0]-xy[0]), Math.abs(s[1]-xy[1])) > this.tolerance) {
325
+ this.triggerStart(e);
326
+ } else {
327
+ return;
328
+ }
329
+ }
330
+
331
+ // Returning false from a mousemove listener deactivates
332
+ if (this.fireEvent('mousemove', this, e) === false) {
333
+ this.onMouseUp(e);
334
+ } else {
335
+ this.onDrag(e);
336
+ this.fireEvent('drag', this, e);
337
+ }
338
+ },
339
+
340
+ onMouseUp: function(e) {
341
+ // Clear the flag which ensures onMouseOut fires only after the mouse button
342
+ // is lifted if the mouseout happens *during* a drag.
343
+ this.mouseIsDown = false;
344
+
345
+ // If we mouseouted the el *during* the drag, the onMouseOut method will not have fired. Ensure that it gets processed.
346
+ if (this.mouseIsOut) {
347
+ this.mouseIsOut = false;
348
+ this.onMouseOut(e);
349
+ }
350
+ e.preventDefault();
351
+ this.fireEvent('mouseup', this, e);
352
+ this.endDrag(e);
353
+ },
354
+
355
+ /**
356
+ * @private
357
+ * Stop the drag operation, and remove active mouse listeners.
358
+ */
359
+ endDrag: function(e) {
360
+ var doc = Ext.getDoc(),
361
+ wasActive = this.active;
362
+
363
+ doc.un('mousemove', this.onMouseMove, this);
364
+ doc.un('mouseup', this.onMouseUp, this);
365
+ doc.un('selectstart', this.stopSelect, this);
366
+ this.clearStart();
367
+ this.active = false;
368
+ if (wasActive) {
369
+ this.onEnd(e);
370
+ this.fireEvent('dragend', this, e);
371
+ }
372
+ // Private property calculated when first required and only cached during a drag
373
+ delete this._constrainRegion;
374
+
375
+ // Remove flag from event singleton. Using "Ext.EventObject" here since "endDrag" is called directly in some cases without an "e" param
376
+ delete Ext.EventObject.dragTracked;
377
+ },
378
+
379
+ triggerStart: function(e) {
380
+ this.clearStart();
381
+ this.active = true;
382
+ this.onStart(e);
383
+ this.fireEvent('dragstart', this, e);
384
+ },
385
+
386
+ clearStart : function() {
387
+ if (this.timer) {
388
+ clearTimeout(this.timer);
389
+ delete this.timer;
390
+ }
391
+ },
392
+
393
+ stopSelect : function(e) {
394
+ e.stopEvent();
395
+ return false;
396
+ },
397
+
398
+ /**
399
+ * Template method which should be overridden by each DragTracker instance. Called when the user first clicks and
400
+ * holds the mouse button down. Return false to disallow the drag
401
+ * @param {Ext.EventObject} e The event object
402
+ * @template
403
+ */
404
+ onBeforeStart : function(e) {
405
+
406
+ },
407
+
408
+ /**
409
+ * Template method which should be overridden by each DragTracker instance. Called when a drag operation starts
410
+ * (e.g. the user has moved the tracked element beyond the specified tolerance)
411
+ * @param {Ext.EventObject} e The event object
412
+ * @template
413
+ */
414
+ onStart : function(xy) {
415
+
416
+ },
417
+
418
+ /**
419
+ * Template method which should be overridden by each DragTracker instance. Called whenever a drag has been detected.
420
+ * @param {Ext.EventObject} e The event object
421
+ * @template
422
+ */
423
+ onDrag : function(e) {
424
+
425
+ },
426
+
427
+ /**
428
+ * Template method which should be overridden by each DragTracker instance. Called when a drag operation has been completed
429
+ * (e.g. the user clicked and held the mouse down, dragged the element and then released the mouse button)
430
+ * @param {Ext.EventObject} e The event object
431
+ * @template
432
+ */
433
+ onEnd : function(e) {
434
+
435
+ },
436
+
437
+ /**
438
+ * Returns the drag target. This is usually the DragTracker's encapsulating element.
439
+ *
440
+ * If the {@link #delegate} option is being used, this may be a child element which matches the
441
+ * {@link #delegate} selector.
442
+ *
443
+ * @return {Ext.Element} The element currently being tracked.
444
+ */
445
+ getDragTarget : function(){
446
+ return this.dragTarget;
447
+ },
448
+
449
+ /**
450
+ * @private
451
+ * @returns {Ext.Element} The DragTracker's encapsulating element.
452
+ */
453
+ getDragCt : function(){
454
+ return this.el;
455
+ },
456
+
457
+ /**
458
+ * @private
459
+ * Return the Region into which the drag operation is constrained.
460
+ * Either the XY pointer itself can be constrained, or the dragTarget element
461
+ * The private property _constrainRegion is cached until onMouseUp
462
+ */
463
+ getConstrainRegion: function() {
464
+ if (this.constrainTo) {
465
+ if (this.constrainTo instanceof Ext.util.Region) {
466
+ return this.constrainTo;
467
+ }
468
+ if (!this._constrainRegion) {
469
+ this._constrainRegion = Ext.fly(this.constrainTo).getViewRegion();
470
+ }
471
+ } else {
472
+ if (!this._constrainRegion) {
473
+ this._constrainRegion = this.getDragCt().getViewRegion();
474
+ }
475
+ }
476
+ return this._constrainRegion;
477
+ },
478
+
479
+ getXY : function(constrain){
480
+ return constrain ? this.constrainModes[constrain](this, this.lastXY) : this.lastXY;
481
+ },
482
+
483
+ /**
484
+ * Returns the X, Y offset of the current mouse position from the mousedown point.
485
+ *
486
+ * This method may optionally constrain the real offset values, and returns a point coerced in one
487
+ * of two modes:
488
+ *
489
+ * - `point`
490
+ * The current mouse position is coerced into the constrainRegion and the resulting position is returned.
491
+ * - `dragTarget`
492
+ * The new {@link Ext.util.Region Region} of the {@link #getDragTarget dragTarget} is calculated
493
+ * based upon the current mouse position, and then coerced into the constrainRegion. The returned
494
+ * mouse position is then adjusted by the same delta as was used to coerce the region.\
495
+ *
496
+ * @param constrainMode {String} (Optional) If omitted the true mouse position is returned. May be passed
497
+ * as `point` or `dragTarget`. See above.
498
+ * @returns {Number[]} The `X, Y` offset from the mousedown point, optionally constrained.
499
+ */
500
+ getOffset : function(constrain){
501
+ var xy = this.getXY(constrain),
502
+ s = this.startXY;
503
+
504
+ return [xy[0]-s[0], xy[1]-s[1]];
505
+ },
506
+
507
+ constrainModes: {
508
+ // Constrain the passed point to within the constrain region
509
+ point: function(me, xy) {
510
+ var dr = me.dragRegion,
511
+ constrainTo = me.getConstrainRegion();
512
+
513
+ // No constraint
514
+ if (!constrainTo) {
515
+ return xy;
516
+ }
517
+
518
+ dr.x = dr.left = dr[0] = dr.right = xy[0];
519
+ dr.y = dr.top = dr[1] = dr.bottom = xy[1];
520
+ dr.constrainTo(constrainTo);
521
+
522
+ return [dr.left, dr.top];
523
+ },
524
+
525
+ // Constrain the dragTarget to within the constrain region. Return the passed xy adjusted by the same delta.
526
+ dragTarget: function(me, xy) {
527
+ var s = me.startXY,
528
+ dr = me.startRegion.copy(),
529
+ constrainTo = me.getConstrainRegion(),
530
+ adjust;
531
+
532
+ // No constraint
533
+ if (!constrainTo) {
534
+ return xy;
535
+ }
536
+
537
+ // See where the passed XY would put the dragTarget if translated by the unconstrained offset.
538
+ // If it overflows, we constrain the passed XY to bring the potential
539
+ // region back within the boundary.
540
+ dr.translateBy(xy[0]-s[0], xy[1]-s[1]);
541
+
542
+ // Constrain the X coordinate by however much the dragTarget overflows
543
+ if (dr.right > constrainTo.right) {
544
+ xy[0] += adjust = (constrainTo.right - dr.right); // overflowed the right
545
+ dr.left += adjust;
546
+ }
547
+ if (dr.left < constrainTo.left) {
548
+ xy[0] += (constrainTo.left - dr.left); // overflowed the left
549
+ }
550
+
551
+ // Constrain the Y coordinate by however much the dragTarget overflows
552
+ if (dr.bottom > constrainTo.bottom) {
553
+ xy[1] += adjust = (constrainTo.bottom - dr.bottom); // overflowed the bottom
554
+ dr.top += adjust;
555
+ }
556
+ if (dr.top < constrainTo.top) {
557
+ xy[1] += (constrainTo.top - dr.top); // overflowed the top
558
+ }
559
+ return xy;
560
+ }
561
+ }
562
+ });