extjs-rails 4.1.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
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
+ });