spade 0.0.1 → 0.0.2

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 (1660) hide show
  1. data/.gitmodules +0 -9
  2. data/Gemfile +1 -17
  3. data/Gemfile.lock +16 -11
  4. data/lib/spade.rb +1 -0
  5. data/lib/spade/cli/base.rb +18 -0
  6. data/lib/spade/package.rb +21 -13
  7. data/lib/spade/remote.rb +7 -0
  8. data/lib/spade/version.rb +1 -1
  9. data/spade.gemspec +14 -1
  10. data/spec/cli/build_spec.rb +7 -7
  11. data/spec/cli/install_spec.rb +14 -0
  12. data/spec/cli/yank_spec.rb +68 -0
  13. data/spec/fixtures/core-test/bin/cot +1 -0
  14. data/spec/fixtures/core-test/lib/main.js +1 -0
  15. data/spec/fixtures/{coffee/bin/cake → core-test/resources/runner.css} +0 -0
  16. data/spec/fixtures/core-test/tests/test.js +1 -0
  17. data/spec/fixtures/package.json +28 -23
  18. data/spec/gauntlet_spec.rb +0 -3
  19. data/spec/package_spec.rb +32 -22
  20. data/spec/support/core_test.rb +19 -12
  21. data/spec/support/fake.rb +3 -1
  22. data/spec/support/fake_gem_server.rb +27 -11
  23. data/spec/support/fake_gemcutter.rb +8 -0
  24. metadata +101 -1650
  25. data/packages/core-test/.gitignore +0 -2
  26. data/packages/core-test/Buildfile +0 -15
  27. data/packages/core-test/CHANGELOG.md +0 -24
  28. data/packages/core-test/__preamble__.js +0 -34
  29. data/packages/core-test/bin/cot +0 -3
  30. data/packages/core-test/lib/assert.js +0 -306
  31. data/packages/core-test/lib/cli.js +0 -258
  32. data/packages/core-test/lib/core.js +0 -311
  33. data/packages/core-test/lib/loggers/browser.js +0 -390
  34. data/packages/core-test/lib/loggers/console.js +0 -235
  35. data/packages/core-test/lib/loggers/default.js +0 -272
  36. data/packages/core-test/lib/loggers/dummy.js +0 -168
  37. data/packages/core-test/lib/main.js +0 -22
  38. data/packages/core-test/lib/private/jquery.js +0 -6079
  39. data/packages/core-test/lib/qunit.js +0 -159
  40. data/packages/core-test/lib/runner.js +0 -65
  41. data/packages/core-test/lib/spec.js +0 -302
  42. data/packages/core-test/lib/sync.js +0 -64
  43. data/packages/core-test/lib/system/dump.js +0 -208
  44. data/packages/core-test/lib/system/equiv.js +0 -199
  45. data/packages/core-test/lib/system/ext.js +0 -62
  46. data/packages/core-test/lib/system/module.js +0 -162
  47. data/packages/core-test/lib/system/plan.js +0 -223
  48. data/packages/core-test/lib/system/stub.js +0 -98
  49. data/packages/core-test/lib/system/test.js +0 -373
  50. data/packages/core-test/lib/test.js +0 -69
  51. data/packages/core-test/lib/utils.js +0 -256
  52. data/packages/core-test/package.json +0 -10
  53. data/packages/core-test/resources/additions.css +0 -8
  54. data/packages/core-test/resources/runner.css +0 -177
  55. data/packages/core-test/tests/apis/commonjs-test.js +0 -102
  56. data/packages/core-test/tests/apis/core-test.js +0 -154
  57. data/packages/core-test/tests/apis/qunit-test.js +0 -244
  58. data/packages/core-test/tests/apis/spec-test.js +0 -344
  59. data/packages/core-test/tests/system/equiv/qunit-test.js +0 -1400
  60. data/packages/core-test/tests/system/test/assert-test.js +0 -86
  61. data/packages/core-test/tests/system/test/error-test.js +0 -62
  62. data/packages/core-test/tests/system/test/schedule-test.js +0 -210
  63. data/packages/core-test/tests/utils/fmt-test.js +0 -24
  64. data/packages/handlebars/Gemfile +0 -4
  65. data/packages/handlebars/README.markdown +0 -205
  66. data/packages/handlebars/Rakefile +0 -65
  67. data/packages/handlebars/lib/handlebars.js +0 -19
  68. data/packages/handlebars/lib/handlebars/ast.js +0 -88
  69. data/packages/handlebars/lib/handlebars/compiler.js +0 -116
  70. data/packages/handlebars/lib/handlebars/debug.js +0 -25
  71. data/packages/handlebars/lib/handlebars/printer.js +0 -114
  72. data/packages/handlebars/lib/handlebars/runtime.js +0 -280
  73. data/packages/handlebars/lib/handlebars/utils.js +0 -61
  74. data/packages/handlebars/lib/handlebars/visitor.js +0 -14
  75. data/packages/handlebars/lib/handlebars/vm.js +0 -634
  76. data/packages/handlebars/spec/acceptance_spec.rb +0 -100
  77. data/packages/handlebars/spec/parser_spec.rb +0 -181
  78. data/packages/handlebars/spec/qunit_spec.js +0 -497
  79. data/packages/handlebars/spec/spec_helper.rb +0 -107
  80. data/packages/handlebars/spec/tokenizer_spec.rb +0 -145
  81. data/packages/handlebars/src/handlebars.l +0 -27
  82. data/packages/handlebars/src/handlebars.yy +0 -79
  83. data/packages/handlebars/test.js +0 -56
  84. data/packages/jquery-core/lib/main.js +0 -897
  85. data/packages/jquery-core/package.json +0 -9
  86. data/packages/sproutcore-bootstrap/lib/main.js +0 -11
  87. data/packages/sproutcore-bootstrap/package.json +0 -15
  88. data/packages/sproutcore-corefoundation/lib/main.js +0 -66
  89. data/packages/sproutcore-corefoundation/lib/tests.js +0 -74
  90. data/packages/sproutcore-corefoundation/package.json +0 -27
  91. data/packages/sproutcore-corefoundation/tests.html +0 -12
  92. data/packages/sproutcore-datastore/lib/main.js +0 -23
  93. data/packages/sproutcore-datastore/package.json +0 -16
  94. data/packages/sproutcore-datetime/lib/main.js +0 -6
  95. data/packages/sproutcore-datetime/package.json +0 -16
  96. data/packages/sproutcore-handlebars/lib/handlebars.js +0 -5
  97. data/packages/sproutcore-handlebars/lib/main.js +0 -15
  98. data/packages/sproutcore-handlebars/package.json +0 -17
  99. data/packages/sproutcore-jquery/lib/main.js +0 -10
  100. data/packages/sproutcore-jquery/package.json +0 -12
  101. data/packages/sproutcore-preprocessor/bin/chance +0 -64
  102. data/packages/sproutcore-preprocessor/lib/css.js +0 -21
  103. data/packages/sproutcore-preprocessor/lib/main.js +0 -1
  104. data/packages/sproutcore-preprocessor/lib/preprocessor.js +0 -12
  105. data/packages/sproutcore-preprocessor/lib/sc_static.js +0 -9
  106. data/packages/sproutcore-preprocessor/package.json +0 -18
  107. data/packages/sproutcore-runtime/lib/main.js +0 -37
  108. data/packages/sproutcore-runtime/package.json +0 -21
  109. data/spec/fixtures/coffee/bin/coffee +0 -0
  110. data/spec/fixtures/coffee/lib/coffee.js +0 -0
  111. data/spec/fixtures/coffee/lib/coffee.png +0 -0
  112. data/spec/fixtures/coffee/lib/coffee/base.js +0 -0
  113. data/spec/fixtures/coffee/lib/coffee/mocha/chai.js +0 -0
  114. data/spec/fixtures/coffee/qunit/coffee/test.js +0 -0
  115. data/spec/fixtures/coffee/qunit/test.js +0 -0
  116. data/spec/fixtures/coffee/qunit/test.log +0 -0
  117. data/sproutcore/.gitignore +0 -13
  118. data/sproutcore/Buildfile +0 -112
  119. data/sproutcore/CHANGELOG.md +0 -232
  120. data/sproutcore/README.md +0 -68
  121. data/sproutcore/apps/docs/core.js +0 -27
  122. data/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
  123. data/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
  124. data/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +0 -14378
  125. data/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
  126. data/sproutcore/apps/docs/design/Doc Viewer.graffle/image11.png +0 -0
  127. data/sproutcore/apps/docs/design/Doc Viewer.graffle/image13.png +0 -0
  128. data/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
  129. data/sproutcore/apps/docs/design/Doc Viewer.graffle/image8.png +0 -0
  130. data/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -0
  131. data/sproutcore/apps/docs/english.lproj/loading.rhtml +0 -9
  132. data/sproutcore/apps/docs/english.lproj/main_page.js +0 -22
  133. data/sproutcore/apps/docs/english.lproj/strings.js +0 -15
  134. data/sproutcore/apps/docs/main.js +0 -30
  135. data/sproutcore/apps/greenhouse/README +0 -18
  136. data/sproutcore/apps/greenhouse/TODO +0 -56
  137. data/sproutcore/apps/greenhouse/beautify.js +0 -1058
  138. data/sproutcore/apps/greenhouse/controllers/design.js +0 -20
  139. data/sproutcore/apps/greenhouse/controllers/file.js +0 -35
  140. data/sproutcore/apps/greenhouse/controllers/files.js +0 -40
  141. data/sproutcore/apps/greenhouse/controllers/layout.js +0 -53
  142. data/sproutcore/apps/greenhouse/controllers/library.js +0 -194
  143. data/sproutcore/apps/greenhouse/controllers/page.js +0 -18
  144. data/sproutcore/apps/greenhouse/controllers/property.js +0 -19
  145. data/sproutcore/apps/greenhouse/controllers/property_editor.js +0 -17
  146. data/sproutcore/apps/greenhouse/controllers/target.js +0 -20
  147. data/sproutcore/apps/greenhouse/controllers/targets.js +0 -43
  148. data/sproutcore/apps/greenhouse/controllers/view_configs.js +0 -100
  149. data/sproutcore/apps/greenhouse/core.js +0 -65
  150. data/sproutcore/apps/greenhouse/core_file.js +0 -124
  151. data/sproutcore/apps/greenhouse/data_source.js +0 -250
  152. data/sproutcore/apps/greenhouse/english.lproj/app_page.js +0 -399
  153. data/sproutcore/apps/greenhouse/english.lproj/css/app-selector.css +0 -107
  154. data/sproutcore/apps/greenhouse/english.lproj/css/button.css +0 -314
  155. data/sproutcore/apps/greenhouse/english.lproj/css/dock.css +0 -90
  156. data/sproutcore/apps/greenhouse/english.lproj/css/general.css +0 -51
  157. data/sproutcore/apps/greenhouse/english.lproj/css/main-page.css +0 -93
  158. data/sproutcore/apps/greenhouse/english.lproj/css/menu.css +0 -49
  159. data/sproutcore/apps/greenhouse/english.lproj/css/modal.css +0 -41
  160. data/sproutcore/apps/greenhouse/english.lproj/css/picker.css +0 -195
  161. data/sproutcore/apps/greenhouse/english.lproj/css/search.css +0 -60
  162. data/sproutcore/apps/greenhouse/english.lproj/css/text-field.css +0 -67
  163. data/sproutcore/apps/greenhouse/english.lproj/dialogs.js +0 -303
  164. data/sproutcore/apps/greenhouse/english.lproj/fonts/museosans_500.eot +0 -0
  165. data/sproutcore/apps/greenhouse/english.lproj/fonts/museosans_500.otf +0 -0
  166. data/sproutcore/apps/greenhouse/english.lproj/fonts/museosans_500.woff +0 -0
  167. data/sproutcore/apps/greenhouse/english.lproj/fonts/museosans_500_italic.eot +0 -0
  168. data/sproutcore/apps/greenhouse/english.lproj/fonts/museosans_500_italic.otf +0 -0
  169. data/sproutcore/apps/greenhouse/english.lproj/fonts/museosans_500_italic.woff +0 -0
  170. data/sproutcore/apps/greenhouse/english.lproj/images/app-selector/choose-app.png +0 -0
  171. data/sproutcore/apps/greenhouse/english.lproj/images/app-selector/list-item-sel.png +0 -0
  172. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule-xl/active-l.png +0 -0
  173. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule-xl/active-m.png +0 -0
  174. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule-xl/active-r.png +0 -0
  175. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule-xl/regular-l.png +0 -0
  176. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule-xl/regular-m.png +0 -0
  177. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule-xl/regular-r.png +0 -0
  178. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/active-l.png +0 -0
  179. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/active-r.png +0 -0
  180. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/disabled-l.png +0 -0
  181. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/disabled-r.png +0 -0
  182. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/regular-l.png +0 -0
  183. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/regular-r.png +0 -0
  184. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/sel-active-l.png +0 -0
  185. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/sel-active-r.png +0 -0
  186. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-l.png +0 -0
  187. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-r.png +0 -0
  188. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/sel-l.png +0 -0
  189. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/capsule/sel-r.png +0 -0
  190. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/active-l.png +0 -0
  191. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/active-m.png +0 -0
  192. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/active-r.png +0 -0
  193. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/cap-active-l.png +0 -0
  194. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/cap-active-r.png +0 -0
  195. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/cap-l.png +0 -0
  196. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/cap-r.png +0 -0
  197. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-l.png +0 -0
  198. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-r.png +0 -0
  199. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/cap-sel-l.png +0 -0
  200. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/cap-sel-r.png +0 -0
  201. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/disabled-l.png +0 -0
  202. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/disabled-m.png +0 -0
  203. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/disabled-r.png +0 -0
  204. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/regular-l.png +0 -0
  205. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/regular-m.png +0 -0
  206. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/regular-r.png +0 -0
  207. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/sel-active-l.png +0 -0
  208. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/sel-active-m.png +0 -0
  209. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/sel-active-r.png +0 -0
  210. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/sel-disabled-l.png +0 -0
  211. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/sel-disabled-m.png +0 -0
  212. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/sel-disabled-r.png +0 -0
  213. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/sel-l.png +0 -0
  214. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/sel-m.png +0 -0
  215. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/dark/sel-r.png +0 -0
  216. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/shared/active-m.png +0 -0
  217. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/shared/disabled-m.png +0 -0
  218. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/shared/regular-m.png +0 -0
  219. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/shared/sel-active-m.png +0 -0
  220. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/shared/sel-disabled-m.png +0 -0
  221. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/shared/sel-m.png +0 -0
  222. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/active-l.png +0 -0
  223. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/active-r.png +0 -0
  224. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/disabled-l.png +0 -0
  225. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/disabled-r.png +0 -0
  226. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/regular-l.png +0 -0
  227. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/regular-r.png +0 -0
  228. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/sel-active-l.png +0 -0
  229. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/sel-active-r.png +0 -0
  230. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/sel-disabled-l.png +0 -0
  231. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/sel-disabled-r.png +0 -0
  232. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/sel-l.png +0 -0
  233. data/sproutcore/apps/greenhouse/english.lproj/images/buttons/square/sel-r.png +0 -0
  234. data/sproutcore/apps/greenhouse/english.lproj/images/icons/actions-active.png +0 -0
  235. data/sproutcore/apps/greenhouse/english.lproj/images/icons/actions.png +0 -0
  236. data/sproutcore/apps/greenhouse/english.lproj/images/icons/inspector-active.png +0 -0
  237. data/sproutcore/apps/greenhouse/english.lproj/images/icons/inspector.png +0 -0
  238. data/sproutcore/apps/greenhouse/english.lproj/images/icons/library-active.png +0 -0
  239. data/sproutcore/apps/greenhouse/english.lproj/images/icons/library.png +0 -0
  240. data/sproutcore/apps/greenhouse/english.lproj/images/icons/projects-active.png +0 -0
  241. data/sproutcore/apps/greenhouse/english.lproj/images/icons/projects.png +0 -0
  242. data/sproutcore/apps/greenhouse/english.lproj/images/icons/run-active.png +0 -0
  243. data/sproutcore/apps/greenhouse/english.lproj/images/icons/run.png +0 -0
  244. data/sproutcore/apps/greenhouse/english.lproj/images/icons/save-active.png +0 -0
  245. data/sproutcore/apps/greenhouse/english.lproj/images/icons/save.png +0 -0
  246. data/sproutcore/apps/greenhouse/english.lproj/images/logos/greenhouse-l.png +0 -0
  247. data/sproutcore/apps/greenhouse/english.lproj/images/logos/greenhouse-s.png +0 -0
  248. data/sproutcore/apps/greenhouse/english.lproj/images/logos/sproutcore.png +0 -0
  249. data/sproutcore/apps/greenhouse/english.lproj/images/main-bg.png +0 -0
  250. data/sproutcore/apps/greenhouse/english.lproj/images/picker/bottom-left.png +0 -0
  251. data/sproutcore/apps/greenhouse/english.lproj/images/picker/bottom-right.png +0 -0
  252. data/sproutcore/apps/greenhouse/english.lproj/images/picker/bottom.png +0 -0
  253. data/sproutcore/apps/greenhouse/english.lproj/images/picker/close-active.png +0 -0
  254. data/sproutcore/apps/greenhouse/english.lproj/images/picker/close.png +0 -0
  255. data/sproutcore/apps/greenhouse/english.lproj/images/picker/left.png +0 -0
  256. data/sproutcore/apps/greenhouse/english.lproj/images/picker/pointer-bottom.png +0 -0
  257. data/sproutcore/apps/greenhouse/english.lproj/images/picker/pointer-left.png +0 -0
  258. data/sproutcore/apps/greenhouse/english.lproj/images/picker/pointer-right.png +0 -0
  259. data/sproutcore/apps/greenhouse/english.lproj/images/picker/pointer-top.png +0 -0
  260. data/sproutcore/apps/greenhouse/english.lproj/images/picker/right.png +0 -0
  261. data/sproutcore/apps/greenhouse/english.lproj/images/picker/search-active.png +0 -0
  262. data/sproutcore/apps/greenhouse/english.lproj/images/picker/search.png +0 -0
  263. data/sproutcore/apps/greenhouse/english.lproj/images/picker/top-left.png +0 -0
  264. data/sproutcore/apps/greenhouse/english.lproj/images/picker/top-right.png +0 -0
  265. data/sproutcore/apps/greenhouse/english.lproj/images/picker/top.png +0 -0
  266. data/sproutcore/apps/greenhouse/english.lproj/images/toolbar-bg.png +0 -0
  267. data/sproutcore/apps/greenhouse/english.lproj/inspectors.js +0 -365
  268. data/sproutcore/apps/greenhouse/english.lproj/loading.rhtml +0 -9
  269. data/sproutcore/apps/greenhouse/english.lproj/main_page.js +0 -95
  270. data/sproutcore/apps/greenhouse/english.lproj/strings.js +0 -93
  271. data/sproutcore/apps/greenhouse/fixtures/file.js +0 -35
  272. data/sproutcore/apps/greenhouse/main.js +0 -28
  273. data/sproutcore/apps/greenhouse/mixins/drop_down.js +0 -97
  274. data/sproutcore/apps/greenhouse/models/design.js +0 -26
  275. data/sproutcore/apps/greenhouse/models/dir.js +0 -93
  276. data/sproutcore/apps/greenhouse/models/file.js +0 -51
  277. data/sproutcore/apps/greenhouse/models/target.js +0 -82
  278. data/sproutcore/apps/greenhouse/models/view_config.js +0 -49
  279. data/sproutcore/apps/greenhouse/resources/test_page.js +0 -37
  280. data/sproutcore/apps/greenhouse/states/inspector.js +0 -152
  281. data/sproutcore/apps/greenhouse/states/library.js +0 -142
  282. data/sproutcore/apps/greenhouse/states/main.js +0 -283
  283. data/sproutcore/apps/greenhouse/states/modals.js +0 -299
  284. data/sproutcore/apps/greenhouse/states/ready.js +0 -235
  285. data/sproutcore/apps/greenhouse/tests/controllers/design.js +0 -15
  286. data/sproutcore/apps/greenhouse/tests/controllers/designs.js +0 -15
  287. data/sproutcore/apps/greenhouse/tests/controllers/file.js +0 -15
  288. data/sproutcore/apps/greenhouse/tests/controllers/files.js +0 -15
  289. data/sproutcore/apps/greenhouse/tests/models/file.js +0 -15
  290. data/sproutcore/apps/greenhouse/tests/models/view_config.js +0 -15
  291. data/sproutcore/apps/greenhouse/tests/views/list_item.js +0 -16
  292. data/sproutcore/apps/greenhouse/tests/views/plist_item.js +0 -20
  293. data/sproutcore/apps/greenhouse/theme.js +0 -25
  294. data/sproutcore/apps/greenhouse/views/anchor.js +0 -277
  295. data/sproutcore/apps/greenhouse/views/application_list_item.js +0 -19
  296. data/sproutcore/apps/greenhouse/views/event_blocker.js +0 -32
  297. data/sproutcore/apps/greenhouse/views/label_designer.js +0 -16
  298. data/sproutcore/apps/greenhouse/views/list_item.js +0 -42
  299. data/sproutcore/apps/greenhouse/views/plist_item.js +0 -178
  300. data/sproutcore/apps/greenhouse/views/simple_button.js +0 -157
  301. data/sproutcore/apps/greenhouse/views/tear_off_picker.js +0 -56
  302. data/sproutcore/apps/greenhouse/views/web.js +0 -44
  303. data/sproutcore/apps/test_controls/Buildfile +0 -0
  304. data/sproutcore/apps/test_controls/controllers/buttons.js +0 -21
  305. data/sproutcore/apps/test_controls/controllers/categories.js +0 -108
  306. data/sproutcore/apps/test_controls/controllers/category.js +0 -36
  307. data/sproutcore/apps/test_controls/core.js +0 -29
  308. data/sproutcore/apps/test_controls/main.js +0 -14
  309. data/sproutcore/apps/test_controls/resources/buttons_page.js +0 -142
  310. data/sproutcore/apps/test_controls/resources/checkboxes_page.js +0 -45
  311. data/sproutcore/apps/test_controls/resources/flow_layout_page.js +0 -84
  312. data/sproutcore/apps/test_controls/resources/list_page.js +0 -40
  313. data/sproutcore/apps/test_controls/resources/loading.rhtml +0 -9
  314. data/sproutcore/apps/test_controls/resources/main_page.css +0 -60
  315. data/sproutcore/apps/test_controls/resources/main_page.js +0 -145
  316. data/sproutcore/apps/test_controls/resources/progress_page.js +0 -32
  317. data/sproutcore/apps/test_controls/resources/radio_page.js +0 -48
  318. data/sproutcore/apps/test_controls/resources/scroll_page.js +0 -76
  319. data/sproutcore/apps/test_controls/resources/segmented_page.js +0 -98
  320. data/sproutcore/apps/test_controls/resources/select_page.js +0 -60
  321. data/sproutcore/apps/test_controls/resources/sliders_page.js +0 -53
  322. data/sproutcore/apps/test_controls/resources/strings.js +0 -50
  323. data/sproutcore/apps/test_controls/resources/tab_page.js +0 -44
  324. data/sproutcore/apps/test_controls/resources/text_field_page.js +0 -41
  325. data/sproutcore/apps/test_controls/theme.js +0 -34
  326. data/sproutcore/apps/tests/controllers/detail.js +0 -25
  327. data/sproutcore/apps/tests/controllers/source.js +0 -29
  328. data/sproutcore/apps/tests/controllers/target.js +0 -26
  329. data/sproutcore/apps/tests/controllers/targets.js +0 -86
  330. data/sproutcore/apps/tests/controllers/tests.js +0 -33
  331. data/sproutcore/apps/tests/core.js +0 -133
  332. data/sproutcore/apps/tests/english.lproj/loading.rhtml +0 -9
  333. data/sproutcore/apps/tests/english.lproj/main_page.css +0 -48
  334. data/sproutcore/apps/tests/english.lproj/main_page.js +0 -233
  335. data/sproutcore/apps/tests/english.lproj/strings.js +0 -26
  336. data/sproutcore/apps/tests/main.js +0 -27
  337. data/sproutcore/apps/tests/states/no_targets.js +0 -26
  338. data/sproutcore/apps/tests/states/ready.js +0 -56
  339. data/sproutcore/apps/tests/states/ready_detail.js +0 -41
  340. data/sproutcore/apps/tests/states/ready_empty.js +0 -48
  341. data/sproutcore/apps/tests/states/ready_list.js +0 -41
  342. data/sproutcore/apps/tests/states/ready_loading.js +0 -44
  343. data/sproutcore/apps/tests/states/ready_no_tests.js +0 -31
  344. data/sproutcore/apps/tests/states/start.js +0 -39
  345. data/sproutcore/apps/tests/tests/controllers/detail.js +0 -15
  346. data/sproutcore/apps/tests/tests/controllers/source.js +0 -15
  347. data/sproutcore/apps/tests/tests/controllers/target.js +0 -15
  348. data/sproutcore/apps/tests/tests/controllers/targets.js +0 -15
  349. data/sproutcore/apps/tests/tests/controllers/tests.js +0 -15
  350. data/sproutcore/apps/tests/tests/models/target.js +0 -15
  351. data/sproutcore/apps/tests/tests/models/test.js +0 -15
  352. data/sproutcore/apps/tests/tests/views/offset_checkbox.js +0 -15
  353. data/sproutcore/apps/tests/views/offset_checkbox.js +0 -26
  354. data/sproutcore/apps/welcome/controllers/targets.js +0 -56
  355. data/sproutcore/apps/welcome/core.js +0 -30
  356. data/sproutcore/apps/welcome/english.lproj/images/main-bg.png +0 -0
  357. data/sproutcore/apps/welcome/english.lproj/loading.rhtml +0 -10
  358. data/sproutcore/apps/welcome/english.lproj/main_page.css +0 -25
  359. data/sproutcore/apps/welcome/english.lproj/main_page.js +0 -67
  360. data/sproutcore/apps/welcome/english.lproj/strings.js +0 -15
  361. data/sproutcore/apps/welcome/main.js +0 -19
  362. data/sproutcore/apps/welcome/tests/controllers/targets.js +0 -15
  363. data/sproutcore/design/CollectionView State Charts.graffle +0 -4848
  364. data/sproutcore/design/Design Charts.graffle +0 -16845
  365. data/sproutcore/design/Record State Table.numbers +0 -0
  366. data/sproutcore/design/SproutCore Datastore Design.graffle/QuickLook/Preview.pdf +0 -0
  367. data/sproutcore/design/SproutCore Datastore Design.graffle/QuickLook/Thumbnail.tiff +0 -0
  368. data/sproutcore/design/SproutCore Datastore Design.graffle/data.plist +0 -19588
  369. data/sproutcore/design/SproutCore Datastore Design.graffle/image8.png +0 -0
  370. data/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Preview.pdf +0 -0
  371. data/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Thumbnail.tiff +0 -0
  372. data/sproutcore/design/SproutCore Design Template.graffle/data.plist +0 -1452
  373. data/sproutcore/design/SproutCore Design Template.graffle/image8.png +0 -0
  374. data/sproutcore/design/TestRunner Design.graffle/QuickLook/Preview.pdf +0 -0
  375. data/sproutcore/design/TestRunner Design.graffle/QuickLook/Thumbnail.tiff +0 -0
  376. data/sproutcore/design/TestRunner Design.graffle/data.plist +0 -24187
  377. data/sproutcore/design/TestRunner Design.graffle/image10.png +0 -0
  378. data/sproutcore/design/TestRunner Design.graffle/image11.png +0 -0
  379. data/sproutcore/design/TestRunner Design.graffle/image13.png +0 -0
  380. data/sproutcore/design/TestRunner Design.graffle/image15.png +0 -0
  381. data/sproutcore/design/TestRunner Design.graffle/image16.png +0 -0
  382. data/sproutcore/design/TestRunner Design.graffle/image17.png +0 -0
  383. data/sproutcore/design/TestRunner Design.graffle/image18.png +0 -0
  384. data/sproutcore/design/TestRunner Design.graffle/image19.png +0 -0
  385. data/sproutcore/design/TestRunner Design.graffle/image22.tiff +0 -0
  386. data/sproutcore/design/TestRunner Design.graffle/image23.png +0 -0
  387. data/sproutcore/design/TestRunner Design.graffle/image24.png +0 -0
  388. data/sproutcore/design/TestRunner Design.graffle/image25.png +0 -0
  389. data/sproutcore/design/TestRunner Design.graffle/image30.png +0 -0
  390. data/sproutcore/design/TestRunner Design.graffle/image31.png +0 -0
  391. data/sproutcore/design/TestRunner Design.graffle/image8.png +0 -0
  392. data/sproutcore/design/TestRunner Design.graffle/image9.png +0 -0
  393. data/sproutcore/design/greenhouse-statechart.graffle +0 -9025
  394. data/sproutcore/design/greenhouse-statechart.pdf +0 -0
  395. data/sproutcore/design/iphone-webapp-loading.psd +0 -0
  396. data/sproutcore/frameworks/animation/Buildfile +0 -3
  397. data/sproutcore/frameworks/animation/LICENSE +0 -25
  398. data/sproutcore/frameworks/animation/README.md +0 -79
  399. data/sproutcore/frameworks/animation/core.js +0 -1206
  400. data/sproutcore/frameworks/animation/tests/core.js +0 -152
  401. data/sproutcore/frameworks/bootstrap/README +0 -9
  402. data/sproutcore/frameworks/bootstrap/core.js +0 -7
  403. data/sproutcore/frameworks/bootstrap/setup_body_class_names.js +0 -10
  404. data/sproutcore/frameworks/bootstrap/system/bench.js +0 -14
  405. data/sproutcore/frameworks/bootstrap/system/browser.js +0 -65
  406. data/sproutcore/frameworks/bootstrap/system/loader.js +0 -50
  407. data/sproutcore/frameworks/bootstrap/tests/system/browser.js +0 -187
  408. data/sproutcore/frameworks/core_foundation/.greenhouseconf +0 -33
  409. data/sproutcore/frameworks/core_foundation/controllers/array.js +0 -498
  410. data/sproutcore/frameworks/core_foundation/controllers/controller.js +0 -44
  411. data/sproutcore/frameworks/core_foundation/controllers/object.js +0 -342
  412. data/sproutcore/frameworks/core_foundation/core.js +0 -201
  413. data/sproutcore/frameworks/core_foundation/ext/object.js +0 -83
  414. data/sproutcore/frameworks/core_foundation/ext/run_loop.js +0 -163
  415. data/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +0 -110
  416. data/sproutcore/frameworks/core_foundation/mixins/responder_context.js +0 -269
  417. data/sproutcore/frameworks/core_foundation/mixins/selection_support.js +0 -250
  418. data/sproutcore/frameworks/core_foundation/mixins/string.js +0 -163
  419. data/sproutcore/frameworks/core_foundation/panes/keyboard.js +0 -68
  420. data/sproutcore/frameworks/core_foundation/panes/layout.js +0 -108
  421. data/sproutcore/frameworks/core_foundation/panes/main.js +0 -52
  422. data/sproutcore/frameworks/core_foundation/panes/manipulation.js +0 -27
  423. data/sproutcore/frameworks/core_foundation/panes/pane.js +0 -672
  424. data/sproutcore/frameworks/core_foundation/panes/template.js +0 -24
  425. data/sproutcore/frameworks/core_foundation/panes/visibility.js +0 -11
  426. data/sproutcore/frameworks/core_foundation/protocols/observable_protocol.js +0 -40
  427. data/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +0 -131
  428. data/sproutcore/frameworks/core_foundation/resources/core.css +0 -371
  429. data/sproutcore/frameworks/core_foundation/resources/view.css +0 -57
  430. data/sproutcore/frameworks/core_foundation/system/application.js +0 -35
  431. data/sproutcore/frameworks/core_foundation/system/browser.js +0 -36
  432. data/sproutcore/frameworks/core_foundation/system/builder.js +0 -210
  433. data/sproutcore/frameworks/core_foundation/system/core_query.js +0 -141
  434. data/sproutcore/frameworks/core_foundation/system/cursor.js +0 -131
  435. data/sproutcore/frameworks/core_foundation/system/device.js +0 -210
  436. data/sproutcore/frameworks/core_foundation/system/event.js +0 -914
  437. data/sproutcore/frameworks/core_foundation/system/json.js +0 -515
  438. data/sproutcore/frameworks/core_foundation/system/locale.js +0 -293
  439. data/sproutcore/frameworks/core_foundation/system/page.js +0 -108
  440. data/sproutcore/frameworks/core_foundation/system/platform.js +0 -399
  441. data/sproutcore/frameworks/core_foundation/system/ready.js +0 -77
  442. data/sproutcore/frameworks/core_foundation/system/render_context.js +0 -1063
  443. data/sproutcore/frameworks/core_foundation/system/responder.js +0 -124
  444. data/sproutcore/frameworks/core_foundation/system/root_responder.js +0 -2173
  445. data/sproutcore/frameworks/core_foundation/system/selection_set.js +0 -695
  446. data/sproutcore/frameworks/core_foundation/system/sparse_array.js +0 -393
  447. data/sproutcore/frameworks/core_foundation/system/theme.js +0 -316
  448. data/sproutcore/frameworks/core_foundation/system/timer.js +0 -553
  449. data/sproutcore/frameworks/core_foundation/system/utils.js +0 -151
  450. data/sproutcore/frameworks/core_foundation/system/utils/rect.js +0 -98
  451. data/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +0 -218
  452. data/sproutcore/frameworks/core_foundation/tests/controllers/array/enum_case.js +0 -206
  453. data/sproutcore/frameworks/core_foundation/tests/controllers/array/null_case.js +0 -64
  454. data/sproutcore/frameworks/core_foundation/tests/controllers/array/selection_support.js +0 -344
  455. data/sproutcore/frameworks/core_foundation/tests/controllers/array/single_case.js +0 -136
  456. data/sproutcore/frameworks/core_foundation/tests/controllers/object/empty_case.js +0 -82
  457. data/sproutcore/frameworks/core_foundation/tests/controllers/object/multiple_case.js +0 -111
  458. data/sproutcore/frameworks/core_foundation/tests/controllers/object/single_case.js +0 -193
  459. data/sproutcore/frameworks/core_foundation/tests/controllers/object/single_enumerable_case.js +0 -265
  460. data/sproutcore/frameworks/core_foundation/tests/mixins/responder_context.js +0 -75
  461. data/sproutcore/frameworks/core_foundation/tests/mixins/string.js +0 -55
  462. data/sproutcore/frameworks/core_foundation/tests/panes/template.js +0 -14
  463. data/sproutcore/frameworks/core_foundation/tests/system/builder.js +0 -42
  464. data/sproutcore/frameworks/core_foundation/tests/system/core_query/within.js +0 -65
  465. data/sproutcore/frameworks/core_foundation/tests/system/json.js +0 -14
  466. data/sproutcore/frameworks/core_foundation/tests/system/locale.js +0 -134
  467. data/sproutcore/frameworks/core_foundation/tests/system/ready/done.js +0 -32
  468. data/sproutcore/frameworks/core_foundation/tests/system/render_context/begin.js +0 -47
  469. data/sproutcore/frameworks/core_foundation/tests/system/render_context/element.js +0 -44
  470. data/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +0 -124
  471. data/sproutcore/frameworks/core_foundation/tests/system/render_context/get.js +0 -51
  472. data/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_attr.js +0 -50
  473. data/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_basic.js +0 -28
  474. data/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +0 -177
  475. data/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +0 -109
  476. data/sproutcore/frameworks/core_foundation/tests/system/render_context/init.js +0 -55
  477. data/sproutcore/frameworks/core_foundation/tests/system/render_context/join.js +0 -28
  478. data/sproutcore/frameworks/core_foundation/tests/system/render_context/push_text.js +0 -74
  479. data/sproutcore/frameworks/core_foundation/tests/system/render_context/tag.js +0 -46
  480. data/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +0 -218
  481. data/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeKeyPane.js +0 -124
  482. data/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeMainPane.js +0 -68
  483. data/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeMenuPane.js +0 -48
  484. data/sproutcore/frameworks/core_foundation/tests/system/root_responder/root_responder.js +0 -101
  485. data/sproutcore/frameworks/core_foundation/tests/system/root_responder/targetForAction.js +0 -288
  486. data/sproutcore/frameworks/core_foundation/tests/system/selection_set/add.js +0 -92
  487. data/sproutcore/frameworks/core_foundation/tests/system/selection_set/copy.js +0 -17
  488. data/sproutcore/frameworks/core_foundation/tests/system/selection_set/indexSetForSource.js +0 -98
  489. data/sproutcore/frameworks/core_foundation/tests/system/selection_set/isEqual.js +0 -60
  490. data/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +0 -111
  491. data/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +0 -194
  492. data/sproutcore/frameworks/core_foundation/tests/system/theme.js +0 -77
  493. data/sproutcore/frameworks/core_foundation/tests/system/timer/invalidate.js +0 -38
  494. data/sproutcore/frameworks/core_foundation/tests/system/timer/invokeLater.js +0 -203
  495. data/sproutcore/frameworks/core_foundation/tests/system/timer/isPaused.js +0 -71
  496. data/sproutcore/frameworks/core_foundation/tests/system/timer/performAction.js +0 -69
  497. data/sproutcore/frameworks/core_foundation/tests/system/timer/schedule.js +0 -170
  498. data/sproutcore/frameworks/core_foundation/tests/system/utils/normalizeURL.js +0 -18
  499. data/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +0 -271
  500. data/sproutcore/frameworks/core_foundation/tests/system/utils/rect.js +0 -99
  501. data/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +0 -43
  502. data/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +0 -218
  503. data/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +0 -20
  504. data/sproutcore/frameworks/core_foundation/tests/views/pane/firstResponder.js +0 -148
  505. data/sproutcore/frameworks/core_foundation/tests/views/pane/keyPane.js +0 -133
  506. data/sproutcore/frameworks/core_foundation/tests/views/pane/layout.js +0 -31
  507. data/sproutcore/frameworks/core_foundation/tests/views/pane/sendEvent.js +0 -206
  508. data/sproutcore/frameworks/core_foundation/tests/views/template/checkbox_support.js +0 -32
  509. data/sproutcore/frameworks/core_foundation/tests/views/template/text_field_support.js +0 -73
  510. data/sproutcore/frameworks/core_foundation/tests/views/template_view/collection.js +0 -111
  511. data/sproutcore/frameworks/core_foundation/tests/views/template_view/core.js +0 -100
  512. data/sproutcore/frameworks/core_foundation/tests/views/template_view/handlebars.js +0 -580
  513. data/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +0 -376
  514. data/sproutcore/frameworks/core_foundation/tests/views/view/build.js +0 -85
  515. data/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +0 -89
  516. data/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +0 -117
  517. data/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +0 -248
  518. data/sproutcore/frameworks/core_foundation/tests/views/view/convertLayouts.js +0 -145
  519. data/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +0 -132
  520. data/sproutcore/frameworks/core_foundation/tests/views/view/createLayer.js +0 -97
  521. data/sproutcore/frameworks/core_foundation/tests/views/view/destroyLayer.js +0 -83
  522. data/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +0 -51
  523. data/sproutcore/frameworks/core_foundation/tests/views/view/findLayerInParentLayer.js +0 -50
  524. data/sproutcore/frameworks/core_foundation/tests/views/view/init.js +0 -50
  525. data/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +0 -217
  526. data/sproutcore/frameworks/core_foundation/tests/views/view/isVisible.js +0 -79
  527. data/sproutcore/frameworks/core_foundation/tests/views/view/isVisibleInWindow.js +0 -116
  528. data/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +0 -22
  529. data/sproutcore/frameworks/core_foundation/tests/views/view/layer.js +0 -150
  530. data/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js +0 -162
  531. data/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +0 -180
  532. data/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +0 -735
  533. data/sproutcore/frameworks/core_foundation/tests/views/view/parentViewDidChange.js +0 -67
  534. data/sproutcore/frameworks/core_foundation/tests/views/view/prepareContext.js +0 -203
  535. data/sproutcore/frameworks/core_foundation/tests/views/view/removeChild.js +0 -189
  536. data/sproutcore/frameworks/core_foundation/tests/views/view/render.js +0 -125
  537. data/sproutcore/frameworks/core_foundation/tests/views/view/render_delegate_support.js +0 -163
  538. data/sproutcore/frameworks/core_foundation/tests/views/view/replaceChild.js +0 -29
  539. data/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +0 -21
  540. data/sproutcore/frameworks/core_foundation/tests/views/view/theme.js +0 -43
  541. data/sproutcore/frameworks/core_foundation/tests/views/view/updateLayer.js +0 -148
  542. data/sproutcore/frameworks/core_foundation/tests/views/view/updateLayerLocation.js +0 -213
  543. data/sproutcore/frameworks/core_foundation/tests/views/view/view.js +0 -64
  544. data/sproutcore/frameworks/core_foundation/tests/views/view/viewDidResize.js +0 -202
  545. data/sproutcore/frameworks/core_foundation/views/template.js +0 -77
  546. data/sproutcore/frameworks/core_foundation/views/template/checkbox_support.js +0 -20
  547. data/sproutcore/frameworks/core_foundation/views/template/collection.js +0 -106
  548. data/sproutcore/frameworks/core_foundation/views/template/text_field_support.js +0 -35
  549. data/sproutcore/frameworks/core_foundation/views/view.js +0 -1458
  550. data/sproutcore/frameworks/core_foundation/views/view/animation.js +0 -181
  551. data/sproutcore/frameworks/core_foundation/views/view/base.js +0 -1
  552. data/sproutcore/frameworks/core_foundation/views/view/cursor.js +0 -48
  553. data/sproutcore/frameworks/core_foundation/views/view/enabled.js +0 -57
  554. data/sproutcore/frameworks/core_foundation/views/view/keyboard.js +0 -223
  555. data/sproutcore/frameworks/core_foundation/views/view/layout.js +0 -1087
  556. data/sproutcore/frameworks/core_foundation/views/view/layout_style.js +0 -618
  557. data/sproutcore/frameworks/core_foundation/views/view/manipulation.js +0 -426
  558. data/sproutcore/frameworks/core_foundation/views/view/theming.js +0 -362
  559. data/sproutcore/frameworks/core_foundation/views/view/touch.js +0 -67
  560. data/sproutcore/frameworks/core_foundation/views/view/visibility.js +0 -118
  561. data/sproutcore/frameworks/core_tools/core.js +0 -20
  562. data/sproutcore/frameworks/core_tools/data_source.js +0 -99
  563. data/sproutcore/frameworks/core_tools/english.lproj/strings.js +0 -15
  564. data/sproutcore/frameworks/core_tools/fixtures/target.js +0 -87
  565. data/sproutcore/frameworks/core_tools/fixtures/test.js +0 -44
  566. data/sproutcore/frameworks/core_tools/models/target.js +0 -108
  567. data/sproutcore/frameworks/core_tools/models/test.js +0 -48
  568. data/sproutcore/frameworks/datastore/core.js +0 -8
  569. data/sproutcore/frameworks/datastore/data_sources/cascade.js +0 -180
  570. data/sproutcore/frameworks/datastore/data_sources/data_source.js +0 -583
  571. data/sproutcore/frameworks/datastore/data_sources/fixtures.js +0 -393
  572. data/sproutcore/frameworks/datastore/debug/json.js +0 -71
  573. data/sproutcore/frameworks/datastore/debug/standard_setup.js +0 -96
  574. data/sproutcore/frameworks/datastore/fixtures/author_fixtures.js +0 -2503
  575. data/sproutcore/frameworks/datastore/fixtures/sample.js +0 -17
  576. data/sproutcore/frameworks/datastore/models/child_attribute.js +0 -96
  577. data/sproutcore/frameworks/datastore/models/children_attribute.js +0 -75
  578. data/sproutcore/frameworks/datastore/models/fetched_attribute.js +0 -100
  579. data/sproutcore/frameworks/datastore/models/many_attribute.js +0 -154
  580. data/sproutcore/frameworks/datastore/models/record.js +0 -1318
  581. data/sproutcore/frameworks/datastore/models/record_attribute.js +0 -567
  582. data/sproutcore/frameworks/datastore/models/single_attribute.js +0 -159
  583. data/sproutcore/frameworks/datastore/system/child_array.js +0 -222
  584. data/sproutcore/frameworks/datastore/system/many_array.js +0 -418
  585. data/sproutcore/frameworks/datastore/system/nested_store.js +0 -609
  586. data/sproutcore/frameworks/datastore/system/query.js +0 -1599
  587. data/sproutcore/frameworks/datastore/system/record_array.js +0 -710
  588. data/sproutcore/frameworks/datastore/system/store.js +0 -2860
  589. data/sproutcore/frameworks/datastore/tests/data_sources/cascade.js +0 -133
  590. data/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +0 -122
  591. data/sproutcore/frameworks/datastore/tests/integration/contact_model.js +0 -131
  592. data/sproutcore/frameworks/datastore/tests/integration/cyclical_relationship.js +0 -119
  593. data/sproutcore/frameworks/datastore/tests/integration/mail_model.js +0 -91
  594. data/sproutcore/frameworks/datastore/tests/integration/test_runner_model.js +0 -56
  595. data/sproutcore/frameworks/datastore/tests/models/datetime_recordattribute.js +0 -73
  596. data/sproutcore/frameworks/datastore/tests/models/many_attribute.js +0 -423
  597. data/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +0 -180
  598. data/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +0 -309
  599. data/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +0 -363
  600. data/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +0 -421
  601. data/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +0 -304
  602. data/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +0 -55
  603. data/sproutcore/frameworks/datastore/tests/models/record/destroy.js +0 -92
  604. data/sproutcore/frameworks/datastore/tests/models/record/error_methods.js +0 -56
  605. data/sproutcore/frameworks/datastore/tests/models/record/normalize.js +0 -336
  606. data/sproutcore/frameworks/datastore/tests/models/record/readAttribute.js +0 -53
  607. data/sproutcore/frameworks/datastore/tests/models/record/refresh.js +0 -48
  608. data/sproutcore/frameworks/datastore/tests/models/record/storeDidChangeProperties.js +0 -170
  609. data/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +0 -66
  610. data/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +0 -112
  611. data/sproutcore/frameworks/datastore/tests/models/record_attribute.js +0 -252
  612. data/sproutcore/frameworks/datastore/tests/models/single_attribute.js +0 -284
  613. data/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +0 -204
  614. data/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +0 -180
  615. data/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +0 -173
  616. data/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +0 -158
  617. data/sproutcore/frameworks/datastore/tests/system/nested_store/core_methods.js +0 -70
  618. data/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +0 -113
  619. data/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +0 -102
  620. data/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +0 -180
  621. data/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +0 -126
  622. data/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +0 -163
  623. data/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +0 -166
  624. data/sproutcore/frameworks/datastore/tests/system/query/builders.js +0 -219
  625. data/sproutcore/frameworks/datastore/tests/system/query/compare.js +0 -144
  626. data/sproutcore/frameworks/datastore/tests/system/query/contains.js +0 -131
  627. data/sproutcore/frameworks/datastore/tests/system/query/containsRecordTypes.js +0 -81
  628. data/sproutcore/frameworks/datastore/tests/system/query/copy.js +0 -30
  629. data/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +0 -197
  630. data/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +0 -92
  631. data/sproutcore/frameworks/datastore/tests/system/query/expandedRecordTypes.js +0 -64
  632. data/sproutcore/frameworks/datastore/tests/system/query/parse.js +0 -216
  633. data/sproutcore/frameworks/datastore/tests/system/query/queryWithScope.js +0 -57
  634. data/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +0 -47
  635. data/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +0 -70
  636. data/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +0 -71
  637. data/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +0 -177
  638. data/sproutcore/frameworks/datastore/tests/system/record_array/error_methods.js +0 -50
  639. data/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +0 -214
  640. data/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +0 -54
  641. data/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +0 -137
  642. data/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +0 -221
  643. data/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +0 -156
  644. data/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +0 -76
  645. data/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +0 -157
  646. data/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +0 -278
  647. data/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +0 -110
  648. data/sproutcore/frameworks/datastore/tests/system/store/error_methods.js +0 -62
  649. data/sproutcore/frameworks/datastore/tests/system/store/find.js +0 -530
  650. data/sproutcore/frameworks/datastore/tests/system/store/init.js +0 -23
  651. data/sproutcore/frameworks/datastore/tests/system/store/loadRecord.js +0 -64
  652. data/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +0 -61
  653. data/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +0 -74
  654. data/sproutcore/frameworks/datastore/tests/system/store/readEditableDataHash.js +0 -74
  655. data/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +0 -76
  656. data/sproutcore/frameworks/datastore/tests/system/store/removeDataHash.js +0 -144
  657. data/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +0 -200
  658. data/sproutcore/frameworks/datastore/tests/system/store/unloadRecords.js +0 -41
  659. data/sproutcore/frameworks/datastore/tests/system/store/writeDataHash.js +0 -125
  660. data/sproutcore/frameworks/datetime/resources/strings.js +0 -14
  661. data/sproutcore/frameworks/datetime/system/datetime.js +0 -1111
  662. data/sproutcore/frameworks/datetime/tests/system/datetime.js +0 -383
  663. data/sproutcore/frameworks/debug/core.js +0 -114
  664. data/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
  665. data/sproutcore/frameworks/designer/coders/design.js +0 -20
  666. data/sproutcore/frameworks/designer/coders/object.js +0 -347
  667. data/sproutcore/frameworks/designer/controllers/controllers.js +0 -16
  668. data/sproutcore/frameworks/designer/controllers/design.js +0 -37
  669. data/sproutcore/frameworks/designer/controllers/designs.js +0 -133
  670. data/sproutcore/frameworks/designer/controllers/page_design.js +0 -170
  671. data/sproutcore/frameworks/designer/controllers/page_files.js +0 -22
  672. data/sproutcore/frameworks/designer/core.js +0 -26
  673. data/sproutcore/frameworks/designer/css/css_rule.js +0 -22
  674. data/sproutcore/frameworks/designer/css/css_style.js +0 -29
  675. data/sproutcore/frameworks/designer/css/css_style_sheet.js +0 -201
  676. data/sproutcore/frameworks/designer/designers/button.js +0 -21
  677. data/sproutcore/frameworks/designer/designers/label.js +0 -16
  678. data/sproutcore/frameworks/designer/designers/object_designer.js +0 -296
  679. data/sproutcore/frameworks/designer/designers/tab.js +0 -18
  680. data/sproutcore/frameworks/designer/designers/text_field.js +0 -15
  681. data/sproutcore/frameworks/designer/designers/view_designer.js +0 -1267
  682. data/sproutcore/frameworks/designer/english.lproj/css/designer.css +0 -96
  683. data/sproutcore/frameworks/designer/english.lproj/design_page.js +0 -55
  684. data/sproutcore/frameworks/designer/english.lproj/high_light.css +0 -10
  685. data/sproutcore/frameworks/designer/english.lproj/images/controller.png +0 -0
  686. data/sproutcore/frameworks/designer/english.lproj/images/dock-bg.png +0 -0
  687. data/sproutcore/frameworks/designer/english.lproj/images/dock-item-bg.png +0 -0
  688. data/sproutcore/frameworks/designer/english.lproj/images/dock-item-divider.png +0 -0
  689. data/sproutcore/frameworks/designer/english.lproj/images/dock-item-sel-bg.png +0 -0
  690. data/sproutcore/frameworks/designer/english.lproj/images/dock-item-sel-divider.png +0 -0
  691. data/sproutcore/frameworks/designer/english.lproj/images/main-bg.png +0 -0
  692. data/sproutcore/frameworks/designer/english.lproj/images/page.png +0 -0
  693. data/sproutcore/frameworks/designer/english.lproj/images/pane.png +0 -0
  694. data/sproutcore/frameworks/designer/english.lproj/images/view.png +0 -0
  695. data/sproutcore/frameworks/designer/english.lproj/selection_handles.css +0 -58
  696. data/sproutcore/frameworks/designer/ext/binding.js +0 -33
  697. data/sproutcore/frameworks/designer/ext/object.js +0 -26
  698. data/sproutcore/frameworks/designer/ext/page.js +0 -58
  699. data/sproutcore/frameworks/designer/ext/view.js +0 -27
  700. data/sproutcore/frameworks/designer/mixins/button.js +0 -11
  701. data/sproutcore/frameworks/designer/mixins/snap_lines.js +0 -221
  702. data/sproutcore/frameworks/designer/tests/coders/page.js +0 -54
  703. data/sproutcore/frameworks/designer/tests/designers/view_designer.js +0 -47
  704. data/sproutcore/frameworks/designer/views/designer_drop_target.js +0 -144
  705. data/sproutcore/frameworks/designer/views/drawing.js +0 -219
  706. data/sproutcore/frameworks/designer/views/high_light.js +0 -66
  707. data/sproutcore/frameworks/designer/views/page_item_view.js +0 -130
  708. data/sproutcore/frameworks/designer/views/selection_handles.js +0 -78
  709. data/sproutcore/frameworks/desktop/.greenhouseconf +0 -218
  710. data/sproutcore/frameworks/desktop/core.js +0 -18
  711. data/sproutcore/frameworks/desktop/debug/drag.js +0 -41
  712. data/sproutcore/frameworks/desktop/english.lproj/alert.css +0 -56
  713. data/sproutcore/frameworks/desktop/english.lproj/debug/a_sample_image.jpg +0 -0
  714. data/sproutcore/frameworks/desktop/english.lproj/debug/apple-logo1.jpeg +0 -0
  715. data/sproutcore/frameworks/desktop/english.lproj/debug/iframe.html +0 -23
  716. data/sproutcore/frameworks/desktop/english.lproj/disclosure.css +0 -74
  717. data/sproutcore/frameworks/desktop/english.lproj/drag.css +0 -7
  718. data/sproutcore/frameworks/desktop/english.lproj/icons.css +0 -943
  719. data/sproutcore/frameworks/desktop/english.lproj/images/cap.png +0 -0
  720. data/sproutcore/frameworks/desktop/english.lproj/images/downbutton.png +0 -0
  721. data/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
  722. data/sproutcore/frameworks/desktop/english.lproj/images/thumb-bottom.png +0 -0
  723. data/sproutcore/frameworks/desktop/english.lproj/images/thumb-center.png +0 -0
  724. data/sproutcore/frameworks/desktop/english.lproj/images/thumb-top.png +0 -0
  725. data/sproutcore/frameworks/desktop/english.lproj/images/track.png +0 -0
  726. data/sproutcore/frameworks/desktop/english.lproj/images/upbutton.png +0 -0
  727. data/sproutcore/frameworks/desktop/english.lproj/list_item.css +0 -185
  728. data/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -12
  729. data/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +0 -109
  730. data/sproutcore/frameworks/desktop/english.lproj/modal.css +0 -9
  731. data/sproutcore/frameworks/desktop/english.lproj/panel.css +0 -91
  732. data/sproutcore/frameworks/desktop/english.lproj/picker.css +0 -35
  733. data/sproutcore/frameworks/desktop/english.lproj/progress.css +0 -33
  734. data/sproutcore/frameworks/desktop/english.lproj/radio.css +0 -10
  735. data/sproutcore/frameworks/desktop/english.lproj/segmented.css +0 -132
  736. data/sproutcore/frameworks/desktop/english.lproj/separator.css +0 -19
  737. data/sproutcore/frameworks/desktop/english.lproj/slider.css +0 -66
  738. data/sproutcore/frameworks/desktop/english.lproj/split.css +0 -0
  739. data/sproutcore/frameworks/desktop/english.lproj/split_divider.css +0 -6
  740. data/sproutcore/frameworks/desktop/english.lproj/strings.js +0 -14
  741. data/sproutcore/frameworks/desktop/english.lproj/tab.css +0 -7
  742. data/sproutcore/frameworks/desktop/english.lproj/toolbar.css +0 -5
  743. data/sproutcore/frameworks/desktop/english.lproj/touch-scroller.css +0 -196
  744. data/sproutcore/frameworks/desktop/english.lproj/well.css +0 -71
  745. data/sproutcore/frameworks/desktop/mixins/border.js +0 -151
  746. data/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +0 -694
  747. data/sproutcore/frameworks/desktop/mixins/collection_group.js +0 -22
  748. data/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +0 -95
  749. data/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +0 -295
  750. data/sproutcore/frameworks/desktop/mixins/navigation_builder.js +0 -130
  751. data/sproutcore/frameworks/desktop/mixins/scrollable.js +0 -253
  752. data/sproutcore/frameworks/desktop/panes/alert.js +0 -457
  753. data/sproutcore/frameworks/desktop/panes/menu.js +0 -1141
  754. data/sproutcore/frameworks/desktop/panes/modal.js +0 -71
  755. data/sproutcore/frameworks/desktop/panes/palette.js +0 -74
  756. data/sproutcore/frameworks/desktop/panes/panel.js +0 -207
  757. data/sproutcore/frameworks/desktop/panes/picker.js +0 -796
  758. data/sproutcore/frameworks/desktop/panes/select_button.js +0 -895
  759. data/sproutcore/frameworks/desktop/panes/sheet.js +0 -214
  760. data/sproutcore/frameworks/desktop/protocols/drag_data_source.js +0 -39
  761. data/sproutcore/frameworks/desktop/protocols/drag_source.js +0 -81
  762. data/sproutcore/frameworks/desktop/protocols/drop_target.js +0 -175
  763. data/sproutcore/frameworks/desktop/protocols/responder.js +0 -299
  764. data/sproutcore/frameworks/desktop/render_delegates/button.js +0 -105
  765. data/sproutcore/frameworks/desktop/render_delegates/checkbox.js +0 -100
  766. data/sproutcore/frameworks/desktop/render_delegates/collection.js +0 -24
  767. data/sproutcore/frameworks/desktop/render_delegates/disclosure.js +0 -69
  768. data/sproutcore/frameworks/desktop/render_delegates/helpers/slicing.js +0 -34
  769. data/sproutcore/frameworks/desktop/render_delegates/image_button.js +0 -30
  770. data/sproutcore/frameworks/desktop/render_delegates/master_detail.js +0 -28
  771. data/sproutcore/frameworks/desktop/render_delegates/menu.js +0 -47
  772. data/sproutcore/frameworks/desktop/render_delegates/panel.js +0 -28
  773. data/sproutcore/frameworks/desktop/render_delegates/picker.js +0 -43
  774. data/sproutcore/frameworks/desktop/render_delegates/progress.js +0 -187
  775. data/sproutcore/frameworks/desktop/render_delegates/radio.js +0 -95
  776. data/sproutcore/frameworks/desktop/render_delegates/radio_group.js +0 -109
  777. data/sproutcore/frameworks/desktop/render_delegates/segment.js +0 -55
  778. data/sproutcore/frameworks/desktop/render_delegates/segmented.js +0 -77
  779. data/sproutcore/frameworks/desktop/render_delegates/slider.js +0 -58
  780. data/sproutcore/frameworks/desktop/render_delegates/source_list.js +0 -8
  781. data/sproutcore/frameworks/desktop/render_delegates/toolbar.js +0 -18
  782. data/sproutcore/frameworks/desktop/render_delegates/well.js +0 -27
  783. data/sproutcore/frameworks/desktop/render_delegates/workspace.js +0 -18
  784. data/sproutcore/frameworks/desktop/system/drag.js +0 -974
  785. data/sproutcore/frameworks/desktop/system/key_bindings.js +0 -40
  786. data/sproutcore/frameworks/desktop/system/undo_manager.js +0 -187
  787. data/sproutcore/frameworks/desktop/tests/integration/dialog.js +0 -48
  788. data/sproutcore/frameworks/desktop/tests/mixins/border.js +0 -97
  789. data/sproutcore/frameworks/desktop/tests/panes/alert/methods.js +0 -10
  790. data/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +0 -158
  791. data/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +0 -135
  792. data/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +0 -258
  793. data/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +0 -10
  794. data/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +0 -35
  795. data/sproutcore/frameworks/desktop/tests/panes/pane_page.js +0 -41
  796. data/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +0 -10
  797. data/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +0 -83
  798. data/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +0 -10
  799. data/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +0 -92
  800. data/sproutcore/frameworks/desktop/tests/panes/select_button/methods.js +0 -194
  801. data/sproutcore/frameworks/desktop/tests/panes/select_button/ui.js +0 -220
  802. data/sproutcore/frameworks/desktop/tests/panes/sheet/methods.js +0 -10
  803. data/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +0 -44
  804. data/sproutcore/frameworks/desktop/tests/views/button/methods.js +0 -166
  805. data/sproutcore/frameworks/desktop/tests/views/button/ui.js +0 -236
  806. data/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +0 -126
  807. data/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +0 -124
  808. data/sproutcore/frameworks/desktop/tests/views/collection/content.js +0 -249
  809. data/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +0 -82
  810. data/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +0 -215
  811. data/sproutcore/frameworks/desktop/tests/views/collection/displayProperties.js +0 -31
  812. data/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +0 -300
  813. data/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +0 -65
  814. data/sproutcore/frameworks/desktop/tests/views/collection/length.js +0 -88
  815. data/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +0 -240
  816. data/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +0 -121
  817. data/sproutcore/frameworks/desktop/tests/views/collection/reload.js +0 -177
  818. data/sproutcore/frameworks/desktop/tests/views/collection/select.js +0 -240
  819. data/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +0 -205
  820. data/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +0 -211
  821. data/sproutcore/frameworks/desktop/tests/views/collection/selection.js +0 -141
  822. data/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +0 -188
  823. data/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +0 -76
  824. data/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +0 -456
  825. data/sproutcore/frameworks/desktop/tests/views/disclosure/methods.js +0 -10
  826. data/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +0 -104
  827. data/sproutcore/frameworks/desktop/tests/views/grid/methods.js +0 -10
  828. data/sproutcore/frameworks/desktop/tests/views/grid/ui.js +0 -10
  829. data/sproutcore/frameworks/desktop/tests/views/image_button/ui.js +0 -25
  830. data/sproutcore/frameworks/desktop/tests/views/list/render.js +0 -92
  831. data/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +0 -183
  832. data/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +0 -133
  833. data/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +0 -131
  834. data/sproutcore/frameworks/desktop/tests/views/list/ui_alternatingrows.js +0 -130
  835. data/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +0 -56
  836. data/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +0 -205
  837. data/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +0 -127
  838. data/sproutcore/frameworks/desktop/tests/views/list_item.js +0 -396
  839. data/sproutcore/frameworks/desktop/tests/views/menu_item/methods.js +0 -10
  840. data/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +0 -46
  841. data/sproutcore/frameworks/desktop/tests/views/progress/methods.js +0 -128
  842. data/sproutcore/frameworks/desktop/tests/views/progress/ui.js +0 -421
  843. data/sproutcore/frameworks/desktop/tests/views/radio/methods.js +0 -119
  844. data/sproutcore/frameworks/desktop/tests/views/radio/ui.js +0 -349
  845. data/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +0 -143
  846. data/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +0 -162
  847. data/sproutcore/frameworks/desktop/tests/views/scroller.js +0 -118
  848. data/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +0 -108
  849. data/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +0 -457
  850. data/sproutcore/frameworks/desktop/tests/views/select/methods.js +0 -144
  851. data/sproutcore/frameworks/desktop/tests/views/select/ui.js +0 -224
  852. data/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +0 -163
  853. data/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +0 -117
  854. data/sproutcore/frameworks/desktop/tests/views/separator.js +0 -44
  855. data/sproutcore/frameworks/desktop/tests/views/source_list/methods.js +0 -10
  856. data/sproutcore/frameworks/desktop/tests/views/source_list/ui.js +0 -10
  857. data/sproutcore/frameworks/desktop/tests/views/split/methods.js +0 -60
  858. data/sproutcore/frameworks/desktop/tests/views/split/ui.js +0 -59
  859. data/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +0 -238
  860. data/sproutcore/frameworks/desktop/tests/views/static_content.js +0 -46
  861. data/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -54
  862. data/sproutcore/frameworks/desktop/tests/views/tab/ui.js +0 -92
  863. data/sproutcore/frameworks/desktop/tests/views/toolbar/method.js +0 -33
  864. data/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +0 -29
  865. data/sproutcore/frameworks/desktop/tests/views/web/methods.js +0 -10
  866. data/sproutcore/frameworks/desktop/tests/views/web/ui.js +0 -110
  867. data/sproutcore/frameworks/desktop/tests/views/well/ui.js +0 -54
  868. data/sproutcore/frameworks/desktop/views/button.js +0 -564
  869. data/sproutcore/frameworks/desktop/views/checkbox.js +0 -110
  870. data/sproutcore/frameworks/desktop/views/collection.js +0 -3090
  871. data/sproutcore/frameworks/desktop/views/date_field.js +0 -319
  872. data/sproutcore/frameworks/desktop/views/disclosure.js +0 -68
  873. data/sproutcore/frameworks/desktop/views/file.js +0 -112
  874. data/sproutcore/frameworks/desktop/views/grid.js +0 -207
  875. data/sproutcore/frameworks/desktop/views/image_button.js +0 -74
  876. data/sproutcore/frameworks/desktop/views/list.js +0 -637
  877. data/sproutcore/frameworks/desktop/views/list_item.js +0 -923
  878. data/sproutcore/frameworks/desktop/views/master_detail.js +0 -257
  879. data/sproutcore/frameworks/desktop/views/menu_item.js +0 -704
  880. data/sproutcore/frameworks/desktop/views/menu_scroll.js +0 -615
  881. data/sproutcore/frameworks/desktop/views/navigation.js +0 -237
  882. data/sproutcore/frameworks/desktop/views/navigation_bar.js +0 -181
  883. data/sproutcore/frameworks/desktop/views/popup_button.js +0 -299
  884. data/sproutcore/frameworks/desktop/views/progress.js +0 -197
  885. data/sproutcore/frameworks/desktop/views/radio.js +0 -347
  886. data/sproutcore/frameworks/desktop/views/scene.js +0 -204
  887. data/sproutcore/frameworks/desktop/views/scroll.js +0 -1824
  888. data/sproutcore/frameworks/desktop/views/scroller.js +0 -917
  889. data/sproutcore/frameworks/desktop/views/segment.js +0 -104
  890. data/sproutcore/frameworks/desktop/views/segmented.js +0 -1002
  891. data/sproutcore/frameworks/desktop/views/select.js +0 -809
  892. data/sproutcore/frameworks/desktop/views/select_field.js +0 -344
  893. data/sproutcore/frameworks/desktop/views/separator.js +0 -36
  894. data/sproutcore/frameworks/desktop/views/slider.js +0 -291
  895. data/sproutcore/frameworks/desktop/views/source_list.js +0 -49
  896. data/sproutcore/frameworks/desktop/views/source_list_group.js +0 -169
  897. data/sproutcore/frameworks/desktop/views/split.js +0 -891
  898. data/sproutcore/frameworks/desktop/views/split_divider.js +0 -52
  899. data/sproutcore/frameworks/desktop/views/stacked.js +0 -110
  900. data/sproutcore/frameworks/desktop/views/static_content.js +0 -134
  901. data/sproutcore/frameworks/desktop/views/tab.js +0 -186
  902. data/sproutcore/frameworks/desktop/views/thumb.js +0 -53
  903. data/sproutcore/frameworks/desktop/views/toolbar.js +0 -88
  904. data/sproutcore/frameworks/desktop/views/web.js +0 -87
  905. data/sproutcore/frameworks/desktop/views/well.js +0 -65
  906. data/sproutcore/frameworks/desktop/views/workspace.js +0 -251
  907. data/sproutcore/frameworks/documentation/core.js +0 -0
  908. data/sproutcore/frameworks/experimental/README.md +0 -23
  909. data/sproutcore/frameworks/experimental/frameworks/device_motion/README.md +0 -11
  910. data/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +0 -215
  911. data/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +0 -67
  912. data/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +0 -34
  913. data/sproutcore/frameworks/experimental/frameworks/polymorphism/models/polymorphic_single_attribute.js +0 -183
  914. data/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +0 -23
  915. data/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphic/single.js +0 -124
  916. data/sproutcore/frameworks/forms/english.lproj/default_styles.css +0 -5
  917. data/sproutcore/frameworks/forms/english.lproj/strings.js +0 -15
  918. data/sproutcore/frameworks/forms/mixins/edit_mode.js +0 -43
  919. data/sproutcore/frameworks/forms/mixins/emptiness.js +0 -95
  920. data/sproutcore/frameworks/forms/renderer_delegates/form.js +0 -22
  921. data/sproutcore/frameworks/forms/renderer_delegates/form_row.js +0 -21
  922. data/sproutcore/frameworks/forms/tests/views/form.js +0 -15
  923. data/sproutcore/frameworks/forms/tests/views/form_checkbox_field.js +0 -15
  924. data/sproutcore/frameworks/forms/tests/views/form_field.js +0 -15
  925. data/sproutcore/frameworks/forms/tests/views/form_label.js +0 -15
  926. data/sproutcore/frameworks/forms/tests/views/form_radio_field.js +0 -15
  927. data/sproutcore/frameworks/forms/tests/views/form_row.js +0 -15
  928. data/sproutcore/frameworks/forms/tests/views/form_text_field.js +0 -15
  929. data/sproutcore/frameworks/forms/views/form.js +0 -282
  930. data/sproutcore/frameworks/forms/views/form_row.js +0 -183
  931. data/sproutcore/frameworks/foundation/.greenhouseconf +0 -35
  932. data/sproutcore/frameworks/foundation/TESTING +0 -46
  933. data/sproutcore/frameworks/foundation/controllers/tree.js +0 -127
  934. data/sproutcore/frameworks/foundation/core.js +0 -0
  935. data/sproutcore/frameworks/foundation/debug/control_test_pane.js +0 -191
  936. data/sproutcore/frameworks/foundation/english.lproj/benchmark.css +0 -146
  937. data/sproutcore/frameworks/foundation/english.lproj/blank.gif +0 -0
  938. data/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +0 -67
  939. data/sproutcore/frameworks/foundation/english.lproj/button_view.css +0 -40
  940. data/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +0 -9
  941. data/sproutcore/frameworks/foundation/english.lproj/images/favicon.ico +0 -0
  942. data/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-logo.png +0 -0
  943. data/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-startup-landscape.jpg +0 -0
  944. data/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-startup-landscape.png +0 -0
  945. data/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-startup-portrait.jpg +0 -0
  946. data/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-startup-portrait.png +0 -0
  947. data/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-startup.png +0 -0
  948. data/sproutcore/frameworks/foundation/english.lproj/images/sproutcore.png +0 -0
  949. data/sproutcore/frameworks/foundation/english.lproj/inline_editor.css +0 -12
  950. data/sproutcore/frameworks/foundation/english.lproj/label.css +0 -47
  951. data/sproutcore/frameworks/foundation/english.lproj/static_layout.css +0 -5
  952. data/sproutcore/frameworks/foundation/english.lproj/text_field.css +0 -146
  953. data/sproutcore/frameworks/foundation/fixtures/file_exists.json +0 -1
  954. data/sproutcore/frameworks/foundation/fixtures/malformed.json +0 -11
  955. data/sproutcore/frameworks/foundation/gestures/pinch.js +0 -81
  956. data/sproutcore/frameworks/foundation/gestures/swipe.js +0 -144
  957. data/sproutcore/frameworks/foundation/gestures/tap.js +0 -113
  958. data/sproutcore/frameworks/foundation/license.js +0 -28
  959. data/sproutcore/frameworks/foundation/mixins/auto_mixin.js +0 -39
  960. data/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -233
  961. data/sproutcore/frameworks/foundation/mixins/button.js +0 -360
  962. data/sproutcore/frameworks/foundation/mixins/collection_content.js +0 -178
  963. data/sproutcore/frameworks/foundation/mixins/content_display.js +0 -114
  964. data/sproutcore/frameworks/foundation/mixins/control.js +0 -422
  965. data/sproutcore/frameworks/foundation/mixins/editable.js +0 -158
  966. data/sproutcore/frameworks/foundation/mixins/flowed_layout.js +0 -628
  967. data/sproutcore/frameworks/foundation/mixins/gestureable.js +0 -214
  968. data/sproutcore/frameworks/foundation/mixins/inline_editable.js +0 -89
  969. data/sproutcore/frameworks/foundation/mixins/inline_editor_delegate.js +0 -139
  970. data/sproutcore/frameworks/foundation/mixins/inline_text_field.js +0 -589
  971. data/sproutcore/frameworks/foundation/mixins/inner_frame.js +0 -184
  972. data/sproutcore/frameworks/foundation/mixins/static_layout.js +0 -77
  973. data/sproutcore/frameworks/foundation/mixins/string.js +0 -391
  974. data/sproutcore/frameworks/foundation/mixins/tree_item_content.js +0 -160
  975. data/sproutcore/frameworks/foundation/mixins/validatable.js +0 -189
  976. data/sproutcore/frameworks/foundation/private/tree_item_observer.js +0 -914
  977. data/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +0 -110
  978. data/sproutcore/frameworks/foundation/render_delegates/container.js +0 -18
  979. data/sproutcore/frameworks/foundation/render_delegates/image.js +0 -97
  980. data/sproutcore/frameworks/foundation/render_delegates/label.js +0 -139
  981. data/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +0 -17
  982. data/sproutcore/frameworks/foundation/system/benchmark.js +0 -718
  983. data/sproutcore/frameworks/foundation/system/chance.js +0 -64
  984. data/sproutcore/frameworks/foundation/system/cookie.js +0 -171
  985. data/sproutcore/frameworks/foundation/system/core_query.js +0 -56
  986. data/sproutcore/frameworks/foundation/system/exception_handler.js +0 -88
  987. data/sproutcore/frameworks/foundation/system/gesture.js +0 -363
  988. data/sproutcore/frameworks/foundation/system/image_queue.js +0 -433
  989. data/sproutcore/frameworks/foundation/system/math.js +0 -57
  990. data/sproutcore/frameworks/foundation/system/module.js +0 -583
  991. data/sproutcore/frameworks/foundation/system/request.js +0 -596
  992. data/sproutcore/frameworks/foundation/system/response.js +0 -550
  993. data/sproutcore/frameworks/foundation/system/routes.js +0 -519
  994. data/sproutcore/frameworks/foundation/system/staticqueue.js +0 -53
  995. data/sproutcore/frameworks/foundation/system/task_queue.js +0 -153
  996. data/sproutcore/frameworks/foundation/system/text_selection.js +0 -103
  997. data/sproutcore/frameworks/foundation/system/time.js +0 -473
  998. data/sproutcore/frameworks/foundation/system/user_defaults.js +0 -392
  999. data/sproutcore/frameworks/foundation/system/utils/colors.js +0 -80
  1000. data/sproutcore/frameworks/foundation/system/utils/misc.js +0 -137
  1001. data/sproutcore/frameworks/foundation/system/utils/range.js +0 -64
  1002. data/sproutcore/frameworks/foundation/system/utils/string_measurement.js +0 -247
  1003. data/sproutcore/frameworks/foundation/tasks/preload_bundle.js +0 -41
  1004. data/sproutcore/frameworks/foundation/tasks/task.js +0 -17
  1005. data/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +0 -108
  1006. data/sproutcore/frameworks/foundation/tests/controllers/tree/selection_support.js +0 -340
  1007. data/sproutcore/frameworks/foundation/tests/debug/control_test_pane/methods.js +0 -10
  1008. data/sproutcore/frameworks/foundation/tests/debug/control_test_pane/ui.js +0 -113
  1009. data/sproutcore/frameworks/foundation/tests/integration/creating_views.js +0 -118
  1010. data/sproutcore/frameworks/foundation/tests/mixins/button/content.js +0 -195
  1011. data/sproutcore/frameworks/foundation/tests/mixins/button/displayProperties.js +0 -89
  1012. data/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +0 -57
  1013. data/sproutcore/frameworks/foundation/tests/mixins/button/ui.js +0 -69
  1014. data/sproutcore/frameworks/foundation/tests/mixins/content_display.js +0 -51
  1015. data/sproutcore/frameworks/foundation/tests/mixins/control/content.js +0 -168
  1016. data/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +0 -89
  1017. data/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
  1018. data/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/api.js +0 -52
  1019. data/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +0 -238
  1020. data/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
  1021. data/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +0 -144
  1022. data/sproutcore/frameworks/foundation/tests/mixins/string.js +0 -28
  1023. data/sproutcore/frameworks/foundation/tests/mixins/validatable/ui.js +0 -74
  1024. data/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +0 -325
  1025. data/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +0 -718
  1026. data/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +0 -484
  1027. data/sproutcore/frameworks/foundation/tests/system/cookie.js +0 -179
  1028. data/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +0 -59
  1029. data/sproutcore/frameworks/foundation/tests/system/math.js +0 -39
  1030. data/sproutcore/frameworks/foundation/tests/system/request.js +0 -273
  1031. data/sproutcore/frameworks/foundation/tests/system/routes.js +0 -356
  1032. data/sproutcore/frameworks/foundation/tests/system/task_queue.js +0 -43
  1033. data/sproutcore/frameworks/foundation/tests/system/user_defaults.js +0 -24
  1034. data/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +0 -235
  1035. data/sproutcore/frameworks/foundation/tests/system/utils/range.js +0 -62
  1036. data/sproutcore/frameworks/foundation/tests/validators/credit_card.js +0 -35
  1037. data/sproutcore/frameworks/foundation/tests/validators/date.js +0 -26
  1038. data/sproutcore/frameworks/foundation/tests/validators/not_empty.js +0 -56
  1039. data/sproutcore/frameworks/foundation/tests/validators/number.js +0 -47
  1040. data/sproutcore/frameworks/foundation/tests/validators/password.js +0 -13
  1041. data/sproutcore/frameworks/foundation/tests/validators/validator.js +0 -20
  1042. data/sproutcore/frameworks/foundation/tests/views/container/methods.js +0 -18
  1043. data/sproutcore/frameworks/foundation/tests/views/container/ui.js +0 -145
  1044. data/sproutcore/frameworks/foundation/tests/views/image/ui.js +0 -492
  1045. data/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -179
  1046. data/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +0 -87
  1047. data/sproutcore/frameworks/foundation/tests/views/text_field/nextValidKeyView.js +0 -110
  1048. data/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +0 -577
  1049. data/sproutcore/frameworks/foundation/validators/credit_card.js +0 -125
  1050. data/sproutcore/frameworks/foundation/validators/date.js +0 -52
  1051. data/sproutcore/frameworks/foundation/validators/date_time.js +0 -48
  1052. data/sproutcore/frameworks/foundation/validators/email.js +0 -45
  1053. data/sproutcore/frameworks/foundation/validators/not_empty.js +0 -37
  1054. data/sproutcore/frameworks/foundation/validators/number.js +0 -99
  1055. data/sproutcore/frameworks/foundation/validators/password.js +0 -86
  1056. data/sproutcore/frameworks/foundation/validators/positive_integer.js +0 -84
  1057. data/sproutcore/frameworks/foundation/validators/validator.js +0 -326
  1058. data/sproutcore/frameworks/foundation/views/container.js +0 -140
  1059. data/sproutcore/frameworks/foundation/views/field.js +0 -337
  1060. data/sproutcore/frameworks/foundation/views/image.js +0 -381
  1061. data/sproutcore/frameworks/foundation/views/label.js +0 -219
  1062. data/sproutcore/frameworks/foundation/views/text_field.js +0 -1073
  1063. data/sproutcore/frameworks/handlebars/extensions.js +0 -44
  1064. data/sproutcore/frameworks/handlebars/extensions/bind.js +0 -156
  1065. data/sproutcore/frameworks/handlebars/extensions/collection.js +0 -75
  1066. data/sproutcore/frameworks/handlebars/extensions/localization.js +0 -5
  1067. data/sproutcore/frameworks/handlebars/extensions/view.js +0 -115
  1068. data/sproutcore/frameworks/handlebars/handlebars.js +0 -1401
  1069. data/sproutcore/frameworks/jquery/jquery-buffer.js +0 -376
  1070. data/sproutcore/frameworks/jquery/jquery-buffered.js +0 -205
  1071. data/sproutcore/frameworks/jquery/jquery-sc.js +0 -7
  1072. data/sproutcore/frameworks/jquery/jquery.js +0 -7179
  1073. data/sproutcore/frameworks/media/.greenhouseconf +0 -29
  1074. data/sproutcore/frameworks/media/resources/controls.png +0 -0
  1075. data/sproutcore/frameworks/media/resources/playeras3.fla +0 -0
  1076. data/sproutcore/frameworks/media/resources/video.css +0 -124
  1077. data/sproutcore/frameworks/media/resources/videoCanvas.swf +0 -0
  1078. data/sproutcore/frameworks/media/views/audio.js +0 -741
  1079. data/sproutcore/frameworks/media/views/controls.js +0 -88
  1080. data/sproutcore/frameworks/media/views/media_slider.js +0 -243
  1081. data/sproutcore/frameworks/media/views/mini_controls.js +0 -63
  1082. data/sproutcore/frameworks/media/views/simple_controls.js +0 -54
  1083. data/sproutcore/frameworks/media/views/video.js +0 -832
  1084. data/sproutcore/frameworks/mini/license.js +0 -29
  1085. data/sproutcore/frameworks/runtime/README +0 -12
  1086. data/sproutcore/frameworks/runtime/core.js +0 -1102
  1087. data/sproutcore/frameworks/runtime/debug/test_suites/array.js +0 -14
  1088. data/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +0 -397
  1089. data/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +0 -33
  1090. data/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +0 -121
  1091. data/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +0 -34
  1092. data/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +0 -50
  1093. data/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +0 -46
  1094. data/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +0 -371
  1095. data/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +0 -100
  1096. data/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +0 -49
  1097. data/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +0 -94
  1098. data/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +0 -50
  1099. data/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +0 -47
  1100. data/sproutcore/frameworks/runtime/license.js +0 -29
  1101. data/sproutcore/frameworks/runtime/mixins/array.js +0 -658
  1102. data/sproutcore/frameworks/runtime/mixins/comparable.js +0 -45
  1103. data/sproutcore/frameworks/runtime/mixins/copyable.js +0 -72
  1104. data/sproutcore/frameworks/runtime/mixins/enumerable.js +0 -1426
  1105. data/sproutcore/frameworks/runtime/mixins/freezable.js +0 -110
  1106. data/sproutcore/frameworks/runtime/mixins/observable.js +0 -1408
  1107. data/sproutcore/frameworks/runtime/private/chain_observer.js +0 -178
  1108. data/sproutcore/frameworks/runtime/private/observer_queue.js +0 -178
  1109. data/sproutcore/frameworks/runtime/private/observer_set.js +0 -123
  1110. data/sproutcore/frameworks/runtime/system/binding.js +0 -1000
  1111. data/sproutcore/frameworks/runtime/system/enumerator.js +0 -107
  1112. data/sproutcore/frameworks/runtime/system/error.js +0 -157
  1113. data/sproutcore/frameworks/runtime/system/index_set.js +0 -1199
  1114. data/sproutcore/frameworks/runtime/system/logger.js +0 -1582
  1115. data/sproutcore/frameworks/runtime/system/object.js +0 -947
  1116. data/sproutcore/frameworks/runtime/system/range_observer.js +0 -270
  1117. data/sproutcore/frameworks/runtime/system/run_loop.js +0 -308
  1118. data/sproutcore/frameworks/runtime/system/set.js +0 -536
  1119. data/sproutcore/frameworks/runtime/tests/core/IsEqual.js +0 -30
  1120. data/sproutcore/frameworks/runtime/tests/core/beget.js +0 -23
  1121. data/sproutcore/frameworks/runtime/tests/core/clone.js +0 -108
  1122. data/sproutcore/frameworks/runtime/tests/core/compare.js +0 -44
  1123. data/sproutcore/frameworks/runtime/tests/core/console.js +0 -16
  1124. data/sproutcore/frameworks/runtime/tests/core/guidFor.js +0 -109
  1125. data/sproutcore/frameworks/runtime/tests/core/inspect.js +0 -27
  1126. data/sproutcore/frameworks/runtime/tests/core/itemType.js +0 -71
  1127. data/sproutcore/frameworks/runtime/tests/core/keys.js +0 -20
  1128. data/sproutcore/frameworks/runtime/tests/core/makeArray.js +0 -44
  1129. data/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +0 -19
  1130. data/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +0 -37
  1131. data/sproutcore/frameworks/runtime/tests/mixins/array.js +0 -59
  1132. data/sproutcore/frameworks/runtime/tests/mixins/comparable.js +0 -44
  1133. data/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +0 -658
  1134. data/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +0 -37
  1135. data/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +0 -733
  1136. data/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +0 -155
  1137. data/sproutcore/frameworks/runtime/tests/mixins/observable/registerDependentKeys.js +0 -79
  1138. data/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +0 -81
  1139. data/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +0 -55
  1140. data/sproutcore/frameworks/runtime/tests/system/binding.js +0 -395
  1141. data/sproutcore/frameworks/runtime/tests/system/error.js +0 -53
  1142. data/sproutcore/frameworks/runtime/tests/system/index_set/add.js +0 -212
  1143. data/sproutcore/frameworks/runtime/tests/system/index_set/addEach.js +0 -49
  1144. data/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +0 -43
  1145. data/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +0 -74
  1146. data/sproutcore/frameworks/runtime/tests/system/index_set/create.js +0 -42
  1147. data/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +0 -38
  1148. data/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +0 -38
  1149. data/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +0 -74
  1150. data/sproutcore/frameworks/runtime/tests/system/index_set/max.js +0 -40
  1151. data/sproutcore/frameworks/runtime/tests/system/index_set/min.js +0 -50
  1152. data/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +0 -36
  1153. data/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +0 -189
  1154. data/sproutcore/frameworks/runtime/tests/system/index_set/removeEach.js +0 -49
  1155. data/sproutcore/frameworks/runtime/tests/system/index_set/without.js +0 -89
  1156. data/sproutcore/frameworks/runtime/tests/system/logger.js +0 -260
  1157. data/sproutcore/frameworks/runtime/tests/system/object/base.js +0 -195
  1158. data/sproutcore/frameworks/runtime/tests/system/object/bindings.js +0 -374
  1159. data/sproutcore/frameworks/runtime/tests/system/object/concatenated_properties.js +0 -71
  1160. data/sproutcore/frameworks/runtime/tests/system/object/enhance.js +0 -177
  1161. data/sproutcore/frameworks/runtime/tests/system/observer_set.js +0 -50
  1162. data/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +0 -59
  1163. data/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +0 -75
  1164. data/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +0 -117
  1165. data/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +0 -110
  1166. data/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +0 -65
  1167. data/sproutcore/frameworks/runtime/tests/system/run_loop.js +0 -120
  1168. data/sproutcore/frameworks/runtime/tests/system/set.js +0 -318
  1169. data/sproutcore/frameworks/statechart/core.js +0 -5
  1170. data/sproutcore/frameworks/statechart/debug/monitor.js +0 -136
  1171. data/sproutcore/frameworks/statechart/system/state.js +0 -713
  1172. data/sproutcore/frameworks/statechart/system/statechart.js +0 -951
  1173. data/sproutcore/frameworks/statechart/tests/async.js +0 -94
  1174. data/sproutcore/frameworks/statechart/tests/event_handling/advanced_event_handling.js +0 -310
  1175. data/sproutcore/frameworks/statechart/tests/namespace/access_substates.js +0 -252
  1176. data/sproutcore/frameworks/statechart/tests/state/is_current_state.js +0 -64
  1177. data/sproutcore/frameworks/statechart/tests/with_concurrent_states/goto_history_state.js +0 -88
  1178. data/sproutcore/frameworks/statechart/tests/with_concurrent_states/goto_state_advanced.js +0 -234
  1179. data/sproutcore/frameworks/statechart/tests/with_concurrent_states/goto_state_async.js +0 -123
  1180. data/sproutcore/frameworks/statechart/tests/with_concurrent_states/goto_state_basic.js +0 -139
  1181. data/sproutcore/frameworks/statechart/tests/with_concurrent_states/goto_state_intermediate.js +0 -119
  1182. data/sproutcore/frameworks/statechart/tests/with_concurrent_states/send_event.js +0 -183
  1183. data/sproutcore/frameworks/statechart/tests/without_concurrent_states/default_responder.js +0 -90
  1184. data/sproutcore/frameworks/statechart/tests/without_concurrent_states/goto_history_state.js +0 -200
  1185. data/sproutcore/frameworks/statechart/tests/without_concurrent_states/goto_state.js +0 -256
  1186. data/sproutcore/frameworks/statechart/tests/without_concurrent_states/goto_state_async.js +0 -187
  1187. data/sproutcore/frameworks/statechart/tests/without_concurrent_states/send_event.js +0 -122
  1188. data/sproutcore/frameworks/statechart/tests/without_concurrent_states/state_plugin.js +0 -99
  1189. data/sproutcore/frameworks/statechart/tests/without_concurrent_states/transient.js +0 -162
  1190. data/sproutcore/frameworks/table/mixins/table_delegate.js +0 -41
  1191. data/sproutcore/frameworks/table/system/table_column.js +0 -125
  1192. data/sproutcore/frameworks/table/views/table.js +0 -440
  1193. data/sproutcore/frameworks/table/views/table_cell.js +0 -63
  1194. data/sproutcore/frameworks/table/views/table_head.js +0 -158
  1195. data/sproutcore/frameworks/table/views/table_header.js +0 -214
  1196. data/sproutcore/frameworks/table/views/table_row.js +0 -155
  1197. data/sproutcore/frameworks/testing/core.js +0 -196
  1198. data/sproutcore/frameworks/testing/english.lproj/additions.css +0 -8
  1199. data/sproutcore/frameworks/testing/english.lproj/runner.css +0 -128
  1200. data/sproutcore/frameworks/testing/english.lproj/testsuite.css +0 -136
  1201. data/sproutcore/frameworks/testing/extras.js +0 -17
  1202. data/sproutcore/frameworks/testing/jquery.js +0 -3559
  1203. data/sproutcore/frameworks/testing/qunit.js +0 -827
  1204. data/sproutcore/frameworks/testing/system/dump.js +0 -205
  1205. data/sproutcore/frameworks/testing/system/equiv.js +0 -201
  1206. data/sproutcore/frameworks/testing/system/plan.js +0 -703
  1207. data/sproutcore/frameworks/testing/system/runner.js +0 -220
  1208. data/sproutcore/frameworks/testing/system/suite.js +0 -228
  1209. data/sproutcore/frameworks/testing/utils.js +0 -62
  1210. data/sproutcore/lib/index.rhtml +0 -164
  1211. data/sproutcore/license.js +0 -31
  1212. data/sproutcore/themes/ace/designs/dark.png +0 -0
  1213. data/sproutcore/themes/ace/designs/dark.psd +0 -0
  1214. data/sproutcore/themes/ace/designs/light.png +0 -0
  1215. data/sproutcore/themes/ace/designs/light.psd +0 -0
  1216. data/sproutcore/themes/ace/designs/psds/button/ace/18px/active_button.psd +0 -0
  1217. data/sproutcore/themes/ace/designs/psds/button/ace/18px/normal_button.psd +0 -0
  1218. data/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_active_button.psd +0 -0
  1219. data/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_button.psd +0 -0
  1220. data/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button.psd +0 -0
  1221. data/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_capsule.psd +0 -0
  1222. data/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_pointer.psd +0 -0
  1223. data/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button.psd +0 -0
  1224. data/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_capsule.psd +0 -0
  1225. data/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_pointer.psd +0 -0
  1226. data/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button.psd +0 -0
  1227. data/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_capsule.psd +0 -0
  1228. data/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_pointer.psd +0 -0
  1229. data/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button.psd +0 -0
  1230. data/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_capsule.psd +0 -0
  1231. data/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_pointer.psd +0 -0
  1232. data/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button.psd +0 -0
  1233. data/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button_pointer.psd +0 -0
  1234. data/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button.psd +0 -0
  1235. data/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button_pointer.psd +0 -0
  1236. data/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button.psd +0 -0
  1237. data/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button_pointer.psd +0 -0
  1238. data/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button.psd +0 -0
  1239. data/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button_pointer.psd +0 -0
  1240. data/sproutcore/themes/ace/designs/psds/button/ace/44px/active_button.psd +0 -0
  1241. data/sproutcore/themes/ace/designs/psds/button/ace/44px/normal_button.psd +0 -0
  1242. data/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_active_button.psd +0 -0
  1243. data/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_button.psd +0 -0
  1244. data/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button.psd +0 -0
  1245. data/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_capsule.psd +0 -0
  1246. data/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_pointer.psd +0 -0
  1247. data/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button.psd +0 -0
  1248. data/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_capsule.psd +0 -0
  1249. data/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_pointer.psd +0 -0
  1250. data/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button.psd +0 -0
  1251. data/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_capsule.psd +0 -0
  1252. data/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_pointer.psd +0 -0
  1253. data/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button.psd +0 -0
  1254. data/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_capsule.psd +0 -0
  1255. data/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_pointer.psd +0 -0
  1256. data/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button.psd +0 -0
  1257. data/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button_pointer.psd +0 -0
  1258. data/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button.psd +0 -0
  1259. data/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button_pointer.psd +0 -0
  1260. data/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button.psd +0 -0
  1261. data/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button_pointer.psd +0 -0
  1262. data/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button.psd +0 -0
  1263. data/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button_pointer.psd +0 -0
  1264. data/sproutcore/themes/ace/designs/psds/button/popup/active_select.psd +0 -0
  1265. data/sproutcore/themes/ace/designs/psds/button/popup/normal_select.psd +0 -0
  1266. data/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked.psd +0 -0
  1267. data/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked_active.psd +0 -0
  1268. data/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed.psd +0 -0
  1269. data/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed_active.psd +0 -0
  1270. data/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked.psd +0 -0
  1271. data/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked_active.psd +0 -0
  1272. data/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked.psd +0 -0
  1273. data/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked_active.psd +0 -0
  1274. data/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed.psd +0 -0
  1275. data/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed_active.psd +0 -0
  1276. data/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked.psd +0 -0
  1277. data/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked_active.psd +0 -0
  1278. data/sproutcore/themes/ace/designs/psds/collection/source-list/selection.psd +0 -0
  1279. data/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed.psd +0 -0
  1280. data/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed_active.psd +0 -0
  1281. data/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open.psd +0 -0
  1282. data/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open_active.psd +0 -0
  1283. data/sproutcore/themes/ace/designs/psds/menu/checkmark.psd +0 -0
  1284. data/sproutcore/themes/ace/designs/psds/menu/checkmark_active.psd +0 -0
  1285. data/sproutcore/themes/ace/designs/psds/menu/down.psd +0 -0
  1286. data/sproutcore/themes/ace/designs/psds/menu/menu.psd +0 -0
  1287. data/sproutcore/themes/ace/designs/psds/menu/menu_item.psd +0 -0
  1288. data/sproutcore/themes/ace/designs/psds/menu/up.psd +0 -0
  1289. data/sproutcore/themes/ace/designs/psds/panel/panel.psd +0 -0
  1290. data/sproutcore/themes/ace/designs/psds/panel/pointers.psd +0 -0
  1291. data/sproutcore/themes/ace/designs/psds/picker/popover/popover.psd +0 -0
  1292. data/sproutcore/themes/ace/designs/psds/picker/popover/popover_empty.psd +0 -0
  1293. data/sproutcore/themes/ace/designs/psds/picker/popover/popover_notoolbar.psd +0 -0
  1294. data/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers.psd +0 -0
  1295. data/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers_notoolbar.psd +0 -0
  1296. data/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_content.psd +0 -0
  1297. data/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_indeterminate_content.psd +0 -0
  1298. data/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_track.psd +0 -0
  1299. data/sproutcore/themes/ace/designs/psds/radio/radio_active.psd +0 -0
  1300. data/sproutcore/themes/ace/designs/psds/radio/radio_mixed.psd +0 -0
  1301. data/sproutcore/themes/ace/designs/psds/radio/radio_mixed_active.psd +0 -0
  1302. data/sproutcore/themes/ace/designs/psds/radio/radio_selected.psd +0 -0
  1303. data/sproutcore/themes/ace/designs/psds/radio/radio_selected_active.psd +0 -0
  1304. data/sproutcore/themes/ace/designs/psds/radio/radio_unselected.psd +0 -0
  1305. data/sproutcore/themes/ace/designs/psds/scroller/horizontal/thumb.psd +0 -0
  1306. data/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows.psd +0 -0
  1307. data/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows_active.psd +0 -0
  1308. data/sproutcore/themes/ace/designs/psds/scroller/vertical/thumb.psd +0 -0
  1309. data/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows.psd +0 -0
  1310. data/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows_active.psd +0 -0
  1311. data/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_active.psd +0 -0
  1312. data/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_normal.psd +0 -0
  1313. data/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected.psd +0 -0
  1314. data/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected_active.psd +0 -0
  1315. data/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_active.psd +0 -0
  1316. data/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_normal.psd +0 -0
  1317. data/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected.psd +0 -0
  1318. data/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected_active.psd +0 -0
  1319. data/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_active.psd +0 -0
  1320. data/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_normal.psd +0 -0
  1321. data/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected.psd +0 -0
  1322. data/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected_active.psd +0 -0
  1323. data/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_active.psd +0 -0
  1324. data/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_normal.psd +0 -0
  1325. data/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected.psd +0 -0
  1326. data/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected_active.psd +0 -0
  1327. data/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob.psd +0 -0
  1328. data/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob_active.psd +0 -0
  1329. data/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob.psd +0 -0
  1330. data/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob_active.psd +0 -0
  1331. data/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob.psd +0 -0
  1332. data/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob_active.psd +0 -0
  1333. data/sproutcore/themes/ace/designs/psds/slider/ace/22px/track.psd +0 -0
  1334. data/sproutcore/themes/ace/designs/psds/slider/ace/track.psd +0 -0
  1335. data/sproutcore/themes/ace/designs/psds/toolbar/toolbar.psd +0 -0
  1336. data/sproutcore/themes/ace/designs/switch/switch.psd +0 -0
  1337. data/sproutcore/themes/ace/designs/switch/switch_handle.png +0 -0
  1338. data/sproutcore/themes/ace/designs/switch/switch_handle.psd +0 -0
  1339. data/sproutcore/themes/ace/designs/switch/switch_off.png +0 -0
  1340. data/sproutcore/themes/ace/designs/switch/switch_off.psd +0 -0
  1341. data/sproutcore/themes/ace/designs/switch/switch_on.png +0 -0
  1342. data/sproutcore/themes/ace/designs/switch/switch_on.psd +0 -0
  1343. data/sproutcore/themes/ace/resources/body.css +0 -13
  1344. data/sproutcore/themes/ace/resources/button/ace/18px/active_button.png +0 -0
  1345. data/sproutcore/themes/ace/resources/button/ace/18px/button.css +0 -33
  1346. data/sproutcore/themes/ace/resources/button/ace/18px/normal_button.png +0 -0
  1347. data/sproutcore/themes/ace/resources/button/ace/18px/selected_active_button.png +0 -0
  1348. data/sproutcore/themes/ace/resources/button/ace/18px/selected_button.png +0 -0
  1349. data/sproutcore/themes/ace/resources/button/ace/24px/active_button.png +0 -0
  1350. data/sproutcore/themes/ace/resources/button/ace/24px/active_button_capsule.png +0 -0
  1351. data/sproutcore/themes/ace/resources/button/ace/24px/active_button_pointer.png +0 -0
  1352. data/sproutcore/themes/ace/resources/button/ace/24px/button.css +0 -98
  1353. data/sproutcore/themes/ace/resources/button/ace/24px/normal_button.png +0 -0
  1354. data/sproutcore/themes/ace/resources/button/ace/24px/normal_button_capsule.png +0 -0
  1355. data/sproutcore/themes/ace/resources/button/ace/24px/normal_button_pointer.png +0 -0
  1356. data/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button.png +0 -0
  1357. data/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button_capsule.png +0 -0
  1358. data/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button_pointer.png +0 -0
  1359. data/sproutcore/themes/ace/resources/button/ace/24px/selected_button.png +0 -0
  1360. data/sproutcore/themes/ace/resources/button/ace/24px/selected_button_capsule.png +0 -0
  1361. data/sproutcore/themes/ace/resources/button/ace/24px/selected_button_pointer.png +0 -0
  1362. data/sproutcore/themes/ace/resources/button/ace/30px/active_button.png +0 -0
  1363. data/sproutcore/themes/ace/resources/button/ace/30px/active_button_pointer.png +0 -0
  1364. data/sproutcore/themes/ace/resources/button/ace/30px/button.css +0 -78
  1365. data/sproutcore/themes/ace/resources/button/ace/30px/normal_button.png +0 -0
  1366. data/sproutcore/themes/ace/resources/button/ace/30px/normal_button_pointer.png +0 -0
  1367. data/sproutcore/themes/ace/resources/button/ace/30px/selected_active_button.png +0 -0
  1368. data/sproutcore/themes/ace/resources/button/ace/30px/selected_active_button_pointer.png +0 -0
  1369. data/sproutcore/themes/ace/resources/button/ace/30px/selected_button.png +0 -0
  1370. data/sproutcore/themes/ace/resources/button/ace/30px/selected_button_pointer.png +0 -0
  1371. data/sproutcore/themes/ace/resources/button/ace/44px/active_button.png +0 -0
  1372. data/sproutcore/themes/ace/resources/button/ace/44px/button.css +0 -39
  1373. data/sproutcore/themes/ace/resources/button/ace/44px/normal_button.png +0 -0
  1374. data/sproutcore/themes/ace/resources/button/ace/44px/selected_active_button.png +0 -0
  1375. data/sproutcore/themes/ace/resources/button/ace/44px/selected_button.png +0 -0
  1376. data/sproutcore/themes/ace/resources/button/ace/button.css +0 -36
  1377. data/sproutcore/themes/ace/resources/button/button.js +0 -75
  1378. data/sproutcore/themes/ace/resources/button/dark/24px/active_button.png +0 -0
  1379. data/sproutcore/themes/ace/resources/button/dark/24px/active_button_capsule.png +0 -0
  1380. data/sproutcore/themes/ace/resources/button/dark/24px/active_button_pointer.png +0 -0
  1381. data/sproutcore/themes/ace/resources/button/dark/24px/button.css +0 -93
  1382. data/sproutcore/themes/ace/resources/button/dark/24px/normal_button.png +0 -0
  1383. data/sproutcore/themes/ace/resources/button/dark/24px/normal_button_capsule.png +0 -0
  1384. data/sproutcore/themes/ace/resources/button/dark/24px/normal_button_pointer.png +0 -0
  1385. data/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button.png +0 -0
  1386. data/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button_capsule.png +0 -0
  1387. data/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button_pointer.png +0 -0
  1388. data/sproutcore/themes/ace/resources/button/dark/24px/selected_button.png +0 -0
  1389. data/sproutcore/themes/ace/resources/button/dark/24px/selected_button_capsule.png +0 -0
  1390. data/sproutcore/themes/ace/resources/button/dark/24px/selected_button_pointer.png +0 -0
  1391. data/sproutcore/themes/ace/resources/button/dark/30px/active_button.png +0 -0
  1392. data/sproutcore/themes/ace/resources/button/dark/30px/active_button_pointer.png +0 -0
  1393. data/sproutcore/themes/ace/resources/button/dark/30px/button.css +0 -72
  1394. data/sproutcore/themes/ace/resources/button/dark/30px/normal_button.png +0 -0
  1395. data/sproutcore/themes/ace/resources/button/dark/30px/normal_button_pointer.png +0 -0
  1396. data/sproutcore/themes/ace/resources/button/dark/30px/selected_active_button.png +0 -0
  1397. data/sproutcore/themes/ace/resources/button/dark/30px/selected_active_button_pointer.png +0 -0
  1398. data/sproutcore/themes/ace/resources/button/dark/30px/selected_button.png +0 -0
  1399. data/sproutcore/themes/ace/resources/button/dark/30px/selected_button_pointer.png +0 -0
  1400. data/sproutcore/themes/ace/resources/button/dark/button.css +0 -17
  1401. data/sproutcore/themes/ace/resources/button/dark/button.js +0 -3
  1402. data/sproutcore/themes/ace/resources/button/popup/active_select.png +0 -0
  1403. data/sproutcore/themes/ace/resources/button/popup/normal_select.png +0 -0
  1404. data/sproutcore/themes/ace/resources/button/popup/select.css +0 -20
  1405. data/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox.css +0 -40
  1406. data/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked.png +0 -0
  1407. data/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked_active.png +0 -0
  1408. data/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed.png +0 -0
  1409. data/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed_active.png +0 -0
  1410. data/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked.png +0 -0
  1411. data/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked_active.png +0 -0
  1412. data/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox.css +0 -40
  1413. data/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked.png +0 -0
  1414. data/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked_active.png +0 -0
  1415. data/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed.png +0 -0
  1416. data/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed_active.png +0 -0
  1417. data/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked.png +0 -0
  1418. data/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked_active.png +0 -0
  1419. data/sproutcore/themes/ace/resources/checkbox/ace/checkbox.css +0 -7
  1420. data/sproutcore/themes/ace/resources/collection/normal/list.css +0 -4
  1421. data/sproutcore/themes/ace/resources/collection/normal/list_item.css +0 -17
  1422. data/sproutcore/themes/ace/resources/collection/source-list/selection.png +0 -0
  1423. data/sproutcore/themes/ace/resources/collection/source-list/source-list.js +0 -3
  1424. data/sproutcore/themes/ace/resources/collection/source-list/source_list_view.css +0 -36
  1425. data/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +0 -24
  1426. data/sproutcore/themes/ace/resources/disclosure/ace/disclosure_closed.png +0 -0
  1427. data/sproutcore/themes/ace/resources/disclosure/ace/disclosure_closed_active.png +0 -0
  1428. data/sproutcore/themes/ace/resources/disclosure/ace/disclosure_open.png +0 -0
  1429. data/sproutcore/themes/ace/resources/disclosure/ace/disclosure_open_active.png +0 -0
  1430. data/sproutcore/themes/ace/resources/imagebutton/ace/imagebutton.css +0 -11
  1431. data/sproutcore/themes/ace/resources/loading.css +0 -50
  1432. data/sproutcore/themes/ace/resources/master-detail/master-detail.css +0 -27
  1433. data/sproutcore/themes/ace/resources/menu/checkmark.png +0 -0
  1434. data/sproutcore/themes/ace/resources/menu/checkmark_active.png +0 -0
  1435. data/sproutcore/themes/ace/resources/menu/down.png +0 -0
  1436. data/sproutcore/themes/ace/resources/menu/menu.css +0 -75
  1437. data/sproutcore/themes/ace/resources/menu/menu.png +0 -0
  1438. data/sproutcore/themes/ace/resources/menu/menu_item.png +0 -0
  1439. data/sproutcore/themes/ace/resources/menu/up.png +0 -0
  1440. data/sproutcore/themes/ace/resources/pane/pane.css +0 -3
  1441. data/sproutcore/themes/ace/resources/panel/panel.css +0 -13
  1442. data/sproutcore/themes/ace/resources/panel/panel.js +0 -20
  1443. data/sproutcore/themes/ace/resources/panel/panel.png +0 -0
  1444. data/sproutcore/themes/ace/resources/picker/ace/panel.png +0 -0
  1445. data/sproutcore/themes/ace/resources/picker/ace/picker.css +0 -41
  1446. data/sproutcore/themes/ace/resources/picker/ace/picker.js +0 -0
  1447. data/sproutcore/themes/ace/resources/picker/ace/pointers.png +0 -0
  1448. data/sproutcore/themes/ace/resources/picker/popover/picker.js +0 -32
  1449. data/sproutcore/themes/ace/resources/picker/popover/popover.css +0 -111
  1450. data/sproutcore/themes/ace/resources/picker/popover/popover.js +0 -12
  1451. data/sproutcore/themes/ace/resources/picker/popover/popover.png +0 -0
  1452. data/sproutcore/themes/ace/resources/picker/popover/popover_empty.png +0 -0
  1453. data/sproutcore/themes/ace/resources/picker/popover/popover_notoolbar.png +0 -0
  1454. data/sproutcore/themes/ace/resources/picker/popover/popover_pointers.png +0 -0
  1455. data/sproutcore/themes/ace/resources/picker/popover/popover_pointers_notoolbar.png +0 -0
  1456. data/sproutcore/themes/ace/resources/picker/popover/workspace.js +0 -28
  1457. data/sproutcore/themes/ace/resources/progress/ace/progress.css +0 -27
  1458. data/sproutcore/themes/ace/resources/progress/ace/progress_view_content.png +0 -0
  1459. data/sproutcore/themes/ace/resources/progress/ace/progress_view_track.png +0 -0
  1460. data/sproutcore/themes/ace/resources/progress/progress.js +0 -78
  1461. data/sproutcore/themes/ace/resources/radio/radio.css +0 -63
  1462. data/sproutcore/themes/ace/resources/radio/radio_active.png +0 -0
  1463. data/sproutcore/themes/ace/resources/radio/radio_mixed.png +0 -0
  1464. data/sproutcore/themes/ace/resources/radio/radio_mixed_active.png +0 -0
  1465. data/sproutcore/themes/ace/resources/radio/radio_selected.png +0 -0
  1466. data/sproutcore/themes/ace/resources/radio/radio_selected_active.png +0 -0
  1467. data/sproutcore/themes/ace/resources/radio/radio_unselected.png +0 -0
  1468. data/sproutcore/themes/ace/resources/scroller/horizontal/horizontal.css +0 -78
  1469. data/sproutcore/themes/ace/resources/scroller/horizontal/horizontal_touch.css +0 -91
  1470. data/sproutcore/themes/ace/resources/scroller/horizontal/thumb.png +0 -0
  1471. data/sproutcore/themes/ace/resources/scroller/horizontal/track_and_arrows.png +0 -0
  1472. data/sproutcore/themes/ace/resources/scroller/horizontal/track_and_arrows_active.png +0 -0
  1473. data/sproutcore/themes/ace/resources/scroller/vertical/thumb.png +0 -0
  1474. data/sproutcore/themes/ace/resources/scroller/vertical/track_and_arrows.png +0 -0
  1475. data/sproutcore/themes/ace/resources/scroller/vertical/track_and_arrows_active.png +0 -0
  1476. data/sproutcore/themes/ace/resources/scroller/vertical/vertical.css +0 -80
  1477. data/sproutcore/themes/ace/resources/scroller/vertical/vertical_touch.css +0 -92
  1478. data/sproutcore/themes/ace/resources/segmented/18px/segmented.css +0 -91
  1479. data/sproutcore/themes/ace/resources/segmented/18px/segmented_active.png +0 -0
  1480. data/sproutcore/themes/ace/resources/segmented/18px/segmented_normal.png +0 -0
  1481. data/sproutcore/themes/ace/resources/segmented/18px/segmented_selected.png +0 -0
  1482. data/sproutcore/themes/ace/resources/segmented/18px/segmented_selected_active.png +0 -0
  1483. data/sproutcore/themes/ace/resources/segmented/24px/segmented.css +0 -91
  1484. data/sproutcore/themes/ace/resources/segmented/24px/segmented_active.png +0 -0
  1485. data/sproutcore/themes/ace/resources/segmented/24px/segmented_normal.png +0 -0
  1486. data/sproutcore/themes/ace/resources/segmented/24px/segmented_selected.png +0 -0
  1487. data/sproutcore/themes/ace/resources/segmented/24px/segmented_selected_active.png +0 -0
  1488. data/sproutcore/themes/ace/resources/segmented/30px/segmented.css +0 -91
  1489. data/sproutcore/themes/ace/resources/segmented/30px/segmented_active.png +0 -0
  1490. data/sproutcore/themes/ace/resources/segmented/30px/segmented_normal.png +0 -0
  1491. data/sproutcore/themes/ace/resources/segmented/30px/segmented_selected.png +0 -0
  1492. data/sproutcore/themes/ace/resources/segmented/30px/segmented_selected_active.png +0 -0
  1493. data/sproutcore/themes/ace/resources/segmented/44px/segmented.css +0 -95
  1494. data/sproutcore/themes/ace/resources/segmented/44px/segmented_active.png +0 -0
  1495. data/sproutcore/themes/ace/resources/segmented/44px/segmented_normal.png +0 -0
  1496. data/sproutcore/themes/ace/resources/segmented/44px/segmented_selected.png +0 -0
  1497. data/sproutcore/themes/ace/resources/segmented/44px/segmented_selected_active.png +0 -0
  1498. data/sproutcore/themes/ace/resources/segmented/segmented.css +0 -83
  1499. data/sproutcore/themes/ace/resources/slider/ace/14px/knob.png +0 -0
  1500. data/sproutcore/themes/ace/resources/slider/ace/14px/knob_active.png +0 -0
  1501. data/sproutcore/themes/ace/resources/slider/ace/14px/slider.css +0 -27
  1502. data/sproutcore/themes/ace/resources/slider/ace/16px/knob.png +0 -0
  1503. data/sproutcore/themes/ace/resources/slider/ace/16px/knob_active.png +0 -0
  1504. data/sproutcore/themes/ace/resources/slider/ace/16px/slider.css +0 -27
  1505. data/sproutcore/themes/ace/resources/slider/ace/22px/knob.png +0 -0
  1506. data/sproutcore/themes/ace/resources/slider/ace/22px/knob_active.png +0 -0
  1507. data/sproutcore/themes/ace/resources/slider/ace/22px/slider.css +0 -27
  1508. data/sproutcore/themes/ace/resources/slider/ace/22px/track.png +0 -0
  1509. data/sproutcore/themes/ace/resources/slider/ace/slider.css +0 -7
  1510. data/sproutcore/themes/ace/resources/slider/ace/slider.js +0 -56
  1511. data/sproutcore/themes/ace/resources/slider/ace/track.png +0 -0
  1512. data/sproutcore/themes/ace/resources/split/split.css +0 -5
  1513. data/sproutcore/themes/ace/resources/tab/tab.css +0 -3
  1514. data/sproutcore/themes/ace/resources/toolbar/toolbar.css +0 -8
  1515. data/sproutcore/themes/ace/resources/toolbar/toolbar.png +0 -0
  1516. data/sproutcore/themes/ace/resources/well/well.css +0 -7
  1517. data/sproutcore/themes/ace/resources/well/well.js +0 -17
  1518. data/sproutcore/themes/ace/theme.js +0 -14
  1519. data/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +0 -69
  1520. data/sproutcore/themes/empty_theme/theme.js +0 -16
  1521. data/sproutcore/themes/iphone_theme/english.lproj/button.css +0 -41
  1522. data/sproutcore/themes/iphone_theme/english.lproj/core.css +0 -8
  1523. data/sproutcore/themes/iphone_theme/english.lproj/images/backButton.png +0 -0
  1524. data/sproutcore/themes/iphone_theme/english.lproj/images/blueButton.png +0 -0
  1525. data/sproutcore/themes/iphone_theme/english.lproj/images/cancel.png +0 -0
  1526. data/sproutcore/themes/iphone_theme/english.lproj/images/grayButton.png +0 -0
  1527. data/sproutcore/themes/iphone_theme/english.lproj/images/leftButton.png +0 -0
  1528. data/sproutcore/themes/iphone_theme/english.lproj/images/listArrow.png +0 -0
  1529. data/sproutcore/themes/iphone_theme/english.lproj/images/listArrowSel.png +0 -0
  1530. data/sproutcore/themes/iphone_theme/english.lproj/images/listGroup.png +0 -0
  1531. data/sproutcore/themes/iphone_theme/english.lproj/images/loading.gif +0 -0
  1532. data/sproutcore/themes/iphone_theme/english.lproj/images/pinstripes.png +0 -0
  1533. data/sproutcore/themes/iphone_theme/english.lproj/images/rightButton.png +0 -0
  1534. data/sproutcore/themes/iphone_theme/english.lproj/images/selection.png +0 -0
  1535. data/sproutcore/themes/iphone_theme/english.lproj/images/thumb.png +0 -0
  1536. data/sproutcore/themes/iphone_theme/english.lproj/images/toggle.png +0 -0
  1537. data/sproutcore/themes/iphone_theme/english.lproj/images/toggleOn.png +0 -0
  1538. data/sproutcore/themes/iphone_theme/english.lproj/images/toolButton.png +0 -0
  1539. data/sproutcore/themes/iphone_theme/english.lproj/images/toolbar.png +0 -0
  1540. data/sproutcore/themes/iphone_theme/english.lproj/images/whiteButton.png +0 -0
  1541. data/sproutcore/themes/iphone_theme/english.lproj/strings.js +0 -15
  1542. data/sproutcore/themes/standard_theme/Source/Panel.drawit/Data +0 -0
  1543. data/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
  1544. data/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
  1545. data/sproutcore/themes/standard_theme/Source/SproutCore Theme Buttons.psd +0 -0
  1546. data/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/Data +0 -0
  1547. data/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg +0 -0
  1548. data/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg +0 -0
  1549. data/sproutcore/themes/standard_theme/Source/icons/16/10.png +0 -0
  1550. data/sproutcore/themes/standard_theme/Source/icons/16/100.png +0 -0
  1551. data/sproutcore/themes/standard_theme/Source/icons/16/102.png +0 -0
  1552. data/sproutcore/themes/standard_theme/Source/icons/16/110.png +0 -0
  1553. data/sproutcore/themes/standard_theme/Source/icons/16/120.png +0 -0
  1554. data/sproutcore/themes/standard_theme/Source/icons/16/127.png +0 -0
  1555. data/sproutcore/themes/standard_theme/Source/icons/16/18.png +0 -0
  1556. data/sproutcore/themes/standard_theme/Source/icons/16/19.png +0 -0
  1557. data/sproutcore/themes/standard_theme/Source/icons/16/2.png +0 -0
  1558. data/sproutcore/themes/standard_theme/Source/icons/16/24.png +0 -0
  1559. data/sproutcore/themes/standard_theme/Source/icons/16/26.png +0 -0
  1560. data/sproutcore/themes/standard_theme/Source/icons/16/27.png +0 -0
  1561. data/sproutcore/themes/standard_theme/Source/icons/16/28.png +0 -0
  1562. data/sproutcore/themes/standard_theme/Source/icons/16/29.png +0 -0
  1563. data/sproutcore/themes/standard_theme/Source/icons/16/30.png +0 -0
  1564. data/sproutcore/themes/standard_theme/Source/icons/16/31.png +0 -0
  1565. data/sproutcore/themes/standard_theme/Source/icons/16/33.png +0 -0
  1566. data/sproutcore/themes/standard_theme/Source/icons/16/37.png +0 -0
  1567. data/sproutcore/themes/standard_theme/Source/icons/16/41.png +0 -0
  1568. data/sproutcore/themes/standard_theme/Source/icons/16/99.png +0 -0
  1569. data/sproutcore/themes/standard_theme/Source/icons/24/10.png +0 -0
  1570. data/sproutcore/themes/standard_theme/Source/icons/24/100.png +0 -0
  1571. data/sproutcore/themes/standard_theme/Source/icons/24/102.png +0 -0
  1572. data/sproutcore/themes/standard_theme/Source/icons/24/110.png +0 -0
  1573. data/sproutcore/themes/standard_theme/Source/icons/24/120.png +0 -0
  1574. data/sproutcore/themes/standard_theme/Source/icons/24/127.png +0 -0
  1575. data/sproutcore/themes/standard_theme/Source/icons/24/18.png +0 -0
  1576. data/sproutcore/themes/standard_theme/Source/icons/24/19.png +0 -0
  1577. data/sproutcore/themes/standard_theme/Source/icons/24/2.png +0 -0
  1578. data/sproutcore/themes/standard_theme/Source/icons/24/24.png +0 -0
  1579. data/sproutcore/themes/standard_theme/Source/icons/24/26.png +0 -0
  1580. data/sproutcore/themes/standard_theme/Source/icons/24/27.png +0 -0
  1581. data/sproutcore/themes/standard_theme/Source/icons/24/28.png +0 -0
  1582. data/sproutcore/themes/standard_theme/Source/icons/24/29.png +0 -0
  1583. data/sproutcore/themes/standard_theme/Source/icons/24/30.png +0 -0
  1584. data/sproutcore/themes/standard_theme/Source/icons/24/31.png +0 -0
  1585. data/sproutcore/themes/standard_theme/Source/icons/24/33.png +0 -0
  1586. data/sproutcore/themes/standard_theme/Source/icons/24/37.png +0 -0
  1587. data/sproutcore/themes/standard_theme/Source/icons/24/41.png +0 -0
  1588. data/sproutcore/themes/standard_theme/Source/icons/24/99.png +0 -0
  1589. data/sproutcore/themes/standard_theme/Source/icons/32/10.png +0 -0
  1590. data/sproutcore/themes/standard_theme/Source/icons/32/100.png +0 -0
  1591. data/sproutcore/themes/standard_theme/Source/icons/32/102.png +0 -0
  1592. data/sproutcore/themes/standard_theme/Source/icons/32/110.png +0 -0
  1593. data/sproutcore/themes/standard_theme/Source/icons/32/120.png +0 -0
  1594. data/sproutcore/themes/standard_theme/Source/icons/32/127.png +0 -0
  1595. data/sproutcore/themes/standard_theme/Source/icons/32/18.png +0 -0
  1596. data/sproutcore/themes/standard_theme/Source/icons/32/19.png +0 -0
  1597. data/sproutcore/themes/standard_theme/Source/icons/32/2.png +0 -0
  1598. data/sproutcore/themes/standard_theme/Source/icons/32/24.png +0 -0
  1599. data/sproutcore/themes/standard_theme/Source/icons/32/26.png +0 -0
  1600. data/sproutcore/themes/standard_theme/Source/icons/32/27.png +0 -0
  1601. data/sproutcore/themes/standard_theme/Source/icons/32/28.png +0 -0
  1602. data/sproutcore/themes/standard_theme/Source/icons/32/29.png +0 -0
  1603. data/sproutcore/themes/standard_theme/Source/icons/32/30.png +0 -0
  1604. data/sproutcore/themes/standard_theme/Source/icons/32/31.png +0 -0
  1605. data/sproutcore/themes/standard_theme/Source/icons/32/33.png +0 -0
  1606. data/sproutcore/themes/standard_theme/Source/icons/32/37.png +0 -0
  1607. data/sproutcore/themes/standard_theme/Source/icons/32/41.png +0 -0
  1608. data/sproutcore/themes/standard_theme/Source/icons/32/99.png +0 -0
  1609. data/sproutcore/themes/standard_theme/Source/icons/48/10.png +0 -0
  1610. data/sproutcore/themes/standard_theme/Source/icons/48/18.png +0 -0
  1611. data/sproutcore/themes/standard_theme/Source/icons/48/19.png +0 -0
  1612. data/sproutcore/themes/standard_theme/Source/icons/48/2.png +0 -0
  1613. data/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/Data +0 -0
  1614. data/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
  1615. data/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
  1616. data/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/Data +0 -0
  1617. data/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
  1618. data/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
  1619. data/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x-2.psd +0 -0
  1620. data/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x.psd +0 -0
  1621. data/sproutcore/themes/standard_theme/Source/sc-theme-sprite.psd +0 -0
  1622. data/sproutcore/themes/standard_theme/Source/sc-theme-ysprite.psd +0 -0
  1623. data/sproutcore/themes/standard_theme/Source/shared-icons.psd +0 -0
  1624. data/sproutcore/themes/standard_theme/Source/sproutcore-logo.psd +0 -0
  1625. data/sproutcore/themes/standard_theme/Source/sticky-note.psd +0 -0
  1626. data/sproutcore/themes/standard_theme/english.lproj/button.css +0 -399
  1627. data/sproutcore/themes/standard_theme/english.lproj/checkbox.css +0 -78
  1628. data/sproutcore/themes/standard_theme/english.lproj/collection.css +0 -135
  1629. data/sproutcore/themes/standard_theme/english.lproj/core.css +0 -76
  1630. data/sproutcore/themes/standard_theme/english.lproj/disclosure.css +0 -57
  1631. data/sproutcore/themes/standard_theme/english.lproj/images/icons/mini_222222.png +0 -0
  1632. data/sproutcore/themes/standard_theme/english.lproj/images/icons/mini_454545.png +0 -0
  1633. data/sproutcore/themes/standard_theme/english.lproj/images/icons/mini_888888.png +0 -0
  1634. data/sproutcore/themes/standard_theme/english.lproj/images/icons/mini_ffffff.png +0 -0
  1635. data/sproutcore/themes/standard_theme/english.lproj/images/panels/sprite-x.png +0 -0
  1636. data/sproutcore/themes/standard_theme/english.lproj/images/panels/sprite-y.png +0 -0
  1637. data/sproutcore/themes/standard_theme/english.lproj/images/sc-scroller-repeat-x.png +0 -0
  1638. data/sproutcore/themes/standard_theme/english.lproj/images/sc-scroller-repeat-y.png +0 -0
  1639. data/sproutcore/themes/standard_theme/english.lproj/images/sc-scroller-sprite.png +0 -0
  1640. data/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -0
  1641. data/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-ysprite.png +0 -0
  1642. data/sproutcore/themes/standard_theme/english.lproj/images/sc-toolbar-view.png +0 -0
  1643. data/sproutcore/themes/standard_theme/english.lproj/label.css +0 -11
  1644. data/sproutcore/themes/standard_theme/english.lproj/list_item.css +0 -82
  1645. data/sproutcore/themes/standard_theme/english.lproj/menu.css +0 -20
  1646. data/sproutcore/themes/standard_theme/english.lproj/menu_item_view.css +0 -36
  1647. data/sproutcore/themes/standard_theme/english.lproj/pane.css +0 -18
  1648. data/sproutcore/themes/standard_theme/english.lproj/panel.css +0 -33
  1649. data/sproutcore/themes/standard_theme/english.lproj/picker.css +0 -17
  1650. data/sproutcore/themes/standard_theme/english.lproj/progress.css +0 -27
  1651. data/sproutcore/themes/standard_theme/english.lproj/radio.css +0 -125
  1652. data/sproutcore/themes/standard_theme/english.lproj/scroller.css +0 -159
  1653. data/sproutcore/themes/standard_theme/english.lproj/segmented.css +0 -270
  1654. data/sproutcore/themes/standard_theme/english.lproj/slider.css +0 -94
  1655. data/sproutcore/themes/standard_theme/english.lproj/split_view.css +0 -11
  1656. data/sproutcore/themes/standard_theme/english.lproj/tab.css +0 -14
  1657. data/sproutcore/themes/standard_theme/english.lproj/table.css +0 -14
  1658. data/sproutcore/themes/standard_theme/english.lproj/text_field.css +0 -5
  1659. data/sproutcore/themes/standard_theme/english.lproj/toolbar.css +0 -7
  1660. data/sproutcore/themes/standard_theme/english.lproj/well.css +0 -36
