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,239 @@
1
+ /**
2
+ * Provides attractive and customizable tooltips for any element. The QuickTips
3
+ * singleton is used to configure and manage tooltips globally for multiple elements
4
+ * in a generic manner. To create individual tooltips with maximum customizability,
5
+ * you should consider either {@link Ext.tip.Tip} or {@link Ext.tip.ToolTip}.
6
+ *
7
+ * Quicktips can be configured via tag attributes directly in markup, or by
8
+ * registering quick tips programmatically via the {@link #register} method.
9
+ *
10
+ * The singleton's instance of {@link Ext.tip.QuickTip} is available via
11
+ * {@link #getQuickTip}, and supports all the methods, and all the all the
12
+ * configuration properties of Ext.tip.QuickTip. These settings will apply to all
13
+ * tooltips shown by the singleton.
14
+ *
15
+ * Below is the summary of the configuration properties which can be used.
16
+ * For detailed descriptions see the config options for the
17
+ * {@link Ext.tip.QuickTip QuickTip} class
18
+ *
19
+ * ## QuickTips singleton configs (all are optional)
20
+ *
21
+ * - `dismissDelay`
22
+ * - `hideDelay`
23
+ * - `maxWidth`
24
+ * - `minWidth`
25
+ * - `showDelay`
26
+ * - `trackMouse`
27
+ *
28
+ * ## Target element configs (optional unless otherwise noted)
29
+ *
30
+ * - `autoHide`
31
+ * - `cls`
32
+ * - `dismissDelay` (overrides singleton value)
33
+ * - `target` (required)
34
+ * - `text` (required)
35
+ * - `title`
36
+ * - `width`
37
+ *
38
+ * Here is an example showing how some of these config options could be used:
39
+ *
40
+ * @example
41
+ * // Init the singleton. Any tag-based quick tips will start working.
42
+ * Ext.tip.QuickTipManager.init();
43
+ *
44
+ * // Apply a set of config properties to the singleton
45
+ * Ext.apply(Ext.tip.QuickTipManager.getQuickTip(), {
46
+ * maxWidth: 200,
47
+ * minWidth: 100,
48
+ * showDelay: 50 // Show 50ms after entering target
49
+ * });
50
+ *
51
+ * // Create a small panel to add a quick tip to
52
+ * Ext.create('Ext.container.Container', {
53
+ * id: 'quickTipContainer',
54
+ * width: 200,
55
+ * height: 150,
56
+ * style: {
57
+ * backgroundColor:'#000000'
58
+ * },
59
+ * renderTo: Ext.getBody()
60
+ * });
61
+ *
62
+ *
63
+ * // Manually register a quick tip for a specific element
64
+ * Ext.tip.QuickTipManager.register({
65
+ * target: 'quickTipContainer',
66
+ * title: 'My Tooltip',
67
+ * text: 'This tooltip was added in code',
68
+ * width: 100,
69
+ * dismissDelay: 10000 // Hide after 10 seconds hover
70
+ * });
71
+ *
72
+ * To register a quick tip in markup, you simply add one or more of the valid QuickTip
73
+ * attributes prefixed with the **data-** namespace. The HTML element itself is
74
+ * automatically set as the quick tip target. Here is the summary of supported attributes
75
+ * (optional unless otherwise noted):
76
+ *
77
+ * - `hide`: Specifying "user" is equivalent to setting autoHide = false.
78
+ * Any other value will be the same as autoHide = true.
79
+ * - `qclass`: A CSS class to be applied to the quick tip
80
+ * (equivalent to the 'cls' target element config).
81
+ * - `qtip (required)`: The quick tip text (equivalent to the 'text' target element config).
82
+ * - `qtitle`: The quick tip title (equivalent to the 'title' target element config).
83
+ * - `qwidth`: The quick tip width (equivalent to the 'width' target element config).
84
+ *
85
+ * Here is an example of configuring an HTML element to display a tooltip from markup:
86
+ *
87
+ * // Add a quick tip to an HTML button
88
+ * <input type="button" value="OK" data-qtitle="OK Button" data-qwidth="100"
89
+ * data-qtip="This is a quick tip from markup!"></input>
90
+ *
91
+ * @singleton
92
+ */
93
+ Ext.define('Ext.tip.QuickTipManager', (function() {
94
+ var tip,
95
+ disabled = false;
96
+
97
+ return {
98
+ requires: ['Ext.tip.QuickTip'],
99
+ singleton: true,
100
+ alternateClassName: 'Ext.QuickTips',
101
+
102
+ /**
103
+ * Initializes the global QuickTips instance and prepare any quick tips.
104
+ * @param {Boolean} [autoRender=true] True to render the QuickTips container
105
+ * immediately to preload images.
106
+ * @param {Object} [config] config object for the created QuickTip. By
107
+ * default, the {@link Ext.tip.QuickTip QuickTip} class is instantiated, but this can
108
+ * be changed by supplying an xtype property or a className property in this object.
109
+ * All other properties on this object are configuration for the created component.
110
+ */
111
+ init : function (autoRender, config) {
112
+ if (!tip) {
113
+ if (!Ext.isReady) {
114
+ Ext.onReady(function(){
115
+ Ext.tip.QuickTipManager.init(autoRender, config);
116
+ });
117
+ return;
118
+ }
119
+
120
+ var tipConfig = Ext.apply({ disabled: disabled, id: 'ext-quicktips-tip' }, config),
121
+ className = tipConfig.className,
122
+ xtype = tipConfig.xtype;
123
+
124
+ if (className) {
125
+ delete tipConfig.className;
126
+ } else if (xtype) {
127
+ className = 'widget.' + xtype;
128
+ delete tipConfig.xtype;
129
+ }
130
+
131
+ if (autoRender !== false) {
132
+ tipConfig.renderTo = document.body;
133
+
134
+ //<debug>
135
+ if (tipConfig.renderTo.tagName.toUpperCase() != 'BODY') { // e.g., == 'FRAMESET'
136
+ Ext.Error.raise({
137
+ sourceClass: 'Ext.tip.QuickTipManager',
138
+ sourceMethod: 'init',
139
+ msg: 'Cannot init QuickTipManager: no document body'
140
+ });
141
+ }
142
+ //</debug>
143
+ }
144
+
145
+ tip = Ext.create(className || 'Ext.tip.QuickTip', tipConfig);
146
+ }
147
+ },
148
+
149
+ /**
150
+ * Destroys the QuickTips instance.
151
+ */
152
+ destroy: function() {
153
+ if (tip) {
154
+ var undef;
155
+ tip.destroy();
156
+ tip = undef;
157
+ }
158
+ },
159
+
160
+ // Protected method called by the dd classes
161
+ ddDisable : function(){
162
+ // don't disable it if we don't need to
163
+ if(tip && !disabled){
164
+ tip.disable();
165
+ }
166
+ },
167
+
168
+ // Protected method called by the dd classes
169
+ ddEnable : function(){
170
+ // only enable it if it hasn't been disabled
171
+ if(tip && !disabled){
172
+ tip.enable();
173
+ }
174
+ },
175
+
176
+ /**
177
+ * Enables quick tips globally.
178
+ */
179
+ enable : function(){
180
+ if(tip){
181
+ tip.enable();
182
+ }
183
+ disabled = false;
184
+ },
185
+
186
+ /**
187
+ * Disables quick tips globally.
188
+ */
189
+ disable : function(){
190
+ if(tip){
191
+ tip.disable();
192
+ }
193
+ disabled = true;
194
+ },
195
+
196
+ /**
197
+ * Returns true if quick tips are enabled, else false.
198
+ * @return {Boolean}
199
+ */
200
+ isEnabled : function(){
201
+ return tip !== undefined && !tip.disabled;
202
+ },
203
+
204
+ /**
205
+ * Gets the single {@link Ext.tip.QuickTip QuickTip} instance used to show tips
206
+ * from all registered elements.
207
+ * @return {Ext.tip.QuickTip}
208
+ */
209
+ getQuickTip : function(){
210
+ return tip;
211
+ },
212
+
213
+ /**
214
+ * Configures a new quick tip instance and assigns it to a target element. See
215
+ * {@link Ext.tip.QuickTip#register} for details.
216
+ * @param {Object} config The config object
217
+ */
218
+ register : function(){
219
+ tip.register.apply(tip, arguments);
220
+ },
221
+
222
+ /**
223
+ * Removes any registered quick tip from the target element and destroys it.
224
+ * @param {String/HTMLElement/Ext.Element} el The element from which the quick tip
225
+ * is to be removed or ID of the element.
226
+ */
227
+ unregister : function(){
228
+ tip.unregister.apply(tip, arguments);
229
+ },
230
+
231
+ /**
232
+ * Alias of {@link #register}.
233
+ * @inheritdoc Ext.tip.QuickTipManager#register
234
+ */
235
+ tips : function(){
236
+ tip.register.apply(tip, arguments);
237
+ }
238
+ };
239
+ }()));
@@ -0,0 +1,160 @@
1
+ /**
2
+ * This is the base class for {@link Ext.tip.QuickTip} and {@link Ext.tip.ToolTip} that provides the basic layout and
3
+ * positioning that all tip-based classes require. This class can be used directly for simple, statically-positioned
4
+ * tips that are displayed programmatically, or it can be extended to provide custom tip implementations.
5
+ * @xtype tip
6
+ */
7
+ Ext.define('Ext.tip.Tip', {
8
+ extend: 'Ext.panel.Panel',
9
+
10
+ alternateClassName: 'Ext.Tip',
11
+
12
+ /**
13
+ * @cfg {Boolean} [closable=false]
14
+ * True to render a close tool button into the tooltip header.
15
+ */
16
+ /**
17
+ * @cfg {Number} width
18
+ * Width in pixels of the tip. Width will be ignored if it
19
+ * exceeds the bounds of {@link #minWidth} or {@link #maxWidth}. The maximum
20
+ * supported value is 500.
21
+ *
22
+ * Defaults to auto.
23
+ */
24
+ /**
25
+ * @cfg {Number} minWidth
26
+ * The minimum width of the tip in pixels.
27
+ */
28
+ minWidth : 40,
29
+ /**
30
+ * @cfg {Number} maxWidth
31
+ * The maximum width of the tip in pixels. The maximum supported value is 500.
32
+ */
33
+ maxWidth : 300,
34
+ /**
35
+ * @cfg {Boolean/String} shadow
36
+ * True or "sides" for the default effect, "frame" for 4-way shadow, and "drop"
37
+ * for bottom-right shadow.
38
+ */
39
+ shadow : "sides",
40
+
41
+ /**
42
+ * @cfg {String} defaultAlign
43
+ * **Experimental**. The default {@link Ext.Element#alignTo} anchor position value
44
+ * for this tip relative to its element of origin.
45
+ */
46
+ defaultAlign : "tl-bl?",
47
+ /**
48
+ * @cfg {Boolean} constrainPosition
49
+ * If true, then the tooltip will be automatically constrained to stay within
50
+ * the browser viewport.
51
+ */
52
+ constrainPosition : true,
53
+
54
+ // private panel overrides
55
+ autoRender: true,
56
+ hidden: true,
57
+ baseCls: Ext.baseCSSPrefix + 'tip',
58
+ floating: {
59
+ shadow: true,
60
+ shim: true,
61
+ constrain: true
62
+ },
63
+ focusOnToFront: false,
64
+
65
+ /**
66
+ * @cfg {String} closeAction
67
+ * The action to take when the close header tool is clicked:
68
+ *
69
+ * - **{@link #method-destroy}** : {@link #method-remove remove} the window from the DOM and
70
+ * {@link Ext.Component#method-destroy destroy} it and all descendant Components. The
71
+ * window will **not** be available to be redisplayed via the {@link #method-show} method.
72
+ *
73
+ * - **{@link #method-hide}** : **Default.** {@link #method-hide} the window by setting visibility
74
+ * to hidden and applying negative offsets. The window will be available to be
75
+ * redisplayed via the {@link #method-show} method.
76
+ *
77
+ * **Note:** This behavior has changed! setting *does* affect the {@link #method-close} method
78
+ * which will invoke the approriate closeAction.
79
+ */
80
+ closeAction: 'hide',
81
+
82
+ ariaRole: 'tooltip',
83
+
84
+ // Flag to Renderable to always look up the framing styles for this Component
85
+ alwaysFramed: true,
86
+
87
+ frameHeader: false,
88
+
89
+ initComponent: function() {
90
+ var me = this;
91
+
92
+ me.floating = Ext.apply({}, {shadow: me.shadow}, me.self.prototype.floating);
93
+ me.callParent(arguments);
94
+
95
+ // Or in the deprecated config. Floating.doConstrain only constrains if the constrain property is truthy.
96
+ me.constrain = me.constrain || me.constrainPosition;
97
+ },
98
+
99
+ /**
100
+ * Shows this tip at the specified XY position. Example usage:
101
+ *
102
+ * // Show the tip at x:50 and y:100
103
+ * tip.showAt([50,100]);
104
+ *
105
+ * @param {Number[]} xy An array containing the x and y coordinates
106
+ */
107
+ showAt : function(xy){
108
+ var me = this;
109
+ this.callParent(arguments);
110
+ // Show may have been vetoed.
111
+ if (me.isVisible()) {
112
+ me.setPagePosition(xy[0], xy[1]);
113
+ if (me.constrainPosition || me.constrain) {
114
+ me.doConstrain();
115
+ }
116
+ me.toFront(true);
117
+ }
118
+ },
119
+
120
+ /**
121
+ * **Experimental**. Shows this tip at a position relative to another element using
122
+ * a standard {@link Ext.Element#alignTo} anchor position value. Example usage:
123
+ *
124
+ * // Show the tip at the default position ('tl-br?')
125
+ * tip.showBy('my-el');
126
+ *
127
+ * // Show the tip's top-left corner anchored to the element's top-right corner
128
+ * tip.showBy('my-el', 'tl-tr');
129
+ *
130
+ * @param {String/HTMLElement/Ext.Element} el An HTMLElement, Ext.Element or string
131
+ * id of the target element to align to.
132
+ *
133
+ * @param {String} [position] A valid {@link Ext.Element#alignTo} anchor position.
134
+ *
135
+ * Defaults to 'tl-br?' or {@link #defaultAlign} if specified.
136
+ */
137
+ showBy : function(el, pos) {
138
+ this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign));
139
+ },
140
+
141
+ /**
142
+ * @private
143
+ * Set Tip draggable using base Component's draggability
144
+ */
145
+ initDraggable : function(){
146
+ var me = this;
147
+ me.draggable = {
148
+ el: me.getDragEl(),
149
+ delegate: me.header.el,
150
+ constrain: me,
151
+ constrainTo: me.el.getScopeParent()
152
+ };
153
+ // Important: Bypass Panel's initDraggable. Call direct to Component's implementation.
154
+ Ext.Component.prototype.initDraggable.call(me);
155
+ },
156
+
157
+ // Tip does not ghost. Drag is "live"
158
+ ghost: undefined,
159
+ unghost: undefined
160
+ });
@@ -0,0 +1,691 @@
1
+ /**
2
+ * ToolTip is a {@link Ext.tip.Tip} implementation that handles the common case of displaying a
3
+ * tooltip when hovering over a certain element or elements on the page. It allows fine-grained
4
+ * control over the tooltip's alignment relative to the target element or mouse, and the timing
5
+ * of when it is automatically shown and hidden.
6
+ *
7
+ * This implementation does **not** have a built-in method of automatically populating the tooltip's
8
+ * text based on the target element; you must either configure a fixed {@link #html} value for each
9
+ * ToolTip instance, or implement custom logic (e.g. in a {@link #beforeshow} event listener) to
10
+ * generate the appropriate tooltip content on the fly. See {@link Ext.tip.QuickTip} for a more
11
+ * convenient way of automatically populating and configuring a tooltip based on specific DOM
12
+ * attributes of each target element.
13
+ *
14
+ * # Basic Example
15
+ *
16
+ * var tip = Ext.create('Ext.tip.ToolTip', {
17
+ * target: 'clearButton',
18
+ * html: 'Press this button to clear the form'
19
+ * });
20
+ *
21
+ * {@img Ext.tip.ToolTip/Ext.tip.ToolTip1.png Basic Ext.tip.ToolTip}
22
+ *
23
+ * # Delegation
24
+ *
25
+ * In addition to attaching a ToolTip to a single element, you can also use delegation to attach
26
+ * one ToolTip to many elements under a common parent. This is more efficient than creating many
27
+ * ToolTip instances. To do this, point the {@link #target} config to a common ancestor of all the
28
+ * elements, and then set the {@link #delegate} config to a CSS selector that will select all the
29
+ * appropriate sub-elements.
30
+ *
31
+ * When using delegation, it is likely that you will want to programmatically change the content
32
+ * of the ToolTip based on each delegate element; you can do this by implementing a custom
33
+ * listener for the {@link #beforeshow} event. Example:
34
+ *
35
+ * var store = Ext.create('Ext.data.ArrayStore', {
36
+ * fields: ['company', 'price', 'change'],
37
+ * data: [
38
+ * ['3m Co', 71.72, 0.02],
39
+ * ['Alcoa Inc', 29.01, 0.42],
40
+ * ['Altria Group Inc', 83.81, 0.28],
41
+ * ['American Express Company', 52.55, 0.01],
42
+ * ['American International Group, Inc.', 64.13, 0.31],
43
+ * ['AT&T Inc.', 31.61, -0.48]
44
+ * ]
45
+ * });
46
+ *
47
+ * var grid = Ext.create('Ext.grid.Panel', {
48
+ * title: 'Array Grid',
49
+ * store: store,
50
+ * columns: [
51
+ * {text: 'Company', flex: 1, dataIndex: 'company'},
52
+ * {text: 'Price', width: 75, dataIndex: 'price'},
53
+ * {text: 'Change', width: 75, dataIndex: 'change'}
54
+ * ],
55
+ * height: 200,
56
+ * width: 400,
57
+ * renderTo: Ext.getBody()
58
+ * });
59
+ *
60
+ * grid.getView().on('render', function(view) {
61
+ * view.tip = Ext.create('Ext.tip.ToolTip', {
62
+ * // The overall target element.
63
+ * target: view.el,
64
+ * // Each grid row causes its own seperate show and hide.
65
+ * delegate: view.itemSelector,
66
+ * // Moving within the row should not hide the tip.
67
+ * trackMouse: true,
68
+ * // Render immediately so that tip.body can be referenced prior to the first show.
69
+ * renderTo: Ext.getBody(),
70
+ * listeners: {
71
+ * // Change content dynamically depending on which element triggered the show.
72
+ * beforeshow: function updateTipBody(tip) {
73
+ * tip.update('Over company "' + view.getRecord(tip.triggerElement).get('company') + '"');
74
+ * }
75
+ * }
76
+ * });
77
+ * });
78
+ *
79
+ * {@img Ext.tip.ToolTip/Ext.tip.ToolTip2.png Ext.tip.ToolTip with delegation}
80
+ *
81
+ * # Alignment
82
+ *
83
+ * The following configuration properties allow control over how the ToolTip is aligned relative to
84
+ * the target element and/or mouse pointer:
85
+ *
86
+ * - {@link #anchor}
87
+ * - {@link #anchorToTarget}
88
+ * - {@link #anchorOffset}
89
+ * - {@link #trackMouse}
90
+ * - {@link #mouseOffset}
91
+ *
92
+ * # Showing/Hiding
93
+ *
94
+ * The following configuration properties allow control over how and when the ToolTip is automatically
95
+ * shown and hidden:
96
+ *
97
+ * - {@link #autoHide}
98
+ * - {@link #showDelay}
99
+ * - {@link #hideDelay}
100
+ * - {@link #dismissDelay}
101
+ *
102
+ * @docauthor Jason Johnston <jason@sencha.com>
103
+ */
104
+ Ext.define('Ext.tip.ToolTip', {
105
+ extend: 'Ext.tip.Tip',
106
+ alias: 'widget.tooltip',
107
+ alternateClassName: 'Ext.ToolTip',
108
+ /**
109
+ * @property {HTMLElement} triggerElement
110
+ * When a ToolTip is configured with the `{@link #delegate}`
111
+ * option to cause selected child elements of the `{@link #target}`
112
+ * Element to each trigger a seperate show event, this property is set to
113
+ * the DOM element which triggered the show.
114
+ */
115
+ /**
116
+ * @cfg {HTMLElement/Ext.Element/String} target
117
+ * The target element or string id to monitor for mouseover events to trigger
118
+ * showing this ToolTip.
119
+ */
120
+ /**
121
+ * @cfg {Boolean} [autoHide=true]
122
+ * True to automatically hide the tooltip after the
123
+ * mouse exits the target element or after the `{@link #dismissDelay}`
124
+ * has expired if set. If `{@link #closable} = true`
125
+ * a close tool button will be rendered into the tooltip header.
126
+ */
127
+ autoHide: true,
128
+
129
+ /**
130
+ * @cfg {Number} showDelay
131
+ * Delay in milliseconds before the tooltip displays after the mouse enters the target element.
132
+ */
133
+ showDelay: 500,
134
+ /**
135
+ * @cfg {Number} hideDelay
136
+ * Delay in milliseconds after the mouse exits the target element but before the tooltip actually hides.
137
+ * Set to 0 for the tooltip to hide immediately.
138
+ */
139
+ hideDelay: 200,
140
+ /**
141
+ * @cfg {Number} dismissDelay
142
+ * Delay in milliseconds before the tooltip automatically hides. To disable automatic hiding, set
143
+ * dismissDelay = 0.
144
+ */
145
+ dismissDelay: 5000,
146
+ /**
147
+ * @cfg {Number[]} [mouseOffset=[15,18]]
148
+ * An XY offset from the mouse position where the tooltip should be shown.
149
+ */
150
+ /**
151
+ * @cfg {Boolean} trackMouse
152
+ * True to have the tooltip follow the mouse as it moves over the target element.
153
+ */
154
+ trackMouse: false,
155
+ /**
156
+ * @cfg {String} anchor
157
+ * If specified, indicates that the tip should be anchored to a
158
+ * particular side of the target element or mouse pointer ("top", "right", "bottom",
159
+ * or "left"), with an arrow pointing back at the target or mouse pointer. If
160
+ * {@link #constrainPosition} is enabled, this will be used as a preferred value
161
+ * only and may be flipped as needed.
162
+ */
163
+ /**
164
+ * @cfg {Boolean} anchorToTarget
165
+ * True to anchor the tooltip to the target element, false to anchor it relative to the mouse coordinates.
166
+ * When `anchorToTarget` is true, use `{@link #defaultAlign}` to control tooltip alignment to the
167
+ * target element. When `anchorToTarget` is false, use `{@link #anchor}` instead to control alignment.
168
+ */
169
+ anchorToTarget: true,
170
+ /**
171
+ * @cfg {Number} anchorOffset
172
+ * A numeric pixel value used to offset the default position of the anchor arrow. When the anchor
173
+ * position is on the top or bottom of the tooltip, `anchorOffset` will be used as a horizontal offset.
174
+ * Likewise, when the anchor position is on the left or right side, `anchorOffset` will be used as
175
+ * a vertical offset.
176
+ */
177
+ anchorOffset: 0,
178
+ /**
179
+ * @cfg {String} delegate
180
+ *
181
+ * A {@link Ext.DomQuery DomQuery} selector which allows selection of individual elements within the
182
+ * `{@link #target}` element to trigger showing and hiding the ToolTip as the mouse moves within the
183
+ * target.
184
+ *
185
+ * When specified, the child element of the target which caused a show event is placed into the
186
+ * `{@link #triggerElement}` property before the ToolTip is shown.
187
+ *
188
+ * This may be useful when a Component has regular, repeating elements in it, each of which need a
189
+ * ToolTip which contains information specific to that element.
190
+ *
191
+ * See the delegate example in class documentation of {@link Ext.tip.ToolTip}.
192
+ */
193
+
194
+ // private
195
+ targetCounter: 0,
196
+ quickShowInterval: 250,
197
+
198
+ // private
199
+ initComponent: function() {
200
+ var me = this;
201
+ me.callParent(arguments);
202
+ me.lastActive = new Date();
203
+ me.setTarget(me.target);
204
+ me.origAnchor = me.anchor;
205
+ },
206
+
207
+ // private
208
+ onRender: function(ct, position) {
209
+ var me = this;
210
+ me.callParent(arguments);
211
+ me.anchorCls = Ext.baseCSSPrefix + 'tip-anchor-' + me.getAnchorPosition();
212
+ me.anchorEl = me.el.createChild({
213
+ cls: Ext.baseCSSPrefix + 'tip-anchor ' + me.anchorCls
214
+ });
215
+ },
216
+
217
+ /**
218
+ * Binds this ToolTip to the specified element. The tooltip will be displayed when the mouse moves over the element.
219
+ * @param {String/HTMLElement/Ext.Element} t The Element, HtmlElement, or ID of an element to bind to
220
+ */
221
+ setTarget: function(target) {
222
+ var me = this,
223
+ t = Ext.get(target),
224
+ tg;
225
+
226
+ if (me.target) {
227
+ tg = Ext.get(me.target);
228
+ me.mun(tg, 'mouseover', me.onTargetOver, me);
229
+ me.mun(tg, 'mouseout', me.onTargetOut, me);
230
+ me.mun(tg, 'mousemove', me.onMouseMove, me);
231
+ }
232
+
233
+ me.target = t;
234
+ if (t) {
235
+
236
+ me.mon(t, {
237
+ // TODO - investigate why IE6/7 seem to fire recursive resize in e.getXY
238
+ // breaking QuickTip#onTargetOver (EXTJSIV-1608)
239
+ freezeEvent: true,
240
+
241
+ mouseover: me.onTargetOver,
242
+ mouseout: me.onTargetOut,
243
+ mousemove: me.onMouseMove,
244
+ scope: me
245
+ });
246
+ }
247
+ if (me.anchor) {
248
+ me.anchorTarget = me.target;
249
+ }
250
+ },
251
+
252
+ // private
253
+ onMouseMove: function(e) {
254
+ var me = this,
255
+ t = me.delegate ? e.getTarget(me.delegate) : me.triggerElement = true,
256
+ xy;
257
+ if (t) {
258
+ me.targetXY = e.getXY();
259
+ if (t === me.triggerElement) {
260
+ if (!me.hidden && me.trackMouse) {
261
+ xy = me.getTargetXY();
262
+ if (me.constrainPosition) {
263
+ xy = me.el.adjustForConstraints(xy, me.el.getScopeParent());
264
+ }
265
+ me.setPagePosition(xy);
266
+ }
267
+ } else {
268
+ me.hide();
269
+ me.lastActive = new Date(0);
270
+ me.onTargetOver(e);
271
+ }
272
+ } else if ((!me.closable && me.isVisible()) && me.autoHide !== false) {
273
+ me.hide();
274
+ }
275
+ },
276
+
277
+ // private
278
+ getTargetXY: function() {
279
+ var me = this,
280
+ mouseOffset,
281
+ offsets, xy, dw, dh, de, bd, scrollX, scrollY, axy, sz, constrainPosition;
282
+ if (me.delegate) {
283
+ me.anchorTarget = me.triggerElement;
284
+ }
285
+ if (me.anchor) {
286
+ me.targetCounter++;
287
+ offsets = me.getOffsets();
288
+ xy = (me.anchorToTarget && !me.trackMouse) ? me.el.getAlignToXY(me.anchorTarget, me.getAnchorAlign()) : me.targetXY;
289
+ dw = Ext.Element.getViewWidth() - 5;
290
+ dh = Ext.Element.getViewHeight() - 5;
291
+ de = document.documentElement;
292
+ bd = document.body;
293
+ scrollX = (de.scrollLeft || bd.scrollLeft || 0) + 5;
294
+ scrollY = (de.scrollTop || bd.scrollTop || 0) + 5;
295
+ axy = [xy[0] + offsets[0], xy[1] + offsets[1]];
296
+ sz = me.getSize();
297
+ constrainPosition = me.constrainPosition;
298
+
299
+ me.anchorEl.removeCls(me.anchorCls);
300
+
301
+ if (me.targetCounter < 2 && constrainPosition) {
302
+ if (axy[0] < scrollX) {
303
+ if (me.anchorToTarget) {
304
+ me.defaultAlign = 'l-r';
305
+ if (me.mouseOffset) {
306
+ me.mouseOffset[0] *= -1;
307
+ }
308
+ }
309
+ me.anchor = 'left';
310
+ return me.getTargetXY();
311
+ }
312
+ if (axy[0] + sz.width > dw) {
313
+ if (me.anchorToTarget) {
314
+ me.defaultAlign = 'r-l';
315
+ if (me.mouseOffset) {
316
+ me.mouseOffset[0] *= -1;
317
+ }
318
+ }
319
+ me.anchor = 'right';
320
+ return me.getTargetXY();
321
+ }
322
+ if (axy[1] < scrollY) {
323
+ if (me.anchorToTarget) {
324
+ me.defaultAlign = 't-b';
325
+ if (me.mouseOffset) {
326
+ me.mouseOffset[1] *= -1;
327
+ }
328
+ }
329
+ me.anchor = 'top';
330
+ return me.getTargetXY();
331
+ }
332
+ if (axy[1] + sz.height > dh) {
333
+ if (me.anchorToTarget) {
334
+ me.defaultAlign = 'b-t';
335
+ if (me.mouseOffset) {
336
+ me.mouseOffset[1] *= -1;
337
+ }
338
+ }
339
+ me.anchor = 'bottom';
340
+ return me.getTargetXY();
341
+ }
342
+ }
343
+
344
+ me.anchorCls = Ext.baseCSSPrefix + 'tip-anchor-' + me.getAnchorPosition();
345
+ me.anchorEl.addCls(me.anchorCls);
346
+ me.targetCounter = 0;
347
+ return axy;
348
+ } else {
349
+ mouseOffset = me.getMouseOffset();
350
+ return (me.targetXY) ? [me.targetXY[0] + mouseOffset[0], me.targetXY[1] + mouseOffset[1]] : mouseOffset;
351
+ }
352
+ },
353
+
354
+ getMouseOffset: function() {
355
+ var me = this,
356
+ offset = me.anchor ? [0, 0] : [15, 18];
357
+ if (me.mouseOffset) {
358
+ offset[0] += me.mouseOffset[0];
359
+ offset[1] += me.mouseOffset[1];
360
+ }
361
+ return offset;
362
+ },
363
+
364
+ // private
365
+ getAnchorPosition: function() {
366
+ var me = this,
367
+ m;
368
+ if (me.anchor) {
369
+ me.tipAnchor = me.anchor.charAt(0);
370
+ } else {
371
+ m = me.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);
372
+ //<debug>
373
+ if (!m) {
374
+ Ext.Error.raise('The AnchorTip.defaultAlign value "' + me.defaultAlign + '" is invalid.');
375
+ }
376
+ //</debug>
377
+ me.tipAnchor = m[1].charAt(0);
378
+ }
379
+
380
+ switch (me.tipAnchor) {
381
+ case 't':
382
+ return 'top';
383
+ case 'b':
384
+ return 'bottom';
385
+ case 'r':
386
+ return 'right';
387
+ }
388
+ return 'left';
389
+ },
390
+
391
+ // private
392
+ getAnchorAlign: function() {
393
+ switch (this.anchor) {
394
+ case 'top':
395
+ return 'tl-bl';
396
+ case 'left':
397
+ return 'tl-tr';
398
+ case 'right':
399
+ return 'tr-tl';
400
+ default:
401
+ return 'bl-tl';
402
+ }
403
+ },
404
+
405
+ // private
406
+ getOffsets: function() {
407
+ var me = this,
408
+ mouseOffset,
409
+ offsets,
410
+ ap = me.getAnchorPosition().charAt(0);
411
+ if (me.anchorToTarget && !me.trackMouse) {
412
+ switch (ap) {
413
+ case 't':
414
+ offsets = [0, 9];
415
+ break;
416
+ case 'b':
417
+ offsets = [0, -13];
418
+ break;
419
+ case 'r':
420
+ offsets = [ - 13, 0];
421
+ break;
422
+ default:
423
+ offsets = [9, 0];
424
+ break;
425
+ }
426
+ } else {
427
+ switch (ap) {
428
+ case 't':
429
+ offsets = [ - 15 - me.anchorOffset, 30];
430
+ break;
431
+ case 'b':
432
+ offsets = [ - 19 - me.anchorOffset, -13 - me.el.dom.offsetHeight];
433
+ break;
434
+ case 'r':
435
+ offsets = [ - 15 - me.el.dom.offsetWidth, -13 - me.anchorOffset];
436
+ break;
437
+ default:
438
+ offsets = [25, -13 - me.anchorOffset];
439
+ break;
440
+ }
441
+ }
442
+ mouseOffset = me.getMouseOffset();
443
+ offsets[0] += mouseOffset[0];
444
+ offsets[1] += mouseOffset[1];
445
+
446
+ return offsets;
447
+ },
448
+
449
+ // private
450
+ onTargetOver: function(e) {
451
+ var me = this,
452
+ t;
453
+
454
+ if (me.disabled || e.within(me.target.dom, true)) {
455
+ return;
456
+ }
457
+ t = e.getTarget(me.delegate);
458
+ if (t) {
459
+ me.triggerElement = t;
460
+ me.clearTimer('hide');
461
+ me.targetXY = e.getXY();
462
+ me.delayShow();
463
+ }
464
+ },
465
+
466
+ // private
467
+ delayShow: function() {
468
+ var me = this;
469
+ if (me.hidden && !me.showTimer) {
470
+ if (Ext.Date.getElapsed(me.lastActive) < me.quickShowInterval) {
471
+ me.show();
472
+ } else {
473
+ me.showTimer = Ext.defer(me.show, me.showDelay, me);
474
+ }
475
+ }
476
+ else if (!me.hidden && me.autoHide !== false) {
477
+ me.show();
478
+ }
479
+ },
480
+
481
+ // private
482
+ onTargetOut: function(e) {
483
+ var me = this;
484
+
485
+ // If disabled, moving within the current target, ignore the mouseout
486
+ // EventObject.within is the only correct way to determine this.
487
+ if (me.disabled || e.within(me.target.dom, true)) {
488
+ return;
489
+ }
490
+ me.clearTimer('show');
491
+ if (me.autoHide !== false) {
492
+ me.delayHide();
493
+ }
494
+ },
495
+
496
+ // private
497
+ delayHide: function() {
498
+ var me = this;
499
+ if (!me.hidden && !me.hideTimer) {
500
+ me.hideTimer = Ext.defer(me.hide, me.hideDelay, me);
501
+ }
502
+ },
503
+
504
+ /**
505
+ * Hides this tooltip if visible.
506
+ */
507
+ hide: function() {
508
+ var me = this;
509
+ me.clearTimer('dismiss');
510
+ me.lastActive = new Date();
511
+ if (me.anchorEl) {
512
+ me.anchorEl.hide();
513
+ }
514
+ me.callParent(arguments);
515
+ delete me.triggerElement;
516
+ },
517
+
518
+ /**
519
+ * Shows this tooltip at the current event target XY position.
520
+ */
521
+ show: function() {
522
+ var me = this;
523
+
524
+ // Show this Component first, so that sizing can be calculated
525
+ // pre-show it off screen so that the el will have dimensions
526
+ this.callParent();
527
+ if (this.hidden === false) {
528
+ me.setPagePosition(-10000, -10000);
529
+
530
+ if (me.anchor) {
531
+ me.anchor = me.origAnchor;
532
+ }
533
+
534
+ if (!me.calledFromShowAt) {
535
+ me.showAt(me.getTargetXY());
536
+ }
537
+
538
+ if (me.anchor) {
539
+ me.syncAnchor();
540
+ me.anchorEl.show();
541
+ } else {
542
+ me.anchorEl.hide();
543
+ }
544
+ }
545
+ },
546
+
547
+ // inherit docs
548
+ showAt: function(xy) {
549
+ var me = this;
550
+ me.lastActive = new Date();
551
+ me.clearTimers();
552
+ me.calledFromShowAt = true;
553
+
554
+ // Only call if this is hidden. May have been called from show above.
555
+ if (!me.isVisible()) {
556
+ this.callParent(arguments);
557
+ }
558
+
559
+ // Show may have been vetoed.
560
+ if (me.isVisible()) {
561
+ me.setPagePosition(xy[0], xy[1]);
562
+ if (me.constrainPosition || me.constrain) {
563
+ me.doConstrain();
564
+ }
565
+ me.toFront(true);
566
+ me.el.sync(true);
567
+ if (me.dismissDelay && me.autoHide !== false) {
568
+ me.dismissTimer = Ext.defer(me.hide, me.dismissDelay, me);
569
+ }
570
+ if (me.anchor) {
571
+ me.syncAnchor();
572
+ if (!me.anchorEl.isVisible()) {
573
+ me.anchorEl.show();
574
+ }
575
+ } else {
576
+ me.anchorEl.hide();
577
+ }
578
+ }
579
+ delete me.calledFromShowAt;
580
+ },
581
+
582
+ // private
583
+ syncAnchor: function() {
584
+ var me = this,
585
+ anchorPos,
586
+ targetPos,
587
+ offset;
588
+ switch (me.tipAnchor.charAt(0)) {
589
+ case 't':
590
+ anchorPos = 'b';
591
+ targetPos = 'tl';
592
+ offset = [20 + me.anchorOffset, 1];
593
+ break;
594
+ case 'r':
595
+ anchorPos = 'l';
596
+ targetPos = 'tr';
597
+ offset = [ - 1, 12 + me.anchorOffset];
598
+ break;
599
+ case 'b':
600
+ anchorPos = 't';
601
+ targetPos = 'bl';
602
+ offset = [20 + me.anchorOffset, -1];
603
+ break;
604
+ default:
605
+ anchorPos = 'r';
606
+ targetPos = 'tl';
607
+ offset = [1, 12 + me.anchorOffset];
608
+ break;
609
+ }
610
+ me.anchorEl.alignTo(me.el, anchorPos + '-' + targetPos, offset);
611
+ me.anchorEl.setStyle('z-index', parseInt(me.el.getZIndex(), 10) || 0 + 1).setVisibilityMode(Ext.Element.DISPLAY);
612
+ },
613
+
614
+ // private
615
+ setPagePosition: function(x, y) {
616
+ var me = this;
617
+ me.callParent(arguments);
618
+ if (me.anchor) {
619
+ me.syncAnchor();
620
+ }
621
+ },
622
+
623
+ // private
624
+ clearTimer: function(name) {
625
+ name = name + 'Timer';
626
+ clearTimeout(this[name]);
627
+ delete this[name];
628
+ },
629
+
630
+ // private
631
+ clearTimers: function() {
632
+ var me = this;
633
+ me.clearTimer('show');
634
+ me.clearTimer('dismiss');
635
+ me.clearTimer('hide');
636
+ },
637
+
638
+ // private
639
+ onShow: function() {
640
+ var me = this;
641
+ me.callParent();
642
+ me.mon(Ext.getDoc(), 'mousedown', me.onDocMouseDown, me);
643
+ },
644
+
645
+ // private
646
+ onHide: function() {
647
+ var me = this;
648
+ me.callParent();
649
+ me.mun(Ext.getDoc(), 'mousedown', me.onDocMouseDown, me);
650
+ },
651
+
652
+ // private
653
+ onDocMouseDown: function(e) {
654
+ var me = this;
655
+ if (!me.closable && !e.within(me.el.dom)) {
656
+ me.disable();
657
+ Ext.defer(me.doEnable, 100, me);
658
+ }
659
+ },
660
+
661
+ // private
662
+ doEnable: function() {
663
+ if (!this.isDestroyed) {
664
+ this.enable();
665
+ }
666
+ },
667
+
668
+ // private
669
+ onDisable: function() {
670
+ this.callParent();
671
+ this.clearTimers();
672
+ this.hide();
673
+ },
674
+
675
+ beforeDestroy: function() {
676
+ var me = this;
677
+ me.clearTimers();
678
+ Ext.destroy(me.anchorEl);
679
+ delete me.anchorEl;
680
+ delete me.target;
681
+ delete me.anchorTarget;
682
+ delete me.triggerElement;
683
+ me.callParent();
684
+ },
685
+
686
+ // private
687
+ onDestroy: function() {
688
+ Ext.getDoc().un('mousedown', this.onDocMouseDown, this);
689
+ this.callParent();
690
+ }
691
+ });