sproutcore 1.6.0.beta.3-java → 1.6.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (633) hide show
  1. data/CHANGELOG +70 -0
  2. data/{History.txt → History.rdoc} +0 -0
  3. data/{README.txt → README.rdoc} +3 -2
  4. data/Rakefile +213 -10
  5. data/{Todo.txt → Todo.rdoc} +0 -0
  6. data/VERSION.yml +1 -1
  7. data/bin/sc-docs +6 -1
  8. data/lib/Buildfile +5 -1
  9. data/lib/buildtasks/manifest.rake +14 -1
  10. data/lib/buildtasks/target.rake +20 -23
  11. data/lib/frameworks/sproutcore/Buildfile +8 -3
  12. data/lib/frameworks/sproutcore/CHANGELOG.md +364 -1
  13. data/lib/frameworks/sproutcore/README.md +1 -1
  14. data/lib/frameworks/sproutcore/apps/test_controls/controllers/select.js +12 -0
  15. data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +19 -5
  16. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.css +9 -0
  17. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +243 -199
  18. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +250 -172
  19. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +29 -0
  20. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +5 -0
  21. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +21 -1
  22. data/lib/frameworks/sproutcore/frameworks/core_foundation/controls/button.js +6 -2
  23. data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +2 -42
  24. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/bind.js +38 -15
  25. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +6 -4
  26. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +1 -1
  27. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/checkbox_support.js +11 -6
  28. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +55 -20
  29. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +2 -0
  30. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +26 -20
  31. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +37 -21
  32. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/application.js +2 -7
  33. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +7 -7
  34. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +157 -5
  35. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +2 -2
  36. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +7 -6
  37. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +29 -15
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +8 -8
  40. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +162 -1
  41. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +3 -56
  42. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +24 -8
  43. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +42 -0
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +59 -0
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controls/button.js +39 -57
  46. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +41 -1
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/text_field_support.js +19 -2
  48. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +16 -1
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +5 -3
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +32 -0
  51. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +135 -0
  52. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +29 -18
  53. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +11 -0
  54. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +18 -2
  55. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +10 -6
  56. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +414 -1
  57. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view.js +1 -1
  58. data/lib/frameworks/sproutcore/frameworks/core_foundation/{system → views}/bindable_span.js +2 -1
  59. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +112 -40
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +13 -7
  61. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +2 -1
  62. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +245 -67
  63. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +17 -9
  64. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +8 -18
  65. data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +8 -2
  66. data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +1 -1
  67. data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +1 -1
  68. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +15 -8
  69. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +12 -2
  70. data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +296 -0
  71. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +3 -3
  72. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +330 -326
  73. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -1
  74. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +26 -5
  75. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +1 -1
  76. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +69 -58
  77. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +614 -614
  78. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/data_source.js +203 -0
  79. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +3 -1
  80. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +44 -0
  81. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +2 -0
  82. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +2 -0
  83. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +20 -13
  84. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +76 -47
  85. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +30 -30
  86. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +74 -53
  87. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +0 -1
  88. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +24 -24
  89. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/connectDataSource.js +31 -0
  90. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +1177 -0
  91. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +212 -182
  92. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +6 -67
  93. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +1 -1
  94. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
  95. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
  96. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +13 -15
  97. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +41 -12
  98. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +9 -0
  99. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +6 -3
  100. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +3 -3
  101. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +3 -3
  102. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +1 -1
  103. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +1 -1
  104. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +1 -1
  105. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +1 -1
  106. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +1 -1
  107. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/master_detail.js +3 -2
  108. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/menu.js +12 -2
  109. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +1 -1
  110. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +1 -1
  111. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +1 -1
  112. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +1 -1
  113. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +2 -2
  114. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +1 -1
  115. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -1
  116. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +1 -1
  117. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/toolbar.js +1 -1
  118. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +1 -1
  119. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/workspace.js +1 -1
  120. data/lib/frameworks/sproutcore/frameworks/desktop/resources/alert.css +49 -0
  121. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/a_sample_image.jpg +0 -0
  122. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/apple-logo1.jpeg +0 -0
  123. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/iframe.html +0 -0
  124. data/lib/frameworks/sproutcore/frameworks/desktop/resources/disclosure.css +20 -0
  125. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/drag.css +1 -1
  126. data/lib/frameworks/sproutcore/frameworks/desktop/resources/icons.css +214 -0
  127. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/cap.png +0 -0
  128. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/downbutton.png +0 -0
  129. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-16.png +0 -0
  130. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-24.png +0 -0
  131. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-48.png +0 -0
  132. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-bookmark-16.png +0 -0
  133. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-bookmark-24.png +0 -0
  134. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-cancel-24.png +0 -0
  135. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-document-16.png +0 -0
  136. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-document-24.png +0 -0
  137. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-down-24.png +0 -0
  138. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
  139. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-favorite-16.png +0 -0
  140. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-favorite-24.png +0 -0
  141. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-folder-16.png +0 -0
  142. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-folder-24.png +0 -0
  143. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-group-16.png +0 -0
  144. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-group-24.png +0 -0
  145. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-help-16.png +0 -0
  146. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-help-24.png +0 -0
  147. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-16.png +0 -0
  148. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-24.png +0 -0
  149. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-48.png +0 -0
  150. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-left-24.png +0 -0
  151. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-options-16.png +0 -0
  152. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-options-24.png +0 -0
  153. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-redo-24.png +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-right-24.png +0 -0
  155. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-tools-24.png +0 -0
  156. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-trash-16.png +0 -0
  157. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-trash-24.png +0 -0
  158. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-undo-24.png +0 -0
  159. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-up-24.png +0 -0
  160. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-user-16.png +0 -0
  161. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-user-24.png +0 -0
  162. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-bottom.png +0 -0
  163. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-center.png +0 -0
  164. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-top.png +0 -0
  165. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/track.png +0 -0
  166. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/upbutton.png +0 -0
  167. data/lib/frameworks/sproutcore/frameworks/desktop/resources/list_item.css +145 -0
  168. data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu.css +10 -0
  169. data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu_item_view.css +88 -0
  170. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/modal.css +3 -4
  171. data/lib/frameworks/sproutcore/frameworks/desktop/resources/panel.css +91 -0
  172. data/lib/frameworks/sproutcore/frameworks/desktop/resources/picker.css +37 -0
  173. data/lib/frameworks/sproutcore/frameworks/desktop/resources/progress.css +29 -0
  174. data/lib/frameworks/sproutcore/frameworks/desktop/resources/radio.css +11 -0
  175. data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +122 -0
  176. data/lib/frameworks/sproutcore/frameworks/desktop/resources/separator.css +20 -0
  177. data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +34 -0
  178. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/split.css +0 -0
  179. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/split_divider.css +0 -0
  180. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/tab.css +0 -0
  181. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/toolbar.css +0 -0
  182. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/touch-scroller.css +13 -13
  183. data/lib/frameworks/sproutcore/frameworks/desktop/resources/well.css +65 -0
  184. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +58 -23
  185. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +20 -1
  186. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +121 -103
  187. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +34 -7
  188. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/static_content.js +3 -2
  189. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +1 -3
  190. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +20 -1
  191. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +14 -15
  192. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +43 -16
  193. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +717 -700
  194. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +2 -2
  195. data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +11 -1
  196. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +16 -6
  197. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +4 -7
  198. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +0 -1
  199. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +49 -7
  200. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +9 -2
  201. data/lib/frameworks/sproutcore/frameworks/desktop/{panes → views}/select_button.js +52 -0
  202. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +7 -3
  203. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +4 -26
  204. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +46 -49
  205. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +20 -19
  206. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
  207. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +249 -249
  208. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/mixins/edit_mode.js +13 -5
  209. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/mixins/emptiness.js +53 -37
  210. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/render_delegates/form.js +2 -1
  211. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/render_delegates/form_row.js +3 -11
  212. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/mixins/edit_mode.js +53 -0
  213. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/mixins/emptiness.js +114 -0
  214. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form.js +174 -6
  215. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_row.js +86 -6
  216. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +98 -126
  217. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form_row.js +96 -97
  218. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +2 -1
  219. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +20 -36
  220. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +121 -0
  221. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +90 -0
  222. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/mixins/select_view_menu.js +139 -0
  223. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/render_delegates/select_button.js +14 -0
  224. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/ext/menu_resizing.js +25 -0
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/bindings.js +43 -0
  226. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/check_selected.js +32 -0
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/popup_button/menu_setup.js +40 -0
  228. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/popup_button/show_menu.js +45 -0
  229. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/menu_width.js +49 -0
  230. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/selected_item.js +191 -0
  231. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +264 -0
  232. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +450 -0
  233. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +14 -6
  234. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +1 -1
  235. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split.js +1 -1
  236. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split_divider.js +1 -1
  237. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +9 -0
  238. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +3 -2
  239. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +2 -2
  240. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +16 -19
  241. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +4 -7
  242. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +1 -1
  243. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +85 -16
  244. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +1 -1
  245. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +1 -1
  246. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor_delegate.js +1 -1
  247. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +1 -1
  248. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +4 -2
  249. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +2 -0
  250. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +1 -1
  251. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +1 -1
  252. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +13 -13
  253. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/benchmark.css +0 -0
  254. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/blank.gif +0 -0
  255. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/bootstrap.rhtml +0 -0
  256. data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +36 -0
  257. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/checkbox_view.css +0 -0
  258. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/debug/control-test-pane.css +0 -0
  259. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/favicon.ico +0 -0
  260. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-logo.png +0 -0
  261. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-landscape.jpg +0 -0
  262. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-landscape.png +0 -0
  263. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-portrait.jpg +0 -0
  264. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-portrait.png +0 -0
  265. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup.png +0 -0
  266. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore.png +0 -0
  267. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/inline_editor.css +0 -0
  268. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +47 -0
  269. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/radio_view.css +0 -0
  270. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/static_layout.css +1 -1
  271. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +125 -0
  272. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +5 -1
  273. data/lib/frameworks/sproutcore/frameworks/foundation/system/exception_handler.js +4 -2
  274. data/lib/frameworks/sproutcore/frameworks/foundation/system/math.js +2 -1
  275. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +13 -0
  276. data/lib/frameworks/sproutcore/frameworks/foundation/system/string.js +0 -43
  277. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +11 -11
  278. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +912 -0
  279. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +23 -0
  280. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +36 -7
  281. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +58 -4
  282. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +4 -4
  283. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +1 -3
  284. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +17 -6
  285. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +0 -15
  286. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +3 -3
  287. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +30 -19
  288. data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1 -1
  289. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +2 -76
  290. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +3348 -1591
  291. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +6 -3
  292. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +11 -0
  293. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +38 -12
  294. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/flatten.js +24 -0
  295. data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +2 -1
  296. data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +5 -5
  297. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +21 -2
  298. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +3 -2
  299. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +1 -1
  300. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1 -1
  301. data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +2 -2
  302. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +14 -14
  303. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +4 -1
  304. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +0 -3
  305. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +4 -4
  306. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +4 -4
  307. data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +1 -1
  308. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +3 -3
  309. data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +15 -16
  310. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +6 -2
  311. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +10 -5
  312. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/requiredObjectForPropertyPath.js +29 -0
  313. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +98 -0
  314. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +30 -0
  315. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +17 -0
  316. data/lib/frameworks/sproutcore/frameworks/statechart/debug/monitor.js +4 -73
  317. data/lib/frameworks/sproutcore/frameworks/statechart/debug/sequence_matcher.js +189 -0
  318. data/lib/frameworks/sproutcore/frameworks/statechart/ext/function.js +122 -0
  319. data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +88 -0
  320. data/lib/frameworks/sproutcore/frameworks/statechart/system/empty_state.js +34 -0
  321. data/lib/frameworks/sproutcore/frameworks/statechart/system/history_state.js +97 -0
  322. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +16 -191
  323. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +17 -79
  324. data/lib/frameworks/sproutcore/frameworks/statechart/tests/debug/sequence_matcher.js +464 -0
  325. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +31 -11
  326. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/async/with_concurrent_states.js +6 -4
  327. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/advanced.js +40 -6
  328. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/basic.js +22 -2
  329. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/intermediate.js +44 -3
  330. data/lib/frameworks/sproutcore/frameworks/testing/core.js +61 -9
  331. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/additions.css +0 -0
  332. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/runner.css +10 -2
  333. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/testsuite.css +0 -0
  334. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +66 -27
  335. data/lib/frameworks/sproutcore/frameworks/testing/tests/spy_on.js +41 -0
  336. data/lib/frameworks/sproutcore/frameworks/testing/tests/stub_method.js +9 -0
  337. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +80 -0
  338. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/core.css +20 -0
  339. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/fonts.css +39 -0
  340. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +126 -0
  341. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +57 -0
  342. data/lib/frameworks/sproutcore/lib/index.rhtml +8 -4
  343. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked.psd +0 -0
  344. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked_active.psd +0 -0
  345. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed.psd +0 -0
  346. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed_active.psd +0 -0
  347. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked.psd +0 -0
  348. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked_active.psd +0 -0
  349. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked.psd +0 -0
  350. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked_active.psd +0 -0
  351. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed.psd +0 -0
  352. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed_active.psd +0 -0
  353. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked.psd +0 -0
  354. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked_active.psd +0 -0
  355. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu_item.psd +0 -0
  356. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked.png +0 -0
  357. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked_active.png +0 -0
  358. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed.png +0 -0
  359. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed_active.png +0 -0
  360. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked.png +0 -0
  361. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked_active.png +0 -0
  362. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked.png +0 -0
  363. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked_active.png +0 -0
  364. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed.png +0 -0
  365. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed_active.png +0 -0
  366. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked.png +0 -0
  367. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked_active.png +0 -0
  368. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +13 -4
  369. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +16 -14
  370. data/lib/frameworks/sproutcore/themes/ace/resources/form/form.css +9 -0
  371. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +3 -1
  372. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu_item.png +0 -0
  373. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/picker.js +1 -1
  374. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/workspace.js +1 -1
  375. data/lib/frameworks/sproutcore/themes/ace/resources/split/split.css +1 -1
  376. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +1 -1
  377. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/panel.js +1 -1
  378. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +2 -0
  379. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +1 -1
  380. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/well.js +1 -1
  381. data/lib/gen/app/templates/apps/@target_name@/Buildfile +1 -4
  382. data/lib/gen/app/templates/apps/@target_name@/core.js +1 -4
  383. data/lib/gen/app/templates/apps/@target_name@/main.js +1 -4
  384. data/lib/gen/app/templates/apps/@target_name@/resources/main_page.js +1 -4
  385. data/lib/gen/app/templates/apps/@target_name@/theme.js +1 -4
  386. data/lib/gen/controller/templates/controllers/{@filename@.js → @filename@_controller.js} +1 -4
  387. data/lib/gen/controller/templates/tests/controllers/{@filename@.js → @filename@_test.js} +1 -4
  388. data/lib/gen/data-source/templates/data_sources/{@filename@.js → @filename@_data_source.js} +1 -4
  389. data/lib/gen/design/templates/resources/@filename@.js +1 -4
  390. data/lib/gen/framework/templates/frameworks/@target_name@/core.js +1 -4
  391. data/lib/gen/framework/templates/frameworks/@target_name@/english.lproj/strings.js +1 -4
  392. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +1 -4
  393. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +2 -0
  394. data/lib/gen/html_project/templates/@filename@/Buildfile +1 -4
  395. data/lib/gen/html_project/templates/@filename@/README +1 -4
  396. data/lib/gen/language/Buildfile +1 -1
  397. data/lib/gen/language/templates/@filename@/strings.js +1 -4
  398. data/lib/gen/model/templates/fixtures/{@filename@.js → @filename@_fixtures.js} +2 -5
  399. data/lib/gen/model/templates/models/{@filename@.js → @filename@_model.js} +1 -4
  400. data/lib/gen/model/templates/tests/models/{@filename@.js → @filename@_test.js} +1 -4
  401. data/lib/gen/page/templates/pages/@target_name@/Buildfile +1 -4
  402. data/lib/gen/page/templates/pages/@target_name@/core.js +1 -4
  403. data/lib/gen/page/templates/pages/@target_name@/en.lproj/strings.js +1 -4
  404. data/lib/gen/page/templates/pages/@target_name@/resources/body.css +3 -1
  405. data/lib/gen/project/templates/@filename@/Buildfile +1 -4
  406. data/lib/gen/project/templates/@filename@/README +1 -5
  407. data/lib/gen/responder/templates/states/{@filename@.js → @filename@_state.js} +1 -4
  408. data/lib/gen/test/templates/tests/{@filename@.js → @filename@_test.js} +1 -4
  409. data/lib/gen/theme/templates/themes/@target_name@/resources/theme_styles.css +1 -5
  410. data/lib/gen/theme/templates/themes/@target_name@/theme.js +1 -4
  411. data/lib/gen/view/templates/tests/views/{@filename@.js → @filename@_test.js} +1 -4
  412. data/lib/gen/view/templates/views/{@filename@.js → @filename@_view.js} +1 -4
  413. data/lib/sproutcore.rb +5 -15
  414. data/lib/sproutcore/builders/base.rb +5 -1
  415. data/lib/sproutcore/builders/handlebars.rb +12 -1
  416. data/lib/sproutcore/builders/module.rb +2 -2
  417. data/lib/sproutcore/buildfile/string_ext.rb +0 -4
  418. data/lib/sproutcore/helpers/cssmin.rb +44 -59
  419. data/lib/sproutcore/helpers/static_helper.rb +4 -2
  420. data/lib/sproutcore/helpers/text_helper.rb +11 -13
  421. data/lib/sproutcore/models/generator.rb +22 -0
  422. data/lib/sproutcore/models/manifest.rb +4 -4
  423. data/lib/sproutcore/models/manifest_entry.rb +1 -0
  424. data/lib/sproutcore/models/target.rb +3 -107
  425. data/lib/sproutcore/rack.rb +0 -1
  426. data/lib/sproutcore/rack/builder.rb +3 -0
  427. data/lib/sproutcore/rack/dev.rb +0 -1
  428. data/lib/sproutcore/rack/proxy.rb +240 -93
  429. data/lib/sproutcore/rack/service.rb +1 -1
  430. data/lib/sproutcore/render_engines/haml.rb +2 -5
  431. data/lib/sproutcore/tools.rb +11 -11
  432. data/lib/sproutcore/tools/build.rb +2 -0
  433. data/lib/sproutcore/tools/docs.rb +2 -37
  434. data/lib/sproutcore/tools/init.rb +10 -22
  435. data/lib/sproutcore/tools/manifest.rb +21 -22
  436. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +21 -1
  437. data/spec/buildtasks/target_spec.rb +9 -0
  438. data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -0
  439. data/spec/fixtures/builder_tests/apps/handlebars_test/{template.handlebars → templates/template.handlebars} +2 -0
  440. data/{lib/doc_templates/sproutcore/allclasses.tmpl → spec/fixtures/ordered_entries/apps/template_style/a.js} +0 -0
  441. data/spec/fixtures/{real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER → ordered_entries/apps/template_style/template_style.js} +0 -0
  442. data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +1 -1
  443. data/spec/lib/builders/handlebars_spec.rb +10 -4
  444. data/spec/lib/buildfile_commands/build_task_spec.rb +1 -1
  445. data/spec/lib/tools/manifest_spec.rb +11 -0
  446. data/sproutcore.gemspec +8 -7
  447. data/vendor/chance/lib/chance/instance.rb +8 -9
  448. metadata +167 -266
  449. data/lib/doc_templates/jsdoc/allclasses.tmpl +0 -17
  450. data/lib/doc_templates/jsdoc/allfiles.tmpl +0 -56
  451. data/lib/doc_templates/jsdoc/class.tmpl +0 -487
  452. data/lib/doc_templates/jsdoc/index.tmpl +0 -38
  453. data/lib/doc_templates/jsdoc/publish.js +0 -170
  454. data/lib/doc_templates/jsdoc/static/default.css +0 -162
  455. data/lib/doc_templates/jsdoc/static/header.html +0 -2
  456. data/lib/doc_templates/jsdoc/static/index.html +0 -19
  457. data/lib/doc_templates/jsdoc/symbol.tmpl +0 -35
  458. data/lib/doc_templates/sproutcore/allfiles.tmpl +0 -56
  459. data/lib/doc_templates/sproutcore/class.tmpl +0 -674
  460. data/lib/doc_templates/sproutcore/classes-json.tmpl +0 -55
  461. data/lib/doc_templates/sproutcore/index.tmpl +0 -62
  462. data/lib/doc_templates/sproutcore/publish.js +0 -346
  463. data/lib/doc_templates/sproutcore/static/default.css +0 -258
  464. data/lib/doc_templates/sproutcore/static/header.html +0 -2
  465. data/lib/doc_templates/sproutcore/static/index.html +0 -19
  466. data/lib/doc_templates/sproutcore/symbol.tmpl +0 -35
  467. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/core.css +0 -378
  468. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/view.css +0 -57
  469. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +0 -56
  470. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +0 -73
  471. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +0 -916
  472. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
  473. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +0 -185
  474. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -12
  475. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +0 -101
  476. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +0 -91
  477. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +0 -35
  478. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +0 -33
  479. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +0 -10
  480. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +0 -132
  481. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +0 -19
  482. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +0 -69
  483. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +0 -14
  484. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/well.css +0 -71
  485. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/english.lproj/default_styles.css +0 -5
  486. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/english.lproj/strings.js +0 -15
  487. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_checkbox_field.js +0 -17
  488. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_field.js +0 -17
  489. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_label.js +0 -17
  490. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_radio_field.js +0 -17
  491. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_text_field.js +0 -17
  492. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +0 -40
  493. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/images/favicon.ico +0 -0
  494. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +0 -47
  495. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +0 -146
  496. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +0 -55
  497. data/lib/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +0 -69
  498. data/lib/sproutcore/rack/docs.rb +0 -24
  499. data/vendor/jsdoc/README.txt +0 -151
  500. data/vendor/jsdoc/app/frame.js +0 -33
  501. data/vendor/jsdoc/app/frame/Chain.js +0 -102
  502. data/vendor/jsdoc/app/frame/Dumper.js +0 -144
  503. data/vendor/jsdoc/app/frame/Hash.js +0 -47
  504. data/vendor/jsdoc/app/frame/Link.js +0 -142
  505. data/vendor/jsdoc/app/frame/Namespace.js +0 -10
  506. data/vendor/jsdoc/app/frame/Opt.js +0 -134
  507. data/vendor/jsdoc/app/frame/Reflection.js +0 -26
  508. data/vendor/jsdoc/app/frame/String.js +0 -93
  509. data/vendor/jsdoc/app/frame/Testrun.js +0 -129
  510. data/vendor/jsdoc/app/handlers/FOODOC.js +0 -26
  511. data/vendor/jsdoc/app/handlers/XMLDOC.js +0 -26
  512. data/vendor/jsdoc/app/handlers/XMLDOC/DomReader.js +0 -159
  513. data/vendor/jsdoc/app/handlers/XMLDOC/XMLDoc.js +0 -16
  514. data/vendor/jsdoc/app/handlers/XMLDOC/XMLParse.js +0 -292
  515. data/vendor/jsdoc/app/lib/JSDOC.js +0 -98
  516. data/vendor/jsdoc/app/lib/JSDOC/DocComment.js +0 -200
  517. data/vendor/jsdoc/app/lib/JSDOC/DocTag.js +0 -294
  518. data/vendor/jsdoc/app/lib/JSDOC/JsDoc.js +0 -162
  519. data/vendor/jsdoc/app/lib/JSDOC/JsPlate.js +0 -100
  520. data/vendor/jsdoc/app/lib/JSDOC/Lang.js +0 -144
  521. data/vendor/jsdoc/app/lib/JSDOC/Parser.js +0 -109
  522. data/vendor/jsdoc/app/lib/JSDOC/PluginManager.js +0 -33
  523. data/vendor/jsdoc/app/lib/JSDOC/Symbol.js +0 -681
  524. data/vendor/jsdoc/app/lib/JSDOC/SymbolSet.js +0 -226
  525. data/vendor/jsdoc/app/lib/JSDOC/TextStream.js +0 -41
  526. data/vendor/jsdoc/app/lib/JSDOC/Token.js +0 -18
  527. data/vendor/jsdoc/app/lib/JSDOC/TokenReader.js +0 -332
  528. data/vendor/jsdoc/app/lib/JSDOC/TokenStream.js +0 -133
  529. data/vendor/jsdoc/app/lib/JSDOC/Util.js +0 -32
  530. data/vendor/jsdoc/app/lib/JSDOC/Walker.js +0 -453
  531. data/vendor/jsdoc/app/main.js +0 -74
  532. data/vendor/jsdoc/app/plugins/commentSrcJson.js +0 -19
  533. data/vendor/jsdoc/app/plugins/frameworkPrototype.js +0 -16
  534. data/vendor/jsdoc/app/plugins/functionCall.js +0 -10
  535. data/vendor/jsdoc/app/plugins/publishSrcHilite.js +0 -62
  536. data/vendor/jsdoc/app/plugins/sproutcoreTags.js +0 -26
  537. data/vendor/jsdoc/app/plugins/symbolLink.js +0 -9
  538. data/vendor/jsdoc/app/plugins/tagParamConfig.js +0 -31
  539. data/vendor/jsdoc/app/plugins/tagSynonyms.js +0 -43
  540. data/vendor/jsdoc/app/run.js +0 -346
  541. data/vendor/jsdoc/app/t/TestDoc.js +0 -144
  542. data/vendor/jsdoc/app/t/runner.js +0 -13
  543. data/vendor/jsdoc/app/test.js +0 -304
  544. data/vendor/jsdoc/app/test/addon.js +0 -24
  545. data/vendor/jsdoc/app/test/anon_inner.js +0 -14
  546. data/vendor/jsdoc/app/test/augments.js +0 -31
  547. data/vendor/jsdoc/app/test/augments2.js +0 -26
  548. data/vendor/jsdoc/app/test/borrows.js +0 -41
  549. data/vendor/jsdoc/app/test/borrows2.js +0 -23
  550. data/vendor/jsdoc/app/test/config.js +0 -22
  551. data/vendor/jsdoc/app/test/constructs.js +0 -18
  552. data/vendor/jsdoc/app/test/encoding.js +0 -10
  553. data/vendor/jsdoc/app/test/encoding_other.js +0 -12
  554. data/vendor/jsdoc/app/test/functions_anon.js +0 -39
  555. data/vendor/jsdoc/app/test/functions_nested.js +0 -33
  556. data/vendor/jsdoc/app/test/global.js +0 -13
  557. data/vendor/jsdoc/app/test/globals.js +0 -25
  558. data/vendor/jsdoc/app/test/ignore.js +0 -10
  559. data/vendor/jsdoc/app/test/inner.js +0 -16
  560. data/vendor/jsdoc/app/test/jsdoc_test.js +0 -477
  561. data/vendor/jsdoc/app/test/lend.js +0 -33
  562. data/vendor/jsdoc/app/test/memberof.js +0 -20
  563. data/vendor/jsdoc/app/test/memberof_constructor.js +0 -15
  564. data/vendor/jsdoc/app/test/name.js +0 -19
  565. data/vendor/jsdoc/app/test/namespace_nested.js +0 -23
  566. data/vendor/jsdoc/app/test/nocode.js +0 -13
  567. data/vendor/jsdoc/app/test/oblit_anon.js +0 -20
  568. data/vendor/jsdoc/app/test/overview.js +0 -20
  569. data/vendor/jsdoc/app/test/param_inline.js +0 -37
  570. data/vendor/jsdoc/app/test/params_optional.js +0 -8
  571. data/vendor/jsdoc/app/test/prototype.js +0 -17
  572. data/vendor/jsdoc/app/test/prototype_nested.js +0 -9
  573. data/vendor/jsdoc/app/test/prototype_oblit.js +0 -13
  574. data/vendor/jsdoc/app/test/prototype_oblit_constructor.js +0 -24
  575. data/vendor/jsdoc/app/test/public.js +0 -10
  576. data/vendor/jsdoc/app/test/shared.js +0 -42
  577. data/vendor/jsdoc/app/test/shared2.js +0 -2
  578. data/vendor/jsdoc/app/test/shortcuts.js +0 -22
  579. data/vendor/jsdoc/app/test/static_this.js +0 -13
  580. data/vendor/jsdoc/app/test/synonyms.js +0 -23
  581. data/vendor/jsdoc/app/test/tosource.js +0 -23
  582. data/vendor/jsdoc/app/test/variable_redefine.js +0 -14
  583. data/vendor/jsdoc/changes.txt +0 -47
  584. data/vendor/jsdoc/conf/sample.conf +0 -31
  585. data/vendor/jsdoc/java/build.xml +0 -36
  586. data/vendor/jsdoc/java/build_1.4.xml +0 -36
  587. data/vendor/jsdoc/java/classes/js.jar +0 -0
  588. data/vendor/jsdoc/java/src/JsDebugRun.java +0 -21
  589. data/vendor/jsdoc/java/src/JsRun.java +0 -21
  590. data/vendor/jsdoc/jsdebug.jar +0 -0
  591. data/vendor/jsdoc/jsrun.jar +0 -0
  592. data/vendor/jsdoc/t/TestDoc.js +0 -144
  593. data/vendor/jsdoc/t/runner.js +0 -13
  594. data/vendor/jsdoc/test.js +0 -304
  595. data/vendor/jsdoc/test/addon.js +0 -24
  596. data/vendor/jsdoc/test/anon_inner.js +0 -14
  597. data/vendor/jsdoc/test/augments.js +0 -31
  598. data/vendor/jsdoc/test/augments2.js +0 -26
  599. data/vendor/jsdoc/test/borrows.js +0 -41
  600. data/vendor/jsdoc/test/borrows2.js +0 -23
  601. data/vendor/jsdoc/test/config.js +0 -22
  602. data/vendor/jsdoc/test/constructs.js +0 -18
  603. data/vendor/jsdoc/test/encoding.js +0 -10
  604. data/vendor/jsdoc/test/encoding_other.js +0 -12
  605. data/vendor/jsdoc/test/functions_anon.js +0 -39
  606. data/vendor/jsdoc/test/functions_nested.js +0 -33
  607. data/vendor/jsdoc/test/global.js +0 -13
  608. data/vendor/jsdoc/test/globals.js +0 -25
  609. data/vendor/jsdoc/test/ignore.js +0 -10
  610. data/vendor/jsdoc/test/inner.js +0 -16
  611. data/vendor/jsdoc/test/jsdoc_test.js +0 -477
  612. data/vendor/jsdoc/test/lend.js +0 -33
  613. data/vendor/jsdoc/test/memberof.js +0 -20
  614. data/vendor/jsdoc/test/memberof_constructor.js +0 -15
  615. data/vendor/jsdoc/test/name.js +0 -19
  616. data/vendor/jsdoc/test/namespace_nested.js +0 -23
  617. data/vendor/jsdoc/test/nocode.js +0 -13
  618. data/vendor/jsdoc/test/oblit_anon.js +0 -20
  619. data/vendor/jsdoc/test/overview.js +0 -20
  620. data/vendor/jsdoc/test/param_inline.js +0 -37
  621. data/vendor/jsdoc/test/params_optional.js +0 -8
  622. data/vendor/jsdoc/test/prototype.js +0 -17
  623. data/vendor/jsdoc/test/prototype_nested.js +0 -9
  624. data/vendor/jsdoc/test/prototype_oblit.js +0 -13
  625. data/vendor/jsdoc/test/prototype_oblit_constructor.js +0 -24
  626. data/vendor/jsdoc/test/public.js +0 -10
  627. data/vendor/jsdoc/test/shared.js +0 -42
  628. data/vendor/jsdoc/test/shared2.js +0 -2
  629. data/vendor/jsdoc/test/shortcuts.js +0 -22
  630. data/vendor/jsdoc/test/static_this.js +0 -13
  631. data/vendor/jsdoc/test/synonyms.js +0 -23
  632. data/vendor/jsdoc/test/tosource.js +0 -23
  633. data/vendor/jsdoc/test/variable_redefine.js +0 -14
