sproutcore 1.9.2 → 1.10.0.rc.1

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 (746) hide show
  1. checksums.yaml +15 -0
  2. data/VERSION.yml +2 -2
  3. data/bin/sc-build +12 -9
  4. data/bin/sc-build-number +12 -9
  5. data/bin/sc-docs +12 -15
  6. data/bin/sc-gen +12 -9
  7. data/bin/sc-init +12 -9
  8. data/bin/sc-manifest +12 -9
  9. data/bin/sc-server +12 -9
  10. data/bin/sproutcore +12 -9
  11. data/lib/frameworks/sproutcore/Buildfile +14 -17
  12. data/lib/frameworks/sproutcore/CHANGELOG.md +214 -3
  13. data/lib/frameworks/sproutcore/README.md +4 -1
  14. data/lib/frameworks/sproutcore/apps/greenhouse/Buildfile +13 -0
  15. data/lib/frameworks/sproutcore/{frameworks/experimental/apps/greenhouse/README → apps/greenhouse/README.md} +1 -1
  16. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/TODO +0 -0
  17. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/beautify.js +0 -0
  18. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/design.js +3 -3
  19. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/file.js +3 -3
  20. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/files.js +3 -3
  21. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/layout.js +9 -9
  22. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/library.js +23 -23
  23. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/page.js +1 -1
  24. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/property.js +1 -1
  25. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/property_editor.js +2 -2
  26. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/target.js +1 -1
  27. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/targets.js +12 -12
  28. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/controllers/view_configs.js +15 -15
  29. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/core.js +14 -14
  30. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/core_file.js +0 -0
  31. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/data_source.js +42 -42
  32. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/app_page.js +45 -45
  33. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/app-selector.css +0 -0
  34. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/button.css +0 -0
  35. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/dock.css +0 -0
  36. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/general.css +0 -0
  37. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/icons.css +5 -0
  38. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/main-page.css +0 -0
  39. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/menu.css +0 -0
  40. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/modal.css +0 -0
  41. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/picker.css +0 -0
  42. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/search.css +0 -0
  43. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/css/text-field.css +0 -0
  44. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/dialogs.js +0 -0
  45. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.eot +0 -0
  46. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.otf +0 -0
  47. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500.woff +0 -0
  48. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.eot +0 -0
  49. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.otf +0 -0
  50. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/fonts/museosans_500_italic.woff +0 -0
  51. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/app-selector/choose-app.png +0 -0
  52. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/app-selector/list-item-sel.png +0 -0
  53. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-l.png +0 -0
  54. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-m.png +0 -0
  55. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-r.png +0 -0
  56. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-l.png +0 -0
  57. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-m.png +0 -0
  58. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-r.png +0 -0
  59. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/active-l.png +0 -0
  60. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/active-r.png +0 -0
  61. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-l.png +0 -0
  62. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-r.png +0 -0
  63. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/regular-l.png +0 -0
  64. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/regular-r.png +0 -0
  65. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-l.png +0 -0
  66. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-r.png +0 -0
  67. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-l.png +0 -0
  68. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-r.png +0 -0
  69. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-l.png +0 -0
  70. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/capsule/sel-r.png +0 -0
  71. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-l.png +0 -0
  72. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-m.png +0 -0
  73. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/active-r.png +0 -0
  74. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-l.png +0 -0
  75. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-r.png +0 -0
  76. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-l.png +0 -0
  77. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-r.png +0 -0
  78. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-l.png +0 -0
  79. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-r.png +0 -0
  80. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-l.png +0 -0
  81. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-r.png +0 -0
  82. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-l.png +0 -0
  83. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-m.png +0 -0
  84. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/disabled-r.png +0 -0
  85. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-l.png +0 -0
  86. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-m.png +0 -0
  87. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/regular-r.png +0 -0
  88. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-l.png +0 -0
  89. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-m.png +0 -0
  90. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-r.png +0 -0
  91. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-l.png +0 -0
  92. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-m.png +0 -0
  93. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-r.png +0 -0
  94. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-l.png +0 -0
  95. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-m.png +0 -0
  96. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/dark/sel-r.png +0 -0
  97. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/active-m.png +0 -0
  98. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/disabled-m.png +0 -0
  99. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/regular-m.png +0 -0
  100. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-active-m.png +0 -0
  101. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-disabled-m.png +0 -0
  102. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/shared/sel-m.png +0 -0
  103. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/active-l.png +0 -0
  104. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/active-r.png +0 -0
  105. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/disabled-l.png +0 -0
  106. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/disabled-r.png +0 -0
  107. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/regular-l.png +0 -0
  108. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/regular-r.png +0 -0
  109. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-active-l.png +0 -0
  110. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-active-r.png +0 -0
  111. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-l.png +0 -0
  112. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-r.png +0 -0
  113. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-l.png +0 -0
  114. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/buttons/square/sel-r.png +0 -0
  115. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/actions-active.png +0 -0
  116. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/actions.png +0 -0
  117. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/inspector-active.png +0 -0
  118. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/inspector.png +0 -0
  119. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/library-active.png +0 -0
  120. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/library.png +0 -0
  121. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/projects-active.png +0 -0
  122. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/projects.png +0 -0
  123. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/run-active.png +0 -0
  124. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/run.png +0 -0
  125. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/save-active.png +0 -0
  126. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/icons/save.png +0 -0
  127. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/greenhouse-l.png +0 -0
  128. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/greenhouse-s.png +0 -0
  129. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/logos/sproutcore.png +0 -0
  130. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/main-bg.png +0 -0
  131. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom-left.png +0 -0
  132. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom-right.png +0 -0
  133. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/bottom.png +0 -0
  134. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/close-active.png +0 -0
  135. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/close.png +0 -0
  136. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/left.png +0 -0
  137. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-bottom.png +0 -0
  138. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-left.png +0 -0
  139. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-right.png +0 -0
  140. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/pointer-top.png +0 -0
  141. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/right.png +0 -0
  142. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/search-active.png +0 -0
  143. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/search.png +0 -0
  144. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top-left.png +0 -0
  145. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top-right.png +0 -0
  146. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/picker/top.png +0 -0
  147. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/images/sc-icon-sproutcore-16.png +0 -0
  148. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/images/toolbar-bg.png +0 -0
  149. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/inspectors.js +0 -0
  150. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/loading.rhtml +0 -0
  151. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/main_page.js +0 -0
  152. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/english.lproj/strings.js +0 -0
  153. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/fixtures/file.js +0 -0
  154. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/main.js +5 -5
  155. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/mixins/drop_down.js +14 -14
  156. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/design.js +4 -4
  157. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/dir.js +12 -12
  158. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/file.js +7 -9
  159. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/target.js +12 -12
  160. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/models/view_config.js +10 -10
  161. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/resources/test_page.js +0 -0
  162. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/inspector.js +11 -11
  163. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/library.js +10 -10
  164. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/main.js +26 -25
  165. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/modals.js +10 -10
  166. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/states/ready.js +15 -15
  167. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/design.js +0 -0
  168. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/designs.js +0 -0
  169. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/file.js +0 -0
  170. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/controllers/files.js +0 -0
  171. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/models/file.js +0 -0
  172. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/models/view_config.js +0 -0
  173. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/views/list_item.js +0 -0
  174. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/tests/views/plist_item.js +1 -5
  175. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/theme.js +6 -6
  176. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/anchor.js +43 -43
  177. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/application_list_item.js +2 -2
  178. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/event_blocker.js +7 -7
  179. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/label_designer.js +0 -0
  180. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/list_item.js +8 -8
  181. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/plist_item.js +23 -23
  182. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/simple_button.js +31 -31
  183. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/tear_off_picker.js +12 -12
  184. data/lib/frameworks/sproutcore/{frameworks/experimental/apps → apps}/greenhouse/views/web.js +5 -5
  185. data/lib/frameworks/sproutcore/apps/media_examples/core.js +5 -6
  186. data/lib/frameworks/sproutcore/apps/media_examples/views/audio_view.js +16 -17
  187. data/lib/frameworks/sproutcore/apps/media_examples/views/camera_view.js +4 -5
  188. data/lib/frameworks/sproutcore/apps/media_examples/views/capabilities_view.js +17 -18
  189. data/lib/frameworks/sproutcore/apps/media_examples/views/microphone_view.js +4 -5
  190. data/lib/frameworks/sproutcore/apps/media_examples/views/video_view.js +18 -19
  191. data/lib/frameworks/sproutcore/apps/showcase/Buildfile +2 -2
  192. data/lib/frameworks/sproutcore/apps/showcase/README +1 -1
  193. data/lib/frameworks/sproutcore/apps/showcase/controllers/source_tree_controller.js +27 -7
  194. data/lib/frameworks/sproutcore/apps/showcase/core.js +6 -4
  195. data/lib/frameworks/sproutcore/apps/showcase/main.js +2 -1
  196. data/lib/frameworks/sproutcore/apps/showcase/patch.diff +529 -0
  197. data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-128.png +0 -0
  198. data/lib/frameworks/sproutcore/apps/showcase/resources/main_page.js +3 -2
  199. data/lib/frameworks/sproutcore/apps/showcase/resources/stylesheet.css +35 -16
  200. data/lib/frameworks/sproutcore/apps/showcase/resources/views_page.js +195 -10
  201. data/lib/frameworks/sproutcore/apps/showcase/system/views_item_content.js +2 -1
  202. data/lib/frameworks/sproutcore/apps/showcase/theme.js +2 -1
  203. data/lib/frameworks/sproutcore/apps/showcase/views/checkbox_views.js +2 -1
  204. data/lib/frameworks/sproutcore/apps/showcase/views/date_field_views.js +2 -1
  205. data/lib/frameworks/sproutcore/apps/showcase/views/disclosure_views.js +2 -1
  206. data/lib/frameworks/sproutcore/apps/showcase/views/label_views.js +2 -1
  207. data/lib/frameworks/sproutcore/apps/showcase/views/list_views.js +2 -1
  208. data/lib/frameworks/sproutcore/apps/showcase/views/popup_button_views.js +3 -2
  209. data/lib/frameworks/sproutcore/apps/showcase/views/progress_views.js +2 -1
  210. data/lib/frameworks/sproutcore/apps/showcase/views/radio_views.js +2 -1
  211. data/lib/frameworks/sproutcore/apps/showcase/views/scroll_views.js +2 -1
  212. data/lib/frameworks/sproutcore/apps/showcase/views/segmented_views.js +2 -1
  213. data/lib/frameworks/sproutcore/apps/showcase/views/select_views.js +10 -9
  214. data/lib/frameworks/sproutcore/apps/showcase/views/slider_views.js +2 -1
  215. data/lib/frameworks/sproutcore/apps/showcase/views/source_list_views.js +2 -1
  216. data/lib/frameworks/sproutcore/apps/showcase/views/split_views.js +2 -1
  217. data/lib/frameworks/sproutcore/apps/showcase/views/stacked_views.js +2 -1
  218. data/lib/frameworks/sproutcore/apps/showcase/views/static_content_views.js +2 -1
  219. data/lib/frameworks/sproutcore/apps/showcase/views/tab_views.js +2 -1
  220. data/lib/frameworks/sproutcore/apps/showcase/views/text_field_views.js +2 -1
  221. data/lib/frameworks/sproutcore/apps/showcase/views/toolbar_views.js +2 -1
  222. data/lib/frameworks/sproutcore/apps/showcase/views/views_item_view.js +15 -6
  223. data/lib/frameworks/sproutcore/apps/showcase/views/views_list_view.js +5 -4
  224. data/lib/frameworks/sproutcore/apps/showcase/views/web_views.js +2 -1
  225. data/lib/frameworks/sproutcore/apps/showcase/views/well_views.js +2 -1
  226. data/lib/frameworks/sproutcore/apps/showcase/views/workspace_views.js +2 -1
  227. data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +5 -5
  228. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +15 -15
  229. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/styles.css +3 -0
  230. data/lib/frameworks/sproutcore/apps/tests/controllers/source.js +11 -11
  231. data/lib/frameworks/sproutcore/apps/tests/controllers/target.js +6 -12
  232. data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +28 -33
  233. data/lib/frameworks/sproutcore/apps/tests/controllers/{detail.js → test.js} +14 -12
  234. data/lib/frameworks/sproutcore/apps/tests/controllers/tests.js +11 -15
  235. data/lib/frameworks/sproutcore/apps/tests/core.js +8 -113
  236. data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +9 -19
  237. data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +81 -92
  238. data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +3 -1
  239. data/lib/frameworks/sproutcore/apps/tests/main.js +8 -13
  240. data/lib/frameworks/sproutcore/apps/tests/statechart.js +268 -0
  241. data/lib/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +4 -4
  242. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +16 -16
  243. data/lib/frameworks/sproutcore/apps/welcome/core.js +9 -9
  244. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/images/sproutcore.png +0 -0
  245. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +22 -25
  246. data/lib/frameworks/sproutcore/apps/welcome/main.js +3 -3
  247. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-landscape.jpg b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-landscape.jpg +0 -0
  248. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-landscape.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-landscape.png +0 -0
  249. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-portrait.jpg b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-portrait.jpg +0 -0
  250. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup-portrait.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup-portrait.png +0 -0
  251. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-startup.png b/data/lib/frameworks/sproutcore/design/Assorted → Images/sproutcore-startup.png +0 -0
  252. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +21 -7
  253. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +35 -2
  254. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +142 -75
  255. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +20 -2
  256. data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/horizontal_stack_layout.js +283 -0
  257. data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/vertical_stack_layout.js +284 -0
  258. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +64 -65
  259. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +14 -14
  260. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +8 -8
  261. data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +19 -19
  262. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +10 -25
  263. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +12 -6
  264. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +53 -34
  265. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +30 -24
  266. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +44 -40
  267. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +5 -2
  268. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +105 -176
  269. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane_statechart.js +50 -0
  270. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +4 -4
  271. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/view_transition_protocol.js +48 -0
  272. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +225 -7
  273. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/core_query.js +54 -34
  274. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +86 -71
  275. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +35 -35
  276. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +2 -2
  277. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +2 -2
  278. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +283 -120
  279. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +36 -37
  280. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +653 -435
  281. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +49 -42
  282. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +422 -396
  283. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/selection_set.js +5 -5
  284. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +10 -8
  285. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +37 -16
  286. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +5 -5
  287. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils/rect.js +1 -1
  288. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +15 -0
  289. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/selection_support.js +21 -0
  290. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/cursor.js +28 -0
  291. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/platform.js +18 -0
  292. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +17 -17
  293. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_attr.js +9 -9
  294. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +43 -43
  295. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +4 -14
  296. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +18 -30
  297. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +78 -43
  298. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/theme.js +7 -7
  299. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +4 -3
  300. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +31 -15
  301. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +47 -2
  302. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/firstResponder.js +32 -31
  303. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/keyPane.js +23 -22
  304. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/layout.js +3 -2
  305. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/sendEvent.js +17 -16
  306. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +626 -211
  307. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/border_frame_test.js +174 -0
  308. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build.js +22 -20
  309. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/childViewLayout_test.js +27 -0
  310. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +11 -10
  311. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +5 -4
  312. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +10 -6
  313. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createLayer.js +17 -12
  314. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/destroy.js +60 -7
  315. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/destroyLayer.js +19 -26
  316. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +14 -13
  317. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/enabled_states_test.js +341 -0
  318. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/findLayerInParentLayer.js +9 -8
  319. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/init.js +26 -16
  320. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +28 -68
  321. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisible.js +35 -23
  322. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisibleInWindow.js +93 -78
  323. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +62 -64
  324. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layer.js +69 -18
  325. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js +26 -21
  326. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +129 -57
  327. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +436 -238
  328. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/removeChild.js +38 -44
  329. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +14 -4
  330. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render_delegate_support.js +29 -20
  331. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/replaceAllChildren_test.js +229 -0
  332. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayer.js +33 -95
  333. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/viewDidResize.js +87 -39
  334. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view_states_test.js +684 -0
  335. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +767 -625
  336. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +4 -23
  337. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +645 -77
  338. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +1 -1
  339. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +218 -19
  340. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +648 -321
  341. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +326 -534
  342. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +120 -126
  343. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/statechart.js +1526 -0
  344. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +18 -23
  345. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +12 -94
  346. data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +2 -2
  347. data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +19 -19
  348. data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +43 -27
  349. data/lib/frameworks/sproutcore/frameworks/core_tools/models/test.js +5 -5
  350. data/lib/frameworks/sproutcore/frameworks/core_tools/resources/icons.css +5 -0
  351. data/lib/frameworks/sproutcore/frameworks/core_tools/resources/sc-icon-sproutcore-16.png +0 -0
  352. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +41 -41
  353. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +1 -1
  354. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +90 -90
  355. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +1 -1
  356. data/lib/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +31 -31
  357. data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +3 -3
  358. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +6 -6
  359. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -1
  360. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +1 -1
  361. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
  362. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -8
  363. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +74 -48
  364. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +11 -16
  365. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +187 -253
  366. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/cascade.js +5 -5
  367. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +14 -14
  368. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +49 -9
  369. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +2 -2
  370. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/builders.js +236 -127
  371. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/instance_management.js +107 -0
  372. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +17 -0
  373. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +12 -11
  374. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/loadRecord.js +42 -17
  375. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +20 -15
  376. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +205 -92
  377. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +61 -25
  378. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +39 -9
  379. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +45 -1
  380. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/tests/system/datetime.js +88 -0
  381. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/coders/design.js +0 -0
  382. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/coders/object.js +0 -0
  383. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/controllers.js +3 -3
  384. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/design.js +2 -2
  385. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/designs.js +19 -19
  386. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/page_design.js +44 -44
  387. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/controllers/page_files.js +4 -4
  388. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/core.js +0 -0
  389. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_rule.js +0 -0
  390. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_style.js +6 -6
  391. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/css/css_style_sheet.js +37 -37
  392. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/button.js +0 -0
  393. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/label.js +0 -0
  394. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/object_designer.js +0 -0
  395. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/tab.js +0 -0
  396. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/text_field.js +0 -0
  397. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/designers/view_designer.js +1 -1
  398. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/css/designer.css +0 -0
  399. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/design_page.js +0 -0
  400. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/high_light.css +0 -0
  401. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/controller.png +0 -0
  402. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-bg.png +0 -0
  403. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-bg.png +0 -0
  404. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-divider.png +0 -0
  405. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-sel-bg.png +0 -0
  406. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/dock-item-sel-divider.png +0 -0
  407. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/main-bg.png +0 -0
  408. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/page.png +0 -0
  409. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/pane.png +0 -0
  410. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/images/view.png +0 -0
  411. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/english.lproj/selection_handles.css +0 -0
  412. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/binding.js +0 -0
  413. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/object.js +0 -0
  414. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/page.js +0 -0
  415. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/ext/view.js +0 -0
  416. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/mixins/button.js +0 -0
  417. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/mixins/snap_lines.js +0 -0
  418. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/tests/coders/page.js +0 -0
  419. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/tests/designers/view_designer.js +0 -0
  420. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/designer_drop_target.js +36 -37
  421. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/drawing.js +1 -1
  422. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/high_light.js +17 -17
  423. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/page_item_view.js +0 -0
  424. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/designer → designer}/views/selection_handles.js +14 -14
  425. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +1 -2
  426. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +51 -51
  427. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/mixins/split_child.js +63 -52
  428. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/mixins/split_thumb.js +64 -59
  429. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +113 -112
  430. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +182 -203
  431. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +13 -13
  432. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +51 -29
  433. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +513 -307
  434. data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +69 -217
  435. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +31 -26
  436. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +15 -20
  437. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +2 -6
  438. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +6 -6
  439. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +25 -16
  440. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +6 -6
  441. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +29 -16
  442. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +1 -1
  443. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +19 -23
  444. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +14 -17
  445. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +24 -24
  446. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -4
  447. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +5 -5
  448. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/render_delegates/split.js +0 -0
  449. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view → desktop}/render_delegates/split_divider.js +0 -0
  450. data/lib/frameworks/sproutcore/frameworks/desktop/resources/modal.css +2 -0
  451. data/lib/frameworks/sproutcore/frameworks/desktop/resources/panel.css +1 -1
  452. data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +24 -98
  453. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +446 -442
  454. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +42 -21
  455. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +19 -3
  456. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +26 -28
  457. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +3 -2
  458. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/pane_page.js +11 -7
  459. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +5 -4
  460. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +32 -26
  461. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +27 -22
  462. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/methods.js +5 -4
  463. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/ui.js +0 -2
  464. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +11 -8
  465. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/displayProperties.js +5 -5
  466. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/keyEquivalents.js +9 -11
  467. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +23 -23
  468. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +15 -17
  469. data/lib/frameworks/sproutcore/frameworks/desktop/tests/{mixins → views/collection}/collection_fast_path.js +18 -12
  470. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +46 -53
  471. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +101 -47
  472. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +26 -26
  473. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +89 -69
  474. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +27 -25
  475. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +32 -35
  476. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +1 -0
  477. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +6 -11
  478. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +3 -5
  479. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/drag_and_drop.js +103 -8
  480. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +76 -38
  481. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/image_button/ui.js +3 -5
  482. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/drag_and_drop.js +91 -3
  483. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/render.js +2 -17
  484. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +70 -38
  485. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_alternatingrows.js +17 -19
  486. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +10 -13
  487. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +37 -30
  488. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +18 -20
  489. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +115 -28
  490. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +0 -2
  491. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +37 -1
  492. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +194 -182
  493. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +2 -3
  494. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +18 -21
  495. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +5 -6
  496. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/methods.js +5 -4
  497. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/children.js +15 -15
  498. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/dividers.js +0 -0
  499. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +341 -45
  500. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/split_child.js +0 -0
  501. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/split_view/tests → desktop/tests/views/split}/split_thumb.js +0 -0
  502. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +6 -8
  503. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +49 -52
  504. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +23 -6
  505. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +2 -4
  506. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +4 -5
  507. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +47 -38
  508. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +24 -24
  509. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +887 -740
  510. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +2 -2
  511. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +68 -55
  512. data/lib/frameworks/sproutcore/frameworks/desktop/views/image_button.js +3 -3
  513. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +8 -26
  514. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +189 -167
  515. data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +55 -54
  516. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +8 -4
  517. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +145 -146
  518. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +21 -21
  519. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +2 -2
  520. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +66 -66
  521. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +40 -44
  522. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +203 -200
  523. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +11 -12
  524. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +6 -13
  525. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +87 -112
  526. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +192 -179
  527. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +23 -23
  528. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +64 -64
  529. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +56 -56
  530. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +784 -714
  531. data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +21 -39
  532. data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +45 -41
  533. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +1 -1
  534. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +4 -10
  535. data/lib/frameworks/sproutcore/frameworks/desktop/views/thumb.js +9 -47
  536. data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +40 -16
  537. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -1
  538. data/lib/frameworks/sproutcore/frameworks/desktop/views/workspace.js +62 -50
  539. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +0 -9
  540. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +45 -45
  541. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +16 -16
  542. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +46 -6
  543. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +16 -2
  544. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/desktop_scroller.js +12 -12
  545. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/ui.js +38 -40
  546. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +8 -8
  547. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +20 -20
  548. data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +16 -16
  549. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +26 -14
  550. data/lib/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +43 -43
  551. data/lib/frameworks/sproutcore/frameworks/foundation/debug/test-image.png +0 -0
  552. data/lib/frameworks/sproutcore/frameworks/foundation/delegates/inline_text_field.js +11 -11
  553. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +63 -41
  554. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +1 -1
  555. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +60 -61
  556. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/control.js +72 -72
  557. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +142 -142
  558. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gesturable.js +1 -1
  559. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +1 -1
  560. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +10 -8
  561. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +36 -29
  562. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +4 -4
  563. data/lib/frameworks/sproutcore/frameworks/foundation/protocols/swap_transition_protocol.js +150 -0
  564. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +54 -29
  565. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +23 -18
  566. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +12 -11
  567. data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +21 -20
  568. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-128.png +0 -0
  569. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-256.png +0 -0
  570. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-32.png +0 -0
  571. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-48.png +0 -0
  572. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-512.png +0 -0
  573. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-64.png +0 -0
  574. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +5 -0
  575. data/lib/frameworks/sproutcore/frameworks/foundation/system/app_cache.js +412 -0
  576. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -3
  577. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +11 -5
  578. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +21 -21
  579. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +8 -3
  580. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/selection_support.js +33 -8
  581. data/lib/frameworks/sproutcore/frameworks/foundation/tests/delegates/inline_text_field/inline_text_field.js +2 -1
  582. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_display.js +9 -3
  583. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +5 -4
  584. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +49 -4
  585. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +29 -21
  586. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +3 -5
  587. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/validatable/ui.js +8 -10
  588. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/app_cache_test.js +81 -0
  589. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/image_queue.js +2 -2
  590. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +0 -3
  591. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +40 -1
  592. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/transition_test.js +143 -0
  593. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +5 -7
  594. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +187 -84
  595. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +6 -41
  596. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +51 -7
  597. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +11 -16
  598. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_bounce_transition.js +80 -0
  599. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_smooth_transition.js +39 -0
  600. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/adjust_spring_transition.js +77 -0
  601. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/bounce_transition.js +211 -0
  602. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/fade_transition.js +57 -0
  603. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/pop_transition.js +82 -0
  604. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/scale_transition.js +54 -0
  605. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/slide_transition.js +140 -0
  606. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/spring_transition.js +203 -0
  607. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_dissolve_transition.js +67 -0
  608. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_fade_color_transition.js +81 -0
  609. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_move_in_transition.js +104 -0
  610. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_push_transition.js +181 -0
  611. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_reveal_transition.js +90 -0
  612. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +2 -2
  613. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +483 -95
  614. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +65 -65
  615. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +111 -100
  616. data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +30 -222
  617. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +38 -24
  618. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +74 -62
  619. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-1.8.3-patched.js +9485 -0
  620. data/lib/frameworks/sproutcore/frameworks/media/media_capabilities.js +4 -4
  621. data/lib/frameworks/sproutcore/frameworks/media/render_delegates/media_slider.js +20 -20
  622. data/lib/frameworks/sproutcore/frameworks/media/resources/video.css +18 -17
  623. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +19 -19
  624. data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +10 -11
  625. data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +7 -8
  626. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +24 -24
  627. data/lib/frameworks/sproutcore/frameworks/qunit/test/test.js +2 -2
  628. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +32 -21
  629. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +72 -53
  630. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +164 -156
  631. data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +20 -20
  632. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +145 -140
  633. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/comparable.js +1 -1
  634. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +2 -2
  635. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +393 -370
  636. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +3 -3
  637. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1045 -999
  638. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +41 -36
  639. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +10 -4
  640. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +11 -1
  641. data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +7 -7
  642. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +275 -205
  643. data/lib/frameworks/sproutcore/frameworks/runtime/system/function.js +27 -27
  644. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +229 -193
  645. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +24 -24
  646. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +186 -188
  647. data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +1 -1
  648. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +138 -65
  649. data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +11 -10
  650. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +8 -4
  651. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +4 -0
  652. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +112 -23
  653. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +71 -18
  654. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +97 -57
  655. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +22 -22
  656. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/infinite.js +184 -0
  657. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/observer_set.js +63 -1
  658. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +73 -36
  659. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +100 -25
  660. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +7 -0
  661. data/lib/frameworks/sproutcore/frameworks/statechart/debug/sequence_matcher.js +1 -1
  662. data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +2 -2
  663. data/lib/frameworks/sproutcore/frameworks/statechart/system/history_state.js +32 -32
  664. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +449 -422
  665. data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +19 -19
  666. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +612 -562
  667. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +115 -62
  668. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +145 -64
  669. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/respond_to_event.js +17 -1
  670. data/lib/frameworks/sproutcore/frameworks/table/views/table_head.js +30 -30
  671. data/lib/frameworks/sproutcore/frameworks/table/views/table_row.js +34 -34
  672. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/bind.js +1 -1
  673. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/collection.js +2 -2
  674. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/view.js +3 -5
  675. data/lib/frameworks/sproutcore/frameworks/template_view/tests/panes/template.js +2 -0
  676. data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/core.js +2 -2
  677. data/lib/frameworks/sproutcore/frameworks/template_view/views/bindable_span.js +7 -7
  678. data/lib/frameworks/sproutcore/frameworks/template_view/views/template.js +4 -4
  679. data/lib/frameworks/sproutcore/frameworks/template_view/views/template_collection.js +15 -21
  680. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +4 -4
  681. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +35 -35
  682. data/lib/frameworks/sproutcore/scripts/run_sc_server_master.sh +34 -0
  683. data/lib/frameworks/sproutcore/tests/phantomjs_runner.phantomjs +606 -0
  684. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/PanelPane.opacity +0 -0
  685. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/Pointers.opacity +0 -0
  686. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/active_button@2x.png +0 -0
  687. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/normal_button@2x.png +0 -0
  688. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_active_button@2x.png +0 -0
  689. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_button@2x.png +0 -0
  690. data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/select.css +3 -4
  691. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +18 -0
  692. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.png +0 -0
  693. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel@2x.png +0 -0
  694. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel.png +0 -0
  695. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel@2x.png +0 -0
  696. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.css +34 -14
  697. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers.png +0 -0
  698. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers@2x.png +0 -0
  699. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +5 -4
  700. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +7 -2
  701. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +5 -4
  702. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +6 -3
  703. data/lib/frameworks/sproutcore/themes/ace/resources/toolbar/toolbar.css +7 -5
  704. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +7 -7
  705. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +37 -37
  706. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +12 -12
  707. data/lib/sproutcore/helpers/static_helper.rb +35 -27
  708. data/sproutcore.gemspec +1 -0
  709. metadata +529 -451
  710. data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-logo.png +0 -0
  711. data/lib/frameworks/sproutcore/apps/showcase/views/button_views.js +0 -55
  712. data/lib/frameworks/sproutcore/apps/showcase/views/container_views.js +0 -29
  713. data/lib/frameworks/sproutcore/apps/showcase/views/grid_views.js +0 -28
  714. data/lib/frameworks/sproutcore/apps/showcase/views/image_button_views.js +0 -22
  715. data/lib/frameworks/sproutcore/apps/showcase/views/image_views.js +0 -51
  716. data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +0 -26
  717. data/lib/frameworks/sproutcore/apps/tests/states/ready.js +0 -56
  718. data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +0 -41
  719. data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +0 -48
  720. data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +0 -41
  721. data/lib/frameworks/sproutcore/apps/tests/states/ready_loading.js +0 -44
  722. data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +0 -31
  723. data/lib/frameworks/sproutcore/apps/tests/states/start.js +0 -39
  724. data/lib/frameworks/sproutcore/apps/welcome/tests/controllers/targets.js +0 -15
  725. data/lib/frameworks/sproutcore/frameworks/animation/Buildfile +0 -3
  726. data/lib/frameworks/sproutcore/frameworks/animation/LICENSE +0 -25
  727. data/lib/frameworks/sproutcore/frameworks/animation/README.md +0 -79
  728. data/lib/frameworks/sproutcore/frameworks/animation/core.js +0 -1208
  729. data/lib/frameworks/sproutcore/frameworks/animation/tests/core.js +0 -152
  730. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/parentViewDidChange.js +0 -67
  731. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/prepareContext.js +0 -203
  732. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayerLocation.js +0 -213
  733. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +0 -163
  734. data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +0 -97
  735. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +0 -312
  736. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +0 -961
  737. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split_divider.js +0 -40
  738. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +0 -27
  739. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore-logo.png +0 -0
  740. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/sproutcore.png +0 -0
  741. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +0 -394
  742. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +0 -133
  743. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +0 -18
  744. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +0 -8981
  745. data/lib/frameworks/sproutcore/frameworks/jquery/tests/set_class.js +0 -40
  746. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.js +0 -0