@@ -1,204 +0,0 @@
1
- // ==========================================================================
2
- // Project: SproutCore - JavaScript Application Framework
3
- // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
5
- // License: Licensed under MIT license (see license.js)
6
- // ==========================================================================
7
-
8
- /** @class
9
-
10
- Displays several views as scenes that can slide on and off the screen. The
11
- scene view is a nice way to provide a simple effect of moving from a
12
- higher level screen to a more detailed level screen. You will be able to
13
- optionally choose the kind of animation used to transition the two scenes
14
- as well if supported on the web browser.
15
-
16
- h1. Using The View
17
-
18
- To setup the scene view, you should define the 'scenes' property with an
19
- array of scene names. These will be the properties on the scene view that
20
- you can shift in an out of view as needed. You can edit the scenes property
21
- at any time. It will only be used when you start to transition from one
22
- scene to another.
23
-
24
- Next you should set your nowShowing property to the name of the scene you
25
- would like to display. This will cause the view to transition scenes if it
26
- is visible on screen. Otherwise, it will simply make the new scene view
27
- the current content view and that's it.
28
-
29
- @extends SC.View
30
- @since SproutCore 1.0
31
- */
32
- SC.SceneView = SC.ContainerView.extend(
33
- /** @scope SC.SceneView.prototype */ {
34
-
35
- /**
36
- Array of scene names. Scenes will slide on and off screen in the order
37
- that you specifiy them here. That is, if you shift from a scene at index
38
- 2 to a scene at index 1, the scenes will animation backwards. If you
39
- shift to a scene at index 3, the scenes will animate forwards.
40
-
41
- The default scenes defined are 'master' and 'detail'. You can replace or
42
- augment this array as you like.
43
-
44
- @property {Array}
45
- */
46
- scenes: ['master', 'detail'],
47
-
48
- /**
49
- The currently showing scene. Changing this property will cause the
50
- scene view to transition to the new scene. If you set this property to
51
- null, an empty string, or a non-existant scene, then the scene will appear
52
- empty.
53
- */
54
- nowShowing: null,
55
-
56
- /**
57
- Speed of transition. Should be expressed in msec.
58
- */
59
- transitionDuration: 200,
60
-
61
- _state: 'NO_VIEW', // no view
62
-
63
- /** @private
64
-
65
- Whenever called to change the content, save the nowShowing state and
66
- then animate in by adjusting the layout.
67
-
68
- */
69
- replaceContent: function(content) {
70
- if (content && this._state===this.READY) this.animateScene(content);
71
- else this.replaceScene(content);
72
- return this ;
73
- },
74
-
75
- /** @private
76
-
77
- Invoked whenever we just need to swap the scenes without playing an
78
- animation.
79
- */
80
- replaceScene: function(newContent) {
81
- var oldContent = this._targetView,
82
- layout = this.STANDARD_LAYOUT,
83
- scenes = this.get('scenes'),
84
- idx = scenes ? scenes.indexOf(this.get('nowShowing')) : -1;
85
-
86
- // cleanup animation here too..
87
- this._targetView = newContent ;
88
- this._targetIndex = idx;
89
-
90
- if (this._timer) this._timer.invalidate();
91
- this._leftView = this._rightView = this._start = this._end = null;
92
- this._timer = null;
93
-
94
-
95
- this.removeAllChildren();
96
-
97
- if (oldContent) oldContent.set('layout', layout);
98
- if (newContent) newContent.set('layout', layout);
99
-
100
- if (newContent) this.appendChild(newContent);
101
- this._state = newContent ? this.READY : this.NO_VIEW ;
102
- },
103
-
104
- /** @private
105
-
106
- Invoked whenever we need to animate in the new scene.
107
- */
108
- animateScene: function(newContent) {
109
- var oldContent = this._targetView,
110
- outIdx = this._targetIndex,
111
- scenes = this.get('scenes'),
112
- inIdx = scenes ? scenes.indexOf(this.get('nowShowing')) : -1,
113
- layout;
114
-
115
- if (outIdx<0 || inIdx<0 || outIdx===inIdx) {
116
- return this.replaceScene(newContent);
117
- }
118
-
119
- this._targetView = newContent ;
120
- this._targetIndex = inIdx;
121
-
122
- // save some info needed for animation
123
- if (inIdx > outIdx) {
124
- this._leftView = oldContent;
125
- this._rightView = newContent;
126
- this._target = -1;
127
- } else {
128
- this._leftView = newContent ;
129
- this._rightView = oldContent ;
130
- this._target = 1 ;
131
- }
132
-
133
- // setup views
134
- this.removeAllChildren();
135
-
136
- if (oldContent) this.appendChild(oldContent)
137
- if (newContent) this.appendChild(newContent);
138
-
139
- // setup other general state
140
- this._start = Date.now();
141
- this._end = this._start + this.get('transitionDuration');
142
- this._state = this.ANIMATING;
143
- this.tick();
144
- },
145
-
146
- /** @private - called while the animation runs. Compute the new layout for
147
- the left and right views based on the portion completed. When we finish
148
- call replaceScene().
149
- */
150
- tick: function() {
151
- this._timer = null ; // clear out
152
-
153
- var now = Date.now(),
154
- pct = (now-this._start)/(this._end-this._start),
155
- target = this._target,
156
- left = this._leftView,
157
- right = this._rightView,
158
- layout, adjust;
159
-
160
- if (pct<0) pct = 0;
161
-
162
- // if we're done or the view is no longer visible, just replace the
163
- // scene.
164
- if (!this.get('isVisibleInWindow') || (pct>=1)) {
165
- return this.replaceScene(this._targetView);
166
- }
167
-
168
- // ok, now let's compute the new layouts for the two views and set them
169
- layout = SC.clone(this.get('frame'));
170
- adjust = Math.floor(layout.width * pct);
171
-
172
- // set the layout for the views, depending on the direction
173
- if (target>0) {
174
- layout.left = 0-(layout.width-adjust);
175
- left.set('layout', layout);
176
-
177
- layout = SC.clone(layout);
178
- layout.left = adjust ;
179
- right.set('layout', layout);
180
-
181
- } else {
182
- layout.left = 0-adjust ;
183
- left.set('layout', layout);
184
-
185
- layout = SC.clone(layout);
186
- layout.left = layout.width-adjust;
187
- right.set('layout', layout);
188
- }
189
-
190
- this._timer = this.invokeLater(this.tick, 20);
191
- return this;
192
- },
193
-
194
-
195
- // states for view animation
196
- NO_VIEW: 'NO_VIEW',
197
- ANIMATING: 'ANIMATING',
198
- READY: 'READY',
199
-
200
- /** @private - standard layout assigned to views at rest */
201
- STANDARD_LAYOUT: { top: 0, left: 0, bottom: 0, right: 0 }
202
-
203
-
204
- });
@@ -1,1824 +0,0 @@
1
- // ==========================================================================
2
- // Project: SproutCore - JavaScript Application Framework
3
- // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
5
- // License: Licensed under MIT license (see license.js)
6
- // ==========================================================================
7
-
8
- sc_require('views/scroller');
9
- sc_require('mixins/border');
10
-
11
- SC.NORMAL_SCROLL_DECELERATION = 0.95;
12
- SC.FAST_SCROLL_DECELERATION = 0.85;
13
-
14
- /** @class
15
-
16
- Implements a complete scroll view. This class uses a manual implementation
17
- of scrollers in order to properly support clipping frames.
18
-
19
- Important Events:
20
-
21
- - contentView frame size changes (to autoshow/hide scrollbar - adjust scrollbar size)
22
- - horizontalScrollOffset change
23
- - verticalScrollOffsetChanges
24
- - scroll wheel events
25
-
26
- @extends SC.View
27
- @since SproutCore 1.0
28
- */
29
- SC.ScrollView = SC.View.extend(SC.Border, {
30
- /** @scope SC.ScrollView.prototype */
31
- classNames: ['sc-scroll-view'],
32
-
33
- // ..........................................................
34
- // PROPERTIES
35
- //
36
-
37
- isScrollable: YES,
38
-
39
- /**
40
- The content view you want the scroll view to manage. This will be assigned to the contentView of the clipView also.
41
- */
42
- contentView: null,
43
-
44
- /**
45
- The horizontal alignment for non-filling content inside of the ScrollView.
46
- */
47
- horizontalAlign: SC.ALIGN_LEFT,
48
-
49
- /**
50
- The vertical alignment for non-filling content inside of the ScrollView.
51
- */
52
- verticalAlign: SC.ALIGN_TOP,
53
-
54
- /**
55
- The current horizontal scroll offset. Changing this value will update both the contentView and the horizontal scroller, if there is one.
56
- */
57
- horizontalScrollOffset: function(key, value) {
58
- if (value !== undefined) {
59
- var minOffset = this.minimumHorizontalScrollOffset(),
60
- maxOffset = this.get('maximumHorizontalScrollOffset');
61
- this._scroll_horizontalScrollOffset = Math.max(minOffset,Math.min(maxOffset, value)) ;
62
- }
63
-
64
- return this._scroll_horizontalScrollOffset||0;
65
- }.property().cacheable(),
66
-
67
- /**
68
- The current vertical scroll offset. Changing this value will update both the contentView and the vertical scroller, if there is one.
69
- */
70
- verticalScrollOffset: function(key, value) {
71
- if (value !== undefined) {
72
- var minOffset = this.get('minimumVerticalScrollOffset'),
73
- maxOffset = this.get('maximumVerticalScrollOffset');
74
- this._scroll_verticalScrollOffset = Math.max(minOffset,Math.min(maxOffset, value)) ;
75
- }
76
-
77
- return this._scroll_verticalScrollOffset||0;
78
- }.property().cacheable(),
79
-
80
- /**
81
- @private
82
- Calculates the maximum offset given content and container sizes, and the
83
- alignment.
84
- */
85
- maximumScrollOffset: function(contentSize, containerSize, align) {
86
- // if our content size is larger than or the same size as the container, it's quite
87
- // simple to calculate the answer. Otherwise, we need to do some fancy-pants
88
- // alignment logic (read: simple math)
89
- if (contentSize >= containerSize) return contentSize - containerSize;
90
-
91
- // alignment, yeah
92
- if (align === SC.ALIGN_LEFT || align === SC.ALIGN_TOP) {
93
- // if we left-align something, and it is smaller than the view, does that not mean
94
- // that it's maximum (and minimum) offset is 0, because it should be positioned at 0?
95
- return 0;
96
- } else if (align === SC.ALIGN_MIDDLE || align === SC.ALIGN_CENTER) {
97
- // middle align means the difference divided by two, because we want equal parts on each side.
98
- return 0 - Math.round((containerSize - contentSize) / 2);
99
- } else {
100
- // right align means the entire difference, because we want all that space on the left
101
- return 0 - (containerSize - contentSize);
102
- }
103
- },
104
-
105
- /**
106
- @private
107
- Calculates the minimum offset given content and container sizes, and the
108
- alignment.
109
- */
110
- minimumScrollOffset: function(contentSize, containerSize, align) {
111
- // if the content is larger than the container, we have no need to change the minimum
112
- // away from the natural 0 position.
113
- if (contentSize > containerSize) return 0;
114
-
115
- // alignment, yeah
116
- if (align === SC.ALIGN_LEFT || align === SC.ALIGN_TOP) {
117
- // if we left-align something, and it is smaller than the view, does that not mean
118
- // that it's maximum (and minimum) offset is 0, because it should be positioned at 0?
119
- return 0;
120
- } else if (align === SC.ALIGN_MIDDLE || align === SC.ALIGN_CENTER) {
121
- // middle align means the difference divided by two, because we want equal parts on each side.
122
- return 0 - Math.round((containerSize - contentSize) / 2);
123
- } else {
124
- // right align means the entire difference, because we want all that space on the left
125
- return 0 - (containerSize - contentSize);
126
- }
127
- },
128
-
129
- /**
130
- The maximum horizontal scroll offset allowed given the current contentView
131
- size and the size of the scroll view. If horizontal scrolling is
132
- disabled, this will always return 0.
133
-
134
- @property {Number}
135
- */
136
- maximumHorizontalScrollOffset: function() {
137
- var view = this.get('contentView') ;
138
- var contentWidth = view ? view.get('frame').width : 0,
139
- calculatedWidth = view ? view.get('calculatedWidth') : 0;
140
-
141
- // The following code checks if there is a calculatedWidth (collections)
142
- // to avoid looking at the incorrect value calculated by frame.
143
- if (calculatedWidth) {
144
- contentWidth = view.calculatedWidth;
145
- }
146
- contentWidth *= this._scale;
147
-
148
- var containerWidth = this.get('containerView').get('frame').width ;
149
-
150
- // we still must go through minimumScrollOffset even if we can't scroll
151
- // because we need to adjust for alignment. So, just make sure it won't allow scrolling.
152
- if (!this.get('canScrollHorizontal')) contentWidth = Math.min(contentWidth, containerWidth);
153
- return this.maximumScrollOffset(contentWidth, containerWidth, this.get("horizontalAlign"));
154
- }.property(),
155
-
156
- /**
157
- The maximum vertical scroll offset allowed given the current contentView
158
- size and the size of the scroll view. If vertical scrolling is disabled,
159
- this will always return 0 (or whatever alignment dictates).
160
-
161
- @property {Number}
162
- */
163
- maximumVerticalScrollOffset: function() {
164
- var view = this.get('contentView'),
165
- contentHeight = (view && view.get('frame')) ? view.get('frame').height : 0,
166
- calculatedHeight = view ? view.get('calculatedHeight') : 0;
167
-
168
- // The following code checks if there is a calculatedWidth (collections)
169
- // to avoid looking at the incorrect value calculated by frame.
170
- if(calculatedHeight){
171
- contentHeight = calculatedHeight;
172
- }
173
- contentHeight *= this._scale;
174
-
175
- var containerHeight = this.get('containerView').get('frame').height ;
176
-
177
- // we still must go through minimumScrollOffset even if we can't scroll
178
- // because we need to adjust for alignment. So, just make sure it won't allow scrolling.
179
- if (!this.get('canScrollVertical')) contentHeight = Math.min(contentHeight, containerHeight);
180
- return this.maximumScrollOffset(contentHeight, containerHeight, this.get("verticalAlign"));
181
- }.property(),
182
-
183
-
184
- /**
185
- The minimum horizontal scroll offset allowed given the current contentView
186
- size and the size of the scroll view. If horizontal scrolling is
187
- disabled, this will always return 0 (or whatever alignment dictates).
188
-
189
- @property {Number}
190
- */
191
- minimumHorizontalScrollOffset: function() {
192
- var view = this.get('contentView') ;
193
- var contentWidth = view ? view.get('frame').width : 0,
194
- calculatedWidth = view ? view.get('calculatedWidth') : 0;
195
- // The following code checks if there is a calculatedWidth (collections)
196
- // to avoid looking at the incorrect value calculated by frame.
197
- if(calculatedWidth){
198
- contentWidth = calculatedWidth;
199
- }
200
- contentWidth *= this._scale;
201
-
202
- var containerWidth = this.get('containerView').get('frame').width ;
203
-
204
- // we still must go through minimumScrollOffset even if we can't scroll
205
- // because we need to adjust for alignment. So, just make sure it won't allow scrolling.
206
- if (!this.get('canScrollHorizontal')) contentWidth = Math.min(contentWidth, containerWidth);
207
- return this.minimumScrollOffset(contentWidth, containerWidth, this.get("horizontalAlign"));
208
- }.property(),
209
-
210
- /**
211
- The minimum vertical scroll offset allowed given the current contentView
212
- size and the size of the scroll view. If vertical scrolling is disabled,
213
- this will always return 0 (or whatever alignment dictates).
214
-
215
- @property {Number}
216
- */
217
- minimumVerticalScrollOffset: function() {
218
- var view = this.get('contentView') ;
219
- var contentHeight = (view && view.get('frame')) ? view.get('frame').height : 0,
220
- calculatedHeight = view ? view.get('calculatedHeight') : 0;
221
-
222
- // The following code checks if there is a calculatedWidth (collections)
223
- // to avoid looking at the incorrect value calculated by frame.
224
- if(calculatedHeight){
225
- contentHeight = view.calculatedHeight;
226
- }
227
- contentHeight *= this._scale;
228
-
229
- var containerHeight = this.get('containerView').get('frame').height ;
230
-
231
- // we still must go through minimumScrollOffset even if we can't scroll
232
- // because we need to adjust for alignment. So, just make sure it won't allow scrolling.
233
- if (!this.get('canScrollVertical')) contentHeight = Math.min(contentHeight, containerHeight);
234
- return this.minimumScrollOffset(contentHeight, containerHeight, this.get("verticalAlign"));
235
- }.property(),
236
-
237
-
238
-
239
- /**
240
- Amount to scroll one vertical line.
241
-
242
- Used by the default implementation of scrollDownLine() and scrollUpLine().
243
- Defaults to 20px.
244
- */
245
- verticalLineScroll: 20,
246
-
247
- /**
248
- Amount to scroll one horizontal line.
249
-
250
- Used by the default implementation of scrollLeftLine() and
251
- scrollRightLine(). Defaults to 20px.
252
- */
253
- horizontalLineScroll: 20,
254
-
255
- /**
256
- Amount to scroll one vertical page.
257
-
258
- Used by the default implementation of scrollUpPage() and scrollDownPage().
259
- Defaults to current frame height.
260
- */
261
- verticalPageScroll: function() {
262
- return this.get('frame').height ;
263
- }.property('frame'),
264
-
265
- /**
266
- Amount to scroll one horizontal page.
267
-
268
- Used by the default implementation of scrollLeftPage() and
269
- scrollRightPage(). Defaults to current innerFrame width.
270
- */
271
- horizontalPageScroll: function() {
272
- return this.get('frame').width ;
273
- }.property('frame'),
274
-
275
- // ..........................................................
276
- // SCROLLERS
277
- //
278
-
279
- /**
280
- YES if the view should maintain a horizontal scroller. This property
281
- must be set when the view is created.
282
-
283
- @property {Boolean}
284
- */
285
- hasHorizontalScroller: YES,
286
-
287
- /**
288
- The horizontal scroller view class. This will be replaced with a view
289
- instance when the ScrollView is created unless hasHorizontalScroller is
290
- NO.
291
-
292
- @property {SC.View}
293
- */
294
- horizontalScrollerView: SC.ScrollerView,
295
-
296
- /**
297
- The horizontal scroller view for touch. This will be replaced with a view
298
- instance when touch is enabled when the ScrollView is created unless
299
- hasHorizontalScroller is NO.
300
- */
301
- horizontalTouchScrollerView: SC.TouchScrollerView,
302
-
303
- /**
304
- YES if the horizontal scroller should be visible. You can change this
305
- property value anytime to show or hide the horizontal scroller. If you
306
- do not want to use a horizontal scroller at all, you should instead set
307
- hasHorizontalScroller to NO to avoid creating a scroller view in the
308
- first place.
309
-
310
- @property {Boolean}
311
- */
312
- isHorizontalScrollerVisible: YES,
313
-
314
- /**
315
- Returns YES if the view both has a horizontal scroller, the scroller is
316
- visible.
317
-
318
- @property {Boolean}
319
- */
320
- canScrollHorizontal: function() {
321
- return !!(this.get('hasHorizontalScroller') &&
322
- this.get('horizontalScrollerView') &&
323
- this.get('isHorizontalScrollerVisible')) ;
324
- }.property('isHorizontalScrollerVisible').cacheable(),
325
-
326
- /**
327
- If YES, the horizontal scroller will autohide if the contentView is
328
- smaller than the visible area. You must set hasHorizontalScroller to YES
329
- for this property to have any effect.
330
- */
331
- autohidesHorizontalScroller: YES,
332
-
333
- /**
334
- YES if the view shuld maintain a vertical scroller. This property must
335
- be set when the view is created.
336
-
337
- @property {Boolean}
338
- */
339
- hasVerticalScroller: YES,
340
-
341
- /**
342
- The vertical scroller view class. This will be replaced with a view
343
- instance when the ScrollView is created unless hasVerticalScroller is NO.
344
-
345
- @property {SC.View}
346
- */
347
- verticalScrollerView: SC.ScrollerView,
348
-
349
- /**
350
- The vertical touch scroller view class. This will be replaced with a view
351
- instance when the ScrollView is created.
352
- */
353
- verticalTouchScrollerView: SC.TouchScrollerView,
354
-
355
- /**
356
- YES if the vertical scroller should be visible. You can change this
357
- property value anytime to show or hide the vertical scroller. If you do
358
- not want to use a vertical scroller at all, you should instead set
359
- hasVerticalScroller to NO to avoid creating a scroller view in the first
360
- place.
361
-
362
- @property {Boolean}
363
- */
364
- isVerticalScrollerVisible: YES,
365
-
366
- /**
367
- Returns YES if the view both has a horizontal scroller, the scroller is
368
- visible.
369
-
370
- @property {Boolean}
371
- */
372
- canScrollVertical: function() {
373
- return !!(this.get('hasVerticalScroller') &&
374
- this.get('verticalScrollerView') &&
375
- this.get('isVerticalScrollerVisible')) ;
376
- }.property('isVerticalScrollerVisible').cacheable(),
377
-
378
- /**
379
- If YES, the vertical scroller will autohide if the contentView is
380
- smaller than the visible area. You must set hasVerticalScroller to YES
381
- for this property to have any effect.
382
- */
383
- autohidesVerticalScroller: YES,
384
-
385
- /**
386
- Use this property to set the 'bottom' offset of your vertical scroller,
387
- to make room for a thumb view or other accessory view. Default is 0.
388
-
389
- @property {Number}
390
- */
391
- verticalScrollerBottom: 0,
392
-
393
- /**
394
- Use this to overlay the vertical scroller.
395
-
396
- This ensures that the container frame will not resize to accomodate the
397
- vertical scroller, hence overlaying the scroller on top of
398
- the container.
399
-
400
- @property {Boolean}
401
- */
402
- verticalOverlay: function() {
403
- if (SC.platform.touch) return YES;
404
- return NO;
405
- }.property().cacheable(),
406
-
407
- /**
408
- Use this to overlay the horizontal scroller.
409
-
410
- This ensures that the container frame will not resize to accomodate the
411
- horizontal scroller, hence overlaying the scroller on top of
412
- the container
413
-
414
- @property {Boolean}
415
- */
416
- horizontalOverlay: function() {
417
- if (SC.platform.touch) return YES;
418
- return NO;
419
- }.property().cacheable(),
420
-
421
- /**
422
- Use to control the positioning of the vertical scroller. If you do not
423
- set 'verticalOverlay' to YES, then the content view will be automatically
424
- sized to meet the left edge of the vertical scroller, wherever it may be.
425
- This allows you to easily, for example, have “one pixel higher and one
426
- pixel lower” scroll bars that blend into their parent views.
427
-
428
- If you do set 'verticalOverlay' to YES, then the scroller view will
429
- “float on top” of the content view.
430
-
431
- Example: { top: -1, bottom: -1, right: 0 }
432
- */
433
- verticalScrollerLayout: null,
434
-
435
- /**
436
- Use to control the positioning of the horizontal scroller. If you do not
437
- set 'horizontalOverlay' to YES, then the content view will be
438
- automatically sized to meet the top edge of the horizontal scroller,
439
- wherever it may be.
440
-
441
- If you do set 'horizontalOverlay' to YES, then the scroller view will
442
- “float on top” of the content view.
443
-
444
- Example: { left: 0, bottom: 0, right: 0 }
445
- */
446
- horizontalScrollerLayout: null,
447
-
448
- // ..........................................................
449
- // CUSTOM VIEWS
450
- //
451
-
452
- /**
453
- The container view that will contain your main content view. You can
454
- replace this property with your own custom subclass if you prefer.
455
-
456
- @type {SC.ContainerView}
457
- */
458
- containerView: SC.ContainerView.extend({
459
-
460
- }),
461
-
462
- // ..........................................................
463
- // METHODS
464
- //
465
-
466
- /**
467
- Scrolls the receiver to the specified x,y coordinate. This should be the
468
- offset into the contentView you want to appear at the top-left corner of
469
- the scroll view.
470
-
471
- This method will contrain the actual scroll based on whether the view
472
- can scroll in the named direction and the maximum distance it can
473
- scroll.
474
-
475
- If you only want to scroll in one direction, pass null for the other
476
- direction. You can also optionally pass a Hash for the first parameter
477
- with x and y coordinates.
478
-
479
- @param x {Number} the x scroll location
480
- @param y {Number} the y scroll location
481
- @returns {SC.ScrollView} receiver
482
- */
483
- scrollTo: function(x,y) {
484
- // normalize params
485
- if (y===undefined && SC.typeOf(x) === SC.T_HASH) {
486
- y = x.y; x = x.x;
487
- }
488
-
489
- if (!SC.none(x)) {
490
- x = Math.max(this.get('minimumHorizontalScrollOffset'),Math.min(this.get('maximumHorizontalScrollOffset'), x)) ;
491
- this.set('horizontalScrollOffset', x) ;
492
- }
493
-
494
- if (!SC.none(y)) {
495
- y = Math.max(this.get('minimumVerticalScrollOffset'),Math.min(this.get('maximumVerticalScrollOffset'), y)) ;
496
- this.set('verticalScrollOffset', y) ;
497
- }
498
-
499
- return this ;
500
- },
501
-
502
- /**
503
- Scrolls the receiver in the horizontal and vertical directions by the
504
- amount specified, if allowed. The actual scroll amount will be
505
- constrained by the current scroll view settings.
506
-
507
- If you only want to scroll in one direction, pass null or 0 for the other
508
- direction. You can also optionally pass a Hash for the first parameter
509
- with x and y coordinates.
510
-
511
- @param x {Number} change in the x direction (or hash)
512
- @param y {Number} change in the y direction
513
- @returns {SC.ScrollView} receiver
514
- */
515
- scrollBy: function(x , y) {
516
- // normalize params
517
- if (y===undefined && SC.typeOf(x) === SC.T_HASH) {
518
- y = x.y; x = x.x;
519
- }
520
-
521
- // if null, undefined, or 0, pass null; otherwise just add current offset
522
- x = (x) ? this.get('horizontalScrollOffset')+x : null ;
523
- y = (y) ? this.get('verticalScrollOffset')+y : null ;
524
- return this.scrollTo(x,y) ;
525
- },
526
-
527
- /**
528
- Scroll the view to make the view's frame visible. For this to make sense,
529
- the view should be a subview of the contentView. Otherwise the results
530
- will be undefined.
531
-
532
- @param {SC.View} view view to scroll or null to scroll receiver visible
533
- @returns {Boolean} YES if scroll position was changed
534
- */
535
- scrollToVisible: function(view) {
536
-
537
- // if no view is passed, do default
538
- if (arguments.length === 0) return sc_super();
539
-
540
- var contentView = this.get('contentView') ;
541
- if (!contentView) return NO; // nothing to do if no contentView.
542
-
543
- // get the frame for the view - should work even for views with static
544
- // layout, assuming it has been added to the screen.
545
- var vf = view.get('frame');
546
- if (!vf) return NO; // nothing to do
547
-
548
- // convert view's frame to an offset from the contentView origin. This
549
- // will become the new scroll offset after some adjustment.
550
- vf = contentView.convertFrameFromView(vf, view.get('parentView')) ;
551
-
552
- return this.scrollToRect(vf);
553
- },
554
-
555
- /**
556
- Scroll to the supplied rectangle.
557
- @param {rect} Rectangle to scroll to.
558
- @returns {Boolean} YES if scroll position was changed.
559
- */
560
- scrollToRect: function(rect) {
561
- // find current visible frame.
562
- var vo = SC.cloneRect(this.get('containerView').get('frame')) ;
563
-
564
- vo.x = this.get('horizontalScrollOffset') ;
565
- vo.y = this.get('verticalScrollOffset') ;
566
-
567
- var origX = vo.x, origY = vo.y;
568
-
569
- // if top edge is not visible, shift origin
570
- vo.y -= Math.max(0, SC.minY(vo) - SC.minY(rect)) ;
571
- vo.x -= Math.max(0, SC.minX(vo) - SC.minX(rect)) ;
572
-
573
- // if bottom edge is not visible, shift origin
574
- vo.y += Math.max(0, SC.maxY(rect) - SC.maxY(vo)) ;
575
- vo.x += Math.max(0, SC.maxX(rect) - SC.maxX(vo)) ;
576
-
577
- // scroll to that origin.
578
- if ((origX !== vo.x) || (origY !== vo.y)) {
579
- this.scrollTo(vo.x, vo.y);
580
- return YES ;
581
- } else return NO;
582
- },
583
-
584
-
585
- /**
586
- Scrolls the receiver down one or more lines if allowed. If number of
587
- lines is not specified, scrolls one line.
588
-
589
- @param lines {Number} options number of lines
590
- @returns {SC.ScrollView} receiver
591
- */
592
- scrollDownLine: function(lines) {
593
- if (lines === undefined) lines = 1 ;
594
- return this.scrollBy(null, this.get('verticalLineScroll')*lines) ;
595
- },
596
-
597
- /**
598
- Scrolls the receiver up one or more lines if allowed. If number of
599
- lines is not specified, scrolls one line.
600
-
601
- @param lines {Number} options number of lines
602
- @returns {SC.ScrollView} receiver
603
- */
604
- scrollUpLine: function(lines) {
605
- if (lines === undefined) lines = 1 ;
606
- return this.scrollBy(null, 0-this.get('verticalLineScroll')*lines) ;
607
- },
608
-
609
- /**
610
- Scrolls the receiver right one or more lines if allowed. If number of
611
- lines is not specified, scrolls one line.
612
-
613
- @param lines {Number} options number of lines
614
- @returns {SC.ScrollView} receiver
615
- */
616
- scrollRightLine: function(lines) {
617
- if (lines === undefined) lines = 1 ;
618
- return this.scrollTo(this.get('horizontalLineScroll')*lines, null) ;
619
- },
620
-
621
- /**
622
- Scrolls the receiver left one or more lines if allowed. If number of
623
- lines is not specified, scrolls one line.
624
-
625
- @param lines {Number} options number of lines
626
- @returns {SC.ScrollView} receiver
627
- */
628
- scrollLeftLine: function(lines) {
629
- if (lines === undefined) lines = 1 ;
630
- return this.scrollTo(0-this.get('horizontalLineScroll')*lines, null) ;
631
- },
632
-
633
- /**
634
- Scrolls the receiver down one or more page if allowed. If number of
635
- pages is not specified, scrolls one page. The page size is determined by
636
- the verticalPageScroll value. By default this is the size of the current
637
- scrollable area.
638
-
639
- @param pages {Number} options number of pages
640
- @returns {SC.ScrollView} receiver
641
- */
642
- scrollDownPage: function(pages) {
643
- if (pages === undefined) pages = 1 ;
644
- return this.scrollBy(null, this.get('verticalPageScroll')*pages) ;
645
- },
646
-
647
- /**
648
- Scrolls the receiver up one or more page if allowed. If number of
649
- pages is not specified, scrolls one page. The page size is determined by
650
- the verticalPageScroll value. By default this is the size of the current
651
- scrollable area.
652
-
653
- @param pages {Number} options number of pages
654
- @returns {SC.ScrollView} receiver
655
- */
656
- scrollUpPage: function(pages) {
657
- if (pages === undefined) pages = 1 ;
658
- return this.scrollBy(null, 0-(this.get('verticalPageScroll')*pages)) ;
659
- },
660
-
661
- /**
662
- Scrolls the receiver right one or more page if allowed. If number of
663
- pages is not specified, scrolls one page. The page size is determined by
664
- the verticalPageScroll value. By default this is the size of the current
665
- scrollable area.
666
-
667
- @param pages {Number} options number of pages
668
- @returns {SC.ScrollView} receiver
669
- */
670
- scrollRightPage: function(pages) {
671
- if (pages === undefined) pages = 1 ;
672
- return this.scrollBy(this.get('horizontalPageScroll')*pages, null) ;
673
- },
674
-
675
- /**
676
- Scrolls the receiver left one or more page if allowed. If number of
677
- pages is not specified, scrolls one page. The page size is determined by
678
- the verticalPageScroll value. By default this is the size of the current
679
- scrollable area.
680
-
681
- @param pages {Number} options number of pages
682
- @returns {SC.ScrollView} receiver
683
- */
684
- scrollLeftPage: function(pages) {
685
- if (pages === undefined) pages = 1 ;
686
- return this.scrollBy(0-(this.get('horizontalPageScroll')*pages), null) ;
687
- },
688
-
689
- /**
690
- Adjusts the layout for the various internal views. This method is called
691
- once when the scroll view is first configured and then anytime a scroller
692
- is shown or hidden. You can call this method yourself as well to retile.
693
-
694
- You may also want to override this method to handle layout for any
695
- additional controls you have added to the view.
696
- */
697
- tile: function() {
698
- // get horizontal scroller/determine if we should have a scroller
699
- var hscroll = this.get('hasHorizontalScroller') ? this.get('horizontalScrollerView') : null ;
700
- var hasHorizontal = hscroll && this.get('isHorizontalScrollerVisible');
701
-
702
- // get vertical scroller/determine if we should have a scroller
703
- var vscroll = this.get('hasVerticalScroller') ? this.get('verticalScrollerView') : null ;
704
- var hasVertical = vscroll && this.get('isVerticalScrollerVisible') ;
705
-
706
- // get the containerView
707
- var clip = this.get('containerView') ;
708
- var clipLayout = { left: 0, top: 0 } ;
709
- var t, layout, vo, ho, vl, hl;
710
-
711
- var ht = ((hasHorizontal) ? hscroll.get('scrollbarThickness') : 0) ;
712
- var vt = (hasVertical) ? vscroll.get('scrollbarThickness') : 0 ;
713
-
714
- if (hasHorizontal) {
715
- hl = this.get('horizontalScrollerLayout');
716
- layout = {
717
- left: (hl ? hl.left : 0),
718
- bottom: (hl ? hl.bottom : 0),
719
- right: (hl ? hl.right + vt-1 : vt-1),
720
- height: ht
721
- };
722
- hscroll.set('layout', layout) ;
723
- ho = this.get('horizontalOverlay');
724
- clipLayout.bottom = ho ? 0 : (layout.bottom + ht) ;
725
- } else {
726
- clipLayout.bottom = 0 ;
727
- }
728
- if (hscroll) hscroll.set('isVisible', hasHorizontal) ;
729
-
730
- if (hasVertical) {
731
- ht = ht + this.get('verticalScrollerBottom') ;
732
- vl = this.get('verticalScrollerLayout');
733
- layout = {
734
- top: (vl ? vl.top : 0),
735
- bottom: (vl ? vl.bottom + ht : ht),
736
- right: (vl ? vl.right : 0),
737
- width: vt
738
- };
739
- vscroll.set('layout', layout) ;
740
- vo = this.get('verticalOverlay');
741
- clipLayout.right = vo ? 0 : (layout.right + vt) ;
742
- } else {
743
- clipLayout.right = 0 ;
744
- }
745
- if (vscroll) vscroll.set('isVisible', hasVertical) ;
746
-
747
- clip.adjust(clipLayout) ;
748
- },
749
-
750
- /** @private
751
- Called whenever a scroller visibility changes. Calls the tile() method.
752
- */
753
- scrollerVisibilityDidChange: function() {
754
- this.tile();
755
- }.observes('isVerticalScrollerVisible', 'isHorizontalScrollerVisible'),
756
-
757
- // ..........................................................
758
- // SCROLL WHEEL SUPPORT
759
- //
760
-
761
- /** @private */ _scroll_wheelDeltaX: 0,
762
- /** @private */ _scroll_wheelDeltaY: 0,
763
-
764
- // save adjustment and then invoke the actual scroll code later. This will
765
- // keep the view feeling smooth.
766
- mouseWheel: function(evt) {
767
- var deltaAdjust = (SC.browser.webkit && SC.browser.version > 533.0) ? 120 : 1;
768
-
769
- this._scroll_wheelDeltaX += evt.wheelDeltaX / deltaAdjust;
770
- this._scroll_wheelDeltaY += evt.wheelDeltaY / deltaAdjust;
771
- this.invokeLater(this._scroll_mouseWheel, 10) ;
772
- return this.get('canScrollHorizontal') || this.get('canScrollVertical') ;
773
- },
774
-
775
- /** @private */
776
- _scroll_mouseWheel: function() {
777
- this.scrollBy(this._scroll_wheelDeltaX, this._scroll_wheelDeltaY);
778
- if (SC.WHEEL_MOMENTUM && this._scroll_wheelDeltaY > 0) {
779
- this._scroll_wheelDeltaY = Math.floor(this._scroll_wheelDeltaY*0.950);
780
- this._scroll_wheelDeltaY = Math.max(this._scroll_wheelDeltaY, 0);
781
- this.invokeLater(this._scroll_mouseWheel, 10) ;
782
- } else if (SC.WHEEL_MOMENTUM && this._scroll_wheelDeltaY < 0){
783
- this._scroll_wheelDeltaY = Math.ceil(this._scroll_wheelDeltaY*0.950);
784
- this._scroll_wheelDeltaY = Math.min(this._scroll_wheelDeltaY, 0);
785
- this.invokeLater(this._scroll_mouseWheel, 10) ;
786
- } else {
787
- this._scroll_wheelDeltaY = 0;
788
- this._scroll_wheelDeltaX = 0;
789
- }
790
- },
791
-
792
- /*..............................................
793
- SCALING SUPPORT
794
- */
795
-
796
- /**
797
- Determines whether scaling is allowed.
798
- */
799
- canScale: NO,
800
-
801
- /**
802
- The current scale.
803
- */
804
- _scale: 1.0,
805
- scale: function(key, value) {
806
- if (value !== undefined) {
807
- this._scale = Math.min(Math.max(this.get("minimumScale"), value), this.get("maximumScale"));
808
- }
809
- return this._scale;
810
- }.property().cacheable(),
811
-
812
- /**
813
- The minimum scale.
814
- */
815
- minimumScale: 0.25,
816
-
817
- /**
818
- The maximum scale.
819
- */
820
- maximumScale: 2.0,
821
-
822
- /**
823
- Whether to automatically determine the scale range based on the size of the content.
824
- */
825
- autoScaleRange: NO,
826
-
827
- _scale_css: "",
828
-
829
- updateScale: function(scale) {
830
- var contentView = this.get("contentView");
831
- if (!contentView) return;
832
-
833
- if (contentView.isScalable) {
834
- this.get("contentView").applyScale(scale);
835
- this._scale_css = "";
836
- } else {
837
- this._scale_css = "scale3d(" + scale + ", " + scale + ", 1)";
838
- }
839
- },
840
-
841
- /*..............................................
842
- TOUCH SUPPORT
843
- */
844
- acceptsMultitouch: YES,
845
-
846
- /**
847
- The scroll deceleration rate.
848
- */
849
- decelerationRate: SC.NORMAL_SCROLL_DECELERATION,
850
-
851
- /**
852
- If YES, bouncing will always be enabled in the horizontal direction, even if the content
853
- is smaller or the same size as the view. NO by default.
854
- */
855
- alwaysBounceHorizontal: NO,
856
-
857
- /**
858
- If NO, bouncing will not be enabled in the vertical direction when the content is smaller
859
- or the same size as the scroll view. YES by default.
860
- */
861
- alwaysBounceVertical: YES,
862
-
863
- /**
864
- Whether to delay touches from passing through to the content.
865
- */
866
- delaysContentTouches: YES,
867
-
868
- /**
869
- @private
870
- If the view supports it, this
871
- */
872
- _touchScrollDidChange: function() {
873
- if (this.get("contentView").touchScrollDidChange) {
874
- this.get("contentView").touchScrollDidChange(
875
- this._scroll_horizontalScrollOffset,
876
- this._scroll_verticalScrollOffset
877
- );
878
- }
879
-
880
- // tell scrollers
881
- if (this.verticalScrollerView && this.verticalScrollerView.touchScrollDidChange) {
882
- this.verticalScrollerView.touchScrollDidChange(this._scroll_verticalScrollOffset);
883
- }
884
-
885
- if (this.horizontalScrollerView && this.horizontalScrollerView.touchScrollDidChange) {
886
- this.horizontalScrollerView.touchScrollDidChange(this._scroll_horizontalScrollOffset);
887
- }
888
- },
889
-
890
- _touchScrollDidStart: function() {
891
- if (this.get("contentView").touchScrollDidStart) {
892
- this.get("contentView").touchScrollDidStart(this._scroll_horizontalScrollOffset, this._scroll_verticalScrollOffset);
893
- }
894
-
895
- // tell scrollers
896
- if (this.verticalScrollerView && this.verticalScrollerView.touchScrollDidStart) {
897
- this.verticalScrollerView.touchScrollDidStart(this._touch_verticalScrollOffset);
898
- }
899
- if (this.horizontalScrollerView && this.horizontalScrollerView.touchScrollDidStart) {
900
- this.horizontalScrollerView.touchScrollDidStart(this._touch_horizontalScrollOffset);
901
- }
902
- },
903
-
904
- _touchScrollDidEnd: function() {
905
- if (this.get("contentView").touchScrollDidEnd) {
906
- this.get("contentView").touchScrollDidEnd(this._scroll_horizontalScrollOffset, this._scroll_verticalScrollOffset);
907
- }
908
-
909
- // tell scrollers
910
- if (this.verticalScrollerView && this.verticalScrollerView.touchScrollDidEnd) {
911
- this.verticalScrollerView.touchScrollDidEnd(this._touch_verticalScrollOffset);
912
- }
913
-
914
- if (this.horizontalScrollerView && this.horizontalScrollerView.touchScrollDidEnd) {
915
- this.horizontalScrollerView.touchScrollDidEnd(this._touch_horizontalScrollOffset);
916
- }
917
- },
918
-
919
- _applyCSSTransforms: function(layer) {
920
- var transform = "";
921
- this.updateScale(this._scale);
922
- transform += 'translate3d('+ -this._scroll_horizontalScrollOffset +'px, '+ -Math.round(this._scroll_verticalScrollOffset)+'px,0) ';
923
- transform += this._scale_css;
924
- if (layer) {
925
- layer.style.webkitTransform = transform;
926
- layer.style.webkitTransformOrigin = "top left";
927
- }
928
- },
929
-
930
- captureTouch: function(touch) {
931
- return YES;
932
- },
933
-
934
- touchGeneration: 0,
935
- touchStart: function(touch) {
936
- var generation = ++this.touchGeneration;
937
- if (!this.tracking && this.get("delaysContentTouches")) {
938
- this.invokeLater(this.beginTouchesInContent, 150, generation);
939
- } else if (!this.tracking) {
940
- // NOTE: We still have to delay because we don't want to call touchStart
941
- // while touchStart is itself being called...
942
- this.invokeLater(this.beginTouchesInContent, 1, generation);
943
- }
944
- this.beginTouchTracking(touch, YES);
945
- return YES;
946
- },
947
-
948
- beginTouchesInContent: function(gen) {
949
- if (gen !== this.touchGeneration) return;
950
-
951
- var touch = this.touch, itemView;
952
- if (touch && this.tracking && !this.dragging && !touch.touch.scrollHasEnded) {
953
- // try to capture the touch
954
- touch.touch.captureTouch(this, YES);
955
-
956
- if (!touch.touch.touchResponder) {
957
- // if it DIDN'T WORK!!!!!
958
- // then we need to take possession again.
959
- touch.touch.makeTouchResponder(this);
960
- } else {
961
- // Otherwise, it did work, and if we had a pending scroll end, we must do it now
962
- if (touch.needsScrollEnd) {
963
- this._touchScrollDidEnd();
964
- }
965
- }
966
- }
967
- },
968
-
969
- /**
970
- Initializes the start state of the gesture.
971
-
972
- We keep information about the initial location of the touch so we can
973
- disambiguate between a tap and a drag.
974
-
975
- @param {Event} evt
976
- */
977
- beginTouchTracking: function(touch, starting) {
978
- var avg = touch.averagedTouchesForView(this, starting);
979
-
980
- var verticalScrollOffset = this._scroll_verticalScrollOffset || 0,
981
- horizontalScrollOffset = this._scroll_horizontalScrollOffset || 0,
982
- startClipOffsetX = horizontalScrollOffset,
983
- startClipOffsetY = verticalScrollOffset,
984
- needsScrollEnd = NO;
985
-
986
- if (this.touch && this.touch.timeout) {
987
- // clear the timeout
988
- clearTimeout(this.touch.timeout);
989
- this.touch.timeout = null;
990
-
991
- // get the scroll offsets
992
- startClipOffsetX = this.touch.startClipOffset.x;
993
- startClipOffsetY = this.touch.startClipOffset.y;
994
- needsScrollEnd = YES;
995
- }
996
-
997
- // calculate container+content width/height
998
- var view = this.get('contentView') ;
999
- var contentWidth = view ? view.get('frame').width : 0,
1000
- contentHeight = view ? view.get('frame').height : 0;
1001
-
1002
- if(view.calculatedWidth && view.calculatedWidth!==0) contentWidth = view.calculatedWidth;
1003
- if (view.calculatedHeight && view.calculatedHeight !==0) contentHeight = view.calculatedHeight;
1004
-
1005
- var containerWidth = this.get('containerView').get('frame').width,
1006
- containerHeight = this.get('containerView').get('frame').height;
1007
-
1008
-
1009
- // calculate position in content
1010
- var globalFrame = this.convertFrameToView(this.get("frame"), null),
1011
- positionInContentX = (horizontalScrollOffset + (avg.x - globalFrame.x)) / this._scale,
1012
- positionInContentY = (verticalScrollOffset + (avg.y - globalFrame.y)) / this._scale;
1013
-
1014
- this.touch = {
1015
- startTime: touch.timeStamp,
1016
- notCalculated: YES,
1017
-
1018
- enableScrolling: {
1019
- x: contentWidth * this._scale > containerWidth || this.get("alwaysBounceHorizontal"),
1020
- y: contentHeight * this._scale > containerHeight || this.get("alwaysBounceVertical")
1021
- },
1022
- scrolling: { x: NO, y: NO },
1023
-
1024
- enableBouncing: SC.platform.bounceOnScroll,
1025
-
1026
- // offsets and velocities
1027
- startClipOffset: { x: startClipOffsetX, y: startClipOffsetY },
1028
- lastScrollOffset: { x: horizontalScrollOffset, y: verticalScrollOffset },
1029
- startTouchOffset: { x: avg.x, y: avg.y },
1030
- scrollVelocity: { x: 0, y: 0 },
1031
-
1032
- startTouchOffsetInContent: { x: positionInContentX, y: positionInContentY },
1033
-
1034
- containerSize: { width: containerWidth, height: containerHeight },
1035
- contentSize: { width: contentWidth, height: contentHeight },
1036
-
1037
- startScale: this._scale,
1038
- startDistance: avg.d,
1039
- canScale: this.get("canScale") && SC.platform.pinchToZoom,
1040
- minimumScale: this.get("minimumScale"),
1041
- maximumScale: this.get("maximumScale"),
1042
-
1043
- globalFrame: globalFrame,
1044
-
1045
- // cache some things
1046
- layer: this.get("contentView").get('layer'),
1047
-
1048
- // some constants
1049
- resistanceCoefficient: 0.998,
1050
- resistanceAsymptote: 320,
1051
- decelerationFromEdge: 0.05,
1052
- accelerationToEdge: 0.1,
1053
-
1054
- // how much percent of the other drag direction you must drag to start dragging that direction too.
1055
- scrollTolerance: { x: 15, y: 15 },
1056
- scaleTolerance: 5,
1057
- secondaryScrollTolerance: 30,
1058
- scrollLock: 500,
1059
-
1060
- decelerationRate: this.get("decelerationRate"),
1061
-
1062
- // general status
1063
- lastEventTime: touch.timeStamp,
1064
-
1065
- // the touch used
1066
- touch: (starting ? touch : (this.touch ? this.touch.touch : null)),
1067
-
1068
- // needsScrollEnd will cause a scrollDidEnd even if this particular touch does not start a scroll.
1069
- // the reason for this is because we don't want to say we've stopped scrolling just because we got
1070
- // another touch, but simultaneously, we still need to send a touch end eventually.
1071
- // there are two cases in which this will be used:
1072
- //
1073
- // 1. If the touch was sent to content touches (in which case we will not be scrolling)
1074
- // 2. If the touch ends before scrolling starts (no scrolling then, either)
1075
- needsScrollEnd: needsScrollEnd
1076
- };
1077
-
1078
- if (!this.tracking) {
1079
- this.tracking = YES;
1080
- this.dragging = NO;
1081
- }
1082
- },
1083
-
1084
- _adjustForEdgeResistance: function(offset, minOffset, maxOffset, resistanceCoefficient, asymptote) {
1085
- var distanceFromEdge;
1086
-
1087
- // find distance from edge
1088
- if (offset < minOffset) distanceFromEdge = offset - minOffset;
1089
- else if (offset > maxOffset) distanceFromEdge = maxOffset - offset;
1090
- else return offset;
1091
-
1092
- // manipulate logarithmically
1093
- distanceFromEdge = Math.pow(resistanceCoefficient, Math.abs(distanceFromEdge)) * asymptote;
1094
-
1095
- // adjust mathematically
1096
- if (offset < minOffset) distanceFromEdge = distanceFromEdge - asymptote;
1097
- else distanceFromEdge = -distanceFromEdge + asymptote;
1098
-
1099
- // generate final value
1100
- return Math.min(Math.max(minOffset, offset), maxOffset) + distanceFromEdge;
1101
- },
1102
-
1103
- touchesDragged: function(evt, touches) {
1104
- var avg = evt.averagedTouchesForView(this);
1105
- this.updateTouchScroll(avg.x, avg.y, avg.d, evt.timeStamp);
1106
- },
1107
-
1108
- updateTouchScroll: function(touchX, touchY, distance, timeStamp) {
1109
- // get some vars
1110
- var touch = this.touch,
1111
- touchXInFrame = touchX - touch.globalFrame.x,
1112
- touchYInFrame = touchY - touch.globalFrame.y,
1113
- offsetY,
1114
- maxOffsetY,
1115
- offsetX,
1116
- maxOffsetX,
1117
- minOffsetX, minOffsetY;
1118
-
1119
- // calculate new position in content
1120
- var positionInContentX = ((this._scroll_horizontalScrollOffset||0) + touchXInFrame) / this._scale,
1121
- positionInContentY = ((this._scroll_verticalScrollOffset||0) + touchYInFrame) / this._scale;
1122
-
1123
- // calculate deltas
1124
- var deltaX = positionInContentX - touch.startTouchOffset.x,
1125
- deltaY = positionInContentY - touch.startTouchOffset.y;
1126
-
1127
- var isDragging = touch.dragging;
1128
- if (!touch.scrolling.x && Math.abs(deltaX) > touch.scrollTolerance.x && touch.enableScrolling.x) {
1129
- // say we are scrolling
1130
- isDragging = YES;
1131
- touch.scrolling.x = YES;
1132
- touch.scrollTolerance.y = touch.secondaryScrollTolerance;
1133
-
1134
- // reset position
1135
- touch.startTouchOffset.x = touchX;
1136
- deltaX = 0;
1137
- }
1138
- if (!touch.scrolling.y && Math.abs(deltaY) > touch.scrollTolerance.y && touch.enableScrolling.y) {
1139
- // say we are scrolling
1140
- isDragging = YES;
1141
- touch.scrolling.y = YES;
1142
- touch.scrollTolerance.x = touch.secondaryScrollTolerance;
1143
-
1144
- // reset position
1145
- touch.startTouchOffset.y = touchY;
1146
- deltaY = 0;
1147
- }
1148
-
1149
- // handle scroll start
1150
- if (isDragging && !touch.dragging) {
1151
- touch.dragging = YES;
1152
- this.dragging = YES;
1153
- this._touchScrollDidStart();
1154
- }
1155
-
1156
- // calculate new offset
1157
- if (!touch.scrolling.x && !touch.scrolling.y && !touch.canScale) return;
1158
- if (touch.scrolling.x && !touch.scrolling.y) {
1159
- if (deltaX > touch.scrollLock && !touch.scrolling.y) touch.enableScrolling.y = NO;
1160
- }
1161
- if (touch.scrolling.y && !touch.scrolling.x) {
1162
- if (deltaY > touch.scrollLock && !touch.scrolling.x) touch.enableScrolling.x = NO;
1163
- }
1164
-
1165
- // handle scaling through pinch gesture
1166
- if (touch.canScale) {
1167
-
1168
- var startDistance = touch.startDistance, dd = distance - startDistance;
1169
- if (Math.abs(dd) > touch.scaleTolerance) {
1170
- touch.scrolling.y = YES; // if you scale, you can scroll.
1171
- touch.scrolling.x = YES;
1172
-
1173
- // we want to say something that was the startDistance away from each other should now be
1174
- // distance away. So, if we are twice as far away as we started...
1175
- var scale = touch.startScale * (distance / Math.max(startDistance, 50));
1176
-
1177
- var newScale = this._adjustForEdgeResistance(scale, touch.minimumScale, touch.maximumScale, touch.resistanceCoefficient, touch.resistanceAsymptote);
1178
- this.dragging = YES;
1179
- this._scale = newScale;
1180
- var newPositionInContentX = positionInContentX * this._scale,
1181
- newPositionInContentY = positionInContentY * this._scale;
1182
- }
1183
- }
1184
-
1185
- // these do exactly what they sound like. So, this comment is just to
1186
- // block off the code a bit
1187
- // In english, these calculate the minimum X/Y offsets
1188
- minOffsetX = this.minimumScrollOffset(touch.contentSize.width * this._scale, touch.containerSize.width, this.get("horizontalAlign"));
1189
- minOffsetY = this.minimumScrollOffset(touch.contentSize.height * this._scale, touch.containerSize.height, this.get("verticalAlign"));
1190
-
1191
- // and now, maximum...
1192
- maxOffsetX = this.maximumScrollOffset(touch.contentSize.width * this._scale, touch.containerSize.width, this.get("horizontalAlign"));
1193
- maxOffsetY = this.maximumScrollOffset(touch.contentSize.height * this._scale, touch.containerSize.height, this.get("verticalAlign"));
1194
-
1195
-
1196
- // So, the following is the completely written out algebra:
1197
- // (offsetY + touchYInFrame) / this._scale = touch.startTouchOffsetInContent.y
1198
- // offsetY + touchYInFrame = touch.startTouchOffsetInContent.y * this._scale;
1199
- // offsetY = touch.startTouchOffset * this._scale - touchYInFrame
1200
-
1201
- // and the result applied:
1202
- offsetX = touch.startTouchOffsetInContent.x * this._scale - touchXInFrame;
1203
- offsetY = touch.startTouchOffsetInContent.y * this._scale - touchYInFrame;
1204
-
1205
-
1206
- // we need to adjust for edge resistance, or, if bouncing is disabled, just stop flat.
1207
- if (touch.enableBouncing) {
1208
- offsetX = this._adjustForEdgeResistance(offsetX, minOffsetX, maxOffsetX, touch.resistanceCoefficient, touch.resistanceAsymptote);
1209
- offsetY = this._adjustForEdgeResistance(offsetY, minOffsetY, maxOffsetY, touch.resistanceCoefficient, touch.resistanceAsymptote);
1210
- } else {
1211
- offsetX = Math.max(minOffsetX, Math.min(maxOffsetX, offsetX));
1212
- offsetY = Math.max(minOffsetY, Math.min(maxOffsetY, offsetY));
1213
- }
1214
-
1215
- // and now, _if_ scrolling is enabled, set the new coordinates
1216
- if (touch.scrolling.x) this._scroll_horizontalScrollOffset = offsetX;
1217
- if (touch.scrolling.y) this._scroll_verticalScrollOffset = offsetY;
1218
-
1219
- // and apply the CSS transforms.
1220
- this._applyCSSTransforms(touch.layer);
1221
- this._touchScrollDidChange();
1222
-
1223
-
1224
- // now we must prepare for momentum scrolling by calculating the momentum.
1225
- if (timeStamp - touch.lastEventTime >= 1 || touch.notCalculated) {
1226
- touch.notCalculated = NO;
1227
- var horizontalOffset = this._scroll_horizontalScrollOffset;
1228
- var verticalOffset = this._scroll_verticalScrollOffset;
1229
-
1230
- touch.scrollVelocity.x = ((horizontalOffset - touch.lastScrollOffset.x) / Math.max(1, timeStamp - touch.lastEventTime)); // in px per ms
1231
- touch.scrollVelocity.y = ((verticalOffset - touch.lastScrollOffset.y) / Math.max(1, timeStamp - touch.lastEventTime)); // in px per ms
1232
- touch.lastScrollOffset.x = horizontalOffset;
1233
- touch.lastScrollOffset.y = verticalOffset;
1234
- touch.lastEventTime = timeStamp;
1235
- }
1236
- },
1237
-
1238
- touchEnd: function(touch) {
1239
- var touchStatus = this.touch,
1240
- avg = touch.averagedTouchesForView(this);
1241
-
1242
- touch.scrollHasEnded = YES;
1243
- if (avg.touchCount > 0) {
1244
- this.beginTouchTracking(touch, NO);
1245
- } else {
1246
- if (this.dragging) {
1247
- touchStatus.dragging = NO;
1248
-
1249
- // reset last event time
1250
- touchStatus.lastEventTime = touch.timeStamp;
1251
-
1252
- this.startDecelerationAnimation();
1253
- } else {
1254
- // well. The scrolling stopped. Let us tell everyone if there was a pending one that this non-drag op interrupted.
1255
- if (touchStatus.needsScrollEnd) this._touchScrollDidEnd();
1256
-
1257
- // this part looks weird, but it is actually quite simple.
1258
- // First, we send the touch off for capture+starting again, but telling it to return to us
1259
- // if nothing is found or if it is released.
1260
- touch.captureTouch(this, YES);
1261
-
1262
- // if we went anywhere, did anything, etc., call end()
1263
- if (touch.touchResponder && touch.touchResponder !== this) {
1264
- touch.end();
1265
- } else if (!touch.touchResponder || touch.touchResponder === this) {
1266
- // if it was released to us or stayed with us the whole time, or is for some
1267
- // wacky reason empty (in which case it is ours still). If so, and there is a next responder,
1268
- // relay to that.
1269
-
1270
- if (touch.nextTouchResponder) touch.makeTouchResponder(touch.nextTouchResponder);
1271
- } else {
1272
- // in this case, the view that captured it and changed responder should have handled
1273
- // everything for us.
1274
- }
1275
-
1276
- this.touch = null;
1277
- }
1278
-
1279
- this.tracking = NO;
1280
- this.dragging = NO;
1281
- }
1282
- },
1283
-
1284
- touchCancelled: function(touch) {
1285
- var touchStatus = this.touch,
1286
- avg = touch.averagedTouchesForView(this);
1287
-
1288
- // if we are decelerating, we don't want to stop that. That would be bad. Because there's no point.
1289
- if (!this.touch || !this.touch.timeout) {
1290
- this.beginPropertyChanges();
1291
- this.set("scale", this._scale);
1292
- this.set("verticalScrollOffset", this._scroll_verticalScrollOffset);
1293
- this.set("horizontalScrollOffset", this._scroll_horizontalScrollOffset);
1294
- this.endPropertyChanges();
1295
- this.tracking = NO;
1296
-
1297
- if (this.dragging) {
1298
- this._touchScrollDidEnd();
1299
- }
1300
-
1301
- this.dragging = NO;
1302
- this.touch = null;
1303
- }
1304
- },
1305
-
1306
- startDecelerationAnimation: function(evt) {
1307
- var touch = this.touch;
1308
- touch.decelerationVelocity = {
1309
- x: touch.scrollVelocity.x * 10,
1310
- y: touch.scrollVelocity.y * 10
1311
- };
1312
-
1313
- this.decelerateAnimation();
1314
- },
1315
-
1316
- /**
1317
- @private
1318
- Does bounce calculations, adjusting velocity.
1319
-
1320
- Bouncing is fun. Functions that handle it should have fun names,
1321
- don'tcha think?
1322
-
1323
- P.S.: should this be named "bouncityBounce" instead?
1324
- */
1325
- bouncyBounce: function(velocity, value, minValue, maxValue, de, ac, additionalAcceleration) {
1326
- // we have 4 possible paths. On a higher level, we have two leaf paths that can be applied
1327
- // for either of two super-paths.
1328
- //
1329
- // The first path is if we are decelerating past an edge: in this case, this function must
1330
- // must enhance that deceleration. In this case, our math boils down to taking the amount
1331
- // by which we are past the edge, multiplying it by our deceleration factor, and reducing
1332
- // velocity by that amount.
1333
- //
1334
- // The second path is if we are not decelerating, but are still past the edge. In this case,
1335
- // we must start acceleration back _to_ the edge. The math here takes the distance we are from
1336
- // the edge, multiplies by the acceleration factor, and then performs two additional things:
1337
- // First, it speeds up the acceleration artificially with additionalAcceleration; this will
1338
- // make the stop feel more sudden, as it will still have this additional acceleration when it reaches
1339
- // the edge. Second, it ensures the result does not go past the final value, so we don't end up
1340
- // bouncing back and forth all crazy-like.
1341
- if (value < minValue) {
1342
- if (velocity < 0) velocity = velocity + ((minValue - value) * de);
1343
- else {
1344
- velocity = Math.min((minValue-value) * ac + additionalAcceleration, minValue - value - 0.01);
1345
- }
1346
- } else if (value > maxValue) {
1347
- if (velocity > 0) velocity = velocity - ((value - maxValue) * de);
1348
- else {
1349
- velocity = -Math.min((value - maxValue) * ac + additionalAcceleration, value - maxValue - 0.01);
1350
- }
1351
- }
1352
- return velocity;
1353
- },
1354
-
1355
- decelerateAnimation: function() {
1356
- // get a bunch of properties. They are named well, so not much explanation of what they are...
1357
- // However, note maxOffsetX/Y takes into account the scale;
1358
- // also, newX/Y adds in the current deceleration velocity (the deceleration velocity will
1359
- // be changed later in this function).
1360
- var touch = this.touch,
1361
- scale = this._scale,
1362
- minOffsetX = this.minimumScrollOffset(touch.contentSize.width * this._scale, touch.containerSize.width, this.get("horizontalAlign")),
1363
- minOffsetY = this.minimumScrollOffset(touch.contentSize.height * this._scale, touch.containerSize.height, this.get("verticalAlign")),
1364
- maxOffsetX = this.maximumScrollOffset(touch.contentSize.width * this._scale, touch.containerSize.width, this.get("horizontalAlign")),
1365
- maxOffsetY = this.maximumScrollOffset(touch.contentSize.height * this._scale, touch.containerSize.height, this.get("verticalAlign")),
1366
-
1367
- now = Date.now(),
1368
- t = Math.max(now - touch.lastEventTime, 1),
1369
-
1370
- newX = this._scroll_horizontalScrollOffset + touch.decelerationVelocity.x * (t/10),
1371
- newY = this._scroll_verticalScrollOffset + touch.decelerationVelocity.y * (t/10);
1372
-
1373
- var de = touch.decelerationFromEdge, ac = touch.accelerationToEdge;
1374
-
1375
- // under a few circumstances, we may want to force a valid X/Y position.
1376
- // For instance, if bouncing is disabled, or if position was okay before
1377
- // adjusting scale.
1378
- var forceValidXPosition = !touch.enableBouncing, forceValidYPosition = !touch.enableBouncing;
1379
-
1380
- // determine if position was okay before adjusting scale (which we do, in
1381
- // a lovely, animated way, for the scaled out/in too far bounce-back).
1382
- // if the position was okay, then we are going to make sure that we keep the
1383
- // position okay when adjusting the scale.
1384
- //
1385
- // Position OKness, here, referring to if the position is valid (within
1386
- // minimum and maximum scroll offsets)
1387
- if (newX >= minOffsetX && newX <= maxOffsetX) forceValidXPosition = YES;
1388
- if (newY >= minOffsetY && newY <= maxOffsetY) forceValidYPosition = YES;
1389
-
1390
- // We are going to change scale in a moment, but the position should stay the
1391
- // same, if possible (unless it would be more jarring, as described above, in
1392
- // the case of starting with a valid position and ending with an invalid one).
1393
- //
1394
- // Because we are changing the scale, we need to make the position scale-neutral.
1395
- // we'll make it non-scale-neutral after applying scale.
1396
- //
1397
- // Question: might it be better to save the center position instead, so scaling
1398
- // bounces back around the center of the screen?
1399
- newX /= this._scale;
1400
- newY /= this._scale;
1401
-
1402
- // scale velocity (amount to change) starts out at 0 each time, because
1403
- // it is calculated by how far out of bounds it is, rather than by the
1404
- // previous such velocity.
1405
- var sv = 0;
1406
-
1407
- // do said calculation; we'll use the same bouncyBounce method used for everything
1408
- // else, but our adjustor that gives a minimum amount to change by and (which, as we'll
1409
- // discuss, is to make the stop feel slightly more like a stop), we'll leave at 0
1410
- // (scale doesn't really need it as much; if you disagree, at least come up with
1411
- // numbers more appropriate for scale than the ones for X/Y)
1412
- sv = this.bouncyBounce(sv, scale, touch.minimumScale, touch.maximumScale, de, ac, 0);
1413
-
1414
- // add the amount to scale. This is linear, rather than multiplicative. If you think
1415
- // it should be multiplicative (or however you say that), come up with a new formula.
1416
- this._scale = scale = scale + sv;
1417
-
1418
- // now we can convert newX/Y back to scale-specific coordinates...
1419
- newX *= this._scale;
1420
- newY *= this._scale;
1421
-
1422
- // It looks very weird if the content started in-bounds, but the scale animation
1423
- // made it not be in bounds; it causes the position to animate snapping back, and,
1424
- // well, it looks very weird. It is more proper to just make sure it stays in a valid
1425
- // position. So, we'll determine the new maximum/minimum offsets, and then, if it was
1426
- // originally a valid position, we'll adjust the new position to a valid position as well.
1427
-
1428
-
1429
- // determine new max offset
1430
- minOffsetX = this.minimumScrollOffset(touch.contentSize.width * this._scale, touch.containerSize.width, this.get("horizontalAlign"));
1431
- minOffsetY = this.minimumScrollOffset(touch.contentSize.height * this._scale, touch.containerSize.height, this.get("verticalAlign"));
1432
- maxOffsetX = this.maximumScrollOffset(touch.contentSize.width * this._scale, touch.containerSize.width, this.get("horizontalAlign"));
1433
- maxOffsetY = this.maximumScrollOffset(touch.contentSize.height * this._scale, touch.containerSize.height, this.get("verticalAlign"));
1434
-
1435
- // see if scaling messed up the X position (but ignore if 'tweren't right to begin with).
1436
- if (forceValidXPosition && (newX < minOffsetX || newX > maxOffsetX)) {
1437
- // Correct the position
1438
- newX = Math.max(minOffsetX, Math.min(newX, maxOffsetX));
1439
-
1440
- // also, make the velocity be ZERO; it is obviously not needed...
1441
- touch.decelerationVelocity.x = 0;
1442
- }
1443
-
1444
- // now the y
1445
- if (forceValidYPosition && (newY < minOffsetY || newY > maxOffsetY)) {
1446
- // again, correct it...
1447
- newY = Math.max(minOffsetY, Math.min(newY, maxOffsetY));
1448
-
1449
- // also, make the velocity be ZERO; it is obviously not needed...
1450
- touch.decelerationVelocity.y = 0;
1451
- }
1452
-
1453
-
1454
- // now that we are done modifying the position, we may update the actual scroll
1455
- this._scroll_horizontalScrollOffset = newX;
1456
- this._scroll_verticalScrollOffset = newY;
1457
-
1458
- this._applyCSSTransforms(touch.layer); // <- Does what it sounds like.
1459
-
1460
- this._touchScrollDidChange();
1461
-
1462
- // Now we have to adjust the velocities. The velocities are simple x and y numbers that
1463
- // get added to the scroll X/Y positions each frame.
1464
- // The default decay rate is .950 per frame. To achieve some semblance of accuracy, we
1465
- // make it to the power of the elapsed number of frames. This is not fully accurate,
1466
- // as this is applying the elapsed time between this frame and the previous time to
1467
- // modify the velocity for the next frame. My mind goes blank when I try to figure out
1468
- // a way to fix this (given that we don't want to change the velocity on the first frame),
1469
- // and as it seems to work great as-is, I'm just leaving it.
1470
- var decay = touch.decelerationRate;
1471
- touch.decelerationVelocity.y *= Math.pow(decay, (t / 10));
1472
- touch.decelerationVelocity.x *= Math.pow(decay, (t / 10));
1473
-
1474
- // We have a bouncyBounce method that adjusts the velocity for bounce. That is, if it is
1475
- // out of range and still going, it will slow it down. This step is decelerationFromEdge.
1476
- // If it is not moving (or has come to a stop from decelerating), but is still out of range,
1477
- // it will start it moving back into range (accelerationToEdge)
1478
- // we supply de and ac as these properties.
1479
- // The .3 artificially increases the acceleration by .3; this is actually to make the final
1480
- // stop a bit more abrupt.
1481
- touch.decelerationVelocity.x = this.bouncyBounce(touch.decelerationVelocity.x, newX, minOffsetX, maxOffsetX, de, ac, 0.3);
1482
- touch.decelerationVelocity.y = this.bouncyBounce(touch.decelerationVelocity.y, newY, minOffsetY, maxOffsetY, de, ac, 0.3);
1483
-
1484
- // if we ain't got no velocity... then we must be finished, as there is no where else to go.
1485
- // to determine our velocity, we take the absolue value, and use that; if it is less than .01, we
1486
- // must be done. Note that we check scale's most recent velocity, calculated above using bouncyBounce,
1487
- // as well.
1488
- var absXVelocity = Math.abs(touch.decelerationVelocity.x);
1489
- var absYVelocity = Math.abs(touch.decelerationVelocity.y);
1490
- if (absYVelocity < 0.05 && absXVelocity < 0.05 && Math.abs(sv) < 0.05) {
1491
- // we can reset the timeout, as it will no longer be required, and we don't want to re-cancel it later.
1492
- touch.timeout = null;
1493
- this.touch = null;
1494
-
1495
- // trigger scroll end
1496
- this._touchScrollDidEnd();
1497
-
1498
- // set the scale, vertical, and horizontal offsets to what they technically already are,
1499
- // but don't know they are yet. This will finally update things like, say, the clipping frame.
1500
- this.beginPropertyChanges();
1501
- this.set("scale", this._scale);
1502
- this.set("verticalScrollOffset", this._scroll_verticalScrollOffset);
1503
- this.set("horizontalScrollOffset", this._scroll_horizontalScrollOffset);
1504
- this.endPropertyChanges();
1505
-
1506
- return;
1507
- }
1508
-
1509
- // We now set up the next round. We are doing this as raw as we possibly can, not touching the
1510
- // run loop at all. This speeds up performance drastically--keep in mind, we're on comparatively
1511
- // slow devices, here. So, we'll just make a closure, saving "this" into "self" and calling
1512
- // 10ms later (or however long it takes). Note also that we save both the last event time
1513
- // (so we may calculate elapsed time) and the timeout we are creating, so we may cancel it in future.
1514
- var self = this;
1515
- touch.lastEventTime = Date.now();
1516
- this.touch.timeout = setTimeout(function(){
1517
- SC.run(self.decelerateAnimation(), self);
1518
- }, 10);
1519
- },
1520
-
1521
- // ..........................................................
1522
- // INTERNAL SUPPORT
1523
- //
1524
-
1525
- /** @private
1526
- Instantiate scrollers & container views as needed. Replace their classes
1527
- in the regular properties.
1528
- */
1529
- createChildViews: function() {
1530
- var childViews = [] , view;
1531
-
1532
- // create the containerView. We must always have a container view.
1533
- // also, setup the contentView as the child of the containerView...
1534
- if (SC.none(view = this.containerView)) view = SC.ContainerView;
1535
-
1536
- childViews.push(this.containerView = this.createChildView(view, {
1537
- contentView: this.contentView,
1538
- isScrollContainer: YES
1539
- }));
1540
-
1541
- // and replace our own contentView...
1542
- this.contentView = this.containerView.get('contentView');
1543
-
1544
- // create a horizontal scroller view if needed...
1545
- view = SC.platform.touch ? this.get("horizontalTouchScrollerView") : this.get("horizontalScrollerView");
1546
- if (view) {
1547
- if (this.get('hasHorizontalScroller')) {
1548
- view = this.horizontalScrollerView = this.createChildView(view, {
1549
- layoutDirection: SC.LAYOUT_HORIZONTAL,
1550
- valueBinding: '*owner.horizontalScrollOffset'
1551
- }) ;
1552
- childViews.push(view);
1553
- } else this.horizontalScrollerView = null ;
1554
- }
1555
-
1556
- // create a vertical scroller view if needed...
1557
- view = SC.platform.touch ? this.get("verticalTouchScrollerView") : this.get("verticalScrollerView");
1558
- if (view) {
1559
- if (this.get('hasVerticalScroller')) {
1560
- view = this.verticalScrollerView = this.createChildView(view, {
1561
- layoutDirection: SC.LAYOUT_VERTICAL,
1562
- valueBinding: '*owner.verticalScrollOffset'
1563
- }) ;
1564
- childViews.push(view);
1565
- } else this.verticalScrollerView = null ;
1566
- }
1567
-
1568
- // set childViews array.
1569
- this.childViews = childViews ;
1570
-
1571
- this.contentViewDidChange() ; // setup initial display...
1572
- this.tile() ; // set up initial tiling
1573
- },
1574
-
1575
- init: function() {
1576
- sc_super();
1577
-
1578
- // start observing initial content view. The content view's frame has
1579
- // already been setup in prepareDisplay so we don't need to call
1580
- // viewFrameDidChange...
1581
- this._scroll_contentView = this.get('contentView') ;
1582
- var contentView = this._scroll_contentView ;
1583
-
1584
- if (contentView) {
1585
- contentView.addObserver('frame', this, this.contentViewFrameDidChange);
1586
- contentView.addObserver('calculatedWidth', this, this.contentViewFrameDidChange);
1587
- contentView.addObserver('calculatedHeight', this, this.contentViewFrameDidChange);
1588
- }
1589
-
1590
- if (this.get('isVisibleInWindow')) this._scsv_registerAutoscroll() ;
1591
- },
1592
-
1593
- /** @private Registers/deregisters view with SC.Drag for autoscrolling */
1594
- _scsv_registerAutoscroll: function() {
1595
- if (this.get('isVisibleInWindow')) SC.Drag.addScrollableView(this);
1596
- else SC.Drag.removeScrollableView(this);
1597
- }.observes('isVisibleInWindow'),
1598
-
1599
- /** @private
1600
- Whenever the contentView is changed, we need to observe the content view's
1601
- frame to be notified whenever it's size changes.
1602
- */
1603
- contentViewDidChange: function() {
1604
- var newView = this.get('contentView'),
1605
- oldView = this._scroll_contentView,
1606
- frameObserver = this.contentViewFrameDidChange,
1607
- layerObserver = this.contentViewLayerDidChange;
1608
-
1609
- if (newView !== oldView) {
1610
-
1611
- // stop observing old content view
1612
- if (oldView) {
1613
- oldView.removeObserver('calculatedWidth', this, this.contentViewFrameDidChange);
1614
- oldView.removeObserver('calculatedHeight', this, this.contentViewFrameDidChange);
1615
- oldView.removeObserver('frame', this, frameObserver);
1616
- oldView.removeObserver('layer', this, layerObserver);
1617
- }
1618
-
1619
- // update cache
1620
- this._scroll_contentView = newView;
1621
- if (newView) {
1622
- newView.addObserver('frame', this, frameObserver);
1623
- newView.addObserver('calculatedWidth', this, this.contentViewFrameDidChange);
1624
- newView.addObserver('calculatedHeight', this, this.contentViewFrameDidChange);
1625
- newView.addObserver('layer', this, layerObserver);
1626
- }
1627
-
1628
- // replace container
1629
- this.containerView.set('contentView', newView);
1630
-
1631
- this.contentViewFrameDidChange();
1632
- }
1633
- }.observes('contentView'),
1634
-
1635
- /** @private
1636
- If we redraw after the initial render, we need to make sure that we reset
1637
- the scrollTop/scrollLeft properties on the content view. This ensures
1638
- that, for example, the scroll views displays correctly when switching
1639
- views out in a ContainerView.
1640
- */
1641
- render: function(context, firstTime) {
1642
- this.invokeLast(this.adjustElementScroll);
1643
-
1644
- if (firstTime) {
1645
- context.push('<div class="corner"></div>');
1646
- }
1647
- return sc_super();
1648
- },
1649
-
1650
- /** @private
1651
- Invoked whenever the contentView's frame changes. This will update the
1652
- scroller maxmimum and optionally update the scroller visibility if the
1653
- size of the contentView changes. We don't care about the origin since
1654
- that is tracked separately from the offset values.
1655
-
1656
- @param {Boolean} force (optional) Re-calculate everything even if the contentView’s frame didn’t change size
1657
- */
1658
-
1659
- oldMaxHOffset: 0,
1660
- oldMaxVOffset: 0,
1661
-
1662
- contentViewFrameDidChange: function(force) {
1663
- var view = this.get('contentView'),
1664
- f = (view) ? view.get('frame') : null,
1665
- scale = this._scale,
1666
- width = 0,
1667
- height = 0,
1668
- dim, dimWidth, dimHeight;
1669
-
1670
- if (view) {
1671
- width = view.get('calculatedWidth') || f.width || 0;
1672
- height = view.get('calculatedHeight') || f.height || 0;
1673
- }
1674
-
1675
- width *= scale;
1676
- height *= scale;
1677
-
1678
- // cache out scroll settings...
1679
- if (!force && (width === this._scroll_contentWidth) && (height === this._scroll_contentHeight)) return ;
1680
- this._scroll_contentWidth = width;
1681
- this._scroll_contentHeight = height;
1682
-
1683
- dim = this.getPath('containerView.frame');
1684
- dimWidth = dim.width;
1685
- dimHeight = dim.height;
1686
-
1687
- if (this.get('hasHorizontalScroller') && (view = this.get('horizontalScrollerView'))) {
1688
- // decide if it should be visible or not
1689
- if (this.get('autohidesHorizontalScroller')) {
1690
- this.set('isHorizontalScrollerVisible', width > dimWidth);
1691
- }
1692
- view.setIfChanged('maximum', width-dimWidth) ;
1693
- view.setIfChanged('proportion', dimWidth/width);
1694
- }
1695
-
1696
- if (this.get('hasVerticalScroller') && (view = this.get('verticalScrollerView'))) {
1697
- // decide if it should be visible or not
1698
- if (this.get('autohidesVerticalScroller')) {
1699
- this.set('isVerticalScrollerVisible', height > dimHeight);
1700
- }
1701
- view.setIfChanged('maximum', height-dimHeight) ;
1702
- view.setIfChanged('proportion', dimHeight/height);
1703
- }
1704
-
1705
- // If there is no vertical scroller and auto hiding is on, make
1706
- // sure we are at the top if not already there
1707
- if (!this.get('isVerticalScrollerVisible') && (this.get('verticalScrollOffset') !== 0) &&
1708
- this.get('autohidesVerticalScroller')) {
1709
- this.set('verticalScrollOffset', 0);
1710
- }
1711
-
1712
- // Same thing for horizontal scrolling.
1713
- if (!this.get('isHorizontalScrollerVisible') && (this.get('horizontalScrollOffset') !== 0) &&
1714
- this.get('autohidesHorizontalScroller')) {
1715
- this.set('horizontalScrollOffset', 0);
1716
- }
1717
-
1718
- // This forces to recalculate the height of the frame when is at the bottom
1719
- // of the scroll and the content dimension are smaller that the previous one
1720
- var mxVOffSet = this.get('maximumVerticalScrollOffset'),
1721
- vOffSet = this.get('verticalScrollOffset'),
1722
- mxHOffSet = this.get('maximumHorizontalScrollOffset'),
1723
- hOffSet = this.get('horizontalScrollOffset'),
1724
- forceHeight = mxVOffSet < vOffSet,
1725
- forceWidth = mxHOffSet < hOffSet;
1726
- if (forceHeight || forceWidth) {
1727
- this.forceDimensionsRecalculation(forceWidth, forceHeight, vOffSet, hOffSet);
1728
- }
1729
- },
1730
-
1731
- /** @private
1732
- If our frame changes, then we need to re-calculate the visiblility of our
1733
- scrollers, etc.
1734
- */
1735
- frameDidChange: function() {
1736
- this.contentViewFrameDidChange(YES);
1737
- }.observes('frame'),
1738
-
1739
- /** @private
1740
- If the layer of the content view changes, we need to readjust the
1741
- scrollTop and scrollLeft properties on the new DOM element.
1742
- */
1743
- contentViewLayerDidChange: function() {
1744
- // Invalidate these cached values, as they're no longer valid
1745
- if (this._verticalScrollOffset !== 0) this._verticalScrollOffset = -1;
1746
- if (this._horizontalScrollOffset !== 0) this._horizontalScrollOffset = -1;
1747
- this.invokeLast(this.adjustElementScroll);
1748
- },
1749
-
1750
- /** @private
1751
- Whenever the horizontal scroll offset changes, update the scrollers and
1752
- edit the location of the contentView.
1753
- */
1754
- _scroll_horizontalScrollOffsetDidChange: function() {
1755
- this.invokeLast(this.adjustElementScroll);
1756
- }.observes('horizontalScrollOffset'),
1757
-
1758
- /** @private
1759
- Whenever the vertical scroll offset changes, update the scrollers and
1760
- edit the location of the contentView.
1761
- */
1762
- _scroll_verticalScrollOffsetDidChange: function() {
1763
- this.invokeLast(this.adjustElementScroll);
1764
- }.observes('verticalScrollOffset'),
1765
-
1766
- /** @private
1767
- Called at the end of the run loop to actually adjust the scrollTop
1768
- and scrollLeft properties of the container view.
1769
- */
1770
- adjustElementScroll: function() {
1771
- var container = this.get('containerView'),
1772
- content = this.get('contentView'),
1773
- verticalScrollOffset = this.get('verticalScrollOffset'),
1774
- horizontalScrollOffset = this.get('horizontalScrollOffset');
1775
-
1776
- // We notify the content view that its frame property has changed
1777
- // before we actually update the scrollTop/scrollLeft properties.
1778
- // This gives views that use incremental rendering a chance to render
1779
- // newly-appearing elements before they come into view.
1780
- if (content) {
1781
- content._viewFrameDidChange();
1782
-
1783
- // Use accelerated drawing if the browser supports it
1784
- if (SC.platform.touch) {
1785
- this._applyCSSTransforms(content.get('layer'));
1786
- }
1787
- }
1788
-
1789
- if (container && !SC.platform.touch) {
1790
- container = container.$()[0];
1791
-
1792
- if (container) {
1793
- if (verticalScrollOffset !== this._verticalScrollOffset) {
1794
- container.scrollTop = verticalScrollOffset;
1795
- this._verticalScrollOffset = verticalScrollOffset;
1796
- }
1797
-
1798
- if (horizontalScrollOffset !== this._horizontalScrollOffset) {
1799
- container.scrollLeft = horizontalScrollOffset;
1800
- this._horizontalScrollOffset = horizontalScrollOffset;
1801
- }
1802
- }
1803
- }
1804
- },
1805
-
1806
- forceDimensionsRecalculation: function (forceWidth, forceHeight, vOffSet, hOffSet) {
1807
- var oldScrollHOffset = hOffSet;
1808
- var oldScrollVOffset = vOffSet;
1809
- this.scrollTo(0,0);
1810
- if(forceWidth && forceHeight){
1811
- this.scrollTo(this.get('maximumHorizontalScrollOffset'), this.get('maximumVerticalScrollOffset'));
1812
- }
1813
- if(forceWidth && !forceHeight){
1814
- this.scrollTo(this.get('maximumHorizontalScrollOffset'), oldScrollVOffset);
1815
- }
1816
- if(!forceWidth && forceHeight){
1817
- this.scrollTo(oldScrollHOffset ,this.get('maximumVerticalScrollOffset'));
1818
- }
1819
- },
1820
-
1821
- _scroll_verticalScrollOffset: 0,
1822
- _scroll_horizontalScrollOffset: 0
1823
-
1824
- });