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,214 @@
1
+ /**
2
+ * @class Ext.dom.Element
3
+ */
4
+ Ext.dom.Element.override({
5
+ /**
6
+ * Returns true if this element is scrollable.
7
+ * @return {Boolean}
8
+ */
9
+ isScrollable: function() {
10
+ var dom = this.dom;
11
+ return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth;
12
+ },
13
+
14
+ /**
15
+ * Returns the current scroll position of the element.
16
+ * @return {Object} An object containing the scroll position in the format
17
+ * `{left: (scrollLeft), top: (scrollTop)}`
18
+ */
19
+ getScroll: function() {
20
+ var d = this.dom,
21
+ doc = document,
22
+ body = doc.body,
23
+ docElement = doc.documentElement,
24
+ l,
25
+ t,
26
+ ret;
27
+
28
+ if (d == doc || d == body) {
29
+ if (Ext.isIE && Ext.isStrict) {
30
+ l = docElement.scrollLeft;
31
+ t = docElement.scrollTop;
32
+ } else {
33
+ l = window.pageXOffset;
34
+ t = window.pageYOffset;
35
+ }
36
+ ret = {
37
+ left: l || (body ? body.scrollLeft : 0),
38
+ top : t || (body ? body.scrollTop : 0)
39
+ };
40
+ } else {
41
+ ret = {
42
+ left: d.scrollLeft,
43
+ top : d.scrollTop
44
+ };
45
+ }
46
+
47
+ return ret;
48
+ },
49
+
50
+ /**
51
+ * Scrolls this element by the passed delta values, optionally animating.
52
+ *
53
+ * All of the following are equivalent:
54
+ *
55
+ * el.scrollBy(10, 10, true);
56
+ * el.scrollBy([10, 10], true);
57
+ * el.scrollBy({ x: 10, y: 10 }, true);
58
+ *
59
+ * @param {Number/Number[]/Object} deltaX Either the x delta, an Array specifying x and y deltas or
60
+ * an object with "x" and "y" properties.
61
+ * @param {Number/Boolean/Object} deltaY Either the y delta, or an animate flag or config object.
62
+ * @param {Boolean/Object} animate Animate flag/config object if the delta values were passed separately.
63
+ * @return {Ext.Element} this
64
+ */
65
+ scrollBy: function(deltaX, deltaY, animate) {
66
+ var me = this,
67
+ dom = me.dom;
68
+
69
+ // Extract args if deltas were passed as an Array.
70
+ if (deltaX.length) {
71
+ animate = deltaY;
72
+ deltaY = deltaX[1];
73
+ deltaX = deltaX[0];
74
+ } else if (typeof deltaX != 'number') { // or an object
75
+ animate = deltaY;
76
+ deltaY = deltaX.y;
77
+ deltaX = deltaX.x;
78
+ }
79
+
80
+ if (deltaX) {
81
+ me.scrollTo('left', Math.max(Math.min(dom.scrollLeft + deltaX, dom.scrollWidth - dom.clientWidth), 0), animate);
82
+ }
83
+ if (deltaY) {
84
+ me.scrollTo('top', Math.max(Math.min(dom.scrollTop + deltaY, dom.scrollHeight - dom.clientHeight), 0), animate);
85
+ }
86
+
87
+ return me;
88
+ },
89
+
90
+ /**
91
+ * Scrolls this element the specified scroll point. It does NOT do bounds checking so
92
+ * if you scroll to a weird value it will try to do it. For auto bounds checking, use #scroll.
93
+ * @param {String} side Either "left" for scrollLeft values or "top" for scrollTop values.
94
+ * @param {Number} value The new scroll value
95
+ * @param {Boolean/Object} [animate] true for the default animation or a standard Element
96
+ * animation config object
97
+ * @return {Ext.Element} this
98
+ */
99
+ scrollTo: function(side, value, animate) {
100
+ //check if we're scrolling top or left
101
+ var top = /top/i.test(side),
102
+ me = this,
103
+ dom = me.dom,
104
+ obj = {},
105
+ prop;
106
+
107
+ if (!animate || !me.anim) {
108
+ // just setting the value, so grab the direction
109
+ prop = 'scroll' + (top ? 'Top' : 'Left');
110
+ dom[prop] = value;
111
+ }
112
+ else {
113
+ if (!Ext.isObject(animate)) {
114
+ animate = {};
115
+ }
116
+ obj['scroll' + (top ? 'Top' : 'Left')] = value;
117
+ me.animate(Ext.applyIf({
118
+ to: obj
119
+ }, animate));
120
+ }
121
+ return me;
122
+ },
123
+
124
+ /**
125
+ * Scrolls this element into view within the passed container.
126
+ * @param {String/HTMLElement/Ext.Element} [container=document.body] The container element
127
+ * to scroll. Should be a string (id), dom node, or Ext.Element.
128
+ * @param {Boolean} [hscroll=true] False to disable horizontal scroll.
129
+ * @return {Ext.dom.Element} this
130
+ */
131
+ scrollIntoView: function(container, hscroll) {
132
+ container = Ext.getDom(container) || Ext.getBody().dom;
133
+ var el = this.dom,
134
+ offsets = this.getOffsetsTo(container),
135
+ // el's box
136
+ left = offsets[0] + container.scrollLeft,
137
+ top = offsets[1] + container.scrollTop,
138
+ bottom = top + el.offsetHeight,
139
+ right = left + el.offsetWidth,
140
+ // ct's box
141
+ ctClientHeight = container.clientHeight,
142
+ ctScrollTop = parseInt(container.scrollTop, 10),
143
+ ctScrollLeft = parseInt(container.scrollLeft, 10),
144
+ ctBottom = ctScrollTop + ctClientHeight,
145
+ ctRight = ctScrollLeft + container.clientWidth;
146
+
147
+ if (el.offsetHeight > ctClientHeight || top < ctScrollTop) {
148
+ container.scrollTop = top;
149
+ } else if (bottom > ctBottom) {
150
+ container.scrollTop = bottom - ctClientHeight;
151
+ }
152
+ // corrects IE, other browsers will ignore
153
+ container.scrollTop = container.scrollTop;
154
+
155
+ if (hscroll !== false) {
156
+ if (el.offsetWidth > container.clientWidth || left < ctScrollLeft) {
157
+ container.scrollLeft = left;
158
+ }
159
+ else if (right > ctRight) {
160
+ container.scrollLeft = right - container.clientWidth;
161
+ }
162
+ container.scrollLeft = container.scrollLeft;
163
+ }
164
+ return this;
165
+ },
166
+
167
+ // @private
168
+ scrollChildIntoView: function(child, hscroll) {
169
+ Ext.fly(child, '_scrollChildIntoView').scrollIntoView(this, hscroll);
170
+ },
171
+
172
+ /**
173
+ * Scrolls this element the specified direction. Does bounds checking to make sure the scroll is
174
+ * within this element's scrollable range.
175
+ * @param {String} direction Possible values are:
176
+ *
177
+ * - `"l"` (or `"left"`)
178
+ * - `"r"` (or `"right"`)
179
+ * - `"t"` (or `"top"`, or `"up"`)
180
+ * - `"b"` (or `"bottom"`, or `"down"`)
181
+ *
182
+ * @param {Number} distance How far to scroll the element in pixels
183
+ * @param {Boolean/Object} [animate] true for the default animation or a standard Element
184
+ * animation config object
185
+ * @return {Boolean} Returns true if a scroll was triggered or false if the element
186
+ * was scrolled as far as it could go.
187
+ */
188
+ scroll: function(direction, distance, animate) {
189
+ if (!this.isScrollable()) {
190
+ return false;
191
+ }
192
+ var el = this.dom,
193
+ l = el.scrollLeft, t = el.scrollTop,
194
+ w = el.scrollWidth, h = el.scrollHeight,
195
+ cw = el.clientWidth, ch = el.clientHeight,
196
+ scrolled = false, v,
197
+ hash = {
198
+ l: Math.min(l + distance, w - cw),
199
+ r: v = Math.max(l - distance, 0),
200
+ t: Math.max(t - distance, 0),
201
+ b: Math.min(t + distance, h - ch)
202
+ };
203
+
204
+ hash.d = hash.b;
205
+ hash.u = hash.t;
206
+
207
+ direction = direction.substr(0, 1);
208
+ if ((v = hash[direction]) > -1) {
209
+ scrolled = true;
210
+ this.scrollTo(direction == 'l' || direction == 'r' ? 'left' : 'top', v, this.anim(animate));
211
+ }
212
+ return scrolled;
213
+ }
214
+ });
@@ -0,0 +1,792 @@
1
+ /**
2
+ * @class Ext.dom.Element
3
+ */
4
+ (function() {
5
+
6
+ var Element = Ext.dom.Element,
7
+ view = document.defaultView,
8
+ adjustDirect2DTableRe = /table-row|table-.*-group/,
9
+ INTERNAL = '_internal',
10
+ HIDDEN = 'hidden',
11
+ HEIGHT = 'height',
12
+ WIDTH = 'width',
13
+ ISCLIPPED = 'isClipped',
14
+ OVERFLOW = 'overflow',
15
+ OVERFLOWX = 'overflow-x',
16
+ OVERFLOWY = 'overflow-y',
17
+ ORIGINALCLIP = 'originalClip',
18
+ DOCORBODYRE = /#document|body/i,
19
+ // This reduces the lookup of 'me.styleHooks' by one hop in the prototype chain. It is
20
+ // the same object.
21
+ styleHooks,
22
+ edges, k, edge, borderWidth;
23
+
24
+ if (!view || !view.getComputedStyle) {
25
+ Element.prototype.getStyle = function (property, inline) {
26
+ var me = this,
27
+ dom = me.dom,
28
+ multiple = typeof property != 'string',
29
+ hooks = me.styleHooks,
30
+ prop = property,
31
+ props = prop,
32
+ len = 1,
33
+ isInline = inline,
34
+ camel, domStyle, values, hook, out, style, i;
35
+
36
+ if (multiple) {
37
+ values = {};
38
+ prop = props[0];
39
+ i = 0;
40
+ if (!(len = props.length)) {
41
+ return values;
42
+ }
43
+ }
44
+
45
+ if (!dom || dom.documentElement) {
46
+ return values || '';
47
+ }
48
+
49
+ domStyle = dom.style;
50
+
51
+ if (inline) {
52
+ style = domStyle;
53
+ } else {
54
+ style = dom.currentStyle;
55
+
56
+ // fallback to inline style if rendering context not available
57
+ if (!style) {
58
+ isInline = true;
59
+ style = domStyle;
60
+ }
61
+ }
62
+
63
+ do {
64
+ hook = hooks[prop];
65
+
66
+ if (!hook) {
67
+ hooks[prop] = hook = { name: Element.normalize(prop) };
68
+ }
69
+
70
+ if (hook.get) {
71
+ out = hook.get(dom, me, isInline, style);
72
+ } else {
73
+ camel = hook.name;
74
+
75
+ // In some cases, IE6 will throw Invalid Argument exceptions for properties
76
+ // like fontSize (/examples/tabs/tabs.html in 4.0 used to exhibit this but
77
+ // no longer does due to font style changes). There is a real cost to a try
78
+ // block, so we avoid it where possible...
79
+ if (hook.canThrow) {
80
+ try {
81
+ out = style[camel];
82
+ } catch (e) {
83
+ out = '';
84
+ }
85
+ } else {
86
+ // EXTJSIV-5657 - In IE9 quirks mode there is a chance that VML root element
87
+ // has neither `currentStyle` nor `style`. Return '' this case.
88
+ out = style ? style[camel] : '';
89
+ }
90
+ }
91
+
92
+ if (!multiple) {
93
+ return out;
94
+ }
95
+
96
+ values[prop] = out;
97
+ prop = props[++i];
98
+ } while (i < len);
99
+
100
+ return values;
101
+ };
102
+ }
103
+
104
+ Element.override({
105
+ getHeight: function(contentHeight, preciseHeight) {
106
+ var me = this,
107
+ dom = me.dom,
108
+ hidden = me.isStyle('display', 'none'),
109
+ height,
110
+ floating;
111
+
112
+ if (hidden) {
113
+ return 0;
114
+ }
115
+
116
+ height = Math.max(dom.offsetHeight, dom.clientHeight) || 0;
117
+
118
+ // IE9 Direct2D dimension rounding bug
119
+ if (Ext.supports.Direct2DBug) {
120
+ floating = me.adjustDirect2DDimension(HEIGHT);
121
+ if (preciseHeight) {
122
+ height += floating;
123
+ }
124
+ else if (floating > 0 && floating < 0.5) {
125
+ height++;
126
+ }
127
+ }
128
+
129
+ if (contentHeight) {
130
+ height -= me.getBorderWidth("tb") + me.getPadding("tb");
131
+ }
132
+
133
+ return (height < 0) ? 0 : height;
134
+ },
135
+
136
+ getWidth: function(contentWidth, preciseWidth) {
137
+ var me = this,
138
+ dom = me.dom,
139
+ hidden = me.isStyle('display', 'none'),
140
+ rect, width, floating;
141
+
142
+ if (hidden) {
143
+ return 0;
144
+ }
145
+
146
+ // Gecko will in some cases report an offsetWidth that is actually less than the width of the
147
+ // text contents, because it measures fonts with sub-pixel precision but rounds the calculated
148
+ // value down. Using getBoundingClientRect instead of offsetWidth allows us to get the precise
149
+ // subpixel measurements so we can force them to always be rounded up. See
150
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=458617
151
+ // Rounding up ensures that the width includes the full width of the text contents.
152
+ if (Ext.supports.BoundingClientRect) {
153
+ rect = dom.getBoundingClientRect();
154
+ width = rect.right - rect.left;
155
+ width = preciseWidth ? width : Math.ceil(width);
156
+ } else {
157
+ width = dom.offsetWidth;
158
+ }
159
+
160
+ width = Math.max(width, dom.clientWidth) || 0;
161
+
162
+ // IE9 Direct2D dimension rounding bug
163
+ if (Ext.supports.Direct2DBug) {
164
+ // get the fractional portion of the sub-pixel precision width of the element's text contents
165
+ floating = me.adjustDirect2DDimension(WIDTH);
166
+ if (preciseWidth) {
167
+ width += floating;
168
+ }
169
+ // IE9 also measures fonts with sub-pixel precision, but unlike Gecko, instead of rounding the offsetWidth down,
170
+ // it rounds to the nearest integer. This means that in order to ensure that the width includes the full
171
+ // width of the text contents we need to increment the width by 1 only if the fractional portion is less than 0.5
172
+ else if (floating > 0 && floating < 0.5) {
173
+ width++;
174
+ }
175
+ }
176
+
177
+ if (contentWidth) {
178
+ width -= me.getBorderWidth("lr") + me.getPadding("lr");
179
+ }
180
+
181
+ return (width < 0) ? 0 : width;
182
+ },
183
+
184
+ setWidth: function(width, animate) {
185
+ var me = this;
186
+ width = me.adjustWidth(width);
187
+ if (!animate || !me.anim) {
188
+ me.dom.style.width = me.addUnits(width);
189
+ }
190
+ else {
191
+ if (!Ext.isObject(animate)) {
192
+ animate = {};
193
+ }
194
+ me.animate(Ext.applyIf({
195
+ to: {
196
+ width: width
197
+ }
198
+ }, animate));
199
+ }
200
+ return me;
201
+ },
202
+
203
+ setHeight : function(height, animate) {
204
+ var me = this;
205
+
206
+ height = me.adjustHeight(height);
207
+ if (!animate || !me.anim) {
208
+ me.dom.style.height = me.addUnits(height);
209
+ }
210
+ else {
211
+ if (!Ext.isObject(animate)) {
212
+ animate = {};
213
+ }
214
+ me.animate(Ext.applyIf({
215
+ to: {
216
+ height: height
217
+ }
218
+ }, animate));
219
+ }
220
+
221
+ return me;
222
+ },
223
+
224
+ applyStyles: function(style) {
225
+ Ext.DomHelper.applyStyles(this.dom, style);
226
+ return this;
227
+ },
228
+
229
+ setSize: function(width, height, animate) {
230
+ var me = this;
231
+
232
+ if (Ext.isObject(width)) { // in case of object from getSize()
233
+ animate = height;
234
+ height = width.height;
235
+ width = width.width;
236
+ }
237
+
238
+ width = me.adjustWidth(width);
239
+ height = me.adjustHeight(height);
240
+
241
+ if (!animate || !me.anim) {
242
+ me.dom.style.width = me.addUnits(width);
243
+ me.dom.style.height = me.addUnits(height);
244
+ }
245
+ else {
246
+ if (animate === true) {
247
+ animate = {};
248
+ }
249
+ me.animate(Ext.applyIf({
250
+ to: {
251
+ width: width,
252
+ height: height
253
+ }
254
+ }, animate));
255
+ }
256
+
257
+ return me;
258
+ },
259
+
260
+ getViewSize : function() {
261
+ var me = this,
262
+ dom = me.dom,
263
+ isDoc = DOCORBODYRE.test(dom.nodeName),
264
+ ret;
265
+
266
+ // If the body, use static methods
267
+ if (isDoc) {
268
+ ret = {
269
+ width : Element.getViewWidth(),
270
+ height : Element.getViewHeight()
271
+ };
272
+ } else {
273
+ ret = {
274
+ width : dom.clientWidth,
275
+ height : dom.clientHeight
276
+ };
277
+ }
278
+
279
+ return ret;
280
+ },
281
+
282
+ getSize: function(contentSize) {
283
+ return {width: this.getWidth(contentSize), height: this.getHeight(contentSize)};
284
+ },
285
+
286
+ // TODO: Look at this
287
+
288
+ // private ==> used by Fx
289
+ adjustWidth : function(width) {
290
+ var me = this,
291
+ isNum = (typeof width == 'number');
292
+
293
+ if (isNum && me.autoBoxAdjust && !me.isBorderBox()) {
294
+ width -= (me.getBorderWidth("lr") + me.getPadding("lr"));
295
+ }
296
+ return (isNum && width < 0) ? 0 : width;
297
+ },
298
+
299
+ // private ==> used by Fx
300
+ adjustHeight : function(height) {
301
+ var me = this,
302
+ isNum = (typeof height == "number");
303
+
304
+ if (isNum && me.autoBoxAdjust && !me.isBorderBox()) {
305
+ height -= (me.getBorderWidth("tb") + me.getPadding("tb"));
306
+ }
307
+ return (isNum && height < 0) ? 0 : height;
308
+ },
309
+
310
+ /**
311
+ * Return the CSS color for the specified CSS attribute. rgb, 3 digit (like `#fff`) and valid values
312
+ * are convert to standard 6 digit hex color.
313
+ * @param {String} attr The css attribute
314
+ * @param {String} defaultValue The default value to use when a valid color isn't found
315
+ * @param {String} [prefix] defaults to #. Use an empty string when working with
316
+ * color anims.
317
+ */
318
+ getColor : function(attr, defaultValue, prefix) {
319
+ var v = this.getStyle(attr),
320
+ color = prefix || prefix === '' ? prefix : '#',
321
+ h, len, i=0;
322
+
323
+ if (!v || (/transparent|inherit/.test(v))) {
324
+ return defaultValue;
325
+ }
326
+ if (/^r/.test(v)) {
327
+ v = v.slice(4, v.length - 1).split(',');
328
+ len = v.length;
329
+ for (; i<len; i++) {
330
+ h = parseInt(v[i], 10);
331
+ color += (h < 16 ? '0' : '') + h.toString(16);
332
+ }
333
+ } else {
334
+ v = v.replace('#', '');
335
+ color += v.length == 3 ? v.replace(/^(\w)(\w)(\w)$/, '$1$1$2$2$3$3') : v;
336
+ }
337
+ return(color.length > 5 ? color.toLowerCase() : defaultValue);
338
+ },
339
+
340
+ /**
341
+ * Set the opacity of the element
342
+ * @param {Number} opacity The new opacity. 0 = transparent, .5 = 50% visibile, 1 = fully visible, etc
343
+ * @param {Boolean/Object} [animate] a standard Element animation config object or `true` for
344
+ * the default animation (`{duration: .35, easing: 'easeIn'}`)
345
+ * @return {Ext.dom.Element} this
346
+ */
347
+ setOpacity: function(opacity, animate) {
348
+ var me = this;
349
+
350
+ if (!me.dom) {
351
+ return me;
352
+ }
353
+
354
+ if (!animate || !me.anim) {
355
+ me.setStyle('opacity', opacity);
356
+ }
357
+ else {
358
+ if (typeof animate != 'object') {
359
+ animate = {
360
+ duration: 350,
361
+ easing: 'ease-in'
362
+ };
363
+ }
364
+
365
+ me.animate(Ext.applyIf({
366
+ to: {
367
+ opacity: opacity
368
+ }
369
+ }, animate));
370
+ }
371
+ return me;
372
+ },
373
+
374
+ /**
375
+ * Clears any opacity settings from this element. Required in some cases for IE.
376
+ * @return {Ext.dom.Element} this
377
+ */
378
+ clearOpacity : function() {
379
+ return this.setOpacity('');
380
+ },
381
+
382
+ /**
383
+ * @private
384
+ * Returns 1 if the browser returns the subpixel dimension rounded to the lowest pixel.
385
+ * @return {Number} 0 or 1
386
+ */
387
+ adjustDirect2DDimension: function(dimension) {
388
+ var me = this,
389
+ dom = me.dom,
390
+ display = me.getStyle('display'),
391
+ inlineDisplay = dom.style.display,
392
+ inlinePosition = dom.style.position,
393
+ originIndex = dimension === WIDTH ? 0 : 1,
394
+ currentStyle = dom.currentStyle,
395
+ floating;
396
+
397
+ if (display === 'inline') {
398
+ dom.style.display = 'inline-block';
399
+ }
400
+
401
+ dom.style.position = display.match(adjustDirect2DTableRe) ? 'absolute' : 'static';
402
+
403
+ // floating will contain digits that appears after the decimal point
404
+ // if height or width are set to auto we fallback to msTransformOrigin calculation
405
+
406
+ // Use currentStyle here instead of getStyle. In some difficult to reproduce
407
+ // instances it resets the scrollWidth of the element
408
+ floating = (parseFloat(currentStyle[dimension]) || parseFloat(currentStyle.msTransformOrigin.split(' ')[originIndex]) * 2) % 1;
409
+
410
+ dom.style.position = inlinePosition;
411
+
412
+ if (display === 'inline') {
413
+ dom.style.display = inlineDisplay;
414
+ }
415
+
416
+ return floating;
417
+ },
418
+
419
+ /**
420
+ * Store the current overflow setting and clip overflow on the element - use {@link #unclip} to remove
421
+ * @return {Ext.dom.Element} this
422
+ */
423
+ clip : function() {
424
+ var me = this,
425
+ data = (me.$cache || me.getCache()).data,
426
+ style;
427
+
428
+ if (!data[ISCLIPPED]) {
429
+ data[ISCLIPPED] = true;
430
+ style = me.getStyle([OVERFLOW, OVERFLOWX, OVERFLOWY]);
431
+ data[ORIGINALCLIP] = {
432
+ o: style[OVERFLOW],
433
+ x: style[OVERFLOWX],
434
+ y: style[OVERFLOWY]
435
+ };
436
+ me.setStyle(OVERFLOW, HIDDEN);
437
+ me.setStyle(OVERFLOWX, HIDDEN);
438
+ me.setStyle(OVERFLOWY, HIDDEN);
439
+ }
440
+ return me;
441
+ },
442
+
443
+ /**
444
+ * Return clipping (overflow) to original clipping before {@link #clip} was called
445
+ * @return {Ext.dom.Element} this
446
+ */
447
+ unclip : function() {
448
+ var me = this,
449
+ data = (me.$cache || me.getCache()).data,
450
+ clip;
451
+
452
+ if (data[ISCLIPPED]) {
453
+ data[ISCLIPPED] = false;
454
+ clip = data[ORIGINALCLIP];
455
+ if (clip.o) {
456
+ me.setStyle(OVERFLOW, clip.o);
457
+ }
458
+ if (clip.x) {
459
+ me.setStyle(OVERFLOWX, clip.x);
460
+ }
461
+ if (clip.y) {
462
+ me.setStyle(OVERFLOWY, clip.y);
463
+ }
464
+ }
465
+ return me;
466
+ },
467
+
468
+ /**
469
+ * Wraps the specified element with a special 9 element markup/CSS block that renders by default as
470
+ * a gray container with a gradient background, rounded corners and a 4-way shadow.
471
+ *
472
+ * This special markup is used throughout Ext when box wrapping elements ({@link Ext.button.Button},
473
+ * {@link Ext.panel.Panel} when {@link Ext.panel.Panel#frame frame=true}, {@link Ext.window.Window}).
474
+ * The markup is of this form:
475
+ *
476
+ * Ext.dom.Element.boxMarkup =
477
+ * '<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div>
478
+ * <div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div>
479
+ * <div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';
480
+ *
481
+ * Example usage:
482
+ *
483
+ * // Basic box wrap
484
+ * Ext.get("foo").boxWrap();
485
+ *
486
+ * // You can also add a custom class and use CSS inheritance rules to customize the box look.
487
+ * // 'x-box-blue' is a built-in alternative -- look at the related CSS definitions as an example
488
+ * // for how to create a custom box wrap style.
489
+ * Ext.get("foo").boxWrap().addCls("x-box-blue");
490
+ *
491
+ * @param {String} [class='x-box'] A base CSS class to apply to the containing wrapper element.
492
+ * Note that there are a number of CSS rules that are dependent on this name to make the overall effect work,
493
+ * so if you supply an alternate base class, make sure you also supply all of the necessary rules.
494
+ * @return {Ext.dom.Element} The outermost wrapping element of the created box structure.
495
+ */
496
+ boxWrap : function(cls) {
497
+ cls = cls || Ext.baseCSSPrefix + 'box';
498
+ var el = Ext.get(this.insertHtml("beforeBegin", "<div class='" + cls + "'>" + Ext.String.format(Element.boxMarkup, cls) + "</div>"));
499
+ Ext.DomQuery.selectNode('.' + cls + '-mc', el.dom).appendChild(this.dom);
500
+ return el;
501
+ },
502
+
503
+ /**
504
+ * Returns either the offsetHeight or the height of this element based on CSS height adjusted by padding or borders
505
+ * when needed to simulate offsetHeight when offsets aren't available. This may not work on display:none elements
506
+ * if a height has not been set using CSS.
507
+ * @return {Number}
508
+ */
509
+ getComputedHeight : function() {
510
+ var me = this,
511
+ h = Math.max(me.dom.offsetHeight, me.dom.clientHeight);
512
+ if (!h) {
513
+ h = parseFloat(me.getStyle(HEIGHT)) || 0;
514
+ if (!me.isBorderBox()) {
515
+ h += me.getFrameWidth('tb');
516
+ }
517
+ }
518
+ return h;
519
+ },
520
+
521
+ /**
522
+ * Returns either the offsetWidth or the width of this element based on CSS width adjusted by padding or borders
523
+ * when needed to simulate offsetWidth when offsets aren't available. This may not work on display:none elements
524
+ * if a width has not been set using CSS.
525
+ * @return {Number}
526
+ */
527
+ getComputedWidth : function() {
528
+ var me = this,
529
+ w = Math.max(me.dom.offsetWidth, me.dom.clientWidth);
530
+
531
+ if (!w) {
532
+ w = parseFloat(me.getStyle(WIDTH)) || 0;
533
+ if (!me.isBorderBox()) {
534
+ w += me.getFrameWidth('lr');
535
+ }
536
+ }
537
+ return w;
538
+ },
539
+
540
+ /**
541
+ * Returns the sum width of the padding and borders for the passed "sides". See getBorderWidth()
542
+ * for more information about the sides.
543
+ * @param {String} sides
544
+ * @return {Number}
545
+ */
546
+ getFrameWidth : function(sides, onlyContentBox) {
547
+ return (onlyContentBox && this.isBorderBox()) ? 0 : (this.getPadding(sides) + this.getBorderWidth(sides));
548
+ },
549
+
550
+ /**
551
+ * Sets up event handlers to add and remove a css class when the mouse is over this element
552
+ * @param {String} className The class to add
553
+ * @param {Function} [testFn] A test function to execute before adding the class. The passed parameter
554
+ * will be the Element instance. If this functions returns false, the class will not be added.
555
+ * @param {Object} [scope] The scope to execute the testFn in.
556
+ * @return {Ext.dom.Element} this
557
+ */
558
+ addClsOnOver : function(className, testFn, scope) {
559
+ var me = this,
560
+ dom = me.dom,
561
+ hasTest = Ext.isFunction(testFn);
562
+
563
+ me.hover(
564
+ function() {
565
+ if (hasTest && testFn.call(scope || me, me) === false) {
566
+ return;
567
+ }
568
+ Ext.fly(dom, INTERNAL).addCls(className);
569
+ },
570
+ function() {
571
+ Ext.fly(dom, INTERNAL).removeCls(className);
572
+ }
573
+ );
574
+ return me;
575
+ },
576
+
577
+ /**
578
+ * Sets up event handlers to add and remove a css class when this element has the focus
579
+ * @param {String} className The class to add
580
+ * @param {Function} [testFn] A test function to execute before adding the class. The passed parameter
581
+ * will be the Element instance. If this functions returns false, the class will not be added.
582
+ * @param {Object} [scope] The scope to execute the testFn in.
583
+ * @return {Ext.dom.Element} this
584
+ */
585
+ addClsOnFocus : function(className, testFn, scope) {
586
+ var me = this,
587
+ dom = me.dom,
588
+ hasTest = Ext.isFunction(testFn);
589
+
590
+ me.on("focus", function() {
591
+ if (hasTest && testFn.call(scope || me, me) === false) {
592
+ return false;
593
+ }
594
+ Ext.fly(dom, INTERNAL).addCls(className);
595
+ });
596
+ me.on("blur", function() {
597
+ Ext.fly(dom, INTERNAL).removeCls(className);
598
+ });
599
+ return me;
600
+ },
601
+
602
+ /**
603
+ * Sets up event handlers to add and remove a css class when the mouse is down and then up on this element (a click effect)
604
+ * @param {String} className The class to add
605
+ * @param {Function} [testFn] A test function to execute before adding the class. The passed parameter
606
+ * will be the Element instance. If this functions returns false, the class will not be added.
607
+ * @param {Object} [scope] The scope to execute the testFn in.
608
+ * @return {Ext.dom.Element} this
609
+ */
610
+ addClsOnClick : function(className, testFn, scope) {
611
+ var me = this,
612
+ dom = me.dom,
613
+ hasTest = Ext.isFunction(testFn);
614
+
615
+ me.on("mousedown", function() {
616
+ if (hasTest && testFn.call(scope || me, me) === false) {
617
+ return false;
618
+ }
619
+ Ext.fly(dom, INTERNAL).addCls(className);
620
+ var d = Ext.getDoc(),
621
+ fn = function() {
622
+ Ext.fly(dom, INTERNAL).removeCls(className);
623
+ d.removeListener("mouseup", fn);
624
+ };
625
+ d.on("mouseup", fn);
626
+ });
627
+ return me;
628
+ },
629
+
630
+ /**
631
+ * Returns the dimensions of the element available to lay content out in.
632
+ *
633
+ * getStyleSize utilizes prefers style sizing if present, otherwise it chooses the larger of offsetHeight/clientHeight and
634
+ * offsetWidth/clientWidth. To obtain the size excluding scrollbars, use getViewSize.
635
+ *
636
+ * Sizing of the document body is handled at the adapter level which handles special cases for IE and strict modes, etc.
637
+ *
638
+ * @return {Object} Object describing width and height.
639
+ * @return {Number} return.width
640
+ * @return {Number} return.height
641
+ */
642
+ getStyleSize : function() {
643
+ var me = this,
644
+ d = this.dom,
645
+ isDoc = DOCORBODYRE.test(d.nodeName),
646
+ s ,
647
+ w, h;
648
+
649
+ // If the body, use static methods
650
+ if (isDoc) {
651
+ return {
652
+ width : Element.getViewWidth(),
653
+ height : Element.getViewHeight()
654
+ };
655
+ }
656
+
657
+ s = me.getStyle([HEIGHT, WIDTH], true); //seek inline
658
+ // Use Styles if they are set
659
+ if (s.width && s.width != 'auto') {
660
+ w = parseFloat(s.width);
661
+ if (me.isBorderBox()) {
662
+ w -= me.getFrameWidth('lr');
663
+ }
664
+ }
665
+ // Use Styles if they are set
666
+ if (s.height && s.height != 'auto') {
667
+ h = parseFloat(s.height);
668
+ if (me.isBorderBox()) {
669
+ h -= me.getFrameWidth('tb');
670
+ }
671
+ }
672
+ // Use getWidth/getHeight if style not set.
673
+ return {width: w || me.getWidth(true), height: h || me.getHeight(true)};
674
+ },
675
+
676
+ /**
677
+ * Enable text selection for this element (normalized across browsers)
678
+ * @return {Ext.Element} this
679
+ */
680
+ selectable : function() {
681
+ var me = this;
682
+ me.dom.unselectable = "off";
683
+ // Prevent it from bubles up and enables it to be selectable
684
+ me.on('selectstart', function (e) {
685
+ e.stopPropagation();
686
+ return true;
687
+ });
688
+ me.applyStyles("-moz-user-select: text; -khtml-user-select: text;");
689
+ me.removeCls(Ext.baseCSSPrefix + 'unselectable');
690
+ return me;
691
+ },
692
+
693
+ /**
694
+ * Disables text selection for this element (normalized across browsers)
695
+ * @return {Ext.dom.Element} this
696
+ */
697
+ unselectable : function() {
698
+ var me = this;
699
+ me.dom.unselectable = "on";
700
+
701
+ me.swallowEvent("selectstart", true);
702
+ me.applyStyles("-moz-user-select:-moz-none;-khtml-user-select:none;");
703
+ me.addCls(Ext.baseCSSPrefix + 'unselectable');
704
+
705
+ return me;
706
+ }
707
+ });
708
+
709
+ Element.prototype.styleHooks = styleHooks = Ext.dom.AbstractElement.prototype.styleHooks;
710
+
711
+ if (Ext.isIE6) {
712
+ styleHooks.fontSize = styleHooks['font-size'] = {
713
+ name: 'fontSize',
714
+ canThrow: true
715
+ };
716
+ }
717
+
718
+ // override getStyle for border-*-width
719
+ if (Ext.isIEQuirks || Ext.isIE && Ext.ieVersion <= 8) {
720
+ function getBorderWidth (dom, el, inline, style) {
721
+ if (style[this.styleName] == 'none') {
722
+ return '0px';
723
+ }
724
+ return style[this.name];
725
+ }
726
+
727
+ edges = ['Top','Right','Bottom','Left'];
728
+ k = edges.length;
729
+
730
+ while (k--) {
731
+ edge = edges[k];
732
+ borderWidth = 'border' + edge + 'Width';
733
+
734
+ styleHooks['border-'+edge.toLowerCase()+'-width'] = styleHooks[borderWidth] = {
735
+ name: borderWidth,
736
+ styleName: 'border' + edge + 'Style',
737
+ get: getBorderWidth
738
+ };
739
+ }
740
+ }
741
+
742
+ }());
743
+
744
+ Ext.onReady(function () {
745
+ var opacityRe = /alpha\(opacity=(.*)\)/i,
746
+ trimRe = /^\s+|\s+$/g,
747
+ hooks = Ext.dom.Element.prototype.styleHooks;
748
+
749
+ // Ext.supports flags are not populated until onReady...
750
+ hooks.opacity = {
751
+ name: 'opacity',
752
+ afterSet: function(dom, value, el) {
753
+ if (el.isLayer) {
754
+ el.onOpacitySet(value);
755
+ }
756
+ }
757
+ };
758
+ if (!Ext.supports.Opacity && Ext.isIE) {
759
+ Ext.apply(hooks.opacity, {
760
+ get: function (dom) {
761
+ var filter = dom.style.filter,
762
+ match, opacity;
763
+ if (filter.match) {
764
+ match = filter.match(opacityRe);
765
+ if (match) {
766
+ opacity = parseFloat(match[1]);
767
+ if (!isNaN(opacity)) {
768
+ return opacity ? opacity / 100 : 0;
769
+ }
770
+ }
771
+ }
772
+ return 1;
773
+ },
774
+ set: function (dom, value) {
775
+ var style = dom.style,
776
+ val = style.filter.replace(opacityRe, '').replace(trimRe, '');
777
+
778
+ style.zoom = 1; // ensure dom.hasLayout
779
+
780
+ // value can be a number or '' or null... so treat falsey as no opacity
781
+ if (typeof(value) == 'number' && value >= 0 && value < 1) {
782
+ value *= 100;
783
+ style.filter = val + (val.length ? ' ' : '') + 'alpha(opacity='+value+')';
784
+ } else {
785
+ style.filter = val;
786
+ }
787
+ }
788
+ });
789
+ }
790
+ // else there is no work around for the lack of opacity support. Should not be a
791
+ // problem given that this has been supported for a long time now...
792
+ });