@@ -31,6 +31,9 @@ test("calls renderLayout() on child views on views that need layout if they have
31
31
 
32
32
  view.layoutChildViews();
33
33
  equals(callCount, 2, 'updateLayout should be called on two dirty child views');
34
+
35
+ // Clean up.
36
+ view.destroy();
34
37
  });
35
38
 
36
39
  // .......................................................
@@ -38,7 +41,7 @@ test("calls renderLayout() on child views on views that need layout if they have
38
41
  //
39
42
  module("SC.View#updateLayout");
40
43
 
41
- test("if view has layout, calls renderLayout with context to update element", function() {
44
+ test("if view has layout, calls _executeDoUpdateLayout", function() {
42
45
 
43
46
  // NOTE: renderLayout() is also called when a view's
44
47
  // layer is first created. We use isTesting below to
@@ -46,9 +49,7 @@ test("if view has layout, calls renderLayout with context to update element", fu
46
49
  // are actually doing layout.
47
50
  var callCount = 0, isTesting = NO ;
48
51
  var view = SC.View.create({
49
- renderLayout: function(context) {
50
- if (!isTesting) return ;
51
- equals(context._elem, this.get('layer'), 'should pass context that will edit layer');
52
+ _executeDoUpdateLayout: function() {
52
53
  callCount++;
53
54
  }
54
55
  });
@@ -56,9 +57,14 @@ test("if view has layout, calls renderLayout with context to update element", fu
56
57
  view.createLayer(); // we need a layer
57
58
  ok(view.get('layer'), 'precond - should have a layer');
58
59
 
59
- isTesting= YES ;
60
60
  view.updateLayout();
61
- equals(callCount, 1, 'should call renderLayout()');
61
+ equals(callCount, 0, 'should not call _executeDoUpdateLayout() because the view isn\'t shown');
62
+
63
+ view.updateLayout(true);
64
+ equals(callCount, 1, 'should call _executeDoUpdateLayout() because we force it');
65
+
66
+ // Clean up.
67
+ view.destroy();
62
68
  });
63
69
 
64
70
  test("if view has NO layout, should not call renderLayout", function() {
@@ -80,11 +86,17 @@ test("if view has NO layout, should not call renderLayout", function() {
80
86
  isTesting= YES ;
81
87
  view.updateLayout();
82
88
  equals(callCount, 0, 'should NOT call renderLayout()');
89
+
90
+ // Clean up.
91
+ view.destroy();
83
92
  });
84
93
 
85
94
  test("returns receiver", function() {
86
95
  var view = SC.View.create();
87
96
  equals(view.updateLayout(), view, 'should return receiver');
97
+
98
+ // Clean up.
99
+ view.destroy();
88
100
  });
89
101
 
90
102
  // .......................................................
@@ -108,6 +120,9 @@ test("adds layoutStyle property to passed context", function() {
108
120
 
109
121
  equals(context.styles().width, 50, 'should have width style');
110
122
  equals(context.styles().height, 50, 'should have height style');
123
+
124
+ // Clean up.
125
+ view.destroy();
111
126
  });
112
127
 
113
128
  // .......................................................
@@ -121,7 +136,11 @@ module('SC.View#layoutChildViewsIfNeeded', {
121
136
  layoutChildViews: function() { callCount++; }
122
137
  });
123
138
  },
124
- teardown: function() { view = null; }
139
+ teardown: function() {
140
+ // Clean up.
141
+ view.destroy();
142
+ view = null;
143
+ }
125
144
  });
126
145
 
127
146
  test("calls layoutChildViews() if childViewsNeedLayout and isVisibleInWindow & sets childViewsNeedLayout to NO", function() {
@@ -141,20 +160,6 @@ test("does not call layoutChildViews() if childViewsNeedLayout is NO", function(
141
160
  equals(callCount, 0, 'should NOT call layoutChildViews()');
142
161
  });
143
162
 
144
-
145
- test("does not call layoutChildViews() if isVisibleInWindow is NO unless passed isVisible YES", function() {
146
-
147
- view.childViewsNeedLayout = YES ;
148
- view.isVisibleInWindow = NO ;
149
- view.layoutChildViewsIfNeeded();
150
- equals(callCount, 0, 'should NOT call layoutChildViews()');
151
- equals(view.get('childViewsNeedLayout'), YES, 'should leave childViewsNeedLayout set to YES');
152
-
153
- view.layoutChildViewsIfNeeded(YES);
154
- equals(callCount, 1, 'should call layoutChildViews()');
155
- equals(view.get('childViewsNeedLayout'), NO, 'should set childViewsNeedLayout to NO');
156
- });
157
-
158
163
  test("returns receiver", function() {
159
164
  equals(view.layoutChildViewsIfNeeded(), view, 'should return receiver');
160
165
  });
@@ -4,160 +4,229 @@
4
4
  // License: Licensed under MIT license (see license.js)
5
5
  // ==========================================================================
6
6
 
7
- /*global module test equals context ok same */
7
+ /*global module, test, equals, ok */
8
8
 
9
- module("SC.View#layoutDidChange");
9
+ module("SC.View.prototype.layoutDidChange");
10
10
 
11
- test("notifies layoutStyle & frame change", function() {
11
+ test("notifies layoutStyle & frame change", function () {
12
12
 
13
13
  var view = SC.View.create();
14
- var callCount = 0;
14
+ var layoutStyleCallCount = 0, frameCallCount = 0;
15
+
16
+ view.addObserver('layoutStyle', function () { layoutStyleCallCount++; });
17
+ view.addObserver('frame', function () { frameCallCount++; });
18
+
19
+ SC.run(function () {
20
+ // Manually indicate a layout change.
21
+ view.layoutDidChange();
22
+ });
23
+
24
+ equals(frameCallCount, 1, 'should trigger observers for frame');
25
+ equals(layoutStyleCallCount, 0, 'should not trigger observers for layoutStyle');
15
26
 
16
- view.addObserver('layoutStyle', function() { callCount++; });
17
- view.addObserver('frame', function() { callCount++; });
27
+ // Attach to the document.
28
+ view.createLayer()._doAttach(document.body);
18
29
 
19
- view.layoutDidChange();
20
- equals(callCount,2,'should trigger observers for layoutStyle + frame');
30
+ equals(frameCallCount, 2, 'should trigger observers for frame when attached to the document');
31
+ equals(layoutStyleCallCount, 0, 'should still not trigger observers for layoutStyle');
32
+
33
+ SC.run(function () {
34
+ view.adjust('top', 20);
35
+ });
36
+
37
+ equals(frameCallCount, 3, 'should trigger observers for frame when attached to the document');
38
+ equals(layoutStyleCallCount, 1, 'should trigger observers for layoutStyle');
39
+
40
+ // Clean up.
41
+ view.destroy();
21
42
  });
22
43
 
23
- test("invokes layoutDidChangeFor() on layoutView each time it is called", function() {
44
+ test("invokes layoutDidChangeFor() on layoutView each time it is called", function () {
24
45
 
25
- var callCount = 0 ;
46
+ var callCount = 0;
26
47
  var layoutView = SC.View.create({
27
- layoutDidChangeFor: function(changedView){
48
+ layoutDidChangeFor: function (changedView) {
28
49
  equals(this.get('childViewsNeedLayout'), YES, 'should set childViewsNeedLayout to YES before calling layoutDidChangeFor()');
29
50
 
30
51
  equals(view, changedView, 'should pass view');
31
52
  callCount++;
53
+
54
+ // Original
55
+ var set = this._needLayoutViews;
56
+ if (!set) set = this._needLayoutViews = SC.CoreSet.create();
57
+ set.add(changedView);
32
58
  }
33
59
  });
34
60
 
35
61
  var view = SC.View.create({ layoutView: layoutView });
36
62
 
37
- view.layoutDidChange();
38
- view.layoutDidChange();
39
- view.layoutDidChange();
63
+ SC.run(function () {
64
+ view.layoutDidChange();
65
+ view.layoutDidChange();
66
+ view.layoutDidChange();
67
+ });
40
68
 
41
69
  equals(callCount, 3, 'should call layoutView.layoutDidChangeFor each time');
70
+
71
+ // Clean up.
72
+ layoutView.destroy();
73
+ view.destroy();
42
74
  });
43
75
 
44
- test("invokes layoutChildViewsIfNeeded() on layoutView once per runloop", function() {
76
+ test("invokes layoutChildViewsIfNeeded() on layoutView once per runloop", function () {
45
77
 
46
- var callCount = 0 ;
78
+ var callCount = 0;
47
79
  var layoutView = SC.View.create({
48
- layoutChildViewsIfNeeded: function(){
80
+ layoutChildViewsIfNeeded: function () {
49
81
  callCount++;
50
82
  }
51
83
  });
52
84
 
53
85
  var view = SC.View.create({ layoutView: layoutView });
54
86
 
55
- SC.RunLoop.begin();
56
- view.layoutDidChange();
57
- view.layoutDidChange();
58
- view.layoutDidChange();
59
- SC.RunLoop.end();
87
+ SC.run(function () {
88
+ view.layoutDidChange();
89
+ view.layoutDidChange();
90
+ view.layoutDidChange();
91
+ });
60
92
 
61
93
  equals(callCount, 1, 'should call layoutView.layoutChildViewsIfNeeded one time');
94
+
95
+ // Clean up.
96
+ layoutView.destroy();
97
+ view.destroy();
62
98
  });
63
99
 
64
100
 
65
- test("should not invoke layoutChildViewsIfNeeded() if layoutDidChangeFor() sets childViewsNeedLayout to NO each time", function() {
101
+ test("should not invoke layoutChildViewsIfNeeded() if layoutDidChangeFor() sets childViewsNeedLayout to NO each time", function () {
66
102
 
67
- var callCount = 0 ;
103
+ var callCount = 0;
68
104
  var layoutView = SC.View.create({
69
- layoutDidChangeFor: function() {
105
+ layoutDidChangeFor: function () {
70
106
  this.set('childViewsNeedLayout', NO);
71
107
  },
72
108
 
73
- layoutChildViewsIfNeeded: function(){
109
+ layoutChildViewsIfNeeded: function () {
74
110
  callCount++;
75
111
  }
76
112
  });
77
113
 
78
114
  var view = SC.View.create({ layoutView: layoutView });
79
115
 
80
- SC.RunLoop.begin();
81
- view.layoutDidChange();
82
- view.layoutDidChange();
83
- view.layoutDidChange();
84
- SC.RunLoop.end();
116
+ SC.run(function () {
117
+ view.layoutDidChange();
118
+ view.layoutDidChange();
119
+ view.layoutDidChange();
120
+ });
85
121
 
86
122
  equals(callCount, 0, 'should not call layoutView.layoutChildViewsIfNeeded');
123
+
124
+ // Clean up.
125
+ layoutView.destroy();
126
+ view.destroy();
87
127
  });
88
128
 
89
- test('returns receiver', function() {
129
+ test('returns receiver', function () {
90
130
  var view = SC.View.create();
91
- equals(view.layoutDidChange(), view, 'should return receiver');
131
+
132
+ SC.run(function () {
133
+ equals(view.layoutDidChange(), view, 'should return receiver');
134
+ });
135
+
136
+ // Clean up.
137
+ view.destroy();
92
138
  });
93
139
 
94
- test("is invoked whenever layout property changes", function() {
140
+ test("is invoked whenever layout property changes", function () {
95
141
 
96
- var callCount = 0 ;
142
+ var callCount = 0;
97
143
  var layoutView = SC.View.create({
98
- layoutDidChangeFor: function(changedView){
144
+ layoutDidChangeFor: function (changedView) {
99
145
  callCount++;
146
+
147
+ // Original
148
+ var set = this._needLayoutViews;
149
+ if (!set) set = this._needLayoutViews = SC.CoreSet.create();
150
+ set.add(changedView);
100
151
  }
101
152
  });
102
153
 
103
154
  var view = SC.View.create({ layoutView: layoutView });
104
155
 
105
- view.set('layout', { top: 0, left: 10 });
156
+ SC.run(function () {
157
+ view.set('layout', { top: 0, left: 10 });
158
+ });
106
159
  equals(callCount, 1, 'should call layoutDidChangeFor when setting layout of child view');
107
160
 
108
-
161
+ // Clean up.
162
+ layoutView.destroy();
163
+ view.destroy();
109
164
  });
110
165
 
111
- test("is invoked on parentView if no layoutView whenever layout property changes", function() {
166
+ test("is invoked on parentView if no layoutView whenever layout property changes", function () {
112
167
 
113
- var callCount = 0 ;
168
+ var callCount = 0;
114
169
  var parentView = SC.View.create({
115
- layoutDidChangeFor: function(changedView){
170
+ layoutDidChangeFor: function (changedView) {
116
171
  callCount++;
172
+
173
+ // Original
174
+ var set = this._needLayoutViews;
175
+ if (!set) set = this._needLayoutViews = SC.CoreSet.create();
176
+ set.add(changedView);
117
177
  }
118
178
  });
119
179
 
120
180
  var view = SC.View.create({});
121
181
  view.set('parentView', parentView);
122
182
 
123
- view.set('layout', { top: 0, left: 10 });
183
+ SC.run(function () {
184
+ view.set('layout', { top: 0, left: 10 });
185
+ });
124
186
  equals(callCount, 1, 'should call layoutDidChangeFor when setting layout of child view');
125
187
 
188
+ // Clean up.
189
+ parentView.destroy();
190
+ view.destroy();
126
191
  });
127
192
 
128
- test("sets rotateX when rotate is set", function() {
193
+ test("sets rotateX when rotate is set", function () {
129
194
  var view = SC.View.create({});
130
- view.set('layout', { rotate: 45 });
195
+
196
+ SC.run(function () {
197
+ view.set('layout', { rotate: 45 });
198
+ });
131
199
 
132
200
  equals(view.get('layout').rotateX, 45, "should set rotateX");
201
+
202
+ // Clean up.
203
+ view.destroy();
133
204
  });
134
205
 
135
- test("sets rotate when rotateX is set", function(){
206
+ test("rotateX overrides rotate", function () {
136
207
  var view = SC.View.create({});
137
- view.set('layout', { rotateX: 45 });
138
- equals(view.get('layout').rotate, 45, "should set rotate");
139
208
 
140
- view.set('layout', { rotateX: 0 });
141
- equals(view.get('layout').rotate, 0, "should also work with 0");
142
- });
209
+ SC.run(function () {
210
+ view.set('layout', { rotate: 45, rotateX: 90 });
211
+ });
143
212
 
144
- test("rotateX overrides rotate", function(){
145
- var view = SC.View.create({});
146
- view.set('layout', { rotate: 45, rotateX: 90 });
147
- equals(view.get('layout').rotate, 90, "should set rotate to rotateX");
213
+ equals(view.get('layout').rotate, undefined, "should clear rotate for rotateX");
214
+
215
+ // Clean up.
216
+ view.destroy();
148
217
  });
149
218
 
150
219
  // The default implementation for viewDidResize calls internal layout-related
151
220
  // methods on child views. This test confirms that child views that do not
152
221
  // support layout do not cause this process to explode.
153
- test("Calling viewDidResize on a view notifies its child views", function() {
222
+ test("Calling viewDidResize on a view notifies its child views", function () {
154
223
  var regularViewCounter = 0, coreViewCounter = 0;
155
224
 
156
225
  var view = SC.View.create({
157
226
  childViews: ['regular', 'core'],
158
227
 
159
228
  regular: SC.View.create({
160
- viewDidResize: function() {
229
+ viewDidResize: function () {
161
230
  regularViewCounter++;
162
231
  // Make sure we call the default implementation to
163
232
  // ensure potential blow-uppy behavior is invoked
@@ -166,7 +235,7 @@ test("Calling viewDidResize on a view notifies its child views", function() {
166
235
  }),
167
236
 
168
237
  core: SC.CoreView.create({
169
- viewDidResize: function() {
238
+ viewDidResize: function () {
170
239
  coreViewCounter++;
171
240
  sc_super();
172
241
  }
@@ -177,4 +246,7 @@ test("Calling viewDidResize on a view notifies its child views", function() {
177
246
 
178
247
  equals(regularViewCounter, 1, "regular view's viewDidResize gets called");
179
248
  equals(coreViewCounter, 1, "core view's viewDidResize gets called");
249
+
250
+ // Clean up.
251
+ view.destroy();
180
252
  });
@@ -8,17 +8,17 @@
8
8
  // View Layout Unit Tests
9
9
  // ========================================================================
10
10
 
11
- /*globals module test ok same equals */
11
+ /*global module test ok same equals */
12
12
 
13
13
 
14
14
  /* These unit tests verify: layout(), frame(), styleLayout() and clippingFrame(). */
15
- (function() {
15
+ (function () {
16
16
  var parent, child, frameKeys, layoutKeys;
17
17
 
18
18
  frameKeys = 'x y width height'.w();
19
- layoutKeys = ['width','height','top','bottom','marginLeft','marginTop','left','right','zIndex',
20
- 'minWidth','maxWidth','minHeight','maxHeight','borderTopWidth','borderBottomWidth',
21
- 'borderLeftWidth','borderRightWidth'];
19
+ layoutKeys = ['width', 'height', 'top', 'bottom', 'marginLeft', 'marginTop', 'left', 'right', 'zIndex',
20
+ 'minWidth', 'maxWidth', 'minHeight', 'maxHeight', 'borderTopWidth', 'borderBottomWidth',
21
+ 'borderLeftWidth', 'borderRightWidth'];
22
22
 
23
23
  /*
24
24
  helper method to test the layout of a view. Applies the passed layout to a
@@ -40,9 +40,9 @@
40
40
  if (SC.platform.supportsCSSTransforms) { layoutKeys.push('transform'); }
41
41
 
42
42
  // make sure we add null properties and convert numbers to 'XXpx' to style layout.
43
- layoutKeys.forEach(function(key) {
44
- if (no_s[key]===undefined) { no_s[key] = null; }
45
- if (with_s[key]===undefined) { with_s[key] = null; }
43
+ layoutKeys.forEach(function (key) {
44
+ if (no_s[key] === undefined) { no_s[key] = null; }
45
+ if (with_s[key] === undefined) { with_s[key] = null; }
46
46
 
47
47
 
48
48
  if (typeof no_s[key] === 'number') { no_s[key] = no_s[key].toString() + 'px'; }
@@ -50,21 +50,23 @@
50
50
  });
51
51
 
52
52
  // set layout
53
- child.set('layout', layout) ;
53
+ SC.run(function () {
54
+ child.set('layout', layout);
55
+ });
54
56
 
55
57
  var layoutStyle = child.get('layoutStyle'),
56
58
  frame = child.get('frame'),
57
59
  testKey;
58
60
 
59
61
  // test
60
- layoutKeys.forEach(function(key) {
61
- testKey = key === 'transform' ? SC.platform.domCSSPrefix+'Transform' : key;
62
+ layoutKeys.forEach(function (key) {
63
+ testKey = key === 'transform' ? SC.browser.domPrefix + 'Transform' : key;
62
64
  equals(layoutStyle[testKey], no_s[key], "STYLE NO PARENT %@".fmt(key));
63
65
  });
64
66
 
65
67
  if (no_f !== undefined) {
66
68
  if (frame && no_f) {
67
- frameKeys.forEach(function(key){
69
+ frameKeys.forEach(function (key) {
68
70
  equals(frame[key], no_f[key], "FRAME NO PARENT %@".fmt(key));
69
71
  });
70
72
  } else {
@@ -82,14 +84,14 @@
82
84
  frame = child.get('frame');
83
85
 
84
86
  // test again
85
- layoutKeys.forEach(function(key) {
86
- testKey = key === 'transform' ? SC.platform.domCSSPrefix+'Transform' : key;
87
+ layoutKeys.forEach(function (key) {
88
+ testKey = key === 'transform' ? SC.browser.domPrefix + 'Transform' : key;
87
89
  equals(layoutStyle[testKey], with_s[key], "STYLE W/ PARENT %@".fmt(key));
88
90
  });
89
91
 
90
92
  if (with_f !== undefined) {
91
93
  if (frame && with_f) {
92
- frameKeys.forEach(function(key){
94
+ frameKeys.forEach(function (key) {
93
95
  equals(frame[key], with_f[key], "FRAME W/ PARENT %@".fmt(key));
94
96
  });
95
97
  } else {
@@ -107,7 +109,7 @@
107
109
  tests.
108
110
  */
109
111
  var commonSetup = {
110
- setup: function() {
112
+ setup: function () {
111
113
 
112
114
  // create basic parent view
113
115
  parent = SC.View.create({
@@ -118,22 +120,27 @@
118
120
  child = SC.View.create();
119
121
  },
120
122
 
121
- teardown: function() {
122
- parent = child = null ;
123
+ teardown: function () {
124
+ child.destroy();
125
+ parent.destroy();
126
+ parent = child = null;
123
127
  }
124
128
  };
125
129
 
126
- module("NOTIFICATIONS", commonSetup) ;
130
+ module("NOTIFICATIONS", commonSetup);
127
131
 
128
- test("Setting layout will notify frame observers", function() {
132
+ test("Setting layout will notify frame observers", function () {
129
133
  var didNotify = NO, didNotifyStyle = NO;
130
- child.addObserver('frame', this, function() { didNotify = YES; }) ;
131
- child.addObserver('layoutStyle', this, function() { didNotifyStyle = YES; });
134
+ child.addObserver('frame', this, function () { didNotify = YES; });
135
+ child.addObserver('layoutStyle', this, function () { didNotifyStyle = YES; });
136
+
137
+ SC.run(function () {
138
+ child.set('layout', { left: 0, top: 10, bottom: 20, right: 50 });
139
+ });
132
140
 
133
- child.set('layout', { left: 0, top: 10, bottom: 20, right: 50 }) ;
134
141
  ok(didNotify, "didNotify");
135
142
  ok(didNotifyStyle, 'didNotifyStyle');
136
- }) ;
143
+ });
137
144
 
138
145
  // ..........................................................
139
146
  // TEST FRAME/STYLEFRAME WITH BASIC LAYOUT VARIATIONS
@@ -143,50 +150,53 @@
143
150
 
144
151
  module('BASIC LAYOUT VARIATIONS', commonSetup);
145
152
 
146
- test("layout {top, left, width, height}", function() {
153
+ test("layout {top, left, width, height}", function () {
147
154
 
148
155
  var layout = { top: 10, left: 10, width: 50, height: 50 };
149
- var s = { top: 10, left: 10, width: 50, height: 50 } ;
150
- var no_f = { x: 10, y: 10, width: 50, height: 50 } ;
151
- var with_f = { x: 10, y: 10, width: 50, height: 50 } ;
156
+ var s = { top: 10, left: 10, width: 50, height: 50 };
157
+ var no_f = { x: 10, y: 10, width: 50, height: 50 };
158
+ var with_f = { x: 10, y: 10, width: 50, height: 50 };
152
159
 
153
- performLayoutTest(layout, no_f, s, with_f, s, YES) ;
154
- }) ;
160
+ performLayoutTest(layout, no_f, s, with_f, s, YES);
161
+ });
155
162
 
156
- test("layout {top, left, bottom, right}", function() {
163
+ test("layout {top, left, bottom, right}", function () {
157
164
 
158
165
  var layout = { top: 10, left: 10, bottom: 10, right: 10 };
159
- var no_f = { x: 10, y: 10, width: 0, height: 0 } ;
160
- var with_f = { x: 10, y: 10, width: 180, height: 180 } ;
161
- var s = { top: 10, left: 10, bottom: 10, right: 10 } ;
166
+ var no_f = { x: 10, y: 10, width: 0, height: 0 };
167
+ var with_f = { x: 10, y: 10, width: 180, height: 180 };
168
+ var s = { top: 10, left: 10, bottom: 10, right: 10 };
162
169
 
163
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
164
- }) ;
170
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
171
+ });
165
172
 
166
- test("layout {bottom, right, width, height}", function() {
173
+ test("layout {bottom, right, width, height}", function () {
167
174
 
168
175
  var layout = { bottom: 10, right: 10, width: 50, height: 50 };
169
- var no_f = { x: 0, y: 0, width: 50, height: 50 } ;
170
- var with_f = { x: 140, y: 140, width: 50, height: 50 } ;
171
- var s = { bottom: 10, right: 10, width: 50, height: 50 } ;
176
+ var no_f = { x: 0, y: 0, width: 50, height: 50 };
177
+ var with_f = { x: 140, y: 140, width: 50, height: 50 };
178
+ var s = { bottom: 10, right: 10, width: 50, height: 50 };
172
179
 
173
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
174
- }) ;
180
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
181
+ });
175
182
 
176
- test("layout {centerX, centerY, width, height}", function() {
183
+ test("layout {centerX, centerY, width, height}", function () {
177
184
 
178
185
  var layout = { centerX: 10, centerY: 10, width: 60, height: 60 };
179
- var no_f = { x: 10, y: 10, width: 60, height: 60 } ;
180
- var with_f = { x: 80, y: 80, width: 60, height: 60 } ;
181
- var s = { marginLeft: -20, marginTop: -20, width: 60, height: 60, top: "50%", left: "50%" } ;
186
+ var no_f = { x: 10, y: 10, width: 60, height: 60 };
187
+ var with_f = { x: 80, y: 80, width: 60, height: 60 };
188
+ var s = { marginLeft: -20, marginTop: -20, width: 60, height: 60, top: "50%", left: "50%" };
182
189
 
183
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
184
- }) ;
190
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
191
+ });
192
+
193
+ test("layout {top, left, width: auto, height: auto}", function () {
194
+ // Reset.
195
+ child.destroy();
185
196
 
186
- test("layout {top, left, width: auto, height: auto}", function() {
187
197
  child = SC.View.create({
188
198
  useStaticLayout: YES,
189
- render: function(context) {
199
+ render: function (context) {
190
200
  // needed for auto
191
201
  context.push('<div style="padding: 10px"></div>');
192
202
  }
@@ -200,12 +210,13 @@
200
210
  var layout = { top: 0, left: 0, width: 'auto', height: 'auto' };
201
211
  var no_f = null;
202
212
  // See test below
203
- var with_f = undefined; // { x: 0, y: 0, width: 200, height: 200 };
213
+ var with_f; // { x: 0, y: 0, width: 200, height: 200 };
204
214
  var s = { top: 0, left: 0, width: 'auto', height: 'auto' };
205
215
 
206
216
  performLayoutTest(layout, no_f, s, with_f, s, NO);
207
217
 
208
218
  layer.parentNode.removeChild(layer);
219
+ child.destroy();
209
220
  });
210
221
 
211
222
  // See comment in above test
@@ -221,50 +232,81 @@
221
232
 
222
233
  module('BASIC LAYOUT VARIATIONS PERCENTAGE', commonSetup);
223
234
 
224
- test("layout {top, left, width, height}", function() {
235
+ test("layout {top, left, width, height}", function () {
225
236
 
226
237
  var layout = { top: 0.1, left: 0.1, width: 0.5, height: 0.5 };
227
- var s = { top: '10%', left: '10%', width: '50%', height: '50%' } ;
228
- var no_f = { x: 0, y: 0, width: 0, height: 0 } ;
229
- var with_f = { x: 20, y: 20, width: 100, height: 100 } ;
238
+ var s = { top: '10%', left: '10%', width: '50%', height: '50%' };
239
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
240
+ var with_f = { x: 20, y: 20, width: 100, height: 100 };
230
241
 
231
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
232
- }) ;
242
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
243
+ });
233
244
 
234
- test("layout {top, left, bottom, right}", function() {
245
+ test("layout {top, left, bottom, right}", function () {
235
246
 
236
247
  var layout = { top: 0.1, left: 0.1, bottom: 0.1, right: 0.1 };
237
248
  var no_f = { x: 0, y: 0, width: 0, height: 0 };
238
249
  var with_f = { x: 20, y: 20, width: 160, height: 160 };
239
- var s = { top: '10%', left: '10%', bottom: '10%', right: '10%' } ;
250
+ var s = { top: '10%', left: '10%', bottom: '10%', right: '10%' };
240
251
 
241
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
242
- }) ;
252
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
253
+ });
243
254
 
244
- test("layout {bottom, right, width, height}", function() {
255
+ test("layout {bottom, right, width, height}", function () {
245
256
 
246
257
  var layout = { bottom: 0.1, right: 0.1, width: 0.5, height: 0.5 };
247
258
  var no_f = { x: 0, y: 0, width: 0, height: 0 };
248
259
  var with_f = { x: 80, y: 80, width: 100, height: 100 };
249
- var s = { bottom: '10%', right: '10%', width: '50%', height: '50%' } ;
260
+ var s = { bottom: '10%', right: '10%', width: '50%', height: '50%' };
250
261
 
251
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
252
- }) ;
262
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
263
+ });
253
264
 
254
- test("layout {centerX, centerY, width, height}", function() {
265
+ test("layout {centerX, centerY, width, height}", function () {
255
266
 
256
267
  var layout = { centerX: 0.1, centerY: 0.1, width: 0.6, height: 0.6 };
257
- var no_f = { x: 0, y: 0, width: 0, height: 0 } ;
258
- var with_f = { x: 60, y: 60, width: 120, height: 120 } ;
259
- var s = { marginLeft: '-20%', marginTop: '-20%', width: '60%', height: '60%', top: "50%", left: "50%" } ;
268
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
269
+ var with_f = { x: 60, y: 60, width: 120, height: 120 };
270
+ var s = { marginLeft: '-20%', marginTop: '-20%', width: '60%', height: '60%', top: "50%", left: "50%" };
271
+
272
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
273
+ });
274
+
275
+ // Previously, you couldn't set a % width or height with a centerX/centerY of 0.
276
+ // But there's no reason that a % sized view can't be centered at 0 and this
277
+ // test shows that.
278
+ test("layout {centerX 0, centerY 0, width %, height %}", function () {
279
+ var layout = { centerX: 0, centerY: 0, width: 0.6, height: 0.6 };
280
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
281
+
282
+ // The parent frame is 200 x 200.
283
+ var size = 200 * 0.6;
284
+ var with_f = { x: (200 - size) * 0.5, y: (200 - size) * 0.5, width: size, height: size };
285
+ var s = { marginLeft: '-30%', marginTop: '-30%', width: '60%', height: '60%', top: "50%", left: "50%" };
260
286
 
261
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
262
- }) ;
287
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
288
+ });
289
+
290
+ // Edge case: although rare, centered views should be able to have metrics of zero.
291
+ test("layout {centerX 0, centerY 0, width 0, height 0}", function () {
292
+ var layout = { centerX: 0, centerY: 0, width: 0, height: 0 };
293
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
294
+
295
+ // The parent frame is 200 x 200.
296
+ var size = 0;
297
+ var with_f = { x: (200 - size) * 0.5, y: (200 - size) * 0.5, width: size, height: size };
298
+ var s = { marginLeft: '0px', marginTop: '0px', width: '0px', height: '0px', top: '50%', left: '50%' };
299
+
300
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
301
+ });
302
+
303
+ test("layout {top, left, width: auto, height: auto}", function () {
304
+ // Reset.
305
+ child.destroy();
263
306
 
264
- test("layout {top, left, width: auto, height: auto}", function() {
265
307
  child = SC.View.create({
266
308
  useStaticLayout: YES,
267
- render: function(context) {
309
+ render: function (context) {
268
310
  // needed for auto
269
311
  context.push('<div style="padding: 10px"></div>');
270
312
  }
@@ -278,12 +320,13 @@
278
320
  var layout = { top: 0.1, left: 0.1, width: 'auto', height: 'auto' };
279
321
  var no_f = null;
280
322
  // See pending test below
281
- var with_f = undefined; // { x: 20, y: 20, width: 180, height: 180 };
323
+ var with_f; // { x: 20, y: 20, width: 180, height: 180 };
282
324
  var s = { top: '10%', left: '10%', width: 'auto', height: 'auto' };
283
325
 
284
326
  performLayoutTest(layout, no_f, s, with_f, s, NO);
285
327
 
286
328
  layer.parentNode.removeChild(layer);
329
+ child.destroy();
287
330
  });
288
331
 
289
332
  // See commented out lines in test above
@@ -298,65 +341,92 @@
298
341
  // parent.
299
342
 
300
343
  module('CSS TRANSFORM LAYOUT VARIATIONS', {
301
- setup: function(){
344
+ setup: function () {
302
345
  commonSetup.setup();
303
346
  child.createLayer();
304
347
  document.body.appendChild(child.get('layer'));
305
348
  },
306
349
 
307
- teardown: function(){
350
+ teardown: function () {
351
+ document.body.removeChild(child.get('layer'));
308
352
  child.destroyLayer();
309
353
  commonSetup.teardown();
310
354
  }
311
355
  });
312
356
 
313
- function transformFor(view){
314
- return view.get('layer').style[SC.platform.domCSSPrefix+'Transform'];
357
+ function transformFor(view) {
358
+ return view.get('layer').style[SC.browser.domPrefix + 'Transform'];
315
359
  }
316
360
 
317
- test("layout {rotateX}", function() {
318
- child.adjust('rotateX', 45).updateLayout();
361
+ test("layout {rotateX}", function () {
362
+ SC.run(function () {
363
+ child.adjust('rotateX', 45).updateLayout(true);
364
+ });
365
+
319
366
  equals(transformFor(child), 'rotateX(45deg)', 'transform attribute should be "rotateX(45deg)"');
320
367
  });
321
368
 
322
- test("layout {rotateY}", function() {
323
- child.adjust('rotateY', 45).updateLayout();
369
+ test("layout {rotateY}", function () {
370
+ SC.run(function () {
371
+ child.adjust('rotateY', 45).updateLayout(true);
372
+ });
324
373
  equals(transformFor(child), 'rotateY(45deg)', 'transform attribute should be "rotateY(45deg)"');
325
374
  });
326
375
 
327
- test("layout {rotateZ}", function() {
328
- child.adjust('rotateZ', 45).updateLayout();
376
+ test("layout {rotateZ}", function () {
377
+ SC.run(function () {
378
+ child.adjust('rotateZ', 45).updateLayout(true);
379
+ });
380
+
329
381
  equals(transformFor(child), 'rotateZ(45deg)', 'transform attribute should be "rotateZ(45deg)"');
330
382
  });
331
383
 
332
- test("layout {rotate}", function() {
333
- child.adjust('rotate', 45).updateLayout();
384
+ test("layout {rotate}", function () {
385
+ SC.run(function () {
386
+ child.adjust('rotate', 45).updateLayout(true);
387
+ });
388
+
334
389
  equals(transformFor(child), 'rotateX(45deg)', 'transform attribute should be "rotateX(45deg)"');
335
390
  });
336
391
 
337
- test("layout {rotateX} with units", function() {
338
- child.adjust('rotateX', '1rad').updateLayout();
392
+ test("layout {rotateX} with units", function () {
393
+ SC.run(function () {
394
+ child.adjust('rotateX', '1rad').updateLayout(true);
395
+ });
396
+
339
397
  equals(transformFor(child), 'rotateX(1rad)', 'transform attribute should be "rotateX(1rad)"');
340
398
  });
341
399
 
342
- test("layout {scale}", function() {
343
- child.adjust('scale', 2).updateLayout();
400
+ test("layout {scale}", function () {
401
+ SC.run(function () {
402
+ child.adjust('scale', 2).updateLayout(true);
403
+ });
404
+
344
405
  equals(transformFor(child), 'scale(2)', 'transform attribute should be "scale(2)"');
345
406
  });
346
407
 
347
- test("layout {scale} with multiple", function() {
348
- child.adjust('scale', [2, 3]).updateLayout();
408
+ test("layout {scale} with multiple", function () {
409
+ SC.run(function () {
410
+ child.adjust('scale', [2, 3]).updateLayout(true);
411
+ });
412
+
349
413
  equals(transformFor(child), 'scale(2, 3)', 'transform attribute should be "scale(2, 3)"');
350
414
  });
351
415
 
352
- test("layout {rotateX, scale}", function() {
353
- child.adjust({ rotateX: 45, scale: 2 }).updateLayout();
416
+ test("layout {rotateX, scale}", function () {
417
+ SC.run(function () {
418
+ child.adjust({ rotateX: 45, scale: 2 }).updateLayout(true);
419
+ });
420
+
354
421
  equals(transformFor(child), 'rotateX(45deg) scale(2)', 'transform attribute should be "rotateX(45deg) scale(2)"');
355
422
  });
356
423
 
357
- test("layout {rotateX} update", function() {
358
- child.adjust('rotateX', 45).updateLayout();
359
- child.adjust('rotateX', 90).updateLayout();
424
+ test("layout {rotateX} update", function () {
425
+ SC.run(function () {
426
+ child.adjust('rotateX', 45).updateLayout(true);
427
+ child.adjust('rotateX', 90).updateLayout(true);
428
+ });
429
+
360
430
  equals(transformFor(child), 'rotateX(90deg)', 'transform attribute should be "rotateX(90deg)"');
361
431
  });
362
432
 
@@ -370,40 +440,43 @@
370
440
  // parent.
371
441
 
372
442
  module('ACCELERATED LAYOUT VARIATIONS', {
373
- setup: function(){
443
+ setup: function () {
374
444
  commonSetup.setup();
375
- child.wantsAcceleratedLayer = YES;
445
+ child.set('wantsAcceleratedLayer', YES);
376
446
  },
377
447
 
378
448
  teardown: commonSetup.teardown
379
449
  });
380
450
 
381
- test("layout {top, left, width, height}", function() {
451
+ test("layout {top, left, width, height}", function () {
382
452
  var layout = { top: 10, left: 10, width: 50, height: 50 };
383
453
  var expectedTransform = 'translateX(10px) translateY(10px)';
384
454
  if (SC.platform.supportsCSS3DTransforms) expectedTransform += ' translateZ(0px)';
385
- var s = { top: 0, left: 0, width: 50, height: 50, transform: expectedTransform } ;
386
- var no_f = { x: 10, y: 10, width: 50, height: 50 } ;
387
- var with_f = { x: 10, y: 10, width: 50, height: 50} ;
455
+ var s = { top: 0, left: 0, width: 50, height: 50, transform: expectedTransform };
456
+ var no_f = { x: 10, y: 10, width: 50, height: 50 };
457
+ var with_f = { x: 10, y: 10, width: 50, height: 50};
388
458
 
389
- performLayoutTest(layout, no_f, s, with_f, s, YES) ;
390
- }) ;
459
+ performLayoutTest(layout, no_f, s, with_f, s, YES);
460
+ });
391
461
 
392
- test("layout {top, left, bottom, right}", function() {
462
+ test("layout {top, left, bottom, right}", function () {
393
463
 
394
464
  var layout = { top: 10, left: 10, bottom: 10, right: 10 };
395
- var no_f = { x: 10, y: 10, width: 0, height: 0 } ;
396
- var with_f = { x: 10, y: 10, width: 180, height: 180 } ;
397
- var s = { top: 10, left: 10, bottom: 10, right: 10, transform: null } ;
465
+ var no_f = { x: 10, y: 10, width: 0, height: 0 };
466
+ var with_f = { x: 10, y: 10, width: 180, height: 180 };
467
+ var s = { top: 10, left: 10, bottom: 10, right: 10, transform: null };
468
+
469
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
470
+ });
398
471
 
399
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
400
- }) ;
472
+ test("layout {top, left, width: auto, height: auto}", function () {
473
+ // Reset.
474
+ child.destroy();
401
475
 
402
- test("layout {top, left, width: auto, height: auto}", function() {
403
476
  child = SC.View.create({
404
477
  wantsAcceleratedLayer: YES,
405
478
  useStaticLayout: YES,
406
- render: function(context) {
479
+ render: function (context) {
407
480
  // needed for auto
408
481
  context.push('<div style="padding: 10px"></div>');
409
482
  }
@@ -417,35 +490,33 @@
417
490
  var layout = { top: 0, left: 0, width: 'auto', height: 'auto' };
418
491
  var no_f = null;
419
492
  // See test below
420
- var with_f = undefined; // { x: 0, y: 0, width: 200, height: 200 };
493
+ var with_f; // { x: 0, y: 0, width: 200, height: 200 };
421
494
  var s = { top: 0, left: 0, width: 'auto', height: 'auto', transform: null };
422
495
 
423
496
  performLayoutTest(layout, no_f, s, with_f, s, NO);
424
497
 
425
498
  layer.parentNode.removeChild(layer);
499
+
500
+ child.destroy();
426
501
  });
427
502
 
428
- // See commented lines in test above
429
- test("layout {top, left, width: auto, height: auto} - frame");
503
+ // See commented lines in test above
504
+ test("layout {top, left, width: auto, height: auto} - frame");
430
505
 
431
- test("layout w/ percentage {top, left, width, height}", function() {
506
+ test("layout w/ percentage {top, left, width, height}", function () {
432
507
 
433
508
  var layout = { top: 0.1, left: 0.1, width: 0.5, height: 0.5 };
434
- var s = { top: '10%', left: '10%', width: '50%', height: '50%', transform: null } ;
509
+ var s = { top: '10%', left: '10%', width: '50%', height: '50%', transform: null };
435
510
  var no_f = { x: 0, y: 0, width: 0, height: 0 };
436
- var with_f = { x: 20, y: 20, width: 100, height: 100 } ;
511
+ var with_f = { x: 20, y: 20, width: 100, height: 100 };
437
512
 
438
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
439
- }) ;
513
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
514
+ });
440
515
 
441
516
  }
442
517
 
443
518
 
444
519
 
445
-
446
-
447
-
448
-
449
520
  // ..........................................................
450
521
  // TEST FRAME/STYLEFRAME WITH INVALID LAYOUT VARIATIONS
451
522
  //
@@ -454,108 +525,110 @@
454
525
 
455
526
  module('INVALID LAYOUT VARIATIONS', commonSetup);
456
527
 
457
- test("layout {top, left} - assume right/bottom=0", function() {
528
+ test("layout {top, left} - assume right/bottom=0", function () {
458
529
 
459
530
  var layout = { top: 0.1, left: 0.1 };
460
- var no_f = { x: 0, y: 0, width: 0, height: 0 } ;
461
- var with_f = { x: 20, y: 20, width: 180, height: 180 } ;
462
- var s = { bottom: 0, right: 0, top: '10%', left: '10%' } ;
531
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
532
+ var with_f = { x: 20, y: 20, width: 180, height: 180 };
533
+ var s = { bottom: 0, right: 0, top: '10%', left: '10%' };
463
534
 
464
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
465
- }) ;
535
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
536
+ });
466
537
 
467
- test("layout {height, width} - assume top/left=0", function() {
538
+ test("layout {height, width} - assume top/left=0", function () {
468
539
 
469
540
  var layout = { height: 0.6, width: 0.6 };
470
- var no_f = { x: 0, y: 0, width: 0, height: 0 } ;
471
- var with_f = { x: 0, y: 0, width: 120, height: 120 } ;
472
- var s = { width: '60%', height: '60%', top: 0, left: 0 } ;
541
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
542
+ var with_f = { x: 0, y: 0, width: 120, height: 120 };
543
+ var s = { width: '60%', height: '60%', top: 0, left: 0 };
473
544
 
474
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
545
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
475
546
 
476
- }) ;
547
+ });
477
548
 
478
- test("layout {right, bottom} - assume top/left=0", function() {
549
+ test("layout {right, bottom} - assume top/left=0", function () {
479
550
 
480
551
  var layout = { right: 0.1, bottom: 0.1 };
481
- var no_f = { x: 0, y: 0, width: 0, height: 0 } ;
482
- var with_f = { x: 0, y: 0, width: 180, height: 180 } ;
483
- var s = { bottom: '10%', right: '10%', top: 0, left: 0 } ;
552
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
553
+ var with_f = { x: 0, y: 0, width: 180, height: 180 };
554
+ var s = { bottom: '10%', right: '10%', top: 0, left: 0 };
484
555
 
485
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
556
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
486
557
 
487
- }) ;
558
+ });
488
559
 
489
- test("layout {right, bottom, maxWidth, maxHeight} - assume top/left=null", function() {
560
+ test("layout {right, bottom, maxWidth, maxHeight} - assume top/left=null", function () {
490
561
 
491
562
  var layout = { right: 0.1, bottom: 0.1, maxWidth: 10, maxHeight: 10 };
492
- var no_f = { x: 0, y: 0, width: 0, height: 0 } ;
493
- var with_f = { x: 0, y: 0, width: 10, height: 10 } ;
494
- var s = { bottom: '10%', right: '10%', top: null, left: null, maxWidth: 10, maxHeight: 10 } ;
563
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
564
+ var with_f = { x: 0, y: 0, width: 10, height: 10 };
565
+ var s = { bottom: '10%', right: '10%', top: null, left: null, maxWidth: 10, maxHeight: 10 };
495
566
 
496
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
567
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
497
568
 
498
- }) ;
569
+ });
499
570
 
500
- test("layout {centerX, centerY} - assume width/height=0", function() {
571
+ test("layout {centerX, centerY} - assume width/height=0", function () {
501
572
 
502
573
  var layout = { centerX: 0.1, centerY: 0.1 };
503
- var no_f = { x: 0, y: 0, width: 0, height: 0 } ;
504
- var with_f = { x: 120, y: 120, width: 0, height: 0 } ;
505
- var s = { width: 0, height: 0, top: "50%", left: "50%", marginTop: "50%", marginLeft: "50%" } ;
506
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
574
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
575
+ var with_f = { x: 120, y: 120, width: 0, height: 0 };
576
+ var s = { width: 0, height: 0, top: "50%", left: "50%", marginTop: "50%", marginLeft: "50%" };
577
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
507
578
 
508
- }) ;
579
+ });
509
580
 
510
- test("layout {top, left, centerX, centerY, height, width} - top/left take presidence", function() {
581
+ test("layout {top, left, centerX, centerY, height, width} - top/left take presidence", function () {
511
582
 
512
583
  var layout = { top: 0.1, left: 0.1, centerX: 0.1, centerY: 0.1, height: 0.6, width: 0.6 };
513
- var no_f = { x: 0, y: 0, width: 0, height: 0 } ;
514
- var with_f = { x: 20, y: 20, width: 120, height: 120 } ;
515
- var s = { width: '60%', height: '60%', top: '10%', left: '10%' } ;
584
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
585
+ var with_f = { x: 20, y: 20, width: 120, height: 120 };
586
+ var s = { width: '60%', height: '60%', top: '10%', left: '10%' };
516
587
 
517
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
588
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
518
589
 
519
- }) ;
590
+ });
520
591
 
521
- test("layout {bottom, right, centerX, centerY, height, width} - bottom/right take presidence", function() {
592
+ test("layout {bottom, right, centerX, centerY, height, width} - bottom/right take presidence", function () {
522
593
 
523
594
  var layout = { bottom: 0.1, right: 0.1, centerX: 0.1, centerY: 0.1, height: 0.6, width: 0.6 };
524
- var no_f = { x: 0, y: 0, width: 0, height: 0 } ;
525
- var with_f = { x: 60, y: 60, width: 120, height: 120 } ;
526
- var s = { width: '60%', height: '60%', bottom: '10%', right: '10%' } ;
595
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
596
+ var with_f = { x: 60, y: 60, width: 120, height: 120 };
597
+ var s = { width: '60%', height: '60%', bottom: '10%', right: '10%' };
527
598
 
528
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
599
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
529
600
 
530
- }) ;
601
+ });
531
602
 
532
- test("layout {top, left, bottom, right, centerX, centerY, height, width} - top/left take presidence", function() {
603
+ test("layout {top, left, bottom, right, centerX, centerY, height, width} - top/left take presidence", function () {
533
604
 
534
605
  var layout = { top: 0.1, left: 0.1, bottom: 0.1, right: 0.1, centerX: 0.1, centerY: 0.1, height: 0.6, width: 0.6 };
535
- var no_f = { x: 0, y: 0, width: 0, height: 0 } ;
536
- var with_f = { x: 20, y: 20, width: 120, height: 120 } ;
537
- var s = { width: '60%', height: '60%', top: '10%', left: '10%' } ;
606
+ var no_f = { x: 0, y: 0, width: 0, height: 0 };
607
+ var with_f = { x: 20, y: 20, width: 120, height: 120 };
608
+ var s = { width: '60%', height: '60%', top: '10%', left: '10%' };
538
609
 
539
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
610
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
540
611
 
541
- }) ;
612
+ });
542
613
 
543
614
 
544
- test("layout {centerX, centerY, width:auto, height:auto}", function() {
545
- var error= 'NONE';
615
+ test("layout {centerX, centerY, width:auto, height:auto}", function () {
616
+ var error = 'NONE';
546
617
  var layout = { centerX: 0.1, centerY: 0.1, width: 'auto', height: 'auto' };
547
618
 
548
- child.set('layout', layout) ;
549
- try{
619
+ SC.run(function () {
620
+ child.set('layout', layout);
621
+ });
622
+
623
+ try {
550
624
  child.layoutStyle();
551
- }catch(e){
552
- error=e;
625
+ } catch (e) {
626
+ error = e;
553
627
  }
554
628
 
555
- equals(SC.T_ERROR, SC.typeOf(error), 'Layout style functions should throw an '+
556
- 'error if centerx/y and width/height are set at the same time ' + error );
557
-
558
- }) ;
629
+ equals(SC.T_ERROR, SC.typeOf(error), 'Layout style functions should throw an ' +
630
+ 'error if centerx/y and width/height are set at the same time ' + error);
631
+ });
559
632
 
560
633
 
561
634
  // ..........................................................
@@ -564,72 +637,75 @@
564
637
 
565
638
  module('BORDER LAYOUT VARIATIONS', commonSetup);
566
639
 
567
- test("layout {top, left, width, height, border}", function() {
640
+ test("layout {top, left, width, height, border}", function () {
568
641
  var layout = { top: 10, left: 10, width: 50, height: 50, border: 2 };
569
642
  var s = { top: 10, left: 10, width: 46, height: 46,
570
- borderTopWidth: 2, borderRightWidth: 2, borderBottomWidth: 2, borderLeftWidth: 2 } ;
571
- var no_f = { x: 12, y: 12, width: 46, height: 46 } ;
572
- var with_f = { x: 12, y: 12, width: 46, height: 46 } ;
643
+ borderTopWidth: 2, borderRightWidth: 2, borderBottomWidth: 2, borderLeftWidth: 2 };
644
+ var no_f = { x: 12, y: 12, width: 46, height: 46 };
645
+ var with_f = { x: 12, y: 12, width: 46, height: 46 };
573
646
 
574
- performLayoutTest(layout, no_f, s, with_f, s, YES) ;
575
- }) ;
647
+ performLayoutTest(layout, no_f, s, with_f, s, YES);
648
+ });
576
649
 
577
- test("layout {top, left, bottom, right, border}", function() {
650
+ test("layout {top, left, bottom, right, border}", function () {
578
651
  var layout = { top: 10, left: 10, bottom: 10, right: 10, border: 2 };
579
- var no_f = { x: 12, y: 12, width: 0, height: 0 } ;
580
- var with_f = { x: 12, y: 12, width: 176, height: 176 } ;
652
+ var no_f = { x: 12, y: 12, width: 0, height: 0 };
653
+ var with_f = { x: 12, y: 12, width: 176, height: 176 };
581
654
  var s = { top: 10, left: 10, bottom: 10, right: 10,
582
- borderTopWidth: 2, borderRightWidth: 2, borderBottomWidth: 2, borderLeftWidth: 2 } ;
655
+ borderTopWidth: 2, borderRightWidth: 2, borderBottomWidth: 2, borderLeftWidth: 2 };
583
656
 
584
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
585
- }) ;
657
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
658
+ });
586
659
 
587
- test("layout {top, left, bottom, right, borderTop, borderLeft, borderRight, borderBottom}", function() {
660
+ test("layout {top, left, bottom, right, borderTop, borderLeft, borderRight, borderBottom}", function () {
588
661
  var layout = { top: 10, left: 10, bottom: 10, right: 10, borderTop: 1, borderRight: 2, borderBottom: 3, borderLeft: 4 };
589
- var no_f = { x: 14, y: 11, width: 0, height: 0 } ;
590
- var with_f = { x: 14, y: 11, width: 174, height: 176 } ;
662
+ var no_f = { x: 14, y: 11, width: 0, height: 0 };
663
+ var with_f = { x: 14, y: 11, width: 174, height: 176 };
591
664
  var s = { top: 10, left: 10, bottom: 10, right: 10,
592
- borderTopWidth: 1, borderRightWidth: 2, borderBottomWidth: 3, borderLeftWidth: 4 } ;
665
+ borderTopWidth: 1, borderRightWidth: 2, borderBottomWidth: 3, borderLeftWidth: 4 };
593
666
 
594
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
595
- }) ;
667
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
668
+ });
596
669
 
597
- test("layout {top, left, bottom, right, border, borderTop, borderLeft}", function() {
670
+ test("layout {top, left, bottom, right, border, borderTop, borderLeft}", function () {
598
671
  var layout = { top: 10, left: 10, bottom: 10, right: 10, border: 5, borderTop: 1, borderRight: 2 };
599
- var no_f = { x: 15, y: 11, width: 0, height: 0 } ;
600
- var with_f = { x: 15, y: 11, width: 173, height: 174 } ;
672
+ var no_f = { x: 15, y: 11, width: 0, height: 0 };
673
+ var with_f = { x: 15, y: 11, width: 173, height: 174 };
601
674
  var s = { top: 10, left: 10, bottom: 10, right: 10,
602
- borderTopWidth: 1, borderRightWidth: 2, borderBottomWidth: 5, borderLeftWidth: 5 } ;
675
+ borderTopWidth: 1, borderRightWidth: 2, borderBottomWidth: 5, borderLeftWidth: 5 };
603
676
 
604
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
605
- }) ;
677
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
678
+ });
606
679
 
607
- test("layout {bottom, right, width, height, border}", function() {
680
+ test("layout {bottom, right, width, height, border}", function () {
608
681
 
609
682
  var layout = { bottom: 10, right: 10, width: 50, height: 50, border: 2 };
610
- var no_f = { x: 2, y: 2, width: 46, height: 46 } ;
611
- var with_f = { x: 142, y: 142, width: 46, height: 46 } ;
683
+ var no_f = { x: 2, y: 2, width: 46, height: 46 };
684
+ var with_f = { x: 142, y: 142, width: 46, height: 46 };
612
685
  var s = { bottom: 10, right: 10, width: 46, height: 46,
613
- borderTopWidth: 2, borderRightWidth: 2, borderBottomWidth: 2, borderLeftWidth: 2 } ;
686
+ borderTopWidth: 2, borderRightWidth: 2, borderBottomWidth: 2, borderLeftWidth: 2 };
614
687
 
615
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
616
- }) ;
688
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
689
+ });
617
690
 
618
- test("layout {centerX, centerY, width, height, border}", function() {
691
+ test("layout {centerX, centerY, width, height, border}", function () {
619
692
 
620
693
  var layout = { centerX: 10, centerY: 10, width: 60, height: 60, border: 2 };
621
- var no_f = { x: 12, y: 12, width: 56, height: 56 } ;
622
- var with_f = { x: 82, y: 82, width: 56, height: 56 } ;
623
- var s = { marginLeft: -18, marginTop: -18, width: 56, height: 56, top: "50%", left: "50%",
624
- borderTopWidth: 2, borderRightWidth: 2, borderBottomWidth: 2, borderLeftWidth: 2 } ;
694
+ var no_f = { x: 12, y: 12, width: 56, height: 56 };
695
+ var with_f = { x: 82, y: 82, width: 56, height: 56 };
696
+ var s = { marginLeft: -20, marginTop: -20, width: 56, height: 56, top: "50%", left: "50%",
697
+ borderTopWidth: 2, borderRightWidth: 2, borderBottomWidth: 2, borderLeftWidth: 2 };
625
698
 
626
- performLayoutTest(layout, no_f, s, with_f, s, NO) ;
627
- }) ;
699
+ performLayoutTest(layout, no_f, s, with_f, s, NO);
700
+ });
701
+
702
+ test("layout {top, left, width: auto, height: auto}", function () {
703
+ // Reset.
704
+ child.destroy();
628
705
 
629
- test("layout {top, left, width: auto, height: auto}", function() {
630
706
  child = SC.View.create({
631
707
  useStaticLayout: YES,
632
- render: function(context) {
708
+ render: function (context) {
633
709
  // needed for auto
634
710
  context.push('<div style="padding: 10px"></div>');
635
711
  }
@@ -642,13 +718,15 @@
642
718
 
643
719
  var layout = { top: 0, left: 0, width: 'auto', height: 'auto', border: 2 };
644
720
  var no_f = null;
645
- var with_f = undefined; //{ x: 2, y: 2, width: 196, height: 196 };
721
+ var with_f; //{ x: 2, y: 2, width: 196, height: 196 };
646
722
  var s = { top: 0, left: 0, width: 'auto', height: 'auto',
647
723
  borderTopWidth: 2, borderRightWidth: 2, borderBottomWidth: 2, borderLeftWidth: 2 };
648
724
 
649
725
  performLayoutTest(layout, no_f, s, with_f, s, NO);
650
726
 
651
727
  layer.parentNode.removeChild(layer);
728
+
729
+ child.destroy();
652
730
  });
653
731
 
654
732
 
@@ -660,37 +738,37 @@
660
738
 
661
739
  function verifyFrameResize(layout, before, after) {
662
740
  parent.appendChild(child);
663
- SC.run(function() { child.set('layout', layout); });
741
+ SC.run(function () { child.set('layout', layout); });
664
742
 
665
- same(child.get('frame'), before, "Before: %@ == %@".fmt(SC.inspect(child.get('frame')), SC.inspect(before))) ;
666
- SC.run(function() { parent.adjust('width', 300).adjust('height', 300); });
743
+ same(child.get('frame'), before, "Before: %@ == %@".fmt(SC.inspect(child.get('frame')), SC.inspect(before)));
744
+ SC.run(function () { parent.adjust('width', 300).adjust('height', 300); });
667
745
 
668
746
  same(child.get('frame'), after, "After: %@ == %@".fmt(SC.inspect(child.get('frame')), SC.inspect(after)));
669
747
 
670
748
  }
671
749
 
672
- test("frame does not change with top/left/w/h", function(){
750
+ test("frame does not change with top/left/w/h", function () {
673
751
  var layout = { top: 10, left: 10, width: 60, height: 60 };
674
752
  var before = { x: 10, y: 10, width: 60, height: 60 };
675
753
  var after = { x: 10, y: 10, width: 60, height: 60 };
676
754
  verifyFrameResize(layout, before, after);
677
755
  });
678
756
 
679
- test("frame shifts down with bottom/right/w/h", function(){
757
+ test("frame shifts down with bottom/right/w/h", function () {
680
758
  var layout = { bottom: 10, right: 10, width: 60, height: 60 };
681
759
  var before = { x: 130, y: 130, width: 60, height: 60 };
682
760
  var after = { x: 230, y: 230, width: 60, height: 60 };
683
761
  verifyFrameResize(layout, before, after);
684
762
  });
685
763
 
686
- test("frame size shifts with top/left/bottom/right", function(){
764
+ test("frame size shifts with top/left/bottom/right", function () {
687
765
  var layout = { top: 10, left: 10, bottom: 10, right: 10 };
688
766
  var before = { x: 10, y: 10, width: 180, height: 180 };
689
767
  var after = { x: 10, y: 10, width: 280, height: 280 };
690
768
  verifyFrameResize(layout, before, after);
691
769
  });
692
770
 
693
- test("frame loc shifts with centerX/centerY", function(){
771
+ test("frame loc shifts with centerX/centerY", function () {
694
772
  var layout = { centerX: 10, centerY: 10, width: 60, height: 60 };
695
773
  var before = { x: 80, y: 80, width: 60, height: 60 };
696
774
  var after = { x: 130, y: 130, width: 60, height: 60 };
@@ -699,28 +777,28 @@
699
777
 
700
778
  //with percentage
701
779
 
702
- test("frame does not change with top/left/w/h - percentage", function(){
780
+ test("frame does not change with top/left/w/h - percentage", function () {
703
781
  var layout = { top: 0.1, left: 0.1, width: 0.6, height: 0.6 };
704
782
  var before = { x: 20, width: 120, y: 20, height: 120 };
705
783
  var after = { x: 30, y: 30, width: 180, height: 180 };
706
784
  verifyFrameResize(layout, before, after);
707
785
  });
708
786
 
709
- test("frame shifts down with bottom/right/w/h - percentage", function(){
787
+ test("frame shifts down with bottom/right/w/h - percentage", function () {
710
788
  var layout = { bottom: 0.1, right: 0.1, width: 0.6, height: 0.6 };
711
789
  var before = { x: 60, y: 60, width: 120, height: 120 };
712
790
  var after = { x: 90, y: 90, width: 180, height: 180 };
713
791
  verifyFrameResize(layout, before, after);
714
792
  });
715
793
 
716
- test("frame size shifts with top/left/bottom/right - percentage", function(){
794
+ test("frame size shifts with top/left/bottom/right - percentage", function () {
717
795
  var layout = { top: 0.1, left: 0.1, bottom: 0.1, right: 0.1 };
718
796
  var before = { x: 20, y: 20, width: 160, height: 160 };
719
797
  var after = { x: 30, y: 30, width: 240, height: 240 };
720
798
  verifyFrameResize(layout, before, after);
721
799
  });
722
800
 
723
- test("frame loc shifts with centerX/centerY - percentage", function(){
801
+ test("frame loc shifts with centerX/centerY - percentage", function () {
724
802
  var layout = { centerX: 0, centerY: 0, width: 0.6, height: 0.6 };
725
803
  var before = { x: 40, y: 40, width: 120, height: 120 };
726
804
  var after = { x: 60, y: 60, width: 180, height: 180 };
@@ -732,7 +810,7 @@
732
810
 
733
811
  module('STATIC LAYOUT VARIATIONS', commonSetup);
734
812
 
735
- test("no layout", function() {
813
+ test("no layout", function () {
736
814
 
737
815
  var no_f = null,
738
816
  no_s = {},
@@ -744,7 +822,7 @@
744
822
  performLayoutTest(SC.View.prototype.layout, no_f, no_s, with_f, with_s, NO);
745
823
  });
746
824
 
747
- test("with layout", function() {
825
+ test("with layout", function () {
748
826
 
749
827
  var layout = { top: 10, left: 10, width: 50, height: 50 },
750
828
  no_f = null,
@@ -757,7 +835,7 @@
757
835
  performLayoutTest(layout, no_f, no_s, with_f, with_s, YES);
758
836
  });
759
837
 
760
- // test("frame size shifts with top/left/bottom/right", function(){
838
+ // test("frame size shifts with top/left/bottom/right", function () {
761
839
  // var error=null;
762
840
  // var layout = { top: 10, left: 10, bottom: 10, right: 10 };
763
841
  // parent.appendChild(child);
@@ -766,7 +844,7 @@
766
844
  // parent.adjust('width', 'auto').adjust('height', 'auto');
767
845
  // try{
768
846
  // child.get('frame');
769
- // }catch(e){
847
+ // }catch(e) {
770
848
  // error=e;
771
849
  // }
772
850
  // equals(SC.T_ERROR,SC.typeOf(error),'Layout style functions should throw and '+
@@ -774,4 +852,124 @@
774
852
  //
775
853
  //
776
854
  // });
855
+
856
+ var pane, view;
857
+ module("COMPUTED LAYOUT", {
858
+ setup: function () {
859
+
860
+ SC.run(function () {
861
+ // create basic view
862
+ view = SC.View.create({
863
+ useTopLayout: YES,
864
+
865
+ layout: function () {
866
+ if (this.get('useTopLayout')) {
867
+ return { top: 10, left: 10, width: 100, height: 100 };
868
+ } else {
869
+ return { bottom: 10, right: 10, width: 200, height: 50 };
870
+ }
871
+ }.property('useTopLayout').cacheable()
872
+ });
873
+
874
+ pane = SC.Pane.create({
875
+ layout: { centerX: 0, centerY: 0, width: 400, height: 400 },
876
+ childViews: [view]
877
+ }).append();
878
+ });
879
+ },
880
+
881
+ teardown: function () {
882
+ pane.destroy();
883
+ pane = view = null;
884
+ }
885
+ });
886
+
887
+ /**
888
+ There was a regression while moving to jQuery 1.8 and removing the seemingly
889
+ unuseful buffered jQuery code, where updating the style failed to clear the
890
+ old style from the view's style attribute.
891
+ */
892
+ test("with computed layout", function () {
893
+ var expectedLayoutStyle,
894
+ expectedStyleAttr,
895
+ layoutStyle,
896
+ styleAttr;
897
+
898
+ same(view.get('layout'), { top: 10, left: 10, width: 100, height: 100 }, "Test the value of the computed layout.");
899
+ layoutStyle = view.get('layoutStyle');
900
+ expectedLayoutStyle = { top: "10px", left: "10px", width: "100px", height: "100px" };
901
+ for (var key in layoutStyle) {
902
+ equals(layoutStyle[key], expectedLayoutStyle[key], "Test the value of %@ in the layout style.".fmt(key));
903
+ }
904
+ styleAttr = view.$().attr('style');
905
+ styleAttr = styleAttr.split(/;\s*/).filter(function (o) { return o; });
906
+ expectedStyleAttr = ['left: 10px', 'width: 100px', 'top: 10px', 'height: 100px'];
907
+ for (var i = styleAttr.length - 1; i >= 0; i--) {
908
+ ok(expectedStyleAttr.indexOf(styleAttr[i]) >= 0, "Test the expected style attribute includes `%@` found in the actual style attribute.".fmt(styleAttr[i]));
909
+ }
910
+
911
+ SC.run(function () {
912
+ view.set('useTopLayout', NO);
913
+ });
914
+
915
+ same(view.get('layout'), { bottom: 10, right: 10, width: 200, height: 50 }, "Test the value of the computed layout.");
916
+ layoutStyle = view.get('layoutStyle');
917
+ expectedLayoutStyle = { bottom: "10px", right: "10px", width: "200px", height: "50px" };
918
+ for (var key in layoutStyle) {
919
+ equals(layoutStyle[key], expectedLayoutStyle[key], "Test the value of %@ in the layout style.".fmt(key));
920
+ }
921
+
922
+ styleAttr = view.$().attr('style');
923
+ styleAttr = styleAttr.split(/;\s*/).filter(function (o) { return o; });
924
+ expectedStyleAttr = ['bottom: 10px', 'width: 200px', 'right: 10px', 'height: 50px'];
925
+ for (i = styleAttr.length - 1; i >= 0; i--) {
926
+ ok(expectedStyleAttr.indexOf(styleAttr[i]) >= 0, "Test the expected style attribute includes `%@` found in the actual style attribute.".fmt(styleAttr[i]));
927
+ }
928
+ });
929
+
930
+
931
+ module("OTHER LAYOUT STYLE TESTS", {
932
+ setup: function () {
933
+
934
+ SC.run(function () {
935
+ // create basic view
936
+ view = SC.View.create({});
937
+
938
+ pane = SC.Pane.create({
939
+ layout: { centerX: 0, centerY: 0, width: 400, height: 400 },
940
+ childViews: [view]
941
+ }).append();
942
+ });
943
+ },
944
+
945
+ teardown: function () {
946
+ pane.destroy();
947
+ pane = view = null;
948
+ }
949
+ });
950
+
951
+
952
+
953
+ /*
954
+ There was a regression where switching from a centered layout to a non-centered
955
+ layout failed to remove the margin style.
956
+ */
957
+ test("Switching from centered to non-centered layouts.", function () {
958
+ var styleAttr;
959
+
960
+ SC.run(function () {
961
+ view.set('layout', { centerX: 10, centerY: 10, width: 60, height: 60 });
962
+ });
963
+
964
+ SC.run(function () {
965
+ view.set('layout', { left: 10, top: 10, width: 60, height: 60 });
966
+ });
967
+
968
+ styleAttr = view.$().attr('style');
969
+ styleAttr = styleAttr.split(/;\s*/).filter(function (o) { return o; });
970
+ var expectedStyleAttr = ['left: 10px', 'top: 10px', 'width: 60px', 'height: 60px'];
971
+ for (var i = styleAttr.length - 1; i >= 0; i--) {
972
+ ok(expectedStyleAttr.indexOf(styleAttr[i]) >= 0, "Test the expected style attribute includes `%@` found in the actual style attribute.".fmt(styleAttr[i]));
973
+ }
974
+ });
777
975
  })();