sproutit-sproutcore 1.0.0.20090416161445 → 1.0.0.20090720093355

Sign up to get free protection for your applications and to get access to all the features.
Files changed (754) hide show
  1. data/Buildfile +4 -2
  2. data/frameworks/sproutcore/Buildfile +3 -2
  3. data/frameworks/sproutcore/README +2 -1
  4. data/frameworks/sproutcore/apps/docs/core.js +27 -0
  5. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
  6. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
  7. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +14378 -0
  8. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
  9. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image11.png +0 -0
  10. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image13.png +0 -0
  11. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
  12. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image8.png +0 -0
  13. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -0
  14. data/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +9 -0
  15. data/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +22 -0
  16. data/frameworks/sproutcore/apps/{sc_jsdoc → docs}/english.lproj/strings.js +7 -7
  17. data/frameworks/sproutcore/apps/docs/main.js +30 -0
  18. data/frameworks/sproutcore/apps/tests/controllers/detail.js +16 -0
  19. data/frameworks/sproutcore/apps/tests/controllers/source.js +29 -0
  20. data/frameworks/sproutcore/apps/tests/controllers/target.js +26 -0
  21. data/frameworks/sproutcore/apps/tests/controllers/targets.js +65 -26
  22. data/frameworks/sproutcore/apps/tests/controllers/tests.js +14 -19
  23. data/frameworks/sproutcore/apps/tests/core.js +114 -16
  24. data/frameworks/sproutcore/apps/tests/data_source.js +96 -0
  25. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +22 -2
  26. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +168 -22
  27. data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +14 -5
  28. data/frameworks/sproutcore/apps/tests/fixtures/target.js +81 -37
  29. data/frameworks/sproutcore/apps/tests/fixtures/test.js +38 -37
  30. data/frameworks/sproutcore/apps/tests/main.js +9 -20
  31. data/frameworks/sproutcore/apps/tests/models/target.js +74 -31
  32. data/frameworks/sproutcore/apps/tests/models/test.js +30 -2
  33. data/frameworks/sproutcore/{frameworks/desktop/mixins/collection_item.js → apps/tests/states/no_targets.js} +16 -12
  34. data/frameworks/sproutcore/apps/tests/states/ready.js +56 -0
  35. data/frameworks/sproutcore/apps/tests/states/ready_detail.js +41 -0
  36. data/frameworks/sproutcore/apps/tests/states/ready_empty.js +48 -0
  37. data/frameworks/sproutcore/apps/tests/states/ready_list.js +41 -0
  38. data/frameworks/sproutcore/apps/tests/states/ready_loading.js +44 -0
  39. data/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +31 -0
  40. data/frameworks/sproutcore/apps/tests/states/start.js +39 -0
  41. data/frameworks/sproutcore/apps/tests/tests/controllers/{test.js → detail.js} +3 -3
  42. data/frameworks/sproutcore/apps/tests/tests/controllers/source.js +15 -0
  43. data/frameworks/sproutcore/apps/tests/tests/controllers/target.js +15 -0
  44. data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +3 -3
  45. data/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +15 -0
  46. data/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +26 -0
  47. data/frameworks/sproutcore/design/CollectionView State Charts.graffle +4848 -0
  48. data/frameworks/sproutcore/design/Design Charts.graffle +8788 -6375
  49. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Preview.pdf +0 -0
  50. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Thumbnail.tiff +0 -0
  51. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/data.plist +1452 -0
  52. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/image8.png +0 -0
  53. data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Preview.pdf +0 -0
  54. data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Thumbnail.tiff +0 -0
  55. data/frameworks/sproutcore/design/TestRunner Design.graffle/data.plist +24187 -0
  56. data/frameworks/sproutcore/design/TestRunner Design.graffle/image10.png +0 -0
  57. data/frameworks/sproutcore/design/TestRunner Design.graffle/image11.png +0 -0
  58. data/frameworks/sproutcore/design/TestRunner Design.graffle/image13.png +0 -0
  59. data/frameworks/sproutcore/design/TestRunner Design.graffle/image15.png +0 -0
  60. data/frameworks/sproutcore/design/TestRunner Design.graffle/image16.png +0 -0
  61. data/frameworks/sproutcore/design/TestRunner Design.graffle/image17.png +0 -0
  62. data/frameworks/sproutcore/design/TestRunner Design.graffle/image18.png +0 -0
  63. data/frameworks/sproutcore/design/TestRunner Design.graffle/image19.png +0 -0
  64. data/frameworks/sproutcore/design/TestRunner Design.graffle/image22.tiff +0 -0
  65. data/frameworks/sproutcore/design/TestRunner Design.graffle/image23.png +0 -0
  66. data/frameworks/sproutcore/design/TestRunner Design.graffle/image24.png +0 -0
  67. data/frameworks/sproutcore/design/TestRunner Design.graffle/image25.png +0 -0
  68. data/frameworks/sproutcore/design/TestRunner Design.graffle/image30.png +0 -0
  69. data/frameworks/sproutcore/design/TestRunner Design.graffle/image31.png +0 -0
  70. data/frameworks/sproutcore/design/TestRunner Design.graffle/image8.png +0 -0
  71. data/frameworks/sproutcore/design/TestRunner Design.graffle/image9.png +0 -0
  72. data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +2 -2
  73. data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +66 -49
  74. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +146 -31
  75. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures_with_queries.js +238 -0
  76. data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +27 -11
  77. data/frameworks/sproutcore/frameworks/datastore/models/record.js +163 -32
  78. data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +67 -5
  79. data/frameworks/sproutcore/frameworks/datastore/system/many_array.js +157 -0
  80. data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +202 -19
  81. data/frameworks/sproutcore/frameworks/datastore/system/query.js +929 -78
  82. data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +143 -5
  83. data/frameworks/sproutcore/frameworks/datastore/system/store.js +443 -125
  84. data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +38 -3
  85. data/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +94 -0
  86. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +30 -0
  87. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +238 -0
  88. data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +105 -16
  89. data/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +178 -0
  90. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +1 -1
  91. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +9 -8
  92. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +6 -6
  93. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +6 -6
  94. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +3 -3
  95. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +7 -7
  96. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +4 -4
  97. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +7 -7
  98. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +7 -7
  99. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare_records.js +126 -0
  100. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +165 -0
  101. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +82 -0
  102. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/find_all.js +362 -0
  103. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/parsing.js +170 -0
  104. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +43 -0
  105. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +60 -0
  106. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +67 -0
  107. data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +2 -13
  108. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +3 -4
  109. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +73 -0
  110. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +15 -0
  111. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +4 -2
  112. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +1 -1
  113. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +2 -2
  114. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +1 -1
  115. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +2 -2
  116. data/frameworks/sproutcore/frameworks/debug/core.js +60 -0
  117. data/frameworks/sproutcore/frameworks/deprecated/core.js +0 -2
  118. data/frameworks/sproutcore/frameworks/deprecated/server/server.js +0 -1
  119. data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +0 -2
  120. data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +0 -2
  121. data/frameworks/sproutcore/frameworks/deprecated/system/event.js +0 -2
  122. data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +0 -2
  123. data/frameworks/sproutcore/frameworks/deprecated/system/object.js +0 -2
  124. data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +0 -1
  125. data/frameworks/sproutcore/frameworks/deprecated/system/string.js +0 -2
  126. data/frameworks/sproutcore/frameworks/designer/coders/design.js +1 -2
  127. data/frameworks/sproutcore/frameworks/designer/coders/localization.js +1 -2
  128. data/frameworks/sproutcore/frameworks/designer/coders/object.js +1 -1
  129. data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +1 -1
  130. data/frameworks/sproutcore/frameworks/designer/ext/page.js +0 -2
  131. data/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -2
  132. data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +2 -3
  133. data/frameworks/sproutcore/frameworks/designer/views/designer.js +24 -8
  134. data/frameworks/sproutcore/frameworks/designer/views/label.js +1 -2
  135. data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +0 -2
  136. data/frameworks/sproutcore/frameworks/designer/views/tab.js +1 -2
  137. data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +2 -2
  138. data/frameworks/sproutcore/frameworks/desktop/english.lproj/drag.css +6 -0
  139. data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +63 -10
  140. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +5 -4
  141. data/frameworks/sproutcore/frameworks/desktop/english.lproj/modal.css +5 -0
  142. data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +1 -0
  143. data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +5 -0
  144. data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +1 -0
  145. data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +1 -1
  146. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +61 -0
  147. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +136 -79
  148. data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +55 -24
  149. data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +295 -147
  150. data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
  151. data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +1 -1
  152. data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +18 -20
  153. data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +2 -2
  154. data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +4 -4
  155. data/frameworks/sproutcore/frameworks/desktop/system/drag.js +337 -231
  156. data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +3 -3
  157. data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +1 -1
  158. data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +2 -2
  159. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +46 -1
  160. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +4 -2
  161. data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +5 -6
  162. data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +11 -11
  163. data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +11 -7
  164. data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +9 -9
  165. data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +19 -0
  166. data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +0 -1
  167. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +249 -0
  168. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +82 -0
  169. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +199 -0
  170. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +288 -0
  171. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +65 -0
  172. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +88 -0
  173. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +165 -0
  174. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +121 -0
  175. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +177 -0
  176. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +240 -0
  177. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +191 -0
  178. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +197 -39
  179. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +141 -0
  180. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +182 -0
  181. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +183 -0
  182. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +133 -0
  183. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +132 -0
  184. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +56 -0
  185. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +167 -0
  186. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +127 -0
  187. data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +30 -1
  188. data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +8 -8
  189. data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +9 -9
  190. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +45 -6
  191. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +2 -1
  192. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +17 -1
  193. data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +44 -29
  194. data/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +231 -0
  195. data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +1 -1
  196. data/frameworks/sproutcore/frameworks/desktop/views/button.js +15 -4
  197. data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +8 -1
  198. data/frameworks/sproutcore/frameworks/desktop/views/collection.js +1739 -1123
  199. data/frameworks/sproutcore/frameworks/desktop/views/form.js +0 -1
  200. data/frameworks/sproutcore/frameworks/desktop/views/grid.js +13 -11
  201. data/frameworks/sproutcore/frameworks/desktop/views/list.js +405 -571
  202. data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +211 -74
  203. data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +319 -169
  204. data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +57 -51
  205. data/frameworks/sproutcore/frameworks/desktop/views/progress.js +2 -2
  206. data/frameworks/sproutcore/frameworks/desktop/views/scene.js +150 -2
  207. data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +92 -50
  208. data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +86 -63
  209. data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +38 -22
  210. data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +51 -12
  211. data/frameworks/sproutcore/frameworks/desktop/views/slider.js +2 -0
  212. data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +17 -1087
  213. data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +3 -3
  214. data/frameworks/sproutcore/frameworks/desktop/views/split.js +35 -9
  215. data/frameworks/sproutcore/frameworks/desktop/views/stacked.js +101 -0
  216. data/frameworks/sproutcore/frameworks/desktop/views/tab.js +23 -22
  217. data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +1 -1
  218. data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +382 -363
  219. data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +7 -279
  220. data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +212 -310
  221. data/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +109 -0
  222. data/frameworks/sproutcore/frameworks/foundation/core.js +25 -0
  223. data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +30 -8
  224. data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +19 -4
  225. data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +219 -3
  226. data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +1 -0
  227. data/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +30 -0
  228. data/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +15 -0
  229. data/frameworks/sproutcore/frameworks/{desktop → foundation}/english.lproj/text_field.css +19 -3
  230. data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +6 -1
  231. data/frameworks/sproutcore/frameworks/foundation/license.js +19 -0
  232. data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +15 -7
  233. data/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +171 -0
  234. data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +5 -5
  235. data/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +462 -0
  236. data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +162 -84
  237. data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +33 -2
  238. data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +17 -3
  239. data/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +159 -0
  240. data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +49 -20
  241. data/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +887 -0
  242. data/frameworks/sproutcore/frameworks/foundation/system/application.js +36 -0
  243. data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +310 -62
  244. data/frameworks/sproutcore/frameworks/foundation/system/datetime.js +729 -0
  245. data/frameworks/sproutcore/frameworks/foundation/system/event.js +57 -21
  246. data/frameworks/sproutcore/frameworks/foundation/system/ready.js +11 -5
  247. data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +55 -16
  248. data/frameworks/sproutcore/frameworks/foundation/system/request.js +152 -27
  249. data/frameworks/sproutcore/frameworks/foundation/system/responder.js +120 -0
  250. data/frameworks/sproutcore/frameworks/foundation/system/responder_context.js +243 -0
  251. data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +29 -6
  252. data/frameworks/sproutcore/frameworks/foundation/system/routes.js +143 -102
  253. data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +9 -2
  254. data/frameworks/sproutcore/frameworks/foundation/system/utils.js +104 -9
  255. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +182 -0
  256. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +193 -0
  257. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +64 -0
  258. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/single_case.js +136 -0
  259. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/empty_case.js +82 -0
  260. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/multiple_case.js +111 -0
  261. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_case.js +193 -0
  262. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_enumerable_case.js +179 -0
  263. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +108 -0
  264. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +35 -0
  265. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +128 -0
  266. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +17 -0
  267. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +325 -0
  268. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +718 -0
  269. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +484 -0
  270. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +28 -28
  271. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +1 -1
  272. data/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +151 -0
  273. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +2 -2
  274. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +1 -1
  275. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +1 -1
  276. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +12 -12
  277. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +1 -1
  278. data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +52 -14
  279. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +27 -23
  280. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +1 -1
  281. data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +12 -10
  282. data/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +148 -0
  283. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +1 -1
  284. data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/methods.js +0 -0
  285. data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/ui.js +53 -1
  286. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +1 -0
  287. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +1 -1
  288. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +35 -0
  289. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +1 -1
  290. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisible.js +51 -0
  291. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +12 -1
  292. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +83 -3
  293. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +1 -1
  294. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +4 -0
  295. data/frameworks/sproutcore/frameworks/foundation/views/container.js +1 -1
  296. data/frameworks/sproutcore/frameworks/foundation/views/field.js +27 -16
  297. data/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -1
  298. data/frameworks/sproutcore/frameworks/foundation/views/label.js +16 -6
  299. data/frameworks/sproutcore/frameworks/{desktop → foundation}/views/text_field.js +39 -15
  300. data/frameworks/sproutcore/frameworks/foundation/views/view.js +328 -83
  301. data/frameworks/sproutcore/frameworks/runtime/README +1 -0
  302. data/frameworks/sproutcore/frameworks/runtime/core.js +110 -31
  303. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +238 -0
  304. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +33 -0
  305. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +121 -0
  306. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +34 -0
  307. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +50 -0
  308. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +46 -0
  309. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +371 -0
  310. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +100 -0
  311. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +49 -0
  312. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +94 -0
  313. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +50 -0
  314. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +47 -0
  315. data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +320 -110
  316. data/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +64 -0
  317. data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +44 -6
  318. data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +142 -77
  319. data/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +104 -0
  320. data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +298 -142
  321. data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +17 -11
  322. data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +55 -15
  323. data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +29 -5
  324. data/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +40 -0
  325. data/frameworks/sproutcore/frameworks/runtime/system/binding.js +39 -15
  326. data/frameworks/sproutcore/frameworks/runtime/system/index_set.js +1166 -0
  327. data/frameworks/sproutcore/frameworks/runtime/system/object.js +33 -15
  328. data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +201 -35
  329. data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +42 -15
  330. data/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +649 -0
  331. data/frameworks/sproutcore/frameworks/runtime/system/set.js +183 -54
  332. data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +20 -11
  333. data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +2 -2
  334. data/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +44 -0
  335. data/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +16 -0
  336. data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +1 -1
  337. data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +1 -1
  338. data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +5 -5
  339. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +57 -0
  340. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +21 -2
  341. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +249 -129
  342. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +11 -2
  343. data/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +55 -0
  344. data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +81 -6
  345. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +195 -0
  346. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +43 -0
  347. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +74 -0
  348. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +42 -0
  349. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +38 -0
  350. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +38 -0
  351. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +74 -0
  352. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +40 -0
  353. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +40 -0
  354. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +36 -0
  355. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +189 -0
  356. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +89 -0
  357. data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +1 -1
  358. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +59 -0
  359. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +75 -0
  360. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +117 -0
  361. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +110 -0
  362. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +65 -0
  363. data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +3 -3
  364. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/add.js +92 -0
  365. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +17 -0
  366. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +85 -0
  367. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/isEqual.js +60 -0
  368. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +87 -0
  369. data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +4 -25
  370. data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +39 -1
  371. data/frameworks/sproutcore/frameworks/testing/core.js +183 -0
  372. data/frameworks/sproutcore/frameworks/testing/english.lproj/runner.css +126 -0
  373. data/frameworks/sproutcore/frameworks/testing/extras.js +0 -26
  374. data/frameworks/sproutcore/frameworks/testing/qunit.js +33 -25
  375. data/frameworks/sproutcore/frameworks/testing/system/dump.js +205 -0
  376. data/frameworks/sproutcore/frameworks/testing/system/equiv.js +201 -0
  377. data/frameworks/sproutcore/frameworks/testing/system/plan.js +691 -0
  378. data/frameworks/sproutcore/frameworks/testing/system/runner.js +209 -0
  379. data/frameworks/sproutcore/frameworks/testing/system/suite.js +228 -0
  380. data/frameworks/sproutcore/frameworks/testing/utils.js +8 -1
  381. data/frameworks/sproutcore/lib/index.rhtml +4 -1
  382. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/10.png +0 -0
  383. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/100.png +0 -0
  384. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/102.png +0 -0
  385. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/110.png +0 -0
  386. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/120.png +0 -0
  387. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/127.png +0 -0
  388. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/18.png +0 -0
  389. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/19.png +0 -0
  390. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/2.png +0 -0
  391. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/24.png +0 -0
  392. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/26.png +0 -0
  393. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/27.png +0 -0
  394. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/28.png +0 -0
  395. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/29.png +0 -0
  396. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/30.png +0 -0
  397. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/31.png +0 -0
  398. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/33.png +0 -0
  399. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/37.png +0 -0
  400. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/41.png +0 -0
  401. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/99.png +0 -0
  402. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/10.png +0 -0
  403. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/100.png +0 -0
  404. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/102.png +0 -0
  405. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/110.png +0 -0
  406. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/120.png +0 -0
  407. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/127.png +0 -0
  408. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/18.png +0 -0
  409. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/19.png +0 -0
  410. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/2.png +0 -0
  411. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/24.png +0 -0
  412. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/26.png +0 -0
  413. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/27.png +0 -0
  414. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/28.png +0 -0
  415. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/29.png +0 -0
  416. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/30.png +0 -0
  417. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/31.png +0 -0
  418. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/33.png +0 -0
  419. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/37.png +0 -0
  420. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/41.png +0 -0
  421. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/99.png +0 -0
  422. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/10.png +0 -0
  423. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/100.png +0 -0
  424. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/102.png +0 -0
  425. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/110.png +0 -0
  426. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/120.png +0 -0
  427. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/127.png +0 -0
  428. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/18.png +0 -0
  429. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/19.png +0 -0
  430. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/2.png +0 -0
  431. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/24.png +0 -0
  432. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/26.png +0 -0
  433. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/27.png +0 -0
  434. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/28.png +0 -0
  435. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/29.png +0 -0
  436. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/30.png +0 -0
  437. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/31.png +0 -0
  438. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/33.png +0 -0
  439. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/37.png +0 -0
  440. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/41.png +0 -0
  441. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/99.png +0 -0
  442. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/10.png +0 -0
  443. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/18.png +0 -0
  444. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/19.png +0 -0
  445. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/2.png +0 -0
  446. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x-2.psd +0 -0
  447. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x.psd +0 -0
  448. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-sprite.psd +0 -0
  449. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-ysprite.psd +0 -0
  450. data/frameworks/sproutcore/themes/standard_theme/Source/shared-icons.psd +0 -0
  451. data/frameworks/sproutcore/themes/standard_theme/Source/sproutcore-logo.psd +0 -0
  452. data/frameworks/sproutcore/themes/standard_theme/Source/sticky-note.psd +0 -0
  453. data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +191 -193
  454. data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +11 -10
  455. data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +85 -4
  456. data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +15 -2
  457. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -0
  458. data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +0 -26
  459. data/frameworks/sproutcore/themes/standard_theme/english.lproj/list_item.css +30 -0
  460. data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +9 -6
  461. data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +20 -11
  462. data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +192 -54
  463. data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +56 -24
  464. data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +13 -7
  465. data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +1 -4
  466. data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -1
  467. data/lib/sproutcore/builders/minify.rb +2 -2
  468. data/lib/sproutcore/builders/test.rb +1 -1
  469. data/lib/sproutcore/buildfile.rb +1 -0
  470. data/lib/sproutcore/rack/dev.rb +1 -1
  471. data/lib/sproutcore/rack/filesystem.rb +265 -0
  472. data/lib/sproutcore/rack/proxy.rb +11 -3
  473. data/lib/sproutcore/rack/service.rb +11 -1
  474. data/lib/sproutcore/tools.rb +11 -1
  475. data/lib/sproutcore/tools/server.rb +6 -4
  476. data/vendor/jsdoc/README.txt +151 -0
  477. data/vendor/jsdoc/changes.txt +47 -0
  478. metadata +263 -308
  479. data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +0 -149
  480. data/frameworks/sproutcore/apps/sc_jsdoc/core.js +0 -16
  481. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +0 -17
  482. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +0 -99
  483. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
  484. data/frameworks/sproutcore/apps/sc_jsdoc/main.js +0 -27
  485. data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +0 -21
  486. data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +0 -209
  487. data/frameworks/sproutcore/apps/sc_qunit/core.js +0 -16
  488. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +0 -17
  489. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +0 -107
  490. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
  491. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +0 -15
  492. data/frameworks/sproutcore/apps/sc_qunit/main.js +0 -18
  493. data/frameworks/sproutcore/apps/sc_qunit/models/test.js +0 -24
  494. data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +0 -52
  495. data/frameworks/sproutcore/apps/tests/controllers/test.js +0 -20
  496. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
  497. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -83
  498. data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +0 -3
  499. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +0 -10
  500. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +0 -10
  501. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +0 -110
  502. data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +0 -156
  503. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +0 -118
  504. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +0 -268
  505. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +0 -433
  506. data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +0 -263
  507. data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +0 -25
  508. data/spec/buildtasks/manifest/spec_helper.rb +0 -35
  509. data/spec/buildtasks/target_spec.rb +0 -214
  510. data/spec/fixtures/builder_tests/Buildfile +0 -15
  511. data/spec/fixtures/builder_tests/apps/combine_test/a.js +0 -1
  512. data/spec/fixtures/builder_tests/apps/combine_test/b.js +0 -1
  513. data/spec/fixtures/builder_tests/apps/combine_test/c.js +0 -1
  514. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +0 -1
  515. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +0 -1
  516. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +0 -1
  517. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +0 -2
  518. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +0 -1
  519. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
  520. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
  521. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +0 -1
  522. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +0 -4
  523. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
  524. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
  525. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +0 -4
  526. data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +0 -1
  527. data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
  528. data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +0 -15
  529. data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +0 -4
  530. data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +0 -7
  531. data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +0 -3
  532. data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +0 -8
  533. data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +0 -9
  534. data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +0 -12
  535. data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +0 -1
  536. data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +0 -3
  537. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +0 -1
  538. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +0 -1
  539. data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +0 -4
  540. data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
  541. data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
  542. data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
  543. data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
  544. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
  545. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +0 -4
  546. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +0 -1
  547. data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
  548. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
  549. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +0 -1
  550. data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +0 -1
  551. data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
  552. data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
  553. data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +0 -1
  554. data/spec/fixtures/buildfiles/basic/Buildfile +0 -16
  555. data/spec/fixtures/buildfiles/basic/task_module.rake +0 -6
  556. data/spec/fixtures/buildfiles/installed/Buildfile +0 -7
  557. data/spec/fixtures/buildfiles/installed/Buildfile2 +0 -5
  558. data/spec/fixtures/buildfiles/project_test/Buildfile +0 -4
  559. data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +0 -2
  560. data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
  561. data/spec/fixtures/entry_for_project/Buildfile +0 -1
  562. data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
  563. data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
  564. data/spec/fixtures/find_targets/custom/Buildfile +0 -8
  565. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
  566. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
  567. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
  568. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
  569. data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +0 -5
  570. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
  571. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
  572. data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
  573. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
  574. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
  575. data/spec/fixtures/find_targets/nested/Buildfile +0 -8
  576. data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +0 -1
  577. data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
  578. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
  579. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
  580. data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
  581. data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
  582. data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
  583. data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
  584. data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
  585. data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
  586. data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
  587. data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
  588. data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
  589. data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
  590. data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
  591. data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
  592. data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
  593. data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
  594. data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
  595. data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
  596. data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
  597. data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
  598. data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
  599. data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
  600. data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
  601. data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
  602. data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
  603. data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
  604. data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
  605. data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
  606. data/spec/fixtures/ordered_entries/apps/no_requires/1.js +0 -1
  607. data/spec/fixtures/ordered_entries/apps/no_requires/B.js +0 -1
  608. data/spec/fixtures/ordered_entries/apps/no_requires/a.js +0 -1
  609. data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +0 -1
  610. data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +0 -1
  611. data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +0 -1
  612. data/spec/fixtures/ordered_entries/apps/no_requires/c.js +0 -1
  613. data/spec/fixtures/ordered_entries/apps/no_requires/core.js +0 -1
  614. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
  615. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
  616. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
  617. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
  618. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
  619. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
  620. data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +0 -1
  621. data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +0 -1
  622. data/spec/fixtures/ordered_entries/apps/with_requires/a.js +0 -2
  623. data/spec/fixtures/ordered_entries/apps/with_requires/b.js +0 -3
  624. data/spec/fixtures/ordered_entries/apps/with_requires/c.js +0 -2
  625. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +0 -2
  626. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +0 -2
  627. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +0 -2
  628. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +0 -1
  629. data/spec/fixtures/real_world/Buildfile +0 -12
  630. data/spec/fixtures/real_world/apps/account/README +0 -1
  631. data/spec/fixtures/real_world/apps/calendar/README +0 -1
  632. data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +0 -1
  633. data/spec/fixtures/real_world/apps/files/README +0 -1
  634. data/spec/fixtures/real_world/apps/mail/README +0 -1
  635. data/spec/fixtures/real_world/apps/mobile_photos/README +0 -1
  636. data/spec/fixtures/real_world/apps/photos/README +0 -1
  637. data/spec/fixtures/real_world/apps/uploader/README +0 -1
  638. data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
  639. data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
  640. data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
  641. data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +0 -26
  642. data/spec/fixtures/real_world/frameworks/sproutcore/README +0 -1
  643. data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
  644. data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
  645. data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
  646. data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
  647. data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
  648. data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
  649. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
  650. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +0 -4
  651. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +0 -1
  652. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
  653. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
  654. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +0 -1
  655. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
  656. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
  657. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +0 -4
  658. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +0 -1
  659. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +0 -1
  660. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
  661. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +0 -6
  662. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +0 -3
  663. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +0 -1
  664. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
  665. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +0 -1
  666. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
  667. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
  668. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
  669. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
  670. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
  671. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
  672. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
  673. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
  674. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
  675. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
  676. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
  677. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
  678. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +0 -1
  679. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
  680. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
  681. data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +0 -4
  682. data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +0 -1
  683. data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +0 -1
  684. data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
  685. data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +0 -6
  686. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
  687. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
  688. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
  689. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +0 -1
  690. data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
  691. data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +0 -1
  692. data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
  693. data/spec/fixtures/real_world/generators/sample_custom/templates/{filename}.js +0 -1
  694. data/spec/fixtures/recursive_project/Buildfile +0 -8
  695. data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
  696. data/spec/lib/builders/combine_spec.rb +0 -67
  697. data/spec/lib/builders/html_spec.rb +0 -577
  698. data/spec/lib/builders/javascript_spec.rb +0 -81
  699. data/spec/lib/builders/sass_spec.rb +0 -43
  700. data/spec/lib/builders/spec_helper.rb +0 -30
  701. data/spec/lib/builders/strings_spec.rb +0 -52
  702. data/spec/lib/builders/stylesheet_spec.rb +0 -63
  703. data/spec/lib/builders/test_index_spec.rb +0 -44
  704. data/spec/lib/builders/test_spec.rb +0 -135
  705. data/spec/lib/buildfile/config_for_spec.rb +0 -81
  706. data/spec/lib/buildfile/define_spec.rb +0 -59
  707. data/spec/lib/buildfile/dup_spec.rb +0 -65
  708. data/spec/lib/buildfile/invoke_spec.rb +0 -130
  709. data/spec/lib/buildfile/load_spec.rb +0 -49
  710. data/spec/lib/buildfile/task/dup_spec.rb +0 -55
  711. data/spec/lib/buildfile/task_defined_spec.rb +0 -17
  712. data/spec/lib/buildfile_commands/build_task_spec.rb +0 -19
  713. data/spec/lib/buildfile_commands/config_spec.rb +0 -97
  714. data/spec/lib/buildfile_commands/import_spec.rb +0 -17
  715. data/spec/lib/buildfile_commands/namespace_spec.rb +0 -18
  716. data/spec/lib/buildfile_commands/proxies_spec.rb +0 -38
  717. data/spec/lib/buildfile_commands/replace_task_spec.rb +0 -29
  718. data/spec/lib/buildfile_commands/task_spec.rb +0 -36
  719. data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +0 -26
  720. data/spec/lib/models/hash_struct/deep_clone_spec.rb +0 -27
  721. data/spec/lib/models/hash_struct/has_options_spec.rb +0 -32
  722. data/spec/lib/models/hash_struct/hash_spec.rb +0 -64
  723. data/spec/lib/models/hash_struct/merge_spec.rb +0 -26
  724. data/spec/lib/models/hash_struct/method_missing.rb +0 -41
  725. data/spec/lib/models/manifest/add_entry_spec.rb +0 -36
  726. data/spec/lib/models/manifest/add_transform_spec.rb +0 -90
  727. data/spec/lib/models/manifest/build_spec.rb +0 -78
  728. data/spec/lib/models/manifest/entry_for_spec.rb +0 -94
  729. data/spec/lib/models/manifest/find_entry.rb +0 -84
  730. data/spec/lib/models/manifest/prepare_spec.rb +0 -62
  731. data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +0 -31
  732. data/spec/lib/models/manifest_entry/prepare_spec.rb +0 -54
  733. data/spec/lib/models/project/add_target_spec.rb +0 -44
  734. data/spec/lib/models/project/buildfile_spec.rb +0 -35
  735. data/spec/lib/models/project/find_targets_for_spec.rb +0 -77
  736. data/spec/lib/models/project/load_nearest_project_spec.rb +0 -23
  737. data/spec/lib/models/project/target_for_spec.rb +0 -33
  738. data/spec/lib/models/project/targets_spec.rb +0 -62
  739. data/spec/lib/models/target/compute_build_number_spec.rb +0 -125
  740. data/spec/lib/models/target/config_spec.rb +0 -30
  741. data/spec/lib/models/target/expand_required_targets_spec.rb +0 -48
  742. data/spec/lib/models/target/installed_languages_spec.rb +0 -47
  743. data/spec/lib/models/target/lproj_for_spec.rb +0 -38
  744. data/spec/lib/models/target/manifest_for_spec.rb +0 -42
  745. data/spec/lib/models/target/parent_target_spec.rb +0 -21
  746. data/spec/lib/models/target/prepare_spec.rb +0 -53
  747. data/spec/lib/models/target/required_targets_spec.rb +0 -119
  748. data/spec/lib/models/target/target_for_spec.rb +0 -56
  749. data/spec/lib/tools/build_number_spec.rb +0 -28
  750. data/spec/lib/tools/gen_spec.rb +0 -207
  751. data/spec/lib/tools/tools_spec.rb +0 -78
  752. data/spec/spec_helper.rb +0 -138
  753. data/vendor/github_gem_lint.rb +0 -22
  754. data/vendor/yui-compressor/yuicompressor-2.4.2.jar +0 -0
