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,1264 @@
1
+ /*
2
+ * This is a derivative of the similarly named class in the YUI Library.
3
+ * The original license:
4
+ * Copyright (c) 2006, Yahoo! Inc. All rights reserved.
5
+ * Code licensed under the BSD License:
6
+ * http://developer.yahoo.net/yui/license.txt
7
+ */
8
+
9
+
10
+ /**
11
+ * DragDropManager is a singleton that tracks the element interaction for
12
+ * all DragDrop items in the window. Generally, you will not call
13
+ * this class directly, but it does have helper methods that could
14
+ * be useful in your DragDrop implementations.
15
+ */
16
+ Ext.define('Ext.dd.DragDropManager', {
17
+ singleton: true,
18
+
19
+ requires: ['Ext.util.Region'],
20
+
21
+ uses: ['Ext.tip.QuickTipManager'],
22
+
23
+ // shorter ClassName, to save bytes and use internally
24
+ alternateClassName: ['Ext.dd.DragDropMgr', 'Ext.dd.DDM'],
25
+
26
+ /**
27
+ * @property {String[]} ids
28
+ * Two dimensional Array of registered DragDrop objects. The first
29
+ * dimension is the DragDrop item group, the second the DragDrop
30
+ * object.
31
+ * @private
32
+ */
33
+ ids: {},
34
+
35
+ /**
36
+ * @property {String[]} handleIds
37
+ * Array of element ids defined as drag handles. Used to determine
38
+ * if the element that generated the mousedown event is actually the
39
+ * handle and not the html element itself.
40
+ * @private
41
+ */
42
+ handleIds: {},
43
+
44
+ /**
45
+ * @property {Ext.dd.DragDrop} dragCurrent
46
+ * the DragDrop object that is currently being dragged
47
+ * @private
48
+ */
49
+ dragCurrent: null,
50
+
51
+ /**
52
+ * @property {Ext.dd.DragDrop[]} dragOvers
53
+ * the DragDrop object(s) that are being hovered over
54
+ * @private
55
+ */
56
+ dragOvers: {},
57
+
58
+ /**
59
+ * @property {Number} deltaX
60
+ * the X distance between the cursor and the object being dragged
61
+ * @private
62
+ */
63
+ deltaX: 0,
64
+
65
+ /**
66
+ * @property {Number} deltaY
67
+ * the Y distance between the cursor and the object being dragged
68
+ * @private
69
+ */
70
+ deltaY: 0,
71
+
72
+ /**
73
+ * @property {Boolean} preventDefault
74
+ * Flag to determine if we should prevent the default behavior of the
75
+ * events we define. By default this is true, but this can be set to
76
+ * false if you need the default behavior (not recommended)
77
+ */
78
+ preventDefault: true,
79
+
80
+ /**
81
+ * @property {Boolean} stopPropagation
82
+ * Flag to determine if we should stop the propagation of the events
83
+ * we generate. This is true by default but you may want to set it to
84
+ * false if the html element contains other features that require the
85
+ * mouse click.
86
+ */
87
+ stopPropagation: true,
88
+
89
+ /**
90
+ * Internal flag that is set to true when drag and drop has been
91
+ * intialized
92
+ * @property initialized
93
+ * @private
94
+ */
95
+ initialized: false,
96
+
97
+ /**
98
+ * All drag and drop can be disabled.
99
+ * @property locked
100
+ * @private
101
+ */
102
+ locked: false,
103
+
104
+ /**
105
+ * Called the first time an element is registered.
106
+ * @private
107
+ */
108
+ init: function() {
109
+ this.initialized = true;
110
+ },
111
+
112
+ /**
113
+ * @property {Number} POINT
114
+ * In point mode, drag and drop interaction is defined by the
115
+ * location of the cursor during the drag/drop
116
+ */
117
+ POINT: 0,
118
+
119
+ /**
120
+ * @property {Number} INTERSECT
121
+ * In intersect mode, drag and drop interaction is defined by the
122
+ * overlap of two or more drag and drop objects.
123
+ */
124
+ INTERSECT: 1,
125
+
126
+ /**
127
+ * @property {Number} mode
128
+ * The current drag and drop mode. Default: POINT
129
+ */
130
+ mode: 0,
131
+
132
+ /**
133
+ * @property {Boolean} [notifyOccluded=false]
134
+ * This config is only provided to provide old, usually unwanted drag/drop behaviour.
135
+ *
136
+ * From ExtJS 4.1.0 onwards, when drop targets are contained in floating, absolutely positioned elements
137
+ * such as in {@link Ext.window.Window Windows}, which may overlap each other, `over` and `drop` events
138
+ * are only delivered to the topmost drop target at the mouse position.
139
+ *
140
+ * If all targets below that in zIndex order should also receive notifications, set
141
+ * `notifyOccluded` to `true`.
142
+ */
143
+ notifyOccluded: false,
144
+
145
+ /**
146
+ * Runs method on all drag and drop objects
147
+ * @private
148
+ */
149
+ _execOnAll: function(sMethod, args) {
150
+ var i, j, oDD;
151
+ for (i in this.ids) {
152
+ for (j in this.ids[i]) {
153
+ oDD = this.ids[i][j];
154
+ if (! this.isTypeOfDD(oDD)) {
155
+ continue;
156
+ }
157
+ oDD[sMethod].apply(oDD, args);
158
+ }
159
+ }
160
+ },
161
+
162
+ /**
163
+ * Drag and drop initialization. Sets up the global event handlers
164
+ * @private
165
+ */
166
+ _onLoad: function() {
167
+
168
+ this.init();
169
+
170
+ var Event = Ext.EventManager;
171
+ Event.on(document, "mouseup", this.handleMouseUp, this, true);
172
+ Event.on(document, "mousemove", this.handleMouseMove, this, true);
173
+ Event.on(window, "unload", this._onUnload, this, true);
174
+ Event.on(window, "resize", this._onResize, this, true);
175
+ // Event.on(window, "mouseout", this._test);
176
+
177
+ },
178
+
179
+ /**
180
+ * Reset constraints on all drag and drop objs
181
+ * @private
182
+ */
183
+ _onResize: function(e) {
184
+ this._execOnAll("resetConstraints", []);
185
+ },
186
+
187
+ /**
188
+ * Lock all drag and drop functionality
189
+ */
190
+ lock: function() { this.locked = true; },
191
+
192
+ /**
193
+ * Unlock all drag and drop functionality
194
+ */
195
+ unlock: function() { this.locked = false; },
196
+
197
+ /**
198
+ * Is drag and drop locked?
199
+ * @return {Boolean} True if drag and drop is locked, false otherwise.
200
+ */
201
+ isLocked: function() { return this.locked; },
202
+
203
+ /**
204
+ * @property {Object} locationCache
205
+ * Location cache that is set for all drag drop objects when a drag is
206
+ * initiated, cleared when the drag is finished.
207
+ * @private
208
+ */
209
+ locationCache: {},
210
+
211
+ /**
212
+ * @property {Boolean} useCache
213
+ * Set useCache to false if you want to force object the lookup of each
214
+ * drag and drop linked element constantly during a drag.
215
+ */
216
+ useCache: true,
217
+
218
+ /**
219
+ * @property {Number} clickPixelThresh
220
+ * The number of pixels that the mouse needs to move after the
221
+ * mousedown before the drag is initiated. Default=3;
222
+ */
223
+ clickPixelThresh: 3,
224
+
225
+ /**
226
+ * @property {Number} clickTimeThresh
227
+ * The number of milliseconds after the mousedown event to initiate the
228
+ * drag if we don't get a mouseup event. Default=350
229
+ */
230
+ clickTimeThresh: 350,
231
+
232
+ /**
233
+ * @property {Boolean} dragThreshMet
234
+ * Flag that indicates that either the drag pixel threshold or the
235
+ * mousdown time threshold has been met
236
+ * @private
237
+ */
238
+ dragThreshMet: false,
239
+
240
+ /**
241
+ * @property {Object} clickTimeout
242
+ * Timeout used for the click time threshold
243
+ * @private
244
+ */
245
+ clickTimeout: null,
246
+
247
+ /**
248
+ * @property {Number} startX
249
+ * The X position of the mousedown event stored for later use when a
250
+ * drag threshold is met.
251
+ * @private
252
+ */
253
+ startX: 0,
254
+
255
+ /**
256
+ * @property {Number} startY
257
+ * The Y position of the mousedown event stored for later use when a
258
+ * drag threshold is met.
259
+ * @private
260
+ */
261
+ startY: 0,
262
+
263
+ /**
264
+ * Each DragDrop instance must be registered with the DragDropManager.
265
+ * This is executed in DragDrop.init()
266
+ * @param {Ext.dd.DragDrop} oDD the DragDrop object to register
267
+ * @param {String} sGroup the name of the group this element belongs to
268
+ */
269
+ regDragDrop: function(oDD, sGroup) {
270
+ if (!this.initialized) { this.init(); }
271
+
272
+ if (!this.ids[sGroup]) {
273
+ this.ids[sGroup] = {};
274
+ }
275
+ this.ids[sGroup][oDD.id] = oDD;
276
+ },
277
+
278
+ /**
279
+ * Removes the supplied dd instance from the supplied group. Executed
280
+ * by DragDrop.removeFromGroup, so don't call this function directly.
281
+ * @private
282
+ */
283
+ removeDDFromGroup: function(oDD, sGroup) {
284
+ if (!this.ids[sGroup]) {
285
+ this.ids[sGroup] = {};
286
+ }
287
+
288
+ var obj = this.ids[sGroup];
289
+ if (obj && obj[oDD.id]) {
290
+ delete obj[oDD.id];
291
+ }
292
+ },
293
+
294
+ /**
295
+ * Unregisters a drag and drop item. This is executed in
296
+ * DragDrop.unreg, use that method instead of calling this directly.
297
+ * @private
298
+ */
299
+ _remove: function(oDD) {
300
+ for (var g in oDD.groups) {
301
+ if (g && this.ids[g] && this.ids[g][oDD.id]) {
302
+ delete this.ids[g][oDD.id];
303
+ }
304
+ }
305
+ delete this.handleIds[oDD.id];
306
+ },
307
+
308
+ /**
309
+ * Each DragDrop handle element must be registered. This is done
310
+ * automatically when executing DragDrop.setHandleElId()
311
+ * @param {String} sDDId the DragDrop id this element is a handle for
312
+ * @param {String} sHandleId the id of the element that is the drag
313
+ * handle
314
+ */
315
+ regHandle: function(sDDId, sHandleId) {
316
+ if (!this.handleIds[sDDId]) {
317
+ this.handleIds[sDDId] = {};
318
+ }
319
+ this.handleIds[sDDId][sHandleId] = sHandleId;
320
+ },
321
+
322
+ /**
323
+ * Utility function to determine if a given element has been
324
+ * registered as a drag drop item.
325
+ * @param {String} id the element id to check
326
+ * @return {Boolean} true if this element is a DragDrop item,
327
+ * false otherwise
328
+ */
329
+ isDragDrop: function(id) {
330
+ return ( this.getDDById(id) ) ? true : false;
331
+ },
332
+
333
+ /**
334
+ * Returns the drag and drop instances that are in all groups the
335
+ * passed in instance belongs to.
336
+ * @param {Ext.dd.DragDrop} p_oDD the obj to get related data for
337
+ * @param {Boolean} bTargetsOnly if true, only return targetable objs
338
+ * @return {Ext.dd.DragDrop[]} the related instances
339
+ */
340
+ getRelated: function(p_oDD, bTargetsOnly) {
341
+ var oDDs = [],
342
+ i, j, dd;
343
+ for (i in p_oDD.groups) {
344
+ for (j in this.ids[i]) {
345
+ dd = this.ids[i][j];
346
+ if (! this.isTypeOfDD(dd)) {
347
+ continue;
348
+ }
349
+ if (!bTargetsOnly || dd.isTarget) {
350
+ oDDs[oDDs.length] = dd;
351
+ }
352
+ }
353
+ }
354
+
355
+ return oDDs;
356
+ },
357
+
358
+ /**
359
+ * Returns true if the specified dd target is a legal target for
360
+ * the specifice drag obj
361
+ * @param {Ext.dd.DragDrop} oDD the drag obj
362
+ * @param {Ext.dd.DragDrop} oTargetDD the target
363
+ * @return {Boolean} true if the target is a legal target for the
364
+ * dd obj
365
+ */
366
+ isLegalTarget: function (oDD, oTargetDD) {
367
+ var targets = this.getRelated(oDD, true),
368
+ i, len;
369
+ for (i=0, len=targets.length;i<len;++i) {
370
+ if (targets[i].id == oTargetDD.id) {
371
+ return true;
372
+ }
373
+ }
374
+
375
+ return false;
376
+ },
377
+
378
+ /**
379
+ * My goal is to be able to transparently determine if an object is
380
+ * typeof DragDrop, and the exact subclass of DragDrop. typeof
381
+ * returns "object", oDD.constructor.toString() always returns
382
+ * "DragDrop" and not the name of the subclass. So for now it just
383
+ * evaluates a well-known variable in DragDrop.
384
+ * @param {Object} the object to evaluate
385
+ * @return {Boolean} true if typeof oDD = DragDrop
386
+ */
387
+ isTypeOfDD: function (oDD) {
388
+ return (oDD && oDD.__ygDragDrop);
389
+ },
390
+
391
+ /**
392
+ * Utility function to determine if a given element has been
393
+ * registered as a drag drop handle for the given Drag Drop object.
394
+ * @param {String} id the element id to check
395
+ * @return {Boolean} true if this element is a DragDrop handle, false
396
+ * otherwise
397
+ */
398
+ isHandle: function(sDDId, sHandleId) {
399
+ return ( this.handleIds[sDDId] &&
400
+ this.handleIds[sDDId][sHandleId] );
401
+ },
402
+
403
+ /**
404
+ * Returns the DragDrop instance for a given id
405
+ * @param {String} id the id of the DragDrop object
406
+ * @return {Ext.dd.DragDrop} the drag drop object, null if it is not found
407
+ */
408
+ getDDById: function(id) {
409
+ var me = this,
410
+ i, dd;
411
+ for (i in this.ids) {
412
+ dd = this.ids[i][id];
413
+ if (dd instanceof Ext.dd.DDTarget) {
414
+ return dd;
415
+ }
416
+ }
417
+ return null;
418
+ },
419
+
420
+ /**
421
+ * Fired after a registered DragDrop object gets the mousedown event.
422
+ * Sets up the events required to track the object being dragged
423
+ * @param {Event} e the event
424
+ * @param {Ext.dd.DragDrop} oDD the DragDrop object being dragged
425
+ * @private
426
+ */
427
+ handleMouseDown: function(e, oDD) {
428
+ if(Ext.tip.QuickTipManager){
429
+ Ext.tip.QuickTipManager.ddDisable();
430
+ }
431
+ if(this.dragCurrent){
432
+ // the original browser mouseup wasn't handled (e.g. outside FF browser window)
433
+ // so clean up first to avoid breaking the next drag
434
+ this.handleMouseUp(e);
435
+ }
436
+
437
+ this.currentTarget = e.getTarget();
438
+ this.dragCurrent = oDD;
439
+
440
+ var el = oDD.getEl();
441
+
442
+ // track start position
443
+ this.startX = e.getPageX();
444
+ this.startY = e.getPageY();
445
+
446
+ this.deltaX = this.startX - el.offsetLeft;
447
+ this.deltaY = this.startY - el.offsetTop;
448
+
449
+ this.dragThreshMet = false;
450
+
451
+ this.clickTimeout = setTimeout(
452
+ function() {
453
+ var DDM = Ext.dd.DragDropManager;
454
+ DDM.startDrag(DDM.startX, DDM.startY);
455
+ },
456
+ this.clickTimeThresh );
457
+ },
458
+
459
+ /**
460
+ * Fired when either the drag pixel threshol or the mousedown hold
461
+ * time threshold has been met.
462
+ * @param {Number} x the X position of the original mousedown
463
+ * @param {Number} y the Y position of the original mousedown
464
+ */
465
+ startDrag: function(x, y) {
466
+ clearTimeout(this.clickTimeout);
467
+ if (this.dragCurrent) {
468
+ this.dragCurrent.b4StartDrag(x, y);
469
+ this.dragCurrent.startDrag(x, y);
470
+ }
471
+ this.dragThreshMet = true;
472
+ },
473
+
474
+ /**
475
+ * Internal function to handle the mouseup event. Will be invoked
476
+ * from the context of the document.
477
+ * @param {Event} e the event
478
+ * @private
479
+ */
480
+ handleMouseUp: function(e) {
481
+
482
+ if(Ext.tip && Ext.tip.QuickTipManager){
483
+ Ext.tip.QuickTipManager.ddEnable();
484
+ }
485
+ if (! this.dragCurrent) {
486
+ return;
487
+ }
488
+
489
+ clearTimeout(this.clickTimeout);
490
+
491
+ if (this.dragThreshMet) {
492
+ this.fireEvents(e, true);
493
+ }
494
+
495
+ this.stopDrag(e);
496
+
497
+ this.stopEvent(e);
498
+ },
499
+
500
+ /**
501
+ * Utility to stop event propagation and event default, if these
502
+ * features are turned on.
503
+ * @param {Event} e the event as returned by this.getEvent()
504
+ */
505
+ stopEvent: function(e){
506
+ if(this.stopPropagation) {
507
+ e.stopPropagation();
508
+ }
509
+
510
+ if (this.preventDefault) {
511
+ e.preventDefault();
512
+ }
513
+ },
514
+
515
+ /**
516
+ * Internal function to clean up event handlers after the drag
517
+ * operation is complete
518
+ * @param {Event} e the event
519
+ * @private
520
+ */
521
+ stopDrag: function(e) {
522
+ // Fire the drag end event for the item that was dragged
523
+ if (this.dragCurrent) {
524
+ if (this.dragThreshMet) {
525
+ this.dragCurrent.b4EndDrag(e);
526
+ this.dragCurrent.endDrag(e);
527
+ }
528
+
529
+ this.dragCurrent.onMouseUp(e);
530
+ }
531
+
532
+ this.dragCurrent = null;
533
+ this.dragOvers = {};
534
+ },
535
+
536
+ /**
537
+ * Internal function to handle the mousemove event. Will be invoked
538
+ * from the context of the html element.
539
+ *
540
+ * @TODO figure out what we can do about mouse events lost when the
541
+ * user drags objects beyond the window boundary. Currently we can
542
+ * detect this in internet explorer by verifying that the mouse is
543
+ * down during the mousemove event. Firefox doesn't give us the
544
+ * button state on the mousemove event.
545
+ *
546
+ * @param {Event} e the event
547
+ * @private
548
+ */
549
+ handleMouseMove: function(e) {
550
+ if (! this.dragCurrent) {
551
+ return true;
552
+ }
553
+ // var button = e.which || e.button;
554
+
555
+ // check for IE mouseup outside of page boundary
556
+ if (Ext.isIE && (e.button !== 0 && e.button !== 1 && e.button !== 2)) {
557
+ this.stopEvent(e);
558
+ return this.handleMouseUp(e);
559
+ }
560
+
561
+ var diffX, diffY;
562
+
563
+ if (!this.dragThreshMet) {
564
+ diffX = Math.abs(this.startX - e.getPageX());
565
+ diffY = Math.abs(this.startY - e.getPageY());
566
+ if (diffX > this.clickPixelThresh ||
567
+ diffY > this.clickPixelThresh) {
568
+ this.startDrag(this.startX, this.startY);
569
+ }
570
+ }
571
+
572
+ if (this.dragThreshMet) {
573
+ this.dragCurrent.b4Drag(e);
574
+ this.dragCurrent.onDrag(e);
575
+ if(!this.dragCurrent.moveOnly){
576
+ this.fireEvents(e, false);
577
+ }
578
+ }
579
+
580
+ this.stopEvent(e);
581
+
582
+ return true;
583
+ },
584
+
585
+ /**
586
+ * Iterates over all of the DragDrop elements to find ones we are
587
+ * hovering over or dropping on
588
+ * @param {Event} e the event
589
+ * @param {Boolean} isDrop is this a drop op or a mouseover op?
590
+ * @private
591
+ */
592
+ fireEvents: function(e, isDrop) {
593
+ var me = this,
594
+ dragCurrent = me.dragCurrent,
595
+ mousePoint = e.getPoint(),
596
+ overTarget,
597
+ overTargetEl,
598
+ allTargets = [],
599
+ oldOvers = [], // cache the previous dragOver array
600
+ outEvts = [],
601
+ overEvts = [],
602
+ dropEvts = [],
603
+ enterEvts = [],
604
+ needsSort,
605
+ i,
606
+ len,
607
+ sGroup;
608
+
609
+ // If the user did the mouse up outside of the window, we could
610
+ // get here even though we have ended the drag.
611
+ if (!dragCurrent || dragCurrent.isLocked()) {
612
+ return;
613
+ }
614
+
615
+ // Check to see if the object(s) we were hovering over is no longer
616
+ // being hovered over so we can fire the onDragOut event
617
+ for (i in me.dragOvers) {
618
+
619
+ overTarget = me.dragOvers[i];
620
+
621
+ if (! me.isTypeOfDD(overTarget)) {
622
+ continue;
623
+ }
624
+
625
+ if (! this.isOverTarget(mousePoint, overTarget, me.mode)) {
626
+ outEvts.push( overTarget );
627
+ }
628
+
629
+ oldOvers[i] = true;
630
+ delete me.dragOvers[i];
631
+ }
632
+
633
+ // Collect all targets which are members of the same ddGoups that the dragCurrent is a member of, and which may recieve mouseover and drop notifications.
634
+ // This is preparatory to seeing which one(s) we are currently over
635
+ // Begin by iterating through the ddGroups of which the dragCurrent is a member
636
+ for (sGroup in dragCurrent.groups) {
637
+
638
+ if ("string" != typeof sGroup) {
639
+ continue;
640
+ }
641
+
642
+ // Loop over the registered members of each group, testing each as a potential target
643
+ for (i in me.ids[sGroup]) {
644
+ overTarget = me.ids[sGroup][i];
645
+
646
+ // The target is valid if it is a DD type
647
+ // And it's got a DOM element
648
+ // And it's configured to be a drop target
649
+ // And it's not locked
650
+ // And the DOM element is fully visible with no hidden ancestors
651
+ // And it's either not the dragCurrent, or, if it is, tha dragCurrent is configured to not ignore itself.
652
+ if (me.isTypeOfDD(overTarget) &&
653
+ (overTargetEl = overTarget.getEl()) &&
654
+ (overTarget.isTarget) &&
655
+ (!overTarget.isLocked()) &&
656
+ (Ext.fly(overTargetEl).isVisible(true)) &&
657
+ ((overTarget != dragCurrent) || (dragCurrent.ignoreSelf === false))) {
658
+
659
+ // Only sort by zIndex if there were some which had a floating zIndex value
660
+ if ((overTarget.zIndex = me.getZIndex(overTargetEl)) !== -1) {
661
+ needsSort = true;
662
+ }
663
+ allTargets.push(overTarget);
664
+ }
665
+ }
666
+ }
667
+
668
+ // If there were floating targets, sort the highest zIndex to the top
669
+ if (needsSort) {
670
+ Ext.Array.sort(allTargets, me.byZIndex);
671
+ }
672
+
673
+ // Loop through possible targets, notifying the one(s) we are over.
674
+ // Usually we only deliver events to the topmost.
675
+ for (i = 0, len = allTargets.length; i < len; i++) {
676
+ overTarget = allTargets[i];
677
+
678
+ // If we are over the overTarget, queue it up to recieve an event of whatever type we are handling
679
+ if (me.isOverTarget(mousePoint, overTarget, me.mode)) {
680
+ // look for drop interactions
681
+ if (isDrop) {
682
+ dropEvts.push( overTarget );
683
+ // look for drag enter and drag over interactions
684
+ } else {
685
+
686
+ // initial drag over: dragEnter fires
687
+ if (!oldOvers[overTarget.id]) {
688
+ enterEvts.push( overTarget );
689
+ // subsequent drag overs: dragOver fires
690
+ } else {
691
+ overEvts.push( overTarget );
692
+ }
693
+ me.dragOvers[overTarget.id] = overTarget;
694
+ }
695
+
696
+ // Unless this DragDropManager has been explicitly configured to deliver events to multiple targets, then we are done.
697
+ if (!me.notifyOccluded) {
698
+ break;
699
+ }
700
+ }
701
+ }
702
+
703
+ if (me.mode) {
704
+ if (outEvts.length) {
705
+ dragCurrent.b4DragOut(e, outEvts);
706
+ dragCurrent.onDragOut(e, outEvts);
707
+ }
708
+
709
+ if (enterEvts.length) {
710
+ dragCurrent.onDragEnter(e, enterEvts);
711
+ }
712
+
713
+ if (overEvts.length) {
714
+ dragCurrent.b4DragOver(e, overEvts);
715
+ dragCurrent.onDragOver(e, overEvts);
716
+ }
717
+
718
+ if (dropEvts.length) {
719
+ dragCurrent.b4DragDrop(e, dropEvts);
720
+ dragCurrent.onDragDrop(e, dropEvts);
721
+ }
722
+
723
+ } else {
724
+ // fire dragout events
725
+ for (i=0, len=outEvts.length; i<len; ++i) {
726
+ dragCurrent.b4DragOut(e, outEvts[i].id);
727
+ dragCurrent.onDragOut(e, outEvts[i].id);
728
+ }
729
+
730
+ // fire enter events
731
+ for (i=0,len=enterEvts.length; i<len; ++i) {
732
+ // dc.b4DragEnter(e, oDD.id);
733
+ dragCurrent.onDragEnter(e, enterEvts[i].id);
734
+ }
735
+
736
+ // fire over events
737
+ for (i=0,len=overEvts.length; i<len; ++i) {
738
+ dragCurrent.b4DragOver(e, overEvts[i].id);
739
+ dragCurrent.onDragOver(e, overEvts[i].id);
740
+ }
741
+
742
+ // fire drop events
743
+ for (i=0, len=dropEvts.length; i<len; ++i) {
744
+ dragCurrent.b4DragDrop(e, dropEvts[i].id);
745
+ dragCurrent.onDragDrop(e, dropEvts[i].id);
746
+ }
747
+
748
+ }
749
+
750
+ // notify about a drop that did not find a target
751
+ if (isDrop && !dropEvts.length) {
752
+ dragCurrent.onInvalidDrop(e);
753
+ }
754
+
755
+ },
756
+
757
+ /**
758
+ * @private
759
+ * Collects the z-index of the passed element, looking up the parentNode axis to find an absolutely positioned ancestor
760
+ * which is able to yield a z-index. If found to be not absolutely positionedm returns -1.
761
+ *
762
+ * This is used when sorting potential drop targets into z-index order so that only the topmost receives `over` and `drop` events.
763
+ *
764
+ * @return {Number} The z-index of the element, or of its topmost absolutely positioned ancestor. Returns -1 if the element is not
765
+ * absolutely positioned.
766
+ */
767
+ getZIndex: function(element) {
768
+ var body = document.body,
769
+ z,
770
+ zIndex = -1;
771
+
772
+ element = Ext.getDom(element);
773
+ while (element !== body) {
774
+ if (!isNaN(z = Number(Ext.fly(element).getStyle('zIndex')))) {
775
+ zIndex = z;
776
+ }
777
+ element = element.parentNode;
778
+ }
779
+ return zIndex;
780
+ },
781
+
782
+ /**
783
+ * @private
784
+ * Utility method to pass to {@link Ext.Array#sort} when sorting potential drop targets by z-index.
785
+ */
786
+ byZIndex: function(d1, d2) {
787
+ return d1.zIndex < d2.zIndex;
788
+ },
789
+
790
+ /**
791
+ * Helper function for getting the best match from the list of drag
792
+ * and drop objects returned by the drag and drop events when we are
793
+ * in INTERSECT mode. It returns either the first object that the
794
+ * cursor is over, or the object that has the greatest overlap with
795
+ * the dragged element.
796
+ * @param {Ext.dd.DragDrop[]} dds The array of drag and drop objects
797
+ * targeted
798
+ * @return {Ext.dd.DragDrop} The best single match
799
+ */
800
+ getBestMatch: function(dds) {
801
+ var winner = null,
802
+ len = dds.length,
803
+ i, dd;
804
+ // Return null if the input is not what we expect
805
+ //if (!dds || !dds.length || dds.length == 0) {
806
+ // winner = null;
807
+ // If there is only one item, it wins
808
+ //} else if (dds.length == 1) {
809
+
810
+
811
+ if (len == 1) {
812
+ winner = dds[0];
813
+ } else {
814
+ // Loop through the targeted items
815
+ for (i=0; i<len; ++i) {
816
+ dd = dds[i];
817
+ // If the cursor is over the object, it wins. If the
818
+ // cursor is over multiple matches, the first one we come
819
+ // to wins.
820
+ if (dd.cursorIsOver) {
821
+ winner = dd;
822
+ break;
823
+ // Otherwise the object with the most overlap wins
824
+ } else {
825
+ if (!winner ||
826
+ winner.overlap.getArea() < dd.overlap.getArea()) {
827
+ winner = dd;
828
+ }
829
+ }
830
+ }
831
+ }
832
+
833
+ return winner;
834
+ },
835
+
836
+ /**
837
+ * Refreshes the cache of the top-left and bottom-right points of the
838
+ * drag and drop objects in the specified group(s). This is in the
839
+ * format that is stored in the drag and drop instance, so typical
840
+ * usage is:
841
+ *
842
+ * Ext.dd.DragDropManager.refreshCache(ddinstance.groups);
843
+ *
844
+ * Alternatively:
845
+ *
846
+ * Ext.dd.DragDropManager.refreshCache({group1:true, group2:true});
847
+ *
848
+ * @TODO this really should be an indexed array. Alternatively this
849
+ * method could accept both.
850
+ *
851
+ * @param {Object} groups an associative array of groups to refresh
852
+ */
853
+ refreshCache: function(groups) {
854
+ var sGroup, i, oDD, loc;
855
+ for (sGroup in groups) {
856
+ if ("string" != typeof sGroup) {
857
+ continue;
858
+ }
859
+ for (i in this.ids[sGroup]) {
860
+ oDD = this.ids[sGroup][i];
861
+
862
+ if (this.isTypeOfDD(oDD)) {
863
+ // if (this.isTypeOfDD(oDD) && oDD.isTarget) {
864
+ loc = this.getLocation(oDD);
865
+ if (loc) {
866
+ this.locationCache[oDD.id] = loc;
867
+ } else {
868
+ delete this.locationCache[oDD.id];
869
+ // this will unregister the drag and drop object if
870
+ // the element is not in a usable state
871
+ // oDD.unreg();
872
+ }
873
+ }
874
+ }
875
+ }
876
+ },
877
+
878
+ /**
879
+ * This checks to make sure an element exists and is in the DOM. The
880
+ * main purpose is to handle cases where innerHTML is used to remove
881
+ * drag and drop objects from the DOM. IE provides an 'unspecified
882
+ * error' when trying to access the offsetParent of such an element
883
+ * @param {HTMLElement} el the element to check
884
+ * @return {Boolean} true if the element looks usable
885
+ */
886
+ verifyEl: function(el) {
887
+ if (el) {
888
+ var parent;
889
+ if(Ext.isIE){
890
+ try{
891
+ parent = el.offsetParent;
892
+ }catch(e){}
893
+ }else{
894
+ parent = el.offsetParent;
895
+ }
896
+ if (parent) {
897
+ return true;
898
+ }
899
+ }
900
+
901
+ return false;
902
+ },
903
+
904
+ /**
905
+ * Returns a Region object containing the drag and drop element's position
906
+ * and size, including the padding configured for it
907
+ * @param {Ext.dd.DragDrop} oDD the drag and drop object to get the location for.
908
+ * @return {Ext.util.Region} a Region object representing the total area
909
+ * the element occupies, including any padding
910
+ * the instance is configured for.
911
+ */
912
+ getLocation: function(oDD) {
913
+ if (! this.isTypeOfDD(oDD)) {
914
+ return null;
915
+ }
916
+
917
+ //delegate getLocation method to the
918
+ //drag and drop target.
919
+ if (oDD.getRegion) {
920
+ return oDD.getRegion();
921
+ }
922
+
923
+ var el = oDD.getEl(), pos, x1, x2, y1, y2, t, r, b, l;
924
+
925
+ try {
926
+ pos= Ext.Element.getXY(el);
927
+ } catch (e) { }
928
+
929
+ if (!pos) {
930
+ return null;
931
+ }
932
+
933
+ x1 = pos[0];
934
+ x2 = x1 + el.offsetWidth;
935
+ y1 = pos[1];
936
+ y2 = y1 + el.offsetHeight;
937
+
938
+ t = y1 - oDD.padding[0];
939
+ r = x2 + oDD.padding[1];
940
+ b = y2 + oDD.padding[2];
941
+ l = x1 - oDD.padding[3];
942
+
943
+ return new Ext.util.Region(t, r, b, l);
944
+ },
945
+
946
+ /**
947
+ * Checks the cursor location to see if it over the target
948
+ * @param {Ext.util.Point} pt The point to evaluate
949
+ * @param {Ext.dd.DragDrop} oTarget the DragDrop object we are inspecting
950
+ * @return {Boolean} true if the mouse is over the target
951
+ * @private
952
+ */
953
+ isOverTarget: function(pt, oTarget, intersect) {
954
+ // use cache if available
955
+ var loc = this.locationCache[oTarget.id],
956
+ dc, pos, el, curRegion, overlap;
957
+ if (!loc || !this.useCache) {
958
+ loc = this.getLocation(oTarget);
959
+ this.locationCache[oTarget.id] = loc;
960
+
961
+ }
962
+
963
+ if (!loc) {
964
+ return false;
965
+ }
966
+
967
+ oTarget.cursorIsOver = loc.contains( pt );
968
+
969
+ // DragDrop is using this as a sanity check for the initial mousedown
970
+ // in this case we are done. In POINT mode, if the drag obj has no
971
+ // contraints, we are also done. Otherwise we need to evaluate the
972
+ // location of the target as related to the actual location of the
973
+ // dragged element.
974
+ dc = this.dragCurrent;
975
+ if (!dc || !dc.getTargetCoord ||
976
+ (!intersect && !dc.constrainX && !dc.constrainY)) {
977
+ return oTarget.cursorIsOver;
978
+ }
979
+
980
+ oTarget.overlap = null;
981
+
982
+ // Get the current location of the drag element, this is the
983
+ // location of the mouse event less the delta that represents
984
+ // where the original mousedown happened on the element. We
985
+ // need to consider constraints and ticks as well.
986
+ pos = dc.getTargetCoord(pt.x, pt.y);
987
+
988
+ el = dc.getDragEl();
989
+ curRegion = new Ext.util.Region(pos.y,
990
+ pos.x + el.offsetWidth,
991
+ pos.y + el.offsetHeight,
992
+ pos.x );
993
+
994
+ overlap = curRegion.intersect(loc);
995
+
996
+ if (overlap) {
997
+ oTarget.overlap = overlap;
998
+ return (intersect) ? true : oTarget.cursorIsOver;
999
+ } else {
1000
+ return false;
1001
+ }
1002
+ },
1003
+
1004
+ /**
1005
+ * unload event handler
1006
+ * @private
1007
+ */
1008
+ _onUnload: function(e, me) {
1009
+ Ext.dd.DragDropManager.unregAll();
1010
+ },
1011
+
1012
+ /**
1013
+ * Cleans up the drag and drop events and objects.
1014
+ * @private
1015
+ */
1016
+ unregAll: function() {
1017
+
1018
+ if (this.dragCurrent) {
1019
+ this.stopDrag();
1020
+ this.dragCurrent = null;
1021
+ }
1022
+
1023
+ this._execOnAll("unreg", []);
1024
+
1025
+ for (var i in this.elementCache) {
1026
+ delete this.elementCache[i];
1027
+ }
1028
+
1029
+ this.elementCache = {};
1030
+ this.ids = {};
1031
+ },
1032
+
1033
+ /**
1034
+ * @property {Object} elementCache
1035
+ * A cache of DOM elements
1036
+ * @private
1037
+ */
1038
+ elementCache: {},
1039
+
1040
+ /**
1041
+ * Get the wrapper for the DOM element specified
1042
+ * @param {String} id the id of the element to get
1043
+ * @return {Ext.dd.DragDropManager.ElementWrapper} the wrapped element
1044
+ * @private
1045
+ * @deprecated This wrapper isn't that useful
1046
+ */
1047
+ getElWrapper: function(id) {
1048
+ var oWrapper = this.elementCache[id];
1049
+ if (!oWrapper || !oWrapper.el) {
1050
+ oWrapper = this.elementCache[id] =
1051
+ new this.ElementWrapper(Ext.getDom(id));
1052
+ }
1053
+ return oWrapper;
1054
+ },
1055
+
1056
+ /**
1057
+ * Returns the actual DOM element
1058
+ * @param {String} id the id of the elment to get
1059
+ * @return {Object} The element
1060
+ * @deprecated use Ext.lib.Ext.getDom instead
1061
+ */
1062
+ getElement: function(id) {
1063
+ return Ext.getDom(id);
1064
+ },
1065
+
1066
+ /**
1067
+ * Returns the style property for the DOM element (i.e.,
1068
+ * document.getElById(id).style)
1069
+ * @param {String} id the id of the elment to get
1070
+ * @return {Object} The style property of the element
1071
+ */
1072
+ getCss: function(id) {
1073
+ var el = Ext.getDom(id);
1074
+ return (el) ? el.style : null;
1075
+ },
1076
+
1077
+ /**
1078
+ * @class Ext.dd.DragDropManager.ElementWrapper
1079
+ * Deprecated inner class for cached elements.
1080
+ * @private
1081
+ * @deprecated This wrapper isn't that useful
1082
+ */
1083
+ ElementWrapper: function(el) {
1084
+ /** The element */
1085
+ this.el = el || null;
1086
+ /** The element id */
1087
+ this.id = this.el && el.id;
1088
+ /** A reference to the style property */
1089
+ this.css = this.el && el.style;
1090
+ },
1091
+
1092
+ // Continue class docs
1093
+ /** @class Ext.dd.DragDropElement */
1094
+
1095
+ /**
1096
+ * Returns the X position of an html element
1097
+ * @param {HTMLElement} el the element for which to get the position
1098
+ * @return {Number} the X coordinate
1099
+ */
1100
+ getPosX: function(el) {
1101
+ return Ext.Element.getX(el);
1102
+ },
1103
+
1104
+ /**
1105
+ * Returns the Y position of an html element
1106
+ * @param {HTMLElement} el the element for which to get the position
1107
+ * @return {Number} the Y coordinate
1108
+ */
1109
+ getPosY: function(el) {
1110
+ return Ext.Element.getY(el);
1111
+ },
1112
+
1113
+ /**
1114
+ * Swap two nodes. In IE, we use the native method, for others we
1115
+ * emulate the IE behavior
1116
+ * @param {HTMLElement} n1 the first node to swap
1117
+ * @param {HTMLElement} n2 the other node to swap
1118
+ */
1119
+ swapNode: function(n1, n2) {
1120
+ if (n1.swapNode) {
1121
+ n1.swapNode(n2);
1122
+ } else {
1123
+ var p = n2.parentNode,
1124
+ s = n2.nextSibling;
1125
+
1126
+ if (s == n1) {
1127
+ p.insertBefore(n1, n2);
1128
+ } else if (n2 == n1.nextSibling) {
1129
+ p.insertBefore(n2, n1);
1130
+ } else {
1131
+ n1.parentNode.replaceChild(n2, n1);
1132
+ p.insertBefore(n1, s);
1133
+ }
1134
+ }
1135
+ },
1136
+
1137
+ /**
1138
+ * Returns the current scroll position
1139
+ * @private
1140
+ */
1141
+ getScroll: function () {
1142
+ var doc = window.document,
1143
+ docEl = doc.documentElement,
1144
+ body = doc.body,
1145
+ top = 0,
1146
+ left = 0;
1147
+
1148
+ if (Ext.isGecko4) {
1149
+ top = window.scrollYOffset;
1150
+ left = window.scrollXOffset;
1151
+ } else {
1152
+ if (docEl && (docEl.scrollTop || docEl.scrollLeft)) {
1153
+ top = docEl.scrollTop;
1154
+ left = docEl.scrollLeft;
1155
+ } else if (body) {
1156
+ top = body.scrollTop;
1157
+ left = body.scrollLeft;
1158
+ }
1159
+ }
1160
+ return {
1161
+ top: top,
1162
+ left: left
1163
+ };
1164
+ },
1165
+
1166
+ /**
1167
+ * Returns the specified element style property
1168
+ * @param {HTMLElement} el the element
1169
+ * @param {String} styleProp the style property
1170
+ * @return {String} The value of the style property
1171
+ */
1172
+ getStyle: function(el, styleProp) {
1173
+ return Ext.fly(el).getStyle(styleProp);
1174
+ },
1175
+
1176
+ /**
1177
+ * Gets the scrollTop
1178
+ * @return {Number} the document's scrollTop
1179
+ */
1180
+ getScrollTop: function () {
1181
+ return this.getScroll().top;
1182
+ },
1183
+
1184
+ /**
1185
+ * Gets the scrollLeft
1186
+ * @return {Number} the document's scrollTop
1187
+ */
1188
+ getScrollLeft: function () {
1189
+ return this.getScroll().left;
1190
+ },
1191
+
1192
+ /**
1193
+ * Sets the x/y position of an element to the location of the
1194
+ * target element.
1195
+ * @param {HTMLElement} moveEl The element to move
1196
+ * @param {HTMLElement} targetEl The position reference element
1197
+ */
1198
+ moveToEl: function (moveEl, targetEl) {
1199
+ var aCoord = Ext.Element.getXY(targetEl);
1200
+ Ext.Element.setXY(moveEl, aCoord);
1201
+ },
1202
+
1203
+ /**
1204
+ * Numeric array sort function
1205
+ * @param {Number} a
1206
+ * @param {Number} b
1207
+ * @returns {Number} positive, negative or 0
1208
+ */
1209
+ numericSort: function(a, b) {
1210
+ return (a - b);
1211
+ },
1212
+
1213
+ /**
1214
+ * @property {Number} _timeoutCount
1215
+ * Internal counter
1216
+ * @private
1217
+ */
1218
+ _timeoutCount: 0,
1219
+
1220
+ /**
1221
+ * Trying to make the load order less important. Without this we get
1222
+ * an error if this file is loaded before the Event Utility.
1223
+ * @private
1224
+ */
1225
+ _addListeners: function() {
1226
+ if ( document ) {
1227
+ this._onLoad();
1228
+ } else {
1229
+ if (this._timeoutCount <= 2000) {
1230
+ setTimeout(this._addListeners, 10);
1231
+ if (document && document.body) {
1232
+ this._timeoutCount += 1;
1233
+ }
1234
+ }
1235
+ }
1236
+ },
1237
+
1238
+ /**
1239
+ * Recursively searches the immediate parent and all child nodes for
1240
+ * the handle element in order to determine wheter or not it was
1241
+ * clicked.
1242
+ * @param {HTMLElement} node the html element to inspect
1243
+ */
1244
+ handleWasClicked: function(node, id) {
1245
+ if (this.isHandle(id, node.id)) {
1246
+ return true;
1247
+ } else {
1248
+ // check to see if this is a text node child of the one we want
1249
+ var p = node.parentNode;
1250
+
1251
+ while (p) {
1252
+ if (this.isHandle(id, p.id)) {
1253
+ return true;
1254
+ } else {
1255
+ p = p.parentNode;
1256
+ }
1257
+ }
1258
+ }
1259
+
1260
+ return false;
1261
+ }
1262
+ }, function() {
1263
+ this._addListeners();
1264
+ });