sproutit-sproutcore 1.0.0.20090416161445 → 1.0.0.20090720093355

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -47,7 +47,7 @@ SC.PalettePane = SC.PanelPane.extend({
47
47
 
48
48
  /** @private - drag&drop palette to new position. */
49
49
  mouseDown: function(evt) {
50
- var f=this.get("frame");
50
+ var f=this.get('frame');
51
51
  this._mouseOffsetX = f ? (f.x - evt.pageX) : 0;
52
52
  this._mouseOffsetY = f ? (f.y - evt.pageY) : 0;
53
53
  },
@@ -17,8 +17,8 @@ sc_require('panes/modal');
17
17
 
18
18
  {{{
19
19
  SC.PanelPane.create({
20
+ layout: { width: 400, height: 200, centerX: 0, centerY: 0 },
20
21
  contentView: SC.View.extend({
21
- layout: { width: 400, height: 200, centerX: 0, centerY: 0 }
22
22
  })
23
23
  }).append();
24
24
  }}}
@@ -35,8 +35,8 @@ SC.POINTER_LAYOUT = ["perfectRight", "perfectLeft", "perfectTop", "perfectBottom
35
35
 
36
36
  {{{
37
37
  SC.PickerPane.create({
38
+ layout: { width: 400, height: 200 },
38
39
  contentView: SC.View.extend({
39
- layout: { width: 400, height: 200 }
40
40
  })
41
41
  }).popup(anchor);
42
42
  }}}
@@ -52,37 +52,37 @@ SC.POINTER_LAYOUT = ["perfectRight", "perfectLeft", "perfectTop", "perfectBottom
52
52
 
53
53
  1. default:
54
54
  {{{
55
- SC.PickerPane.create({contentView: SC.View.extend({layout: { width: 400, height: 200 }})
55
+ SC.PickerPane.create({layout: { width: 400, height: 200 },contentView: SC.View.extend({})
56
56
  }).popup(anchor);
57
57
  }}}
58
58
 
59
59
  2. menu below the anchor with default offset matrix [1,4,3]:
60
60
  {{{
61
- SC.PickerPane.create({contentView: SC.View.extend({layout: { width: 400, height: 200 }})
61
+ SC.PickerPane.create({layout: { width: 400, height: 200 },contentView: SC.View.extend({})
62
62
  }).popup(anchor, SC.PICKER_MENU);
63
63
  }}}
64
64
 
65
65
  3. menu on the right side of anchor with custom offset matrix [2,6,0]:
66
66
  {{{
67
- SC.PickerPane.create({contentView: SC.View.extend({layout: { width: 400, height: 200 }})
67
+ SC.PickerPane.create({layout: { width: 400, height: 200 },contentView: SC.View.extend({})
68
68
  }).popup(anchor, SC.PICKER_MENU, [2,6,0]);
69
69
  }}}
70
70
 
71
71
  4. fixed below the anchor with default offset matrix [1,4,3]:
72
72
  {{{
73
- SC.PickerPane.create({contentView: SC.View.extend({layout: { width: 400, height: 200 }})
73
+ SC.PickerPane.create({layout: { width: 400, height: 200 },contentView: SC.View.extend({})
74
74
  }).popup(anchor, SC.PICKER_FIXED);
75
75
  }}}
76
76
 
77
77
  5. fixed on the right side of anchor with custom offset matrix [-22,-17,0]:
78
78
  {{{
79
- SC.PickerPane.create({contentView: SC.View.extend({layout: { width: 400, height: 200 }})
79
+ SC.PickerPane.create({layout: { width: 400, height: 200 },contentView: SC.View.extend({})
80
80
  }).popup(anchor, SC.PICKER_FIXED, [-22,-17,0]);
81
81
  }}}
82
82
 
83
83
  6. pointer with default position pref matrix [0,1,2,3,2]:
84
84
  {{{
85
- SC.PickerPane.create({contentView: SC.View.extend({layout: { width: 400, height: 200 }})
85
+ SC.PickerPane.create({layout: { width: 400, height: 200 },contentView: SC.View.extend({})
86
86
  }).popup(anchor, SC.PICKER_POINTER);
87
87
  }}}
88
88
  perfect right (0) > perfect left (1) > perfect top (2) > perfect bottom (3)
@@ -90,7 +90,7 @@ SC.POINTER_LAYOUT = ["perfectRight", "perfectLeft", "perfectTop", "perfectBottom
90
90
 
91
91
  7. pointer with custom position pref matrix [3,0,1,2,2]:
92
92
  {{{
93
- SC.PickerPane.create({contentView: SC.View.extend({layout: { width: 400, height: 200 }})
93
+ SC.PickerPane.create({layout: { width: 400, height: 200 },contentView: SC.View.extend({})
94
94
  }).popup(anchor, SC.PICKER_POINTER, [3,0,1,2,2]);
95
95
  }}}
96
96
 
@@ -133,9 +133,9 @@ SC.PickerPane = SC.PalettePane.extend({
133
133
  preferMatrix: null,
134
134
 
135
135
  /**
136
- Displays a new picker pane according to the passed parameters.
137
- Every parameter except for the anchorViewOrElement is optional.
138
-
136
+ Displays a new picker pane according to the passed parameters.
137
+ Every parameter except for the anchorViewOrElement is optional.
138
+
139
139
  @param {Object} anchorViewOrElement view or element to anchor to
140
140
  @param {String} preferType optional apply picker position rule
141
141
  @param {Array} preferMatrix optional apply custom offset or position pref matrix for specific preferType
@@ -143,15 +143,13 @@ SC.PickerPane = SC.PalettePane.extend({
143
143
  */
144
144
  popup: function(anchorViewOrElement, preferType, preferMatrix) {
145
145
  var anchor = anchorViewOrElement.isView ? anchorViewOrElement.get('layer') : anchorViewOrElement;
146
-
147
146
  this.beginPropertyChanges();
148
147
  this.set('anchorElement',anchor) ;
149
148
  if (preferType) this.set('preferType',preferType) ;
150
149
  if (preferMatrix) this.set('preferMatrix',preferMatrix) ;
151
- this.positionPane();
152
150
  this.endPropertyChanges();
153
-
154
151
  this.append();
152
+ this.positionPane();
155
153
  },
156
154
 
157
155
  /** @private
@@ -223,7 +221,8 @@ SC.PickerPane = SC.PalettePane.extend({
223
221
  */
224
222
  fitPositionToScreen: function(preferredPosition, picker, anchor) {
225
223
  // get window rect.
226
- var wret = { x: 0, y: 0, width: SC.$().width(), height: SC.$().height() } ;
224
+ var wsize = this.get('currentWindowSize') || SC.RootResponder.responder.computeWindowSize() ;
225
+ var wret = { x: 0, y: 0, width: wsize.width, height: wsize.height } ;
227
226
  picker.x = preferredPosition.x ; picker.y = preferredPosition.y ;
228
227
 
229
228
  if(this.preferType) {
@@ -297,7 +296,7 @@ SC.PickerPane = SC.PalettePane.extend({
297
296
  */
298
297
  fitPositionToScreenMenu: function(w, f) {
299
298
  // min left/right padding to the window
300
- if( (f.x + f.width) > (w.width-8) ) f.x = w.width - f.width - 8;
299
+ if( (f.x + f.width) > (w.width-20) ) f.x = w.width - f.width - 20;
301
300
  if( f.x < 7 ) f.x = 7;
302
301
  return f ;
303
302
  },
@@ -359,12 +358,11 @@ SC.PickerPane = SC.PalettePane.extend({
359
358
  var ret = sc_super();
360
359
  if (context.needsContent) {
361
360
  if (this.get('preferType') == SC.PICKER_POINTER) {
362
- context.push('<div class="%@"></div>'.fmt(this.get('pointerPos')));
361
+ context.push('<div class="sc-pointer %@"></div>'.fmt(this.get('pointerPos')));
363
362
  }
364
363
  } else {
365
- // var divs = this.$('div'),
366
- // el = SC.$(divs[10]);
367
- // el.attr('class', this.get('pointerPos'));
364
+ var el = this.$('.sc-pointer');
365
+ el.attr('class', "sc-pointer %@".fmt(this.get('pointerPos')));
368
366
  }
369
367
  return ret ;
370
368
  },
@@ -14,8 +14,8 @@ sc_require('panes/panel');
14
14
 
15
15
  {{{
16
16
  SC.SheetPane.create({
17
+ layout: { width: 400, height: 200, centerX: 0 },
17
18
  contentView: SC.View.extend({
18
- layout: { width: 400, height: 200, centerX: 0 }
19
19
  })
20
20
  }).append();
21
21
  }}}
@@ -34,7 +34,7 @@ SC.SheetPane = SC.PanelPane.extend({
34
34
  init: function() {
35
35
  sc_super() ;
36
36
 
37
- /** TODO: Implement Anition
37
+ /** TODO: Implement Animation
38
38
  this.visibleAnimation = {
39
39
  visible: 'top: 0px',
40
40
  hidden: 'top: -500px',
@@ -91,7 +91,7 @@ SC.DropTarget = {
91
91
  dragUpdated: function(drag, evt) {},
92
92
 
93
93
  /**
94
- Called when the user exists your droppable area or the drag ends
94
+ Called when the user exits your droppable area or the drag ends
95
95
  and you were the last targeted droppable area.
96
96
 
97
97
  Override this method to perform any clean up on your UI such as hiding
@@ -107,9 +107,9 @@ SC.DropTarget = {
107
107
  /**
108
108
  Called on all drop targets when the drag ends.
109
109
 
110
- For example, the user might have dragged the view off the screen and let go
111
- or they might have hit escape. Override this method to perform any final
112
- cleanup. This will be called instead of dragExited.
110
+ For example, the user might have dragged the view off the screen and let
111
+ go or they might have hit escape. Override this method to perform any
112
+ final cleanup. This will be called instead of dragExited.
113
113
 
114
114
  The default implementation does nothing.
115
115
 
@@ -5,117 +5,146 @@
5
5
  // ========================================================================
6
6
 
7
7
  SC.DRAG_LINK = 0x0004; SC.DRAG_COPY = 0x0001; SC.DRAG_MOVE = 0x0002;
8
- SC.DRAG_NONE = 0x0000; SC.DRAG_ANY = 0x0007 ; // includes SC.DRAG_REORDER as well
9
- SC.DRAG_AUTOSCROLL_ZONE_THICKNESS = 20 ;
8
+ SC.DRAG_NONE = 0x0000; SC.DRAG_ANY = 0x0007; // includes SC.DRAG_REORDER
9
+ SC.DRAG_AUTOSCROLL_ZONE_THICKNESS = 20;
10
10
 
11
11
  /**
12
-
13
12
  @class
14
13
 
15
14
  An instance of this object is created whenever a drag occurs. The instance
16
15
  manages the mouse events and coordinating with droppable targets until the
17
16
  user releases the mouse button.
18
-
17
+
19
18
  To initiate a drag, you should call SC.Drag.start() with the options below
20
19
  specified in a hash. Pass the ones you need to get the drag you want:
21
-
22
- - *event: (req)* The mouse event that triggered the drag. This will be used
20
+
21
+ - *event: (req)* The mouse event that triggered the drag. This will be used
23
22
  to position the element.
24
23
 
25
- - *source: (req)* The drag source object that should be consulted during
26
- the drag operations. This is usually the container view that initiated
27
- the drag.
24
+ - *source: (req)* The drag source object that should be consulted during
25
+ the drag operations. This is usually the container view that initiated
26
+ the drag.
28
27
 
29
- - *dragView: (req)* This should point to a view that will be used as the
30
- source image for the drag. The drag operation will clone the DOM elements
31
- for this view and parent them under the drag pane, which has the class
32
- name 'sc-ghost-view'.
28
+ - *dragView: (req)* This should point to a view that will be used as the
29
+ source image for the drag. The drag operation will clone the DOM elements
30
+ for this view and parent them under the drag pane, which has the class
31
+ name 'sc-ghost-view'.
33
32
 
34
- - *ghost: YES | NO* If YES or not passed, then drag view image will show,
35
- but the source dragView will not be hidden. set to NO to make it appear
36
- that the dragView itself is being dragged around.
33
+ - *ghost: YES | NO* If NO, the drag view image will show, but the source
34
+ dragView will not be hidden. Set to YES to make it appear that the
35
+ dragView itself is being dragged around.
37
36
 
38
- - *slideBack: YES | NO* If YES or not specified, then if the drag
39
- operation is cancelled, the dragView will slide back to its source
40
- origin.
37
+ - *slideBack: YES | NO* If YES and the drag operation is cancelled, the
38
+ dragView will slide back to its source origin.
41
39
 
42
- - *origin:* If passed, this will be used as the origin point for the
43
- ghostView when it slides back. You normally do not need to pass this
44
- unless the ghost view does not appear in the main UI.
40
+ - *origin:* If passed, this will be used as the origin point for the
41
+ ghostView when it slides back. You normally do not need to pass this
42
+ unless the ghost view does not appear in the main UI.
45
43
 
46
- - *data:* Optional hash of data types and values. You can use this to pass
47
- a static set of data instead of providing a dataSource. If you provide
48
- a dataSource, it will override this.
44
+ - *data:* Optional hash of data types and values. You can use this to pass
45
+ a static set of data instead of providing a dataSource. If you provide
46
+ a dataSource, it will be used instead.
49
47
 
50
- - *dataSource:* Optional object that will provide the data for the drag to
51
- be consumed by the drop target. If you do not pass this parameter or the
52
- data hash, then the source object will be used if it implements the
53
- SC.DragDataSource protocol.
48
+ - *dataSource:* Optional object that will provide the data for the drag to
49
+ be consumed by the drop target. If you do not pass this parameter or the
50
+ data hash, then the source object will be used if it implements the
51
+ SC.DragDataSource protocol.
52
+
53
+ - *anchorView:* if you pass this optional view, then the drag will only be
54
+ allowed to happen within this view. The ghostView will actually be added
55
+ as a child of this view during the drag. Normally the anchorView is the
56
+ window.
54
57
 
55
- - *anchorView:* if you pass this optional view, then the drag will only be
56
- allowed to happen within this view. The ghostView will actually be added
57
- as a child of this view during the drag. Normally the anchorView is the
58
- window.
59
-
60
58
  @extends SC.Object
61
59
  */
62
60
  SC.Drag = SC.Object.extend(
63
61
  /** @scope SC.Drag.prototype */ {
64
62
 
65
- /** [RO] The source object used to coordinate this drag. */
63
+ /**
64
+ The source object used to coordinate this drag.
65
+
66
+ @readOnly
67
+ @type SC.DragSource
68
+ */
66
69
  source: null,
67
-
68
- /** The actual image being dragged around the screen.
69
70
 
70
- This is created automatically from the dragView.
71
+ /**
72
+ The view actually dragged around the screen. This is created automatically
73
+ from the dragView.
74
+
75
+ @readOnly
76
+ @type SC.View
71
77
  */
72
78
  ghostView: null,
73
-
79
+
74
80
  /**
75
81
  The view that was used as the source of the ghostView.
76
82
 
77
83
  The drag view is not moved from its original location during a drag.
78
84
  Instead, the DOM content of the view is cloned and managed by the
79
85
  ghostView. If you want to visually indicate that the view is being
80
- movied, you may want to temporarily hide it during the drag.
86
+ moved, you may want to temporarily hide it during the drag.
87
+
88
+ @readOnly
89
+ @type SC.View
81
90
  */
82
91
  dragView: null,
83
92
 
84
- /**
85
- If YES, the dragView is automatically hidden while dragging around the ghost.
93
+ /**
94
+ If YES, the dragView is automatically hidden while dragging around the
95
+ ghost.
96
+
97
+ @readOnly
98
+ @type Boolean
86
99
  */
87
100
  ghost: YES,
88
101
 
89
102
  /**
90
- If YES, then the ghostView will slide back to its original location if drag is cancelled.
103
+ If YES, then the ghostView will slide back to its original location if
104
+ drag is cancelled.
105
+
106
+ @type Boolean
91
107
  */
92
108
  slideBack: YES,
93
109
 
94
- /** The original mouse down event. */
110
+ /**
111
+ The original mouse down event.
112
+
113
+ @readOnly
114
+ @type SC.Event
115
+ */
95
116
  mouseDownEvent: null,
96
-
97
- /**
98
- The origin to slide back to in the coordinate of the dragView's offsetParent.
117
+
118
+ /**
119
+ The origin to slide back to in the coordinate of the dragView's
120
+ containerView.
121
+
122
+ @type Point
99
123
  */
100
124
  ghostOffset: { x: 0, y: 0 },
101
125
 
102
126
  /**
103
- The current location of the mouse pointer in window coordinates.
104
-
105
- This is updated as long as the mouse button is pressed.
127
+ The current location of the mouse pointer in window coordinates. This is
128
+ updated as long as the mouse button is pressed. Drop targets are
129
+ encouraged to update this property in their dragUpdated() method
130
+ implementations.
131
+
132
+ The ghostView will be positioned at this location.
133
+
134
+ @type Point
106
135
  */
107
136
  location: {},
108
-
137
+
109
138
  // ..........................................
110
139
  // DRAG DATA
111
140
  //
112
-
141
+
113
142
  /**
114
143
  Data types supported by this drag operation.
115
144
 
116
- Returns an array of data types supported by the drag source. This may
117
- be generated dynamically depending on the data source.
118
-
145
+ Returns an array of data types supported by the drag source. This may be
146
+ generated dynamically depending on the data source.
147
+
119
148
  If you are implementing a drag source, you will need to provide these data
120
149
  types so that drop targets can detect if they can accept your drag data.
121
150
 
@@ -123,7 +152,7 @@ SC.Drag = SC.Object.extend(
123
152
  on your dragEntered() and prepareForDragOperation() methods to determine
124
153
  if you can handle any of the data types offered up by the drag source.
125
154
 
126
- @field {Array} available data types
155
+ @property {Array} available data types
127
156
  */
128
157
  dataTypes: function() {
129
158
  // first try to use the data source.
@@ -154,18 +183,18 @@ SC.Drag = SC.Object.extend(
154
183
  @returns {Boolean} YES if data type is present in dataTypes array.
155
184
  */
156
185
  hasDataType: function(dataType) {
157
- return (this.get('dataTypes').indexOf(dataType) >= 0) ;
186
+ return (this.get('dataTypes').indexOf(dataType) >= 0) ;
158
187
  },
159
188
 
160
189
  /**
161
190
  Retrieve the data for the specified dataType from the drag source.
162
-
163
- Drop targets can use this method during their performDragOperation() method
164
- to retrieve the actual data provided by the drag data source. This data
165
- may be generated dynamically depending on the data source.
166
191
 
167
- @param {Object} dataType data type you want to retrieve. Should be one of the values returned in the dataTypes property
192
+ Drop targets can use this method during their performDragOperation()
193
+ method to retrieve the actual data provided by the drag data source. This
194
+ data may be generated dynamically depending on the data source.
168
195
 
196
+ @param {Object} dataType data type you want to retrieve. Should be one of
197
+ the values returned in the dataTypes property
169
198
  @returns {Object} The generated data.
170
199
  */
171
200
  dataForType: function(dataType) {
@@ -190,69 +219,110 @@ SC.Drag = SC.Object.extend(
190
219
 
191
220
  /**
192
221
  Optional object used to provide the data for the drag.
193
-
222
+
194
223
  Drag source can designate a dataSource object to generate the data for
195
224
  a drag dynamically. The data source can and often is the drag source
196
225
  object itself.
197
-
226
+
198
227
  Data Source objects must comply with the SC.DragDataSource interface. If
199
228
  you do not want to implement this interface, you can provide the data
200
229
  directly with the data property.
201
-
230
+
202
231
  If you are implementing a drop target, use the dataTypes property and
203
- dataForTypes() method to access data instead of working directly with these
204
- properties.
232
+ dataForTypes() method to access data instead of working directly with
233
+ these properties.
205
234
 
206
- @type {Object}
235
+ @readOnly
236
+ @type SC.DragDataSource
207
237
  */
208
238
  dataSource: null,
209
-
239
+
210
240
  /**
211
241
  Optional hash of data. Used if no dataSource was provided.
212
242
 
213
243
  Drag sources can provide a hash of data when the drag begins instead of
214
244
  specifying an actual dataSource. The data is stored in this property.
215
245
  If you are implementing a drop target, use the dataTypes property and
216
- dataForTypes() method to access data instead of working directly with these
217
- properties.
246
+ dataForTypes() method to access data instead of working directly with
247
+ these properties.
218
248
 
219
- @type {Object}
249
+ @readOnly
250
+ @type Hash
220
251
  */
221
252
  data: null,
222
-
223
- // required by autoscroll
253
+
254
+ /**
255
+ Returns the currently allowed dragOperations for the drag. This will be
256
+ set just before any callbacks are invoked on a drop target. The drag
257
+ source is given an opportunity to set these operations.
258
+
259
+ @readOnly
260
+ @type Number
261
+ */
262
+ allowedDragOperations: SC.DRAG_ANY,
263
+
264
+ /** @private required by autoscroll */
224
265
  _dragInProgress: YES,
225
266
 
226
- // this will actually start the drag process.
267
+ /** @private
268
+ This will actually start the drag process. Called by SC.Drag.start().
269
+ */
227
270
  startDrag: function() {
228
271
  // create the ghost view
229
272
  this._createGhostView() ;
230
273
 
274
+ var evt = this.event ;
275
+
231
276
  // compute the ghost offset from the original mouse location
232
- var dragView = this.dragView ;
233
- var origin = dragView.convertFrameToView(dragView.get('frame'), null) ;
234
- var pointer = { x: this.event.pageX, y: this.event.pageY } ;
235
- this.ghostOffset = { x: (pointer.x-origin.x), y: (pointer.y-origin.y) } ;
236
-
277
+
278
+ var loc = { x: evt.pageX, y: evt.pageY } ;
279
+ this.set('location', loc) ;
280
+
281
+ var dv = this.dragView ;
282
+ var pane = dv.get('pane') ;
283
+ var pv = dv.get('parentView') ;
284
+ var clippingFrame = dv.get('clippingFrame') ;
285
+ // convert to global cooridinates
286
+ //var f = pv ? pv.convertFrameToView(clippingFrame, null) : clippingFrame ;
287
+ var f = pv ? pv.convertFrameToView(dv.get('frame'), null) : dv.get('frame') ;
288
+ var pf = pane ? pane.get('frame') : {x:0, y: 0};
289
+
290
+ dv.adjust({
291
+ top: f.y + pf.y,
292
+ left: f.x + pf.x,
293
+ width: f.width,
294
+ height: f.height
295
+ });
296
+ //get frame in global cords after pane adjustment
297
+ var dvf = dv.get('frame');
298
+
299
+ var origin = f;//pv.convertFrameToView(dv.get('frame'), null) ;
300
+
301
+ this.ghostOffset = { x: (loc.x-origin.x), y: (loc.y-origin.y) } ;
302
+
303
+ this.mouseGhostOffset = {x: (loc.x - dvf.x), y: (loc.y - dvf.y)};
304
+
237
305
  // position the ghost view
238
- this._positionGhostView(this.event) ;
306
+ this._positionGhostView(evt) ;
239
307
 
240
308
  // notify root responder that a drag is in process
241
- this._ghostView.rootResponder.dragDidStart(this);
309
+ this.ghostView.rootResponder.dragDidStart(this) ;
242
310
 
243
311
  var source = this.source ;
244
- if (source && source.dragDidBegin) source.dragDidBegin(this, pointer) ;
312
+ if (source && source.dragDidBegin) source.dragDidBegin(this, loc) ;
245
313
 
246
314
  // let all drop targets know that a drag has started
247
315
  var ary = this._dropTargets() ;
248
316
  for (var idx=0, len=ary.length; idx<len; idx++) {
249
- ary[idx].tryToPerform('dragStarted', this.event) ;
317
+ ary[idx].tryToPerform('dragStarted', this, evt) ;
250
318
  }
251
319
  },
252
320
 
253
- /**
254
- @private
255
-
321
+ // ..........................................
322
+ // PRIVATE PROPERTIES AND METHODS
323
+ //
324
+
325
+ /** @private
256
326
  This method is called repeatedly during a mouse drag. It updates the
257
327
  position of the ghost image, then it looks for a current drop target and
258
328
  notifies it.
@@ -264,35 +334,32 @@ SC.Drag = SC.Object.extend(
264
334
  return ; // quickly ignore duplicate calls
265
335
  }
266
336
 
267
- // cache the current location to avoid processing duplicate mouseDragged calls
337
+ // cache the current location to avoid processing duplicate mouseDragged
338
+ // calls
268
339
  this.set('location', { x: evt.pageX, y: evt.pageY }) ;
269
340
 
270
- // reposition the ghostView
271
- this._positionGhostView(evt) ;
272
-
273
341
  // STEP 1: Determine the deepest drop target that allows an operation.
274
- // if the drop target selected the last time this method was called differs
275
- // from the deepest target found, then go up the chain until we either hit the
276
- // last one or find one that will allow a drag operation
342
+ // if the drop target selected the last time this method was called
343
+ // differs from the deepest target found, then go up the chain until we
344
+ // either hit the last one or find one that will allow a drag operation
277
345
  var source = this.source ;
278
346
  var last = this._lastTarget ;
279
347
  var target = this._findDropTarget(evt) ; // deepest drop target
280
348
  var op = SC.DRAG_NONE ;
281
349
 
282
350
  while (target && (target != last) && (op == SC.DRAG_NONE)) {
283
- // make sure the drag source will permit a drop operation on the named target
351
+ // make sure the drag source will permit a drop operation on the named
352
+ // target
284
353
  if (target && source && source.dragSourceOperationMaskFor) {
285
354
  op = source.dragSourceOperationMaskFor(this, target) ;
286
355
  } else op = SC.DRAG_ANY ; // assume drops are allowed
287
356
 
288
- this.sourceDropOperations = op ;
289
-
290
357
  // now, let's see if the target will accept the drag
291
358
  if ((op != SC.DRAG_NONE) && target && target.computeDragOperations) {
292
- op = op & target.computeDragOperations(this, evt) ;
359
+ op = op & target.computeDragOperations(this, evt, op) ;
293
360
  } else op = SC.DRAG_NONE ; // assume drops AREN'T allowed
294
361
 
295
- this.dropOperations = op ;
362
+ this.allowedDragOperations = op ;
296
363
 
297
364
  // if DRAG_NONE, then look for the next parent that is a drop zone
298
365
  if (op == SC.DRAG_NONE) target = this._findNextDropTarget(target) ;
@@ -314,6 +381,9 @@ SC.Drag = SC.Object.extend(
314
381
 
315
382
  // notify source that the drag moved
316
383
  if (source && source.dragDidMove) source.dragDidMove(this, loc) ;
384
+
385
+ // reposition the ghostView
386
+ this._positionGhostView(evt) ;
317
387
  },
318
388
 
319
389
  /**
@@ -323,34 +393,37 @@ SC.Drag = SC.Object.extend(
323
393
  executes the drop target protocol to try to complete the drag operation.
324
394
  */
325
395
  mouseUp: function(evt) {
326
- var loc = { x: evt.pageX, y: evt.pageY } ;
327
- var target = this._lastTarget, op = this.dropOperations;
396
+ var loc = { x: evt.pageX, y: evt.pageY },
397
+ target = this._lastTarget,
398
+ op = this.allowedDragOperations;
399
+
400
+ this.set('location', loc);
328
401
 
329
402
  // try to have the drop target perform the drop...
330
403
  try {
331
404
  if (target && target.acceptDragOperation && target.acceptDragOperation(this, op)) {
332
- op = (target.performDragOperation) ? target.performDragOperation(this, op) : SC.DRAG_NONE ;
405
+ op = target.performDragOperation ? target.performDragOperation(this, op) : SC.DRAG_NONE ;
333
406
  } else {
334
407
  op = SC.DRAG_NONE;
335
408
  }
336
409
  } catch (e) {
337
- console.log('Exception in SC.Drag.mouseUp(acceptDragOperation|performDragOperation): %@'.fmt(e)) ;
410
+ console.error('Exception in SC.Drag.mouseUp(acceptDragOperation|performDragOperation): %@'.fmt(e)) ;
338
411
  }
339
412
 
340
413
  try {
341
414
  // notify last drop target that the drag exited, to allow it to cleanup
342
415
  if (target && target.dragExited) target.dragExited(this, evt) ;
343
- } catch (e) {
344
- onsole.log('Exception in SC.Drag.mouseUp(target.dragExited): %@'.fmt(e)) ;
416
+ } catch (ex) {
417
+ console.error('Exception in SC.Drag.mouseUp(target.dragExited): %@'.fmt(ex)) ;
345
418
  }
346
419
 
347
420
  // notify all drop targets that the drag ended
348
421
  var ary = this._dropTargets() ;
349
422
  for (var idx=0, len=ary.length; idx<len; idx++) {
350
423
  try {
351
- ary[idx].tryToPerform('dragEnded', evt) ;
352
- } catch (e) {
353
- console.log('Exception in SC.Drag.mouseUp(dragEnded on %@): %@'.fmt(ary[idx], e)) ;
424
+ ary[idx].tryToPerform('dragEnded', this, evt) ;
425
+ } catch (ex2) {
426
+ console.error('Exception in SC.Drag.mouseUp(dragEnded on %@): %@'.fmt(ary[idx], ex2)) ;
354
427
  }
355
428
  }
356
429
 
@@ -362,49 +435,62 @@ SC.Drag = SC.Object.extend(
362
435
  if (source && source.dragDidEnd) source.dragDidEnd(this, loc, op) ;
363
436
 
364
437
  this._lastTarget = null ;
365
- this._dragInProgress = NO ; // required by autoscroll, which is invoked by a timer
438
+ this._dragInProgress = NO ; // required by autoscroll (invoked by a timer)
366
439
  },
367
440
 
368
- // ..........................................
369
- // PRIVATE PROPERTIES AND METHODS
370
- //
371
-
372
- _ghostView: null,
373
-
374
- // this will create the ghostView and add it to the document.
441
+ /** @private
442
+ This will create the ghostView and add it to the document.
443
+ */
375
444
  _createGhostView: function() {
376
- var view = this._ghostView = SC.Pane.create({ owner: this }) ;
377
- view.$().addClass('sc-ghost-view').append(this.dragView.rootElement.cloneNode(true)) ;
378
- // var f = this.dragView.get('frame') ;
379
- // console.log('dragView %@ frame is { top: %@, left: %@, width: %@, height: %@ }'.fmt(this.dragView, f.y, f.x, f.width, f.height)) ;
380
- view.adjust(this.dragView.get('frame')) ;
445
+ var that = this,
446
+ frame = this.dragView.get('frame'),
447
+ view;
448
+
449
+ view = this.ghostView = SC.Pane.create({
450
+ classNames:['sc-ghost-view'],
451
+ layout: { top: frame.y, left: frame.x, width: frame.width, height: frame.height },
452
+ owner: this,
453
+ didCreateLayer: function() {
454
+ if (that.dragView) {
455
+ var layer = that.dragView.get('layer') ;
456
+ if (layer) this.get('layer').appendChild(layer.cloneNode(true)) ;
457
+ }
458
+ }
459
+ });
460
+
381
461
  view.append() ; // add to window
382
462
  },
383
463
 
384
- // positions the ghost view underneath the mouse with the initial offset
385
- // recorded by when the drag started.
464
+ /** @private
465
+ Positions the ghost view underneath the mouse with the initial offset
466
+ recorded by when the drag started.
467
+ */
386
468
  _positionGhostView: function(evt) {
387
- var loc = { x: evt.pageX, y: evt.pageY } ;
469
+ var loc = this.get('location') ;
388
470
  loc.x -= this.ghostOffset.x ;
389
471
  loc.y -= this.ghostOffset.y ;
390
- this._ghostView.adjust({ top: loc.y, left: loc.x }) ;
472
+ this.ghostView.adjust({ top: loc.y, left: loc.x }) ;
473
+ this.ghostView.invokeOnce('updateLayout') ;
391
474
  },
392
475
 
476
+ /** @private */
393
477
  _destroyGhostView: function() {
394
- if (this._ghostView) {
395
- this._ghostView.remove() ;
396
- this._ghostView = null ; // this will allow the GC to collect it.
478
+ if (this.ghostView) {
479
+ this.ghostView.remove() ;
480
+ this.ghostView = null ; // this will allow the GC to collect it.
397
481
  }
398
482
  },
399
483
 
400
- // Return an array of drop targets, sorted with any nested drop targets
401
- // at the top of the array. The first time this method is called during
402
- // a drag, it will reconstruct this array using the current set of
403
- // drop targets. Afterwards it uses the cached set until the drop
404
- // completes.
405
- //
406
- // This means that if you change the view hierarchy of your drop targets
407
- // during a drag, it will probably be wrong.
484
+ /** @private
485
+ Return an array of drop targets, sorted with any nested drop targets
486
+ at the top of the array. The first time this method is called during
487
+ a drag, it will reconstruct this array using the current set of
488
+ drop targets. Afterwards it uses the cached set until the drop
489
+ completes.
490
+
491
+ This means that if you change the view hierarchy of your drop targets
492
+ during a drag, it will probably be wrong.
493
+ */
408
494
  _dropTargets: function() {
409
495
  if (this._cachedDropTargets) return this._cachedDropTargets ;
410
496
 
@@ -445,7 +531,10 @@ SC.Drag = SC.Object.extend(
445
531
  return ret ;
446
532
  },
447
533
 
448
- // This will search through the drop targets, looking for one in the target area.
534
+ /** @private
535
+ This will search through the drop targets, looking for one in the target
536
+ area.
537
+ */
449
538
  _findDropTarget: function(evt) {
450
539
  var loc = { x: evt.pageX, y: evt.pageY } ;
451
540
 
@@ -459,15 +548,17 @@ SC.Drag = SC.Object.extend(
459
548
  // get clippingFrame, converted to the pane.
460
549
  frame = target.convertFrameToView(target.get('clippingFrame'), null) ;
461
550
 
462
- // check to see if loc is inside. If so, then make this the drop target unless
463
- // there is a drop target and the current one is not deeper.
551
+ // check to see if loc is inside. If so, then make this the drop target
552
+ // unless there is a drop target and the current one is not deeper.
464
553
  if (SC.pointInRect(loc, frame)) return target;
465
554
  }
466
555
  return null ;
467
556
  },
468
557
 
469
- // Search the parent nodes of the target to find another view matching the
470
- // drop target. Returns null if no matching target is found.
558
+ /** @private
559
+ Search the parent nodes of the target to find another view matching the
560
+ drop target. Returns null if no matching target is found.
561
+ */
471
562
  _findNextDropTarget: function(target) {
472
563
  var dropTargets = SC.Drag._dropTargets ;
473
564
  while (target = target.get('parentView')) {
@@ -480,13 +571,15 @@ SC.Drag = SC.Object.extend(
480
571
  // AUTOSCROLLING
481
572
  //
482
573
 
483
- // Performs auto-scrolling for the drag. This will only do anything if
484
- // the user keeps the mouse within a few pixels of one location for a little
485
- // while.
486
- //
487
- // Returns true if a scroll was performed
574
+ /** @private
575
+ Performs auto-scrolling for the drag. This will only do anything if
576
+ the user keeps the mouse within a few pixels of one location for a little
577
+ while.
578
+
579
+ Returns YES if a scroll was performed.
580
+ */
488
581
  _autoscroll: function(evt) {
489
- return NO ; // TODO FIXME
582
+ if (!evt) evt = this._lastAutoscrollEvent ;
490
583
 
491
584
  // If drag has ended, exit
492
585
  if (!this._dragInProgress) return NO;
@@ -498,80 +591,73 @@ SC.Drag = SC.Object.extend(
498
591
  // - there must be room left to scroll in that direction.
499
592
 
500
593
  // NOTE: an event is passed only when called from mouseDragged
501
- var loc = (evt) ? { x: evt.pageX, y: evt.pageY } : this.get('location') ;
502
- var view = this._findScrollableView(loc) ;
594
+ var loc = evt ? { x: evt.pageX, y: evt.pageY } : this.get('location'),
595
+ view = this._findScrollableView(loc),
596
+ scrollableView = null, // become final view when found
597
+ vscroll, hscroll, min, max, edge, container, f;
503
598
 
504
- // these will become either 1 or -1 to indicate scroll direction or 0 for no scroll.
505
- var verticalScroll, horizontalScroll ;
506
- var min, max, edge ;
507
- var scrollableView = null;
599
+ // hscroll and vscroll will become either 1 or -1 to indicate scroll
600
+ // direction or 0 for no scroll.
508
601
 
509
602
  while (view && !scrollableView) {
510
603
 
511
604
  // quick check...can we scroll this view right now?
512
- verticalScroll = view.get('hasVerticalScroller') ? 1 : 0;
513
- horizontalScroll = view.get('hasHorizontalScroller') ? 1 : 0;
514
-
515
- // at least one direction might be scrollable. Collect some extra
516
- // info to investigate further.
517
- if ((verticalScroll != 0) || (horizontalScroll != 0)) {
518
- var f = view.convertFrameToView(view.get('frame'), null) ;
519
- var innerSize = view.get('innerFrame') ;
520
- var scrollFrame = view.get('scrollFrame') ;
605
+ vscroll = view.get('canScrollVertical') ? 1 : 0;
606
+ hscroll = view.get('canScrollHorizontal') ? 1 : 0;
607
+
608
+ // at least one direction might be scrollable. Collect frame info
609
+ if (vscroll || hscroll) {
610
+ container = view.get('containerView');
611
+ if (container) {
612
+ f = view.convertFrameToView(container.get('frame'),null);
613
+ } else {
614
+ vscroll = hscroll = 0 ; // can't autoscroll this mother
615
+ }
521
616
  }
522
-
523
- if (verticalScroll != 0) {
617
+
618
+ // handle vertical direction
619
+ if (vscroll) {
524
620
 
525
621
  // bottom hotzone?
526
- max = SC.maxY(f); min = max - SC.DRAG_AUTOSCROLL_ZONE_THICKNESS ;
527
- edge = SC.maxY(scrollFrame) ;
528
-
529
- if ((edge >= innerSize.height) && (loc.y >= min) && (loc.y <= max)) {
530
- verticalScroll = 1 ;
531
-
532
- // no...how about top hotzone?
533
- } else {
534
- min = SC.minY(f); max = min + SC.DRAG_AUTOSCROLL_ZONE_THICKNESS ;
535
- edge = SC.minY(scrollFrame) ;
536
- if ((edge <= innerSize.height) && (loc.y >= min) && (loc.y <= max)) {
537
- verticalScroll = -1 ;
538
-
539
- // no, ok don't scroll vertical
540
- } else verticalScroll = 0 ;
622
+ max = SC.maxY(f);
623
+ min = max - SC.DRAG_AUTOSCROLL_ZONE_THICKNESS ;
624
+ if (loc.y >= min && loc.y <= max) vscroll = 1 ;
625
+ else {
626
+ // how about top
627
+ min = SC.minY(f);
628
+ max = min + SC.DRAG_AUTOSCROLL_ZONE_THICKNESS ;
629
+ if (loc.y >= min && loc.y <= max) vscroll = -1 ;
630
+ else vscroll = 0 ; // can't scroll vertical
541
631
  }
542
632
  }
543
-
544
- if (horizontalScroll != 0) {
545
- // right hotzone?
546
- max = SC.maxX(f); min = max - SC.DRAG_AUTOSCROLL_ZONE_THICKNESS ;
547
- edge = SC.maxX(scrollFrame) ;
548
- if ((edge >= innerSize.width) && (loc.x >= min) && (loc.x <= max)) {
549
- horizontalScroll = 1 ;
550
-
551
- // no...how about left hotzone?
552
- } else {
553
- min = SC.minY(f); max = min + SC.DRAG_AUTOSCROLL_ZONE_THICKNESS ;
554
- edge = SC.minY(scrollFrame) ;
555
- if ((edge <= innerSize.width) && (loc.x >= min) && (loc.x <= max)) {
556
- horizontalScroll = -1 ;
557
-
558
- // no, ok don't scroll vertical
559
- } else horizontalScroll = 0 ;
633
+
634
+ // handle horizontal direction
635
+ if (hscroll) {
636
+
637
+ // bottom hotzone?
638
+ max = SC.maxX(f);
639
+ min = max - SC.DRAG_AUTOSCROLL_ZONE_THICKNESS ;
640
+ if (loc.x >= min && loc.x <= max) hscroll = 1 ;
641
+ else {
642
+ // how about top
643
+ min = SC.minX(f);
644
+ max = min + SC.DRAG_AUTOSCROLL_ZONE_THICKNESS ;
645
+ if (loc.x >= min && loc.x <= max) hscroll = -1 ;
646
+ else hscroll = 0 ; // can't scroll vertical
560
647
  }
561
648
  }
562
649
 
563
650
  // if we can scroll, then set this.
564
- if ((verticalScroll != 0) || (horizontalScroll != 0)) {
565
- scrollableView = view ;
566
- } else view = this._findNextScrollableView(view) ;
651
+ if (vscroll || hscroll) scrollableView = view ;
652
+ else view = this._findNextScrollableView(view) ;
567
653
  }
568
654
 
569
- // STEP 2: Only scroll if the user remains within the hot-zone for a period of
570
- // time
571
- if (scrollableView && (this._lastScrollableView == scrollableView)) {
655
+ // STEP 2: Only scroll if the user remains within the hot-zone for a
656
+ // period of time
657
+ if (scrollableView && (this._lastScrollableView === scrollableView)) {
572
658
  if ((Date.now() - this._hotzoneStartTime) > 100) {
573
659
  this._horizontalScrollAmount *= 1.05 ;
574
- this._verticalScrollAmount *= 1.05 ;
660
+ this._verticalScrollAmount *= 1.05 ; // accelerate scroll
575
661
  }
576
662
 
577
663
  // otherwise, reset everything and disallow scroll
@@ -580,32 +666,37 @@ SC.Drag = SC.Object.extend(
580
666
  this._horizontalScrollAmount = 15 ;
581
667
  this._verticalScrollAmount = 15 ;
582
668
  this._hotzoneStartTime = (scrollableView) ? Date.now() : null ;
583
-
584
- horizontalScroll = verticalScroll = 0 ;
669
+ hscroll = vscroll = 0 ;
585
670
  }
586
671
 
587
672
  // STEP 3: Scroll!
588
- if (scrollableView && ((horizontalScroll != 0) || (verticalScroll != 0))) {
673
+ if (scrollableView && (hscroll || vscroll)) {
589
674
  var scroll = {
590
- x: horizontalScroll * this._horizontalScrollAmount,
591
- y: verticalScroll * this._verticalScrollAmount
675
+ x: hscroll * this._horizontalScrollAmount,
676
+ y: vscroll * this._verticalScrollAmount
592
677
  } ;
593
-
594
678
  scrollableView.scrollBy(scroll) ;
595
679
  }
596
680
 
597
- // If a scrollable view was found, then reschedule
681
+ // If a scrollable view was found, then check later
598
682
  if (scrollableView) {
599
- this.invokeLater('_autoscroll', 100, null);
683
+ if (evt) {
684
+ this._lastAutoscrollEvent = { pageX: evt.pageX, pageY: evt.pageY };
685
+ }
686
+ this.invokeLater(this._autoscroll, 100, null);
600
687
  return YES ;
601
- } else return NO ;
688
+ } else {
689
+ this._lastAutoscrollEvent = null;
690
+ return NO ;
691
+ }
602
692
  },
603
693
 
604
- // Returns an array of scrollable views, sorted with nested scrollable
605
- // views at the top of the array. The first time this method is called
606
- // during a drag, it will reconstrut this array using the current state of
607
- // scrollable views. Afterwards it uses the cached set until the drop
608
- // completes.
694
+ /** @private
695
+ Returns an array of scrollable views, sorted with nested scrollable views
696
+ at the top of the array. The first time this method is called during a
697
+ drag, it will reconstrut this array using the current state of scrollable
698
+ views. Afterwards it uses the cached set until the drop completes.
699
+ */
609
700
  _scrollableViews: function() {
610
701
  if (this._cachedScrollableView) return this._cachedScrollableView ;
611
702
 
@@ -630,15 +721,19 @@ SC.Drag = SC.Object.extend(
630
721
  return ret ;
631
722
  },
632
723
 
633
- // This will search through the scrollable views, looking for one in the
634
- // target area.
724
+ /** @private
725
+ This will search through the scrollable views, looking for one in the
726
+ target area.
727
+ */
635
728
  _findScrollableView: function(loc) {
636
- var target, frame ;
637
- var ary = this._scrollableViews() ;
638
- for (var idx=0, len=ary.length; idx<len; idx++) {
729
+ var ary = this._scrollableViews(),
730
+ len = ary ? ary.length : 0,
731
+ target, frame, idx;
732
+
733
+ for (idx=0; idx<len; idx++) {
639
734
  target = ary[idx] ;
640
735
 
641
- // FIXME if (!target.get('isVisibleInWindow')) continue ;
736
+ if (!target.get('isVisibleInWindow')) continue ;
642
737
 
643
738
  // get clippingFrame, converted to the pane
644
739
  frame = target.convertFrameToView(target.get('clippingFrame'), null) ;
@@ -649,8 +744,10 @@ SC.Drag = SC.Object.extend(
649
744
  return null ;
650
745
  },
651
746
 
652
- // Search the parent nodes of the target to find another scrollable view.
653
- // return null if none is found.
747
+ /** @private
748
+ Search the parent nodes of the target to find another scrollable view.
749
+ return null if none is found.
750
+ */
654
751
  _findNextScrollableView: function(view) {
655
752
  var scrollableViews = SC.Drag._scrollableViews ;
656
753
  while (view = view.get('parentView')) {
@@ -665,7 +762,7 @@ SC.Drag.mixin(
665
762
  /** @scope SC.Drag */ {
666
763
 
667
764
  /**
668
- This is the method you use to initiate a new drag. See class documentation
765
+ This is the method you use to initiate a new drag. See class documentation
669
766
  for more info on the options taken by this method.
670
767
 
671
768
  @params {Hash} ops a hash of options. See documentation above.
@@ -676,7 +773,10 @@ SC.Drag.mixin(
676
773
  return ret ;
677
774
  },
678
775
 
776
+ /** @private */
679
777
  _dropTargets: {},
778
+
779
+ /** @private */
680
780
  _scrollableViews: {},
681
781
 
682
782
  /**
@@ -685,9 +785,10 @@ SC.Drag.mixin(
685
785
  This method is called automatically whenever a view is created with the
686
786
  isDropTarget property set to YES. You generally will not need to call it
687
787
  yourself.
788
+
789
+ @param {SC.View} target a view implementing the SC.DropTarget protocol
688
790
  */
689
791
  addDropTarget: function(target) {
690
- // console.log('addDropTarget called on %@ with %@'.fmt(this, target));
691
792
  this._dropTargets[SC.guidFor(target)] = target ;
692
793
  },
693
794
 
@@ -696,15 +797,18 @@ SC.Drag.mixin(
696
797
 
697
798
  This method is called automatically whenever a view is removed from the
698
799
  hierarchy. You generally will not need to call it yourself.
800
+
801
+ @param {SC.View} target A previously registered drop target
699
802
  */
700
803
  removeDropTarget: function(target) {
701
- // console.log('removeDropTarget called on %@ with %@'.fmt(this, target));
702
804
  delete this._dropTargets[SC.guidFor(target)] ;
703
805
  },
704
806
 
705
807
  /**
706
- Register the view object as a scrollable view. These views will auto-scroll
707
- during a drag.
808
+ Register the view object as a scrollable view. These views will
809
+ auto-scroll during a drag.
810
+
811
+ @param {SC.View} target The view that should be auto-scrolled
708
812
  */
709
813
  addScrollableView: function(target) {
710
814
  this._scrollableViews[SC.guidFor(target)] = target ;
@@ -713,9 +817,11 @@ SC.Drag.mixin(
713
817
  /**
714
818
  Remove the view object as a scrollable view. These views will auto-scroll
715
819
  during a drag.
820
+
821
+ @param {SC.View} target A previously registered scrollable view
716
822
  */
717
823
  removeScrollableView: function(target) {
718
824
  delete this._scrollableViews[SC.guidFor(target)] ;
719
825
  }
720
-
826
+
721
827
  });