@@ -62,4 +62,8 @@ SC.chance = {
62
62
  }
63
63
  };
64
64
 
65
- SC.ready(SC.chance, 'preloadImages');
65
+
66
+ // Disabling image proloading in the mean time temporarly.
67
+ // If you want to enable it in your
68
+ // app add the following line.
69
+ //SC.ready(SC.chance, 'preloadImages');
@@ -36,9 +36,11 @@ SC.ExceptionHandler = {
36
36
  @param {Exception} exception the exception thrown during execution
37
37
  */
38
38
  handleException: function(exception) {
39
- if (this.isShowingErrorDialog) return;
40
-
39
+ if (this.isShowingErrorDialog) return NO;
40
+
41
41
  this._displayErrorDialog(exception);
42
+
43
+ return NO;
42
44
  },
43
45
 
44
46
  /** @private
@@ -14,7 +14,8 @@
14
14
  @since SproutCore 1.0
15
15
  @author Colin Campbell
16
16
  */
17
- SC.Math = SC.Object.create({
17
+ SC.Math = SC.Object.create(
18
+ /** @lends SC.Math.prototype */ {
18
19
 
19
20
  /**
20
21
  Checks to see if the number is near the supplied parameter to a certain lambda.
@@ -211,6 +211,19 @@ SC.Module = SC.Object.create(/** @scope SC.Module */ {
211
211
  jQuery.globalEval(moduleSource);
212
212
  delete module.source;
213
213
 
214
+ if (module.cssSource) {
215
+ var el = document.createElement('style');
216
+ el.setAttribute('type', 'text/css');
217
+ if (el.styleSheet) {
218
+ el.styleSheet.cssText = module.cssSource;
219
+ } else {
220
+ var content = document.createTextNode(module.cssSource);
221
+ el.appendChild(content);
222
+ }
223
+
224
+ document.getElementsByTagName('head')[0].appendChild(el);
225
+ }
226
+
214
227
  module.isReady = YES;
215
228
  },
216
229
 
@@ -8,20 +8,7 @@
8
8
 
9
9
  /** @private */
10
10
  SC.STRING_TITLEIZE_REGEXP = (/([\s|\-|\_|\n])([^\s|\-|\_|\n]?)/g);
11
-
12
- /** @private */
13
11
  SC.STRING_HUMANIZE_REGEXP = (/[\-_]/g);
14
-
15
- /** @private */
16
- SC.STRING_TRIM_REGEXP = (/^\s+|\s+$/g);
17
-
18
- /** @private */
19
- SC.STRING_TRIM_LEFT_REGEXP = (/^\s+/g);
20
-
21
- /** @private */
22
- SC.STRING_TRIM_RIGHT_REGEXP = (/\s+$/g);
23
-
24
- /** @private */
25
12
  SC.STRING_REGEXP_ESCAPED_REGEXP = (/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g);
26
13
 
27
14
  /** @private
@@ -313,36 +300,6 @@ SC.mixin(SC.String, {
313
300
  return ret;
314
301
  },
315
302
 
316
- /**
317
- Removes any extra whitespace from the edges of the string. This method is
318
- also aliased as strip().
319
-
320
- @param {String} str String to trim
321
- @returns {String} the trimmed string
322
- */
323
- trim: function(str) {
324
- return str.replace(SC.STRING_TRIM_REGEXP, "");
325
- },
326
-
327
- /**
328
- Removes any extra whitespace from the left edge of the string.
329
-
330
- @param {String} str String to left trim
331
- @returns {String} the trimmed string
332
- */
333
- trimLeft: function (str) {
334
- return str.replace(SC.STRING_TRIM_LEFT_REGEXP, "");
335
- },
336
-
337
- /**
338
- Removes any extra whitespace from the right edge of the string.
339
-
340
- @param {String} str String to right trim
341
- @returns {String} the trimmed string
342
- */
343
- trimRight: function (str) {
344
- return str.replace(SC.STRING_TRIM_RIGHT_REGEXP, "");
345
- },
346
303
 
347
304
  /**
348
305
  Converts a word into its plural form.
@@ -10,7 +10,7 @@ SC.mixin( /** @scope SC */ {
10
10
  _copy_computed_props: [
11
11
  "maxWidth", "maxHeight", "paddingLeft", "paddingRight", "paddingTop", "paddingBottom",
12
12
  "fontFamily", "fontSize", "fontStyle", "fontWeight", "fontVariant", "lineHeight",
13
- "whiteSpace"
13
+ "whiteSpace", "letterSpacing"
14
14
  ],
15
15
 
16
16
  /**
@@ -118,15 +118,12 @@ SC.mixin( /** @scope SC */ {
118
118
  if (!element) {
119
119
  var parentElement = document.createElement("div");
120
120
 
121
- // to make sure the measurement element is never visible, put it inside a 0x0 element with overflow: hidden
122
- SC.mixin(parentElement.style, {
123
- position: 'absolute',
124
- left: '0px',
125
- top: '0px',
126
- height: '0px',
127
- right: '0px',
128
- overflow: 'hidden'
129
- });
121
+ // To have effectively unbounded widths when no max-width is set,
122
+ // give the metricsCalculationElement a very wide sandbox.
123
+ // To make sure it's never visible, position it way, way offscreen.
124
+ parentElement.style.cssText = "position:absolute; left:-10010px; top:-10px;"+
125
+ "width:10000px; height:0px; overflow:hidden;"+
126
+ "visibility:hidden;";
130
127
 
131
128
  element = this._metricsCalculationElement = document.createElement("div");
132
129
 
@@ -219,8 +216,11 @@ SC.mixin( /** @scope SC */ {
219
216
  throw "measureString requires a string measurement environment to be set up. Did you mean metricsForString?";
220
217
  }
221
218
 
219
+ // since the string has already been escaped (if the user wants it to be),
220
+ // we should set the innerHTML instead of innertext
221
+ if(ignoreEscape) element.innerHTML = string;
222
222
  // the conclusion of which to use (innerText or textContent) should be cached
223
- if (typeof element.innerText != "undefined") element.innerText = string;
223
+ else if (typeof element.innerText != "undefined") element.innerText = string;
224
224
  else element.textContent = string;
225
225
 
226
226
  // generate result
@@ -0,0 +1,912 @@
1
+ /**
2
+ The FlowedLaoyut test engine takes expected layouts for a set of conditions. All units
3
+ are expected in the horizontal orientation; they will be flipped automatically for vertical
4
+ tests (and the view's width/height/fillWidth/etc. settings changed likewise).
5
+
6
+ - With Wrap, 600x400.
7
+ - With wrap, 400x600.
8
+ - No wrap, 600x400.
9
+ - No wrap, 400x600
10
+
11
+ The expected positioning should be supplied to the checkPositions method:
12
+
13
+ {
14
+ wrap: {
15
+ // these are by width (600x400 should use '600')
16
+ '400': [ { left: ..., top: ..., width: ..., height: ... } ],
17
+ '600': ...
18
+ },
19
+ noWrap: {
20
+ ...
21
+ }
22
+ }
23
+
24
+ It is a recursive process; each step has multiple possible varieties, and ALL
25
+ combinations are tested. The first variety is always tested twice.
26
+
27
+ For instance, it tests 600x400, then 400x600, then 600x400 again.
28
+
29
+ - 600x400 or 400x600
30
+ - Wrap on and wrap off
31
+ - Horizontal or Vertical
32
+ */
33
+
34
+ // helper to make a string from a hash
35
+ var str = function(obj) {
36
+ var s = [];
37
+ for (var i in obj) {
38
+ s.push("" + i + ": " + obj[i]);
39
+ }
40
+ return "{ " + s.join(", ") + "}";
41
+ };
42
+
43
+ var checkSteps = [
44
+ function wrap(view, positions, context) {
45
+ SC.RunLoop.begin();
46
+ view.set('canWrap', YES);
47
+ SC.RunLoop.end();
48
+
49
+ context.performNext(positions.wrap);
50
+
51
+ SC.RunLoop.begin();
52
+ view.set('canWrap', NO);
53
+ SC.RunLoop.end();
54
+
55
+ context.performNext(positions.noWrap);
56
+
57
+ SC.RunLoop.begin();
58
+ view.set('canWrap', YES);
59
+ SC.RunLoop.end();
60
+
61
+ context.performNext(positions.wrap);
62
+ },
63
+
64
+ function dimensions(view, positions, context) {
65
+ SC.RunLoop.begin();
66
+ view.set('layout', { left: 0, top: 0, width: 600, height: 400 });
67
+ SC.RunLoop.end();
68
+
69
+ context.performNext(positions['600']);
70
+
71
+ SC.RunLoop.begin();
72
+ view.set('layout', { left: 0, top: 0, width: 400, height: 600});
73
+ SC.RunLoop.end();
74
+
75
+ context.performNext(positions['400']);
76
+
77
+ SC.RunLoop.begin();
78
+ view.set('layout', { left: 0, top: 0, width: 600, height: 400 });
79
+ SC.RunLoop.end();
80
+
81
+ context.performNext(positions['600']);
82
+ },
83
+
84
+ function orientation(view, positions, context) {
85
+ // we have to convert the positions. By now they should be a simple array,
86
+ // so we just swap width and height.
87
+ var verticalPositions = [];
88
+ for (var idx = 0, len = positions.length; idx < len; idx++) {
89
+ verticalPositions[idx] = {
90
+ left: positions[idx].top,
91
+ top: positions[idx].left,
92
+ width: positions[idx].height,
93
+ height: positions[idx].width
94
+ };
95
+ }
96
+
97
+ function flipChildViews() {
98
+ var cvs = view.get('childViews');
99
+ for (var idx = 0, len = cvs.length; idx < len; idx++) {
100
+ var layout = cvs[idx].get('layout');
101
+ layout = SC.clone(layout);
102
+
103
+ var tmp = layout.width;
104
+ layout.width = layout.height;
105
+ layout.height = tmp;
106
+
107
+ cvs[idx].set('layout', layout);
108
+
109
+ var fillWidth = cvs[idx].get('fillWidth');
110
+ cvs[idx].set('fillWidth', cvs[idx].get('fillHeight'));
111
+ cvs[idx].set('fillHeight', fillWidth);
112
+ }
113
+ }
114
+
115
+ function flipLayout() {
116
+ var l = SC.clone(view.get('layout'));
117
+ var w = l.width;
118
+ l.width= l.height;
119
+ l.height = w;
120
+ view.set('layout', l);
121
+
122
+ if (view.get('flowPadding')) {
123
+ l = SC.clone(view.get('flowPadding'));
124
+ var tmp = l.left;
125
+ l.left = l.top;
126
+ l.top = tmp;
127
+
128
+ tmp = l.right;
129
+ l.right = l.bottom;
130
+ l.bottom = tmp;
131
+ view.set('flowPadding', l);
132
+ }
133
+ }
134
+
135
+ SC.RunLoop.begin();
136
+ view.set('layoutDirection', SC.LAYOUT_HORIZONTAL);
137
+ SC.RunLoop.end();
138
+
139
+ context.performNext(positions);
140
+
141
+ SC.RunLoop.begin();
142
+ view.set('layoutDirection', SC.LAYOUT_VERTICAL);
143
+ flipChildViews();
144
+ flipLayout();
145
+ SC.RunLoop.end();
146
+
147
+ context.performNext(verticalPositions);
148
+
149
+ SC.RunLoop.begin();
150
+ view.set('layoutDirection', SC.LAYOUT_HORIZONTAL);
151
+ flipChildViews();
152
+ flipLayout();
153
+ SC.RunLoop.end();
154
+
155
+ context.performNext(positions);
156
+ },
157
+
158
+ function final(view, positions, context) {
159
+ var cvs = view.get('childViews');
160
+ equals(cvs.length, positions.length, "PRECONDITION: number of child views is the same.");
161
+
162
+ for (var idx = 0; idx < positions.length; idx++) {
163
+ var cv = cvs[idx], expect = positions[idx], equal = YES;
164
+ for (var i in expect) {
165
+ if (expect.hasOwnProperty(i)) {
166
+ if (cv.get('layout')[i] !== expect[i]) {
167
+ equal = NO;
168
+ break;
169
+ }
170
+ }
171
+ }
172
+
173
+ ok(
174
+ equal,
175
+ "Actual: " +
176
+ str(cv.get('layout')) + "; expected: " +
177
+ str(expect) + "; canWrap: " + view.get('canWrap') + "; " +
178
+ "orientation: " + view.get('layoutDirection') + "; " +
179
+ "layout: " + str(view.get('layout'))
180
+ );
181
+ }
182
+ }
183
+ ];
184
+
185
+ function checkPositions(view, positions) {
186
+ var context = {
187
+ position: 0,
188
+ performNext: function(positions) {
189
+ var next = checkSteps[this.position];
190
+ this.position++;
191
+ next(view, positions, this);
192
+ this.position--;
193
+ }
194
+ };
195
+
196
+ context.performNext(positions);
197
+ }
198
+
199
+
200
+
201
+ module("FlowedLayout");
202
+
203
+ test("Basic flow", function() {
204
+ var view = SC.View.create(SC.FlowedLayout, {
205
+ childViews: 'a b c'.w(),
206
+
207
+ a: SC.View.create({
208
+ layout: { width: 100, height: 100 }
209
+ }),
210
+
211
+ b: SC.View.create({
212
+ layout: { width: 300, height: 100 }
213
+ }),
214
+
215
+ c: SC.View.create({
216
+ layout: { width: 200, height: 100 }
217
+ })
218
+ });
219
+
220
+ var expect = {
221
+ wrap: {
222
+ 400: [
223
+ { left: 0, top: 0, width: 100, height: 100 },
224
+ { left: 100, top: 0, width: 300, height: 100 },
225
+ { left: 0, top: 100, width: 200, height: 100 }
226
+ ],
227
+ 600: [
228
+ { left: 0, top: 0, width: 100, height: 100 },
229
+ { left: 100, top: 0, width: 300, height: 100 },
230
+ { left: 400, top: 0, width: 200, height: 100 }
231
+ ]
232
+ },
233
+
234
+ noWrap: {
235
+ 400: [
236
+ { left: 0, top: 0, width: 100, height: 100 },
237
+ { left: 100, top: 0, width: 300, height: 100 },
238
+ { left: 400, top: 0, width: 200, height: 100 }
239
+ ],
240
+ 600: [
241
+ { left: 0, top: 0, width: 100, height: 100 },
242
+ { left: 100, top: 0, width: 300, height: 100 },
243
+ { left: 400, top: 0, width: 200, height: 100 }
244
+ ]
245
+ }
246
+ };
247
+
248
+ checkPositions(view, expect);
249
+ });
250
+
251
+ module("FlowedLayout -- Alignment");
252
+ test("Align center", function() {
253
+ var view = SC.View.create(SC.FlowedLayout, {
254
+ align: SC.ALIGN_LEFT,
255
+
256
+ childViews: 'a b c'.w(),
257
+
258
+ a: SC.View.create({
259
+ layout: { width: 100, height: 100 }
260
+ }),
261
+
262
+ b: SC.View.create({
263
+ layout: { width: 300, height: 100 }
264
+ }),
265
+
266
+ c: SC.View.create({
267
+ layout: { width: 200, height: 100 }
268
+ })
269
+ });
270
+
271
+ var expect = {
272
+ wrap: {
273
+ 400: [
274
+ { left: 0, top: 0, width: 100, height: 100 },
275
+ { left: 100, top: 0, width: 300, height: 100 },
276
+ { left: 0, top: 100, width: 200, height: 100 }
277
+ ],
278
+ 600: [
279
+ { left: 0, top: 0, width: 100, height: 100 },
280
+ { left: 100, top: 0, width: 300, height: 100 },
281
+ { left: 400, top: 0, width: 200, height: 100 }
282
+ ]
283
+ },
284
+
285
+ noWrap: {
286
+ 400: [
287
+ { left: 0, top: 0, width: 100, height: 100 },
288
+ { left: 100, top: 0, width: 300, height: 100 },
289
+ { left: 400, top: 0, width: 200, height: 100 }
290
+ ],
291
+ 600: [
292
+ { left: 0, top: 0, width: 100, height: 100 },
293
+ { left: 100, top: 0, width: 300, height: 100 },
294
+ { left: 400, top: 0, width: 200, height: 100 }
295
+ ]
296
+ }
297
+ };
298
+
299
+ checkPositions(view, expect);
300
+
301
+ SC.RunLoop.begin();
302
+ view.set('align', SC.ALIGN_CENTER);
303
+ SC.RunLoop.end();
304
+
305
+ expect.wrap['400'][2].left = 100;
306
+
307
+ expect.noWrap['400'][0].left = -100;
308
+ expect.noWrap['400'][1].left = 0;
309
+ expect.noWrap['400'][2].left = 300;
310
+
311
+ checkPositions(view, expect);
312
+ });
313
+
314
+ test("Align right", function() {
315
+ var view = SC.View.create(SC.FlowedLayout, {
316
+ align: SC.ALIGN_LEFT,
317
+
318
+ childViews: 'a b c'.w(),
319
+
320
+ a: SC.View.create({
321
+ layout: { width: 100, height: 100 }
322
+ }),
323
+
324
+ b: SC.View.create({
325
+ layout: { width: 300, height: 100 }
326
+ }),
327
+
328
+ c: SC.View.create({
329
+ layout: { width: 200, height: 100 }
330
+ })
331
+ });
332
+
333
+ var expect = {
334
+ wrap: {
335
+ 400: [
336
+ { left: 0, top: 0, width: 100, height: 100 },
337
+ { left: 100, top: 0, width: 300, height: 100 },
338
+ { left: 0, top: 100, width: 200, height: 100 }
339
+ ],
340
+ 600: [
341
+ { left: 0, top: 0, width: 100, height: 100 },
342
+ { left: 100, top: 0, width: 300, height: 100 },
343
+ { left: 400, top: 0, width: 200, height: 100 }
344
+ ]
345
+ },
346
+
347
+ noWrap: {
348
+ 400: [
349
+ { left: 0, top: 0, width: 100, height: 100 },
350
+ { left: 100, top: 0, width: 300, height: 100 },
351
+ { left: 400, top: 0, width: 200, height: 100 }
352
+ ],
353
+ 600: [
354
+ { left: 0, top: 0, width: 100, height: 100 },
355
+ { left: 100, top: 0, width: 300, height: 100 },
356
+ { left: 400, top: 0, width: 200, height: 100 }
357
+ ]
358
+ }
359
+ };
360
+
361
+ checkPositions(view, expect);
362
+
363
+ SC.RunLoop.begin();
364
+ view.set('align', SC.ALIGN_RIGHT);
365
+ SC.RunLoop.end();
366
+
367
+ expect.wrap['400'][2].left = 200;
368
+
369
+ expect.noWrap['400'][0].left = -200;
370
+ expect.noWrap['400'][1].left = -100;
371
+ expect.noWrap['400'][2].left = 200;
372
+
373
+ checkPositions(view, expect);
374
+ });
375
+
376
+ test("Align justify", function() {
377
+ var view = SC.View.create(SC.FlowedLayout, {
378
+ align: SC.ALIGN_LEFT,
379
+
380
+ childViews: 'a b c'.w(),
381
+
382
+ a: SC.View.create({
383
+ layout: { width: 100, height: 100 }
384
+ }),
385
+
386
+ b: SC.View.create({
387
+ layout: { width: 200, height: 100 }
388
+ }),
389
+
390
+ c: SC.View.create({
391
+ layout: { width: 200, height: 100 }
392
+ })
393
+ });
394
+
395
+ var expect = {
396
+ wrap: {
397
+ 400: [
398
+ { left: 0, top: 0, width: 100, height: 100 },
399
+ { left: 100, top: 0, width: 200, height: 100 },
400
+ { left: 0, top: 100, width: 200, height: 100 }
401
+ ],
402
+ 600: [
403
+ { left: 0, top: 0, width: 100, height: 100 },
404
+ { left: 100, top: 0, width: 200, height: 100 },
405
+ { left: 300, top: 0, width: 200, height: 100 }
406
+ ]
407
+ },
408
+
409
+ noWrap: {
410
+ 400: [
411
+ { left: 0, top: 0, width: 100, height: 100 },
412
+ { left: 100, top: 0, width: 200, height: 100 },
413
+ { left: 300, top: 0, width: 200, height: 100 }
414
+ ],
415
+ 600: [
416
+ { left: 0, top: 0, width: 100, height: 100 },
417
+ { left: 100, top: 0, width: 200, height: 100 },
418
+ { left: 300, top: 0, width: 200, height: 100 }
419
+ ]
420
+ }
421
+ };
422
+
423
+ checkPositions(view, expect);
424
+
425
+ SC.RunLoop.begin();
426
+ view.set('align', SC.ALIGN_JUSTIFY);
427
+ SC.RunLoop.end();
428
+
429
+ expect.wrap['400'][1].left = 200;
430
+
431
+ expect.wrap['600'][1].left = 150;
432
+ expect.wrap['600'][2].left = 400;
433
+
434
+ expect.noWrap['600'][1].left = 150;
435
+ expect.noWrap['600'][2].left = 400;
436
+
437
+ checkPositions(view, expect);
438
+ });
439
+
440
+ module("FlowedLayout - Flags");
441
+
442
+ test("flowPadding", function() {
443
+ var view = SC.View.create(SC.FlowedLayout, {
444
+ align: SC.ALIGN_LEFT,
445
+
446
+ childViews: 'a b c'.w(),
447
+
448
+ a: SC.View.create({
449
+ layout: { width: 100, height: 100 }
450
+ }),
451
+
452
+ b: SC.View.create({
453
+ layout: { width: 200, height: 100 }
454
+ }),
455
+
456
+ c: SC.View.create({
457
+ layout: { width: 200, height: 100 }
458
+ })
459
+ });
460
+
461
+ var expect = {
462
+ wrap: {
463
+ 400: [
464
+ { left: 0, top: 0, width: 100, height: 100 },
465
+ { left: 100, top: 0, width: 200, height: 100 },
466
+ { left: 0, top: 100, width: 200, height: 100 }
467
+ ],
468
+ 600: [
469
+ { left: 0, top: 0, width: 100, height: 100 },
470
+ { left: 100, top: 0, width: 200, height: 100 },
471
+ { left: 300, top: 0, width: 200, height: 100 }
472
+ ]
473
+ },
474
+
475
+ noWrap: {
476
+ 400: [
477
+ { left: 0, top: 0, width: 100, height: 100 },
478
+ { left: 100, top: 0, width: 200, height: 100 },
479
+ { left: 300, top: 0, width: 200, height: 100 }
480
+ ],
481
+ 600: [
482
+ { left: 0, top: 0, width: 100, height: 100 },
483
+ { left: 100, top: 0, width: 200, height: 100 },
484
+ { left: 300, top: 0, width: 200, height: 100 }
485
+ ]
486
+ }
487
+ };
488
+
489
+ checkPositions(view, expect);
490
+
491
+ SC.RunLoop.begin();
492
+ view.set('flowPadding', { left: 5, top: 8, right: 210, bottom: 0 });
493
+ SC.RunLoop.end();
494
+
495
+ expect.wrap[400][0].left = 5;
496
+ expect.wrap[400][0].top = 8;
497
+ expect.wrap[400][1].left = 5;
498
+ expect.wrap[400][1].top = 108;
499
+ expect.wrap[400][2].left = 5;
500
+ expect.wrap[400][2].top = 208;
501
+
502
+ expect.wrap[600][0].left = 5;
503
+ expect.wrap[600][0].top = 8;
504
+ expect.wrap[600][1].left = 105;
505
+ expect.wrap[600][1].top = 8;
506
+ expect.wrap[600][2].left = 5;
507
+ expect.wrap[600][2].top = 108;
508
+
509
+ expect.noWrap[400][0].left = 5;
510
+ expect.noWrap[400][0].top = 8;
511
+ expect.noWrap[400][1].left = 105;
512
+ expect.noWrap[400][1].top = 8;
513
+ expect.noWrap[400][2].left = 305;
514
+ expect.noWrap[400][2].top = 8;
515
+
516
+ expect.noWrap[600] = expect.noWrap[400];
517
+
518
+ checkPositions(view, expect);
519
+
520
+ });
521
+
522
+ test("FlowedLayout - defaultFlowSpacing", function() {
523
+ var view = SC.View.create(SC.FlowedLayout, {
524
+ align: SC.ALIGN_LEFT,
525
+
526
+ childViews: 'a b c'.w(),
527
+
528
+ a: SC.View.create({
529
+ layout: { width: 100, height: 100 }
530
+ }),
531
+
532
+ b: SC.View.create({
533
+ layout: { width: 200, height: 100 }
534
+ }),
535
+
536
+ c: SC.View.create({
537
+ layout: { width: 200, height: 100 }
538
+ })
539
+ });
540
+
541
+ var expect = {
542
+ wrap: {
543
+ 400: [
544
+ { left: 0, top: 0, width: 100, height: 100 },
545
+ { left: 100, top: 0, width: 200, height: 100 },
546
+ { left: 0, top: 100, width: 200, height: 100 }
547
+ ],
548
+ 600: [
549
+ { left: 0, top: 0, width: 100, height: 100 },
550
+ { left: 100, top: 0, width: 200, height: 100 },
551
+ { left: 300, top: 0, width: 200, height: 100 }
552
+ ]
553
+ },
554
+
555
+ noWrap: {
556
+ 400: [
557
+ { left: 0, top: 0, width: 100, height: 100 },
558
+ { left: 100, top: 0, width: 200, height: 100 },
559
+ { left: 300, top: 0, width: 200, height: 100 }
560
+ ],
561
+ 600: [
562
+ { left: 0, top: 0, width: 100, height: 100 },
563
+ { left: 100, top: 0, width: 200, height: 100 },
564
+ { left: 300, top: 0, width: 200, height: 100 }
565
+ ]
566
+ }
567
+ };
568
+
569
+ checkPositions(view, expect);
570
+
571
+ SC.RunLoop.begin();
572
+ view.set('defaultFlowSpacing', 5);
573
+ SC.RunLoop.end();
574
+
575
+ expect.wrap[400][0].left = 5;
576
+ expect.wrap[400][0].top = 5;
577
+ expect.wrap[400][1].left = 115;
578
+ expect.wrap[400][1].top = 5;
579
+ expect.wrap[400][2].left = 5;
580
+ expect.wrap[400][2].top = 115;
581
+
582
+ expect.wrap[600][0].left = 5;
583
+ expect.wrap[600][0].top = 5;
584
+ expect.wrap[600][1].left = 115;
585
+ expect.wrap[600][1].top = 5;
586
+ expect.wrap[600][2].left = 325;
587
+ expect.wrap[600][2].top = 5;
588
+
589
+ expect.noWrap[600] = expect.noWrap[400] = expect.wrap[600];
590
+
591
+ checkPositions(view, expect);
592
+ });
593
+
594
+ module("FlowedLayout - Child View Flags");
595
+
596
+ test("startsNewRow", function() {
597
+ var view = SC.View.create(SC.FlowedLayout, {
598
+ align: SC.ALIGN_LEFT,
599
+
600
+ childViews: 'a b c'.w(),
601
+
602
+ a: SC.View.create({
603
+ layout: { width: 100, height: 100 }
604
+ }),
605
+
606
+ b: SC.View.create({
607
+ layout: { width: 200, height: 100 }
608
+ }),
609
+
610
+ c: SC.View.create({
611
+ layout: { width: 200, height: 100 }
612
+ })
613
+ });
614
+
615
+ var expect = {
616
+ wrap: {
617
+ 400: [
618
+ { left: 0, top: 0, width: 100, height: 100 },
619
+ { left: 100, top: 0, width: 200, height: 100 },
620
+ { left: 0, top: 100, width: 200, height: 100 }
621
+ ],
622
+ 600: [
623
+ { left: 0, top: 0, width: 100, height: 100 },
624
+ { left: 100, top: 0, width: 200, height: 100 },
625
+ { left: 300, top: 0, width: 200, height: 100 }
626
+ ]
627
+ },
628
+
629
+ noWrap: {
630
+ 400: [
631
+ { left: 0, top: 0, width: 100, height: 100 },
632
+ { left: 100, top: 0, width: 200, height: 100 },
633
+ { left: 300, top: 0, width: 200, height: 100 }
634
+ ],
635
+ 600: [
636
+ { left: 0, top: 0, width: 100, height: 100 },
637
+ { left: 100, top: 0, width: 200, height: 100 },
638
+ { left: 300, top: 0, width: 200, height: 100 }
639
+ ]
640
+ }
641
+ };
642
+
643
+ checkPositions(view, expect);
644
+
645
+ SC.RunLoop.begin();
646
+ view.childViews[1].set('startsNewRow', YES);
647
+ SC.RunLoop.end();
648
+
649
+ expect.wrap[400][1].top = 100;
650
+ expect.wrap[400][1].left = 0;
651
+
652
+ expect.wrap[400][2].left = 200;
653
+ expect.wrap[400][2].top = 100;
654
+
655
+ expect.wrap[600] = expect.wrap[400];
656
+ expect.noWrap = expect.wrap;
657
+
658
+ checkPositions(view, expect);
659
+
660
+ });
661
+
662
+ test("flowSpacing", function() {
663
+ var view = SC.View.create(SC.FlowedLayout, {
664
+ align: SC.ALIGN_LEFT,
665
+
666
+ childViews: 'a b c'.w(),
667
+
668
+ a: SC.View.create({
669
+ layout: { width: 100, height: 100 }
670
+ }),
671
+
672
+ b: SC.View.create({
673
+ layout: { width: 200, height: 100 }
674
+ }),
675
+
676
+ c: SC.View.create({
677
+ layout: { width: 200, height: 100 }
678
+ })
679
+ });
680
+
681
+ var expect = {
682
+ wrap: {
683
+ 400: [
684
+ { left: 0, top: 0, width: 100, height: 100 },
685
+ { left: 100, top: 0, width: 200, height: 100 },
686
+ { left: 0, top: 100, width: 200, height: 100 }
687
+ ],
688
+ 600: [
689
+ { left: 0, top: 0, width: 100, height: 100 },
690
+ { left: 100, top: 0, width: 200, height: 100 },
691
+ { left: 300, top: 0, width: 200, height: 100 }
692
+ ]
693
+ },
694
+
695
+ noWrap: {
696
+ 400: [
697
+ { left: 0, top: 0, width: 100, height: 100 },
698
+ { left: 100, top: 0, width: 200, height: 100 },
699
+ { left: 300, top: 0, width: 200, height: 100 }
700
+ ],
701
+ 600: [
702
+ { left: 0, top: 0, width: 100, height: 100 },
703
+ { left: 100, top: 0, width: 200, height: 100 },
704
+ { left: 300, top: 0, width: 200, height: 100 }
705
+ ]
706
+ }
707
+ };
708
+
709
+ checkPositions(view, expect);
710
+
711
+ SC.RunLoop.begin();
712
+ view.childViews[1].set('flowSpacing', { left: 20, top: 20, bottom: 20, right: 20 });
713
+ SC.RunLoop.end();
714
+
715
+ expect.wrap[400][1].left = 120;
716
+ expect.wrap[400][1].top = 20;
717
+ expect.wrap[400][2].top = 140;
718
+
719
+ expect.wrap[600][1].left = 120;
720
+ expect.wrap[600][1].top = 20;
721
+ expect.wrap[600][2].left = 340;
722
+
723
+ // because wrap is off, it should look like the results for wrapping 600 which,
724
+ // due to its width, doesn't wrap either.
725
+ expect.noWrap[400] = expect.noWrap[600] = expect.wrap[600];
726
+
727
+ checkPositions(view, expect);
728
+
729
+ });
730
+
731
+ test("fillHeight", function() {
732
+ var view = SC.View.create(SC.FlowedLayout, {
733
+ align: SC.ALIGN_LEFT,
734
+
735
+ childViews: 'a b c'.w(),
736
+
737
+ a: SC.View.create({
738
+ layout: { width: 100, height: 100 }
739
+ }),
740
+
741
+ b: SC.View.create({
742
+ layout: { width: 200, height: 50 }
743
+ }),
744
+
745
+ c: SC.View.create({
746
+ layout: { width: 200, height: 100 }
747
+ })
748
+ });
749
+
750
+ var expect = {
751
+ wrap: {
752
+ 400: [
753
+ { left: 0, top: 0, width: 100, height: 100 },
754
+ { left: 100, top: 0, width: 200, height: 50 },
755
+ { left: 0, top: 100, width: 200, height: 100 }
756
+ ],
757
+ 600: [
758
+ { left: 0, top: 0, width: 100, height: 100 },
759
+ { left: 100, top: 0, width: 200, height: 50 },
760
+ { left: 300, top: 0, width: 200, height: 100 }
761
+ ]
762
+ },
763
+
764
+ noWrap: {
765
+ 400: [
766
+ { left: 0, top: 0, width: 100, height: 100 },
767
+ { left: 100, top: 0, width: 200, height: 50 },
768
+ { left: 300, top: 0, width: 200, height: 100 }
769
+ ],
770
+ 600: [
771
+ { left: 0, top: 0, width: 100, height: 100 },
772
+ { left: 100, top: 0, width: 200, height: 50 },
773
+ { left: 300, top: 0, width: 200, height: 100 }
774
+ ]
775
+ }
776
+ };
777
+
778
+ checkPositions(view, expect);
779
+
780
+ SC.RunLoop.begin();
781
+ view.childViews[1].set('fillHeight', YES);
782
+ SC.RunLoop.end();
783
+
784
+ expect.wrap[400][1].height = 100;
785
+ expect.wrap[600][1].height = 100;
786
+ expect.noWrap[400][1].height = 100;
787
+ expect.noWrap[600][1].height = 100;
788
+
789
+ checkPositions(view, expect);
790
+
791
+ });
792
+
793
+
794
+ test("isSpacer", function() {
795
+ var view = SC.View.create(SC.FlowedLayout, {
796
+ align: SC.ALIGN_LEFT,
797
+
798
+ childViews: 'a b c'.w(),
799
+
800
+ a: SC.View.create({
801
+ layout: { width: 100, height: 100 }
802
+ }),
803
+
804
+ b: SC.View.create({
805
+ layout: { width: 200, height: 100 }
806
+ }),
807
+
808
+ c: SC.View.create({
809
+ layout: { width: 200, height: 100 }
810
+ })
811
+ });
812
+
813
+ var expect = {
814
+ wrap: {
815
+ 400: [
816
+ { left: 0, top: 0, width: 100, height: 100 },
817
+ { left: 100, top: 0, width: 200, height: 100 },
818
+ { left: 0, top: 100, width: 200, height: 100 }
819
+ ],
820
+ 600: [
821
+ { left: 0, top: 0, width: 100, height: 100 },
822
+ { left: 100, top: 0, width: 200, height: 100 },
823
+ { left: 300, top: 0, width: 200, height: 100 }
824
+ ]
825
+ },
826
+
827
+ noWrap: {
828
+ 400: [
829
+ { left: 0, top: 0, width: 100, height: 100 },
830
+ { left: 100, top: 0, width: 200, height: 100 },
831
+ { left: 300, top: 0, width: 200, height: 100 }
832
+ ],
833
+ 600: [
834
+ { left: 0, top: 0, width: 100, height: 100 },
835
+ { left: 100, top: 0, width: 200, height: 100 },
836
+ { left: 300, top: 0, width: 200, height: 100 }
837
+ ]
838
+ }
839
+ };
840
+
841
+ checkPositions(view, expect);
842
+
843
+ SC.RunLoop.begin();
844
+ view.childViews[1].set('isSpacer', YES);
845
+ SC.RunLoop.end();
846
+
847
+ expect.wrap[400][1].width = 100;
848
+ expect.wrap[400][2].top = 0;
849
+ expect.wrap[400][2].left = 200;
850
+
851
+ expect.wrap[600][1].width = 300;
852
+ expect.wrap[600][2].left = 400;
853
+ expect.noWrap[400] = expect.wrap[400];
854
+ expect.noWrap[600] = expect.wrap[600];
855
+
856
+ checkPositions(view, expect);
857
+
858
+ });
859
+
860
+ test("undefined and null can be passed for both defaultFlowSpacing and child's flowSpacing", function() {
861
+ var view = SC.View.create(SC.FlowedLayout, {
862
+ childViews: 'a b c'.w(),
863
+
864
+ a: SC.View.create({
865
+ layout: { width: 100, height: 100 }
866
+ }),
867
+
868
+ b: SC.View.create({
869
+ layout: { width: 300, height: 100 }
870
+ }),
871
+
872
+ c: SC.View.create({
873
+ layout: { width: 200, height: 100 }
874
+ })
875
+ });
876
+
877
+ var expect = {
878
+ wrap: {
879
+ 400: [
880
+ { left: 0, top: 0, width: 100, height: 100 },
881
+ { left: 100, top: 0, width: 300, height: 100 },
882
+ { left: 0, top: 100, width: 200, height: 100 }
883
+ ],
884
+ 600: [
885
+ { left: 0, top: 0, width: 100, height: 100 },
886
+ { left: 100, top: 0, width: 300, height: 100 },
887
+ { left: 400, top: 0, width: 200, height: 100 }
888
+ ]
889
+ },
890
+
891
+ noWrap: {
892
+ 400: [
893
+ { left: 0, top: 0, width: 100, height: 100 },
894
+ { left: 100, top: 0, width: 300, height: 100 },
895
+ { left: 400, top: 0, width: 200, height: 100 }
896
+ ],
897
+ 600: [
898
+ { left: 0, top: 0, width: 100, height: 100 },
899
+ { left: 100, top: 0, width: 300, height: 100 },
900
+ { left: 400, top: 0, width: 200, height: 100 }
901
+ ]
902
+ }
903
+ };
904
+
905
+ checkPositions(view, expect);
906
+
907
+ view.set('defaultFlowSpacing', undefined);
908
+
909
+ checkPositions(view, expect);
910
+
911
+ });
912
+