@@ -5,12 +5,12 @@
5
5
  // License: Licened under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
8
- require('system/browser');
9
- require('system/event');
10
- require('system/cursor');
8
+ sc_require('system/browser');
9
+ sc_require('system/event');
10
+ sc_require('system/cursor');
11
+ sc_require('system/responder') ;
11
12
 
12
- require('mixins/responder') ;
13
- require('mixins/string') ;
13
+ sc_require('mixins/string') ;
14
14
 
15
15
  SC.viewKey = SC.guidKey + "_view" ;
16
16
 
@@ -69,6 +69,12 @@ SC.FULL_HEIGHT = { top: 0, bottom: 0 };
69
69
  */
70
70
  SC.ANCHOR_CENTER = { centerX: 0, centerY: 0 };
71
71
 
72
+ /**
73
+ Layout property for width, height
74
+ */
75
+
76
+ SC.LAYOUT_AUTO = 'auto';
77
+
72
78
  /** @private - custom array used for child views */
73
79
  SC.EMPTY_CHILD_VIEWS_ARRAY = [];
74
80
  SC.EMPTY_CHILD_VIEWS_ARRAY.needsClone = YES;
@@ -113,12 +119,11 @@ SC.EMPTY_CHILD_VIEWS_ARRAY.needsClone = YES;
113
119
  override this behavior with your own custom updating code, you can
114
120
  replace updateLayer() with your own implementation instead.
115
121
 
116
- @extends SC.Object
117
122
  @extends SC.Responder
118
123
  @extends SC.DelegateSupport
119
124
  @since SproutCore 1.0
120
125
  */
121
- SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
126
+ SC.View = SC.Responder.extend(SC.DelegateSupport,
122
127
  /** @scope SC.View.prototype */ {
123
128
 
124
129
  concatenatedProperties: 'outlets displayProperties layoutProperties classNames renderMixin didCreateLayerMixin willDestroyLayerMixin'.w(),
@@ -217,6 +222,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
217
222
  @property {Boolean}
218
223
  */
219
224
  isVisible: YES,
225
+ isVisibleBindingDefault: SC.Binding.bool(),
220
226
 
221
227
  /**
222
228
  YES only if the view and all of its parent views are currently visible
@@ -261,18 +267,31 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
261
267
  for(idx=0;idx<len;idx++) {
262
268
  childViews[idx].recomputeIsVisibleInWindow(cur);
263
269
  }
264
-
270
+
265
271
  // if we just became visible, update layer + layout if needed...
266
- if (cur && this.parentViewDidResize) this.parentViewDidResize();
272
+ if (cur) {
273
+ if (this.parentViewDidResize) this.parentViewDidResize();
274
+ this.set('layerNeedsUpdate', YES);
275
+ this.invokeOnce(this.updateLayerIfNeeded);
276
+
277
+ if (this.get('childViewsNeedLayout')) {
278
+ this.invokeOnce(this.layoutChildViewsIfNeeded);
279
+ }
280
+
281
+ // if we just became invisible, force an update to hide the layer
282
+ } else {
283
+ var that = this;
284
+ this.set('layerNeedsUpdate', YES);
285
+ this.invokeOnce(function() { that.updateLayerIfNeeded(YES); });
286
+ }
267
287
 
268
288
  // if we were firstResponder, resign firstResponder also if no longer
269
289
  // visible.
270
290
  if (!cur && this.get('isFirstResponder')) this.resignFirstResponder();
271
291
 
272
292
  }
273
-
274
293
  return this ;
275
- },
294
+ }.observes('isVisible'),
276
295
 
277
296
  // ..........................................................
278
297
  // CHILD VIEW SUPPORT
@@ -304,7 +323,6 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
304
323
  @returns {SC.View} the receiver
305
324
  */
306
325
  insertBefore: function(view, beforeView) {
307
-
308
326
  view.beginPropertyChanges(); // limit notifications
309
327
 
310
328
  // remove view from old parent if needed. Also notify views.
@@ -407,7 +425,6 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
407
425
  @returns {SC.View} the receiver
408
426
  */
409
427
  replaceChild: function(view, oldView) {
410
-
411
428
  // suspend notifications
412
429
  view.beginPropertyChanges();
413
430
  oldView.beginPropertyChanges();
@@ -423,6 +440,25 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
423
440
  return this;
424
441
  },
425
442
 
443
+ /**
444
+ Replaces the current array of child views with the new array of child
445
+ views.
446
+
447
+ @param {Array} views views you want to add
448
+ @returns {SC.View} receiver
449
+ */
450
+ replaceAllChildren: function(views) {
451
+ var len = views.get('length'), idx;
452
+
453
+ this.beginPropertyChanges();
454
+ this.destroyLayer().removeAllChildren();
455
+ for(idx=0;idx<len;idx++) this.appendChild(views.objectAt(idx));
456
+ this.replaceLayer();
457
+ this.endPropertyChanges();
458
+
459
+ return this ;
460
+ },
461
+
426
462
  /**
427
463
  Appends the specified view to the end of the receivers childViews array.
428
464
  This is equivalent to calling insertBefore(view, null);
@@ -499,7 +535,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
499
535
  $: function(sel) {
500
536
  var ret, layer = this.get('layer') ;
501
537
  // note: SC.$([]) returns an empty CoreQuery object. SC.$() would
502
- // return an object selecting hte document.
538
+ // return an object selecting the document.
503
539
  ret = !layer ? SC.$([]) : (sel === undefined) ? SC.$(layer) : SC.$(sel, layer) ;
504
540
  layer = null ; // avoid memory leak
505
541
  return ret ;
@@ -515,7 +551,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
515
551
  */
516
552
  containerLayer: function() {
517
553
  return this.get('layer') ;
518
- }.property('layer').cacheable(),
554
+ }.property('layer').cacheable(),
519
555
 
520
556
  /**
521
557
  The ID to use when trying to locate the layer in the DOM. If you do not
@@ -541,9 +577,11 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
541
577
  */
542
578
  findLayerInParentLayer: function(parentLayer) {
543
579
  var layerId = this.get('layerId') ;
580
+ var node, i, ilen,found, elem;
544
581
 
545
582
  // first, let's try the fast path...
546
- var elem = document.getElementById(layerId) ;
583
+ if(parentLayer.getElementById) elem = parentLayer.getElementById(layerId) ;
584
+ else elem = document.getElementById(layerId) ;
547
585
 
548
586
  // TODO: use code generation to only really do this check on IE
549
587
  if (SC.browser.msie && elem && elem.id !== layerId) elem = null ;
@@ -557,21 +595,25 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
557
595
  // if no element was found the fast way, search down the parentLayer for
558
596
  // the element. This code should not be invoked very often. Usually a
559
597
  // DOM element will be discovered by the first method above.
598
+ // This code uses a BFS algorithm as is expected to find the layer right
599
+ // below the parent.
560
600
  if (!elem) {
561
601
  elem = parentLayer.firstChild ;
562
- while (elem && (elem.id !== layerId)) {
563
- // try to get first child or next sibling if no children
564
- var next = elem.firstChild || elem.nextSibling ;
565
-
566
- // if no next sibling, then get next sibling of parent. Walk up
567
- // until we find parent with next sibling or find ourselves back at
568
- // the beginning.
569
- while (!next && elem && ((elem = elem.parentNode) !== parentLayer)) {
570
- next = elem.nextSibling ;
602
+ var q=[];
603
+ q.push(parentLayer);
604
+ while(q.length!==0){
605
+ node=q[0];
606
+ q.shift();
607
+ if(node.id==layerId){
608
+ found=true;
609
+ elem=node;
610
+ break;
611
+ }
612
+ for(i=0, ilen=node.childNodes.length; i<ilen; i++){
613
+ q.push(node.childNodes[i]);
571
614
  }
572
-
573
- elem = next ;
574
615
  }
616
+ if(!found) elem=null;
575
617
  }
576
618
 
577
619
  return elem;
@@ -579,10 +621,14 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
579
621
 
580
622
  /**
581
623
  This method is invoked whenever a display property changes. It will set
582
- the layerNeedsUpdate method to YES.
624
+ the layerNeedsUpdate method to YES. If you need to perform additional
625
+ setup whenever the display changes, you can override this method as well.
626
+
627
+ @returns {SC.View} receiver
583
628
  */
584
629
  displayDidChange: function() {
585
630
  this.set('layerNeedsUpdate', YES) ;
631
+ return this;
586
632
  },
587
633
 
588
634
  /**
@@ -603,7 +649,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
603
649
  _view_layerNeedsUpdateDidChange: function() {
604
650
  if (this.get('layerNeedsUpdate')) {
605
651
  this.invokeOnce(this.updateLayerIfNeeded) ;
606
- }
652
+ }
607
653
  }.observes('layerNeedsUpdate'),
608
654
 
609
655
  /**
@@ -627,10 +673,15 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
627
673
  updateLayerIfNeeded: function(isVisible) {
628
674
  if (!isVisible) isVisible = this.get('isVisibleInWindow') ;
629
675
  if (isVisible && this.get('layerNeedsUpdate')) {
630
- this.beginPropertyChanges() ;
631
- this.set('layerNeedsUpdate', NO) ;
632
- this.updateLayer() ;
633
- this.endPropertyChanges() ;
676
+ // only update a layer if it already exists
677
+ if (this.get('layer')) {
678
+ this.beginPropertyChanges() ;
679
+ this.set('layerNeedsUpdate', NO) ;
680
+ this.updateLayer() ;
681
+ this.endPropertyChanges() ;
682
+
683
+ // clear our layerNeedsUpdate flag so we can respond to changes later
684
+ } else this.set('layerNeedsUpdate', NO) ;
634
685
  }
635
686
  return this ;
636
687
  },
@@ -687,7 +738,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
687
738
 
688
739
  var context = this.renderContext(this.get('tagName')) ;
689
740
 
690
- // now prepare the contet like normal.
741
+ // now prepare the content like normal.
691
742
  this.prepareContext(context, YES) ;
692
743
  this.set('layer', context.element()) ;
693
744
 
@@ -711,7 +762,10 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
711
762
 
712
763
  var childViews = this.get('childViews') ;
713
764
  len = childViews.length ;
714
- for (idx=0; idx<len; ++idx) childViews[idx]._notifyDidCreateLayer() ;
765
+ for (idx=0; idx<len; ++idx) {
766
+ if (!childViews[idx]) continue;
767
+ childViews[idx]._notifyDidCreateLayer() ;
768
+ }
715
769
  },
716
770
 
717
771
  /**
@@ -746,6 +800,18 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
746
800
  return this ;
747
801
  },
748
802
 
803
+ /**
804
+ Destroys and recreates the current layer. This can be more efficient than
805
+ modifying individual child views.
806
+
807
+ @returns {SC.View} receiver
808
+ */
809
+ replaceLayer: function() {
810
+ this.destroyLayer();
811
+ this.set('layerLocationNeedsUpdate', YES) ;
812
+ this.invokeOnce(this.updateLayerLocationIfNeeded) ;
813
+ },
814
+
749
815
  /** @private -
750
816
  Invokes willDestroyLayer() on view and child views. Then sets layer to
751
817
  null for receiver.
@@ -783,15 +849,20 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
783
849
  // do some initial setup only needed at create time.
784
850
  if (firstTime) {
785
851
  // TODO: seems like things will break later if SC.guidFor(this) is used
852
+
786
853
  layerId = this.layerId ? this.get('layerId') : SC.guidFor(this) ;
787
854
  context.id(layerId).classNames(this.get('classNames'), YES) ;
788
855
  this.renderLayout(context, firstTime) ;
856
+ }else{
857
+ context.resetClassNames();
858
+ context.classNames(this.get('classNames'), YES);
789
859
  }
790
860
 
791
861
  // do some standard setup...
792
862
  if (this.get('isTextSelectable')) context.addClass('allow-select') ;
793
863
  if (!this.get('isEnabled')) context.addClass('disabled') ;
794
864
  if (!this.get('isVisible')) context.addClass('hidden') ;
865
+ if (this.get('isFirstResponder')) context.addClass('focus');
795
866
 
796
867
  bgcolor = this.get('backgroundColor');
797
868
  if (bgcolor) context.addStyle('backgroundColor', bgcolor);
@@ -821,6 +892,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
821
892
  var cv = this.get('childViews'), len = cv.length, idx, view ;
822
893
  for (idx=0; idx<len; ++idx) {
823
894
  view = cv[idx] ;
895
+ if (!view) continue;
824
896
  context = context.begin(view.get('tagName')) ;
825
897
  view.prepareContext(context, firstTime) ;
826
898
  context = context.end() ;
@@ -874,6 +946,14 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
874
946
  */
875
947
  classNames: ['sc-view'],
876
948
 
949
+ /**
950
+ Tool tip property that will be set to the title attribute on the HTML
951
+ rendered element.
952
+
953
+ @property {String}
954
+ */
955
+ toolTip: null,
956
+
877
957
  /**
878
958
  Determines if the user can select text within the view. Normally this is
879
959
  set to NO to disable text selection. You should set this to YES if you
@@ -894,7 +974,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
894
974
  @property {Array}
895
975
  @readOnly
896
976
  */
897
- displayProperties: [],
977
+ displayProperties: ['isFirstResponder', 'isVisible'],
898
978
 
899
979
  /**
900
980
  You can set this to an SC.Cursor instance; it's className will
@@ -981,7 +1061,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
981
1061
  var nextNode = (nextView) ? nextView.get('layer') : null ;
982
1062
 
983
1063
  // before we add to parent node, make sure that the nextNode exists...
984
- if (nextView && !nextNode) {
1064
+ if (nextView && (!nextNode || nextNode.parentNode!==parentNode)) {
985
1065
  nextView.updateLayerLocationIfNeeded() ;
986
1066
  nextNode = nextView.get('layer') ;
987
1067
  }
@@ -1007,9 +1087,98 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1007
1087
  The nextResponder is usually the parentView.
1008
1088
  */
1009
1089
  nextResponder: function() {
1010
- return this.get('parentView');
1090
+ return this.get('parentView') ;
1011
1091
  }.property('parentView').cacheable(),
1092
+
1093
+
1094
+ /** @property
1095
+ Set to YES if your view is willing to accept first responder status. This
1096
+ is used when calculcating key responder loop.
1097
+ */
1098
+ acceptsFirstResponder: NO,
1099
+
1100
+ // ..........................................................
1101
+ // KEY RESPONDER
1102
+ //
1103
+
1104
+ /** @property
1105
+ YES if the view is currently first responder and the pane the view belongs
1106
+ to is also key pane. While this property is set, you should expect to
1107
+ receive keyboard events.
1108
+ */
1109
+ isKeyResponder: NO,
1110
+
1111
+ /**
1112
+ This method is invoked just before you lost the key responder status. The passed view is the view that is about to gain keyResponder status. This gives you a chance to do any early setup.
1113
+
1114
+ Remember that you can gain/lose key responder status either because another view in the same pane is becoming first responder or because another pane is about to become key.
1115
+
1116
+ @param {SC.Responder} responder
1117
+ */
1118
+ willLoseKeyResponderTo: function(responder) {},
1012
1119
 
1120
+ /**
1121
+ This method is invoked just before you become the key responder. The passed view is the view that is about to lose keyResponder status. You can use this to do any setup before the view changes.
1122
+
1123
+ Remember that you can gain/lose key responder status either because another view in the same pane is becoming first responder or because another pane is about to become key.
1124
+
1125
+ @param {SC.Responder} responder
1126
+ */
1127
+ willBecomeKeyResponderFrom: function(responder) {},
1128
+
1129
+ /**
1130
+ Invokved just after the responder loses key responder status.
1131
+ */
1132
+ didLoseKeyResponderTo: function(responder) {},
1133
+
1134
+ /**
1135
+ Invoked just after the responder gains key responder status.
1136
+ */
1137
+ didBecomeKeyResponderFrom: function(responder) {},
1138
+
1139
+ /**
1140
+ This method will process a key input event, attempting to convert it to an appropriate action method and sending it up the responder chain. The event is converted using the SC.KEY_BINDINGS hash, which maps key events into method names. If no key binding is found, then the key event will be passed along using an insertText() method.
1141
+
1142
+ @param {SC.Event} event
1143
+ @returns {Object} object that handled event, if any
1144
+ */
1145
+ interpretKeyEvents: function(event) {
1146
+ var codes = event.commandCodes(), cmd = codes[0], chr = codes[1];
1147
+
1148
+ if (!cmd && !chr) return null ; //nothing to do.
1149
+
1150
+ // if this is a command key, try to do something about it.
1151
+ if (cmd) {
1152
+ var methodName = SC.MODIFIED_KEY_BINDINGS[cmd] || SC.BASE_KEY_BINDINGS[cmd.match(/[^_]+$/)[0]];
1153
+ if (methodName) {
1154
+ var target = this, pane = this.get('pane'), handler = null;
1155
+ while(target && !(handler = target.tryToPerform(methodName, event))){
1156
+ target = (target===pane)? null: target.get('nextResponder') ;
1157
+ }
1158
+ return handler ;
1159
+ }
1160
+ }
1161
+
1162
+ if (chr && this.respondsTo('insertText')) {
1163
+ // if we haven't returned yet and there is plain text, then do an insert
1164
+ // of the text. Since this is not an action, do not send it up the
1165
+ // responder chain.
1166
+ return this.insertText(chr);
1167
+ }
1168
+
1169
+ return null ; //nothing to do.
1170
+ },
1171
+
1172
+ /**
1173
+ This method is invoked by interpretKeyEvents() when you receive a key event matching some plain text. You can use this to actually insert the text into your application, if needed.
1174
+
1175
+ @param {SC.Event} event
1176
+ @returns {Object} receiver or object that handled event
1177
+ */
1178
+ insertText: function(chr) {
1179
+ return this ;
1180
+ },
1181
+
1013
1182
  /**
1014
1183
  Recursively travels down the view hierarchy looking for a view that
1015
1184
  implements the key equivalent (returning to YES to indicate it handled
@@ -1025,9 +1194,12 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1025
1194
  @returns {Boolean}
1026
1195
  */
1027
1196
  performKeyEquivalent: function(keystring, evt) {
1028
- var ret = null, childViews = this.get('childViews'), len = childViews.length, idx=-1;
1029
- while(!ret && (++idx<len)) {
1030
- ret = childViews[idx].performKeyEquivalent(keystring, evt);
1197
+ var ret = NO,
1198
+ childViews = this.get('childViews'),
1199
+ len = childViews.length,
1200
+ idx = -1 ;
1201
+ while (!ret && (++idx < len)) {
1202
+ ret = childViews[idx].performKeyEquivalent(keystring, evt) ;
1031
1203
  }
1032
1204
  return ret ;
1033
1205
  },
@@ -1061,7 +1233,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1061
1233
  // TODO: Optimize into class setup
1062
1234
  dp = this.get('displayProperties') ;
1063
1235
  idx = dp.length ;
1064
- while(--idx >= 0) {
1236
+ while (--idx >= 0) {
1065
1237
  this.addObserver(dp[idx], this, this.displayDidChange) ;
1066
1238
  }
1067
1239
 
@@ -1087,7 +1259,10 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1087
1259
  awake: function() {
1088
1260
  sc_super();
1089
1261
  var childViews = this.get('childViews'), len = childViews.length, idx ;
1090
- for (idx=0; idx<len; ++idx) childViews[idx].awake() ;
1262
+ for (idx=0; idx<len; ++idx) {
1263
+ if (!childViews[idx]) continue ;
1264
+ childViews[idx].awake() ;
1265
+ }
1091
1266
  },
1092
1267
 
1093
1268
  /**
@@ -1173,6 +1348,12 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1173
1348
  view = this[key];
1174
1349
  } else key = null ;
1175
1350
 
1351
+ if (!view) {
1352
+ console.error ("No view with name "+key+" has been found in "+this.toString());
1353
+ // skip this one.
1354
+ continue;
1355
+ }
1356
+
1176
1357
  if (view.isClass) {
1177
1358
  view = this.createChildView(view) ; // instantiate if needed
1178
1359
  if (key) this[key] = view ; // save on key name if passed
@@ -1201,6 +1382,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1201
1382
  // attrs should always exist...
1202
1383
  if (!attrs) attrs = {} ;
1203
1384
  attrs.owner = attrs.parentView = this ;
1385
+ attrs.isVisibleInWindow = this.get('isVisibleInWindow');
1204
1386
  if (!attrs.page) attrs.page = this.page ;
1205
1387
 
1206
1388
  // Now add this to the attributes and create.
@@ -1261,11 +1443,6 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1261
1443
  }
1262
1444
  }
1263
1445
 
1264
- // if (didChange) {
1265
- // console.log('did change layout') ;
1266
- // console.log(layout) ;
1267
- // }
1268
-
1269
1446
  // now set adjusted layout
1270
1447
  if (didChange) this.set('layout', layout) ;
1271
1448
 
@@ -1329,7 +1506,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1329
1506
  // walk up this side
1330
1507
  while (view) {
1331
1508
  f = view.get('frame'); myX += f.x; myY += f.y ;
1332
- view = view.get('parentView') ;
1509
+ view = view.get('layoutView') ;
1333
1510
  }
1334
1511
 
1335
1512
  // walk up other size
@@ -1337,7 +1514,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1337
1514
  view = targetView ;
1338
1515
  while (view) {
1339
1516
  f = view.get('frame'); targetX += f.x; targetY += f.y ;
1340
- view = view.get('parentView') ;
1517
+ view = view.get('layoutView') ;
1341
1518
  }
1342
1519
  }
1343
1520
 
@@ -1417,13 +1594,31 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1417
1594
  */
1418
1595
  computeFrameWithParentFrame: function(pdim) {
1419
1596
  var layout = this.get('layout') ;
1420
- var f = {} ;
1597
+ var f = {} , error, layer, AUTO = SC.LAYOUT_AUTO;
1598
+ var stLayout = this.get('useStaticLayout') ;
1599
+
1600
+ if (layout.width !== undefined &&
1601
+ layout.width === SC.LAYOUT_AUTO &&
1602
+ stLayout !== undefined && !stLayout) {
1603
+ error = SC.Error.desc("%@.layout() you cannot use width:auto if staticLayout is disabled".fmt(this),"%@".fmt(this), -1) ;
1604
+ console.error(error.toString()) ;
1605
+ throw error ;
1606
+ }
1607
+
1608
+ if (layout.height !== undefined &&
1609
+ layout.height === SC.LAYOUT_AUTO &&
1610
+ stLayout !== undefined && !stLayout) {
1611
+ error = SC.Error.desc("%@.layout() you cannot use height:auto if staticLayout is disabled".fmt(this),"%@".fmt(this), -1) ;
1612
+ console.error(error.toString()) ;
1613
+ throw error ;
1614
+ }
1421
1615
 
1422
1616
  // handle left aligned and left/right
1423
1617
  if (!SC.none(layout.left)) {
1424
1618
  f.x = Math.floor(layout.left) ;
1425
1619
  if (layout.width !== undefined) {
1426
- f.width = Math.floor(layout.width) ;
1620
+ if(layout.width === AUTO) f.width = AUTO ;
1621
+ else f.width = Math.floor(layout.width) ;
1427
1622
  } else { // better have layout.right!
1428
1623
  if (!pdim) pdim = this.computeParentDimensions(layout) ;
1429
1624
  f.width = Math.floor(pdim.width - f.x - (layout.right || 0)) ;
@@ -1436,28 +1631,34 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1436
1631
  f.width = pdim.width - layout.right ;
1437
1632
  f.x = 0 ;
1438
1633
  } else {
1439
- f.width = Math.floor(layout.width || 0) ;
1634
+ if(layout.width === AUTO) f.width = AUTO ;
1635
+ else f.width = Math.floor(layout.width || 0) ;
1440
1636
  f.x = Math.floor(pdim.width - layout.right - f.width) ;
1441
1637
  }
1442
1638
 
1443
1639
  // handle centered
1444
1640
  } else if (!SC.none(layout.centerX)) {
1445
1641
  if (!pdim) pdim = this.computeParentDimensions(layout) ;
1446
- f.width = Math.floor(layout.width || 0) ;
1642
+ if(layout.width === AUTO) f.width = AUTO ;
1643
+ else f.width = Math.floor(layout.width || 0) ;
1447
1644
  f.x = Math.floor((pdim.width - f.width)/2 + layout.centerX) ;
1448
1645
  } else {
1449
1646
  f.x = 0 ; // fallback
1450
1647
  if (SC.none(layout.width)) {
1451
1648
  if (!pdim) pdim = this.computeParentDimensions(layout) ;
1452
1649
  f.width = Math.floor(pdim.width) ;
1453
- } else f.width = layout.width ;
1650
+ } else {
1651
+ if(layout.width === AUTO) f.width = AUTO ;
1652
+ else f.width = Math.floor(layout.width || 0) ;
1653
+ }
1454
1654
  }
1455
1655
 
1456
1656
  // handle top aligned and top/bottom
1457
1657
  if (!SC.none(layout.top)) {
1458
1658
  f.y = Math.floor(layout.top) ;
1459
1659
  if (layout.height !== undefined) {
1460
- f.height = Math.floor(layout.height) ;
1660
+ if(layout.height === AUTO) f.height = AUTO ;
1661
+ else f.height = Math.floor(layout.height) ;
1461
1662
  } else { // better have layout.bottm!
1462
1663
  if (!pdim) pdim = this.computeParentDimensions(layout) ;
1463
1664
  f.height = Math.floor(pdim.height - f.y - (layout.bottom || 0)) ;
@@ -1470,14 +1671,16 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1470
1671
  f.height = pdim.height - layout.bottom ;
1471
1672
  f.y = 0 ;
1472
1673
  } else {
1473
- f.height = Math.floor(layout.height || 0) ;
1674
+ if(layout.height === AUTO) f.height = AUTO ;
1675
+ else f.height = Math.floor(layout.height || 0) ;
1474
1676
  f.y = Math.floor(pdim.height - layout.bottom - f.height) ;
1475
1677
  }
1476
1678
 
1477
1679
  // handle centered
1478
1680
  } else if (!SC.none(layout.centerY)) {
1479
1681
  if (!pdim) pdim = this.computeParentDimensions(layout) ;
1480
- f.height = Math.floor(layout.height || 0) ;
1682
+ if(layout.height === AUTO) f.height = AUTO ;
1683
+ else f.height = Math.floor(layout.height || 0) ;
1481
1684
  f.y = Math.floor((pdim.height - f.height)/2 + layout.centerY) ;
1482
1685
 
1483
1686
  // fallback
@@ -1486,7 +1689,17 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1486
1689
  if (SC.none(layout.height)) {
1487
1690
  if (!pdim) pdim = this.computeParentDimensions(layout) ;
1488
1691
  f.height = Math.floor(pdim.height) ;
1489
- } else f.height = layout.height;
1692
+ } else {
1693
+ if(layout.height === AUTO) f.height = AUTO ;
1694
+ else f.height = Math.floor(layout.height || 0) ;
1695
+ }
1696
+ }
1697
+
1698
+ // if width or height were set to auto and we have a layer, try lookup
1699
+ if (f.height === AUTO || f.width === AUTO) {
1700
+ layer = this.get('layer');
1701
+ if (f.height === AUTO) f.height = layer ? layer.clientHeight : 0;
1702
+ if (f.width === AUTO) f.width = layer ? layer.clientWidth : 0;
1490
1703
  }
1491
1704
 
1492
1705
  // make sure the width/height fix min/max...
@@ -1667,7 +1880,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1667
1880
  return this ;
1668
1881
  },
1669
1882
 
1670
- /**
1883
+ /**
1671
1884
  layoutStyle describes the current styles to be written to your element
1672
1885
  based on the layout you defined. Both layoutStyle and frame reset when
1673
1886
  you edit the layout property. Both are read only.
@@ -1678,7 +1891,24 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1678
1891
  @readOnly
1679
1892
  */
1680
1893
  layoutStyle: function() {
1681
- var layout = this.get('layout'), ret = {}, pdim = null;
1894
+ var layout = this.get('layout'), ret = {}, pdim = null, error, AUTO = SC.LAYOUT_AUTO;
1895
+ var stLayout = this.get('useStaticLayout');
1896
+
1897
+ if (layout.width !== undefined &&
1898
+ layout.width === SC.LAYOUT_AUTO &&
1899
+ !stLayout) {
1900
+ error= SC.Error.desc("%@.layout() you cannot use width:auto if staticLayout is disabled".fmt(this),"%@".fmt(this),-1);
1901
+ console.error(error.toString()) ;
1902
+ throw error ;
1903
+ }
1904
+
1905
+ if (layout.height !== undefined &&
1906
+ layout.height === SC.LAYOUT_AUTO &&
1907
+ !stLayout) {
1908
+ error = SC.Error.desc("%@.layout() you cannot use height:auto if staticLayout is disabled".fmt(this),"%@".fmt(this),-1);
1909
+ console.error(error.toString()) ;
1910
+ throw error ;
1911
+ }
1682
1912
 
1683
1913
  // X DIRECTION
1684
1914
 
@@ -1686,7 +1916,8 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1686
1916
  if (!SC.none(layout.left)) {
1687
1917
  ret.left = Math.floor(layout.left);
1688
1918
  if (layout.width !== undefined) {
1689
- ret.width = Math.floor(layout.width) ;
1919
+ if(layout.width === SC.LAYOUT_AUTO) ret.width = SC.LAYOUT_AUTO ;
1920
+ else ret.width = Math.floor(layout.width) ;
1690
1921
  ret.right = null ;
1691
1922
  } else {
1692
1923
  ret.width = null ;
@@ -1704,7 +1935,8 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1704
1935
  ret.width = null;
1705
1936
  } else {
1706
1937
  ret.left = null ;
1707
- ret.width = Math.floor(layout.width || 0) ;
1938
+ if(layout.width === SC.LAYOUT_AUTO) ret.width = SC.LAYOUT_AUTO ;
1939
+ else ret.width = Math.floor(layout.width || 0) ;
1708
1940
  }
1709
1941
 
1710
1942
  // handle centered
@@ -1718,7 +1950,8 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1718
1950
  } else if (!SC.none(layout.width)) {
1719
1951
  ret.left = 0;
1720
1952
  ret.right = null;
1721
- ret.width = Math.floor(layout.width);
1953
+ if(layout.width === SC.LAYOUT_AUTO) ret.width = SC.LAYOUT_AUTO ;
1954
+ else ret.width = Math.floor(layout.width);
1722
1955
  ret.marginLeft = 0;
1723
1956
 
1724
1957
  // fallback, full width.
@@ -1729,9 +1962,10 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1729
1962
  ret.marginLeft= 0;
1730
1963
  }
1731
1964
 
1965
+
1732
1966
  // handle min/max
1733
- ret.minWidth = (layout.minWidth === undefined) ? null : layout.minWidth;
1734
- ret.maxWidth = (layout.maxWidth === undefined) ? null : layout.maxWidth;
1967
+ ret.minWidth = (layout.minWidth === undefined) ? null : layout.minWidth ;
1968
+ ret.maxWidth = (layout.maxWidth === undefined) ? null : layout.maxWidth ;
1735
1969
 
1736
1970
  // Y DIRECTION
1737
1971
 
@@ -1739,7 +1973,8 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1739
1973
  if (!SC.none(layout.top)) {
1740
1974
  ret.top = Math.floor(layout.top);
1741
1975
  if (layout.height !== undefined) {
1742
- ret.height = Math.floor(layout.height) ;
1976
+ if(layout.height === SC.LAYOUT_AUTO) ret.height = SC.LAYOUT_AUTO ;
1977
+ else ret.height = Math.floor(layout.height) ;
1743
1978
  ret.bottom = null ;
1744
1979
  } else {
1745
1980
  ret.height = null ;
@@ -1756,7 +1991,8 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1756
1991
  ret.height = null ;
1757
1992
  } else {
1758
1993
  ret.top = null ;
1759
- ret.height = Math.floor(layout.height || 0) ;
1994
+ if(layout.height === SC.LAYOUT_AUTO) ret.height = SC.LAYOUT_AUTO ;
1995
+ else ret.height = Math.floor(layout.height || 0) ;
1760
1996
  }
1761
1997
 
1762
1998
  // handle centered
@@ -1769,7 +2005,8 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1769
2005
  } else if (!SC.none(layout.height)) {
1770
2006
  ret.top = 0;
1771
2007
  ret.bottom = null;
1772
- ret.height = Math.floor(layout.height || 0);
2008
+ if(layout.height === SC.LAYOUT_AUTO) ret.height = SC.LAYOUT_AUTO ;
2009
+ else ret.height = Math.floor(layout.height || 0) ;
1773
2010
  ret.marginTop = 0;
1774
2011
 
1775
2012
  // fallback, full width.
@@ -1781,14 +2018,21 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1781
2018
  }
1782
2019
 
1783
2020
  // handle min/max
1784
- ret.minHeight = (layout.minHeight === undefined) ? null : layout.minHeight;
1785
- ret.maxHeight = (layout.maxHeight === undefined) ? null : layout.maxHeight;
2021
+ ret.minHeight = (layout.minHeight === undefined) ?
2022
+ null :
2023
+ layout.minHeight ;
2024
+ ret.maxHeight = (layout.maxHeight === undefined) ?
2025
+ null :
2026
+ layout.maxHeight ;
1786
2027
 
1787
2028
  // if zIndex is set, use it. otherwise let default shine through
1788
2029
  ret.zIndex = SC.none(layout.zIndex) ? null : layout.zIndex.toString();
1789
-
1790
- // if backgroundPosition is set, use it. otherwise let default shine through
1791
- ret.backgroundPosition = SC.none(layout.backgroundPosition) ? null : layout.backgroundPosition.toString();
2030
+
2031
+ // if backgroundPosition is set, use it.
2032
+ // otherwise let default shine through
2033
+ ret.backgroundPosition = SC.none(layout.backgroundPosition) ?
2034
+ null :
2035
+ layout.backgroundPosition.toString() ;
1792
2036
 
1793
2037
  // set default values to null to allow built-in CSS to shine through
1794
2038
  // currently applies only to marginLeft & marginTop
@@ -1814,7 +2058,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1814
2058
  return this.get('parentView') ;
1815
2059
  }.property('parentView').cacheable(),
1816
2060
 
1817
- /**
2061
+ /**
1818
2062
  This method is called whenever a property changes that invalidates the
1819
2063
  layout of the view. Changing the layout will do this automatically, but
1820
2064
  you can add others if you want.
@@ -1822,7 +2066,6 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1822
2066
  @returns {SC.View} receiver
1823
2067
  */
1824
2068
  layoutDidChange: function() {
1825
- // console.log('%@.layoutDidChange()'.fmt(this));
1826
2069
  this.beginPropertyChanges() ;
1827
2070
  if (this.frame) this.notifyPropertyChange('frame') ;
1828
2071
  this.notifyPropertyChange('layoutStyle') ;
@@ -1849,7 +2092,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1849
2092
  @property {Boolean}
1850
2093
  */
1851
2094
  childViewsNeedLayout: NO,
1852
-
2095
+
1853
2096
  /**
1854
2097
  One of two methods that are invoked whenever one of your childViews
1855
2098
  layout changes. This method is invoked everytime a child view's layout
@@ -1871,7 +2114,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1871
2114
  */
1872
2115
  layoutDidChangeFor: function(childView) {
1873
2116
  var set = this._needLayoutViews ;
1874
- if (!set) set = this._needLayoutViews = SC.Set.create();
2117
+ if (!set) set = this._needLayoutViews = SC.CoreSet.create();
1875
2118
  set.add(childView);
1876
2119
  },
1877
2120
 
@@ -1891,7 +2134,7 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1891
2134
  }
1892
2135
  return this ;
1893
2136
  },
1894
-
2137
+
1895
2138
  /**
1896
2139
  Applies the current layout to the layer. This method is usually only
1897
2140
  called once per runloop. You can override this method to provide your
@@ -1957,11 +2200,11 @@ SC.View = SC.Object.extend(SC.Responder, SC.DelegateSupport,
1957
2200
  });
1958
2201
 
1959
2202
  SC.View.mixin(/** @scope SC.View @static */ {
1960
-
2203
+
1961
2204
  /** @private walk like a duck -- used by SC.Page */
1962
2205
  isViewClass: YES,
1963
2206
 
1964
- /**
2207
+ /**
1965
2208
  This method works just like extend() except that it will also preserve
1966
2209
  the passed attributes in case you want to use a view builder later, if
1967
2210
  needed.
@@ -1979,7 +2222,7 @@ SC.View.mixin(/** @scope SC.View @static */ {
1979
2222
  }
1980
2223
  return ret ;
1981
2224
  },
1982
-
2225
+
1983
2226
  /**
1984
2227
  Helper applies the layout to the prototype.
1985
2228
  */
@@ -2010,7 +2253,9 @@ SC.View.mixin(/** @scope SC.View @static */ {
2010
2253
  */
2011
2254
  childView: function(cv) {
2012
2255
  var childViews = this.prototype.childViews || [];
2013
- if (childViews === this.superclass.prototype.childViews) childViews = childViews.slice();
2256
+ if (childViews === this.superclass.prototype.childViews) {
2257
+ childViews = childViews.slice();
2258
+ }
2014
2259
  childViews.push(cv) ;
2015
2260
  this.prototype.childViews = childViews;
2016
2261
  return this ;