sproutit-sproutcore 1.0.0.20090416161445 → 1.0.0.20090720093355

Sign up to get free protection for your applications and to get access to all the features.
Files changed (754) hide show
  1. data/Buildfile +4 -2
  2. data/frameworks/sproutcore/Buildfile +3 -2
  3. data/frameworks/sproutcore/README +2 -1
  4. data/frameworks/sproutcore/apps/docs/core.js +27 -0
  5. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
  6. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
  7. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +14378 -0
  8. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
  9. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image11.png +0 -0
  10. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image13.png +0 -0
  11. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
  12. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image8.png +0 -0
  13. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -0
  14. data/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +9 -0
  15. data/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +22 -0
  16. data/frameworks/sproutcore/apps/{sc_jsdoc → docs}/english.lproj/strings.js +7 -7
  17. data/frameworks/sproutcore/apps/docs/main.js +30 -0
  18. data/frameworks/sproutcore/apps/tests/controllers/detail.js +16 -0
  19. data/frameworks/sproutcore/apps/tests/controllers/source.js +29 -0
  20. data/frameworks/sproutcore/apps/tests/controllers/target.js +26 -0
  21. data/frameworks/sproutcore/apps/tests/controllers/targets.js +65 -26
  22. data/frameworks/sproutcore/apps/tests/controllers/tests.js +14 -19
  23. data/frameworks/sproutcore/apps/tests/core.js +114 -16
  24. data/frameworks/sproutcore/apps/tests/data_source.js +96 -0
  25. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +22 -2
  26. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +168 -22
  27. data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +14 -5
  28. data/frameworks/sproutcore/apps/tests/fixtures/target.js +81 -37
  29. data/frameworks/sproutcore/apps/tests/fixtures/test.js +38 -37
  30. data/frameworks/sproutcore/apps/tests/main.js +9 -20
  31. data/frameworks/sproutcore/apps/tests/models/target.js +74 -31
  32. data/frameworks/sproutcore/apps/tests/models/test.js +30 -2
  33. data/frameworks/sproutcore/{frameworks/desktop/mixins/collection_item.js → apps/tests/states/no_targets.js} +16 -12
  34. data/frameworks/sproutcore/apps/tests/states/ready.js +56 -0
  35. data/frameworks/sproutcore/apps/tests/states/ready_detail.js +41 -0
  36. data/frameworks/sproutcore/apps/tests/states/ready_empty.js +48 -0
  37. data/frameworks/sproutcore/apps/tests/states/ready_list.js +41 -0
  38. data/frameworks/sproutcore/apps/tests/states/ready_loading.js +44 -0
  39. data/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +31 -0
  40. data/frameworks/sproutcore/apps/tests/states/start.js +39 -0
  41. data/frameworks/sproutcore/apps/tests/tests/controllers/{test.js → detail.js} +3 -3
  42. data/frameworks/sproutcore/apps/tests/tests/controllers/source.js +15 -0
  43. data/frameworks/sproutcore/apps/tests/tests/controllers/target.js +15 -0
  44. data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +3 -3
  45. data/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +15 -0
  46. data/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +26 -0
  47. data/frameworks/sproutcore/design/CollectionView State Charts.graffle +4848 -0
  48. data/frameworks/sproutcore/design/Design Charts.graffle +8788 -6375
  49. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Preview.pdf +0 -0
  50. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Thumbnail.tiff +0 -0
  51. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/data.plist +1452 -0
  52. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/image8.png +0 -0
  53. data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Preview.pdf +0 -0
  54. data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Thumbnail.tiff +0 -0
  55. data/frameworks/sproutcore/design/TestRunner Design.graffle/data.plist +24187 -0
  56. data/frameworks/sproutcore/design/TestRunner Design.graffle/image10.png +0 -0
  57. data/frameworks/sproutcore/design/TestRunner Design.graffle/image11.png +0 -0
  58. data/frameworks/sproutcore/design/TestRunner Design.graffle/image13.png +0 -0
  59. data/frameworks/sproutcore/design/TestRunner Design.graffle/image15.png +0 -0
  60. data/frameworks/sproutcore/design/TestRunner Design.graffle/image16.png +0 -0
  61. data/frameworks/sproutcore/design/TestRunner Design.graffle/image17.png +0 -0
  62. data/frameworks/sproutcore/design/TestRunner Design.graffle/image18.png +0 -0
  63. data/frameworks/sproutcore/design/TestRunner Design.graffle/image19.png +0 -0
  64. data/frameworks/sproutcore/design/TestRunner Design.graffle/image22.tiff +0 -0
  65. data/frameworks/sproutcore/design/TestRunner Design.graffle/image23.png +0 -0
  66. data/frameworks/sproutcore/design/TestRunner Design.graffle/image24.png +0 -0
  67. data/frameworks/sproutcore/design/TestRunner Design.graffle/image25.png +0 -0
  68. data/frameworks/sproutcore/design/TestRunner Design.graffle/image30.png +0 -0
  69. data/frameworks/sproutcore/design/TestRunner Design.graffle/image31.png +0 -0
  70. data/frameworks/sproutcore/design/TestRunner Design.graffle/image8.png +0 -0
  71. data/frameworks/sproutcore/design/TestRunner Design.graffle/image9.png +0 -0
  72. data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +2 -2
  73. data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +66 -49
  74. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +146 -31
  75. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures_with_queries.js +238 -0
  76. data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +27 -11
  77. data/frameworks/sproutcore/frameworks/datastore/models/record.js +163 -32
  78. data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +67 -5
  79. data/frameworks/sproutcore/frameworks/datastore/system/many_array.js +157 -0
  80. data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +202 -19
  81. data/frameworks/sproutcore/frameworks/datastore/system/query.js +929 -78
  82. data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +143 -5
  83. data/frameworks/sproutcore/frameworks/datastore/system/store.js +443 -125
  84. data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +38 -3
  85. data/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +94 -0
  86. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +30 -0
  87. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +238 -0
  88. data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +105 -16
  89. data/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +178 -0
  90. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +1 -1
  91. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +9 -8
  92. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +6 -6
  93. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +6 -6
  94. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +3 -3
  95. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +7 -7
  96. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +4 -4
  97. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +7 -7
  98. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +7 -7
  99. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare_records.js +126 -0
  100. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +165 -0
  101. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +82 -0
  102. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/find_all.js +362 -0
  103. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/parsing.js +170 -0
  104. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +43 -0
  105. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +60 -0
  106. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +67 -0
  107. data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +2 -13
  108. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +3 -4
  109. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +73 -0
  110. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +15 -0
  111. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +4 -2
  112. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +1 -1
  113. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +2 -2
  114. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +1 -1
  115. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +2 -2
  116. data/frameworks/sproutcore/frameworks/debug/core.js +60 -0
  117. data/frameworks/sproutcore/frameworks/deprecated/core.js +0 -2
  118. data/frameworks/sproutcore/frameworks/deprecated/server/server.js +0 -1
  119. data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +0 -2
  120. data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +0 -2
  121. data/frameworks/sproutcore/frameworks/deprecated/system/event.js +0 -2
  122. data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +0 -2
  123. data/frameworks/sproutcore/frameworks/deprecated/system/object.js +0 -2
  124. data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +0 -1
  125. data/frameworks/sproutcore/frameworks/deprecated/system/string.js +0 -2
  126. data/frameworks/sproutcore/frameworks/designer/coders/design.js +1 -2
  127. data/frameworks/sproutcore/frameworks/designer/coders/localization.js +1 -2
  128. data/frameworks/sproutcore/frameworks/designer/coders/object.js +1 -1
  129. data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +1 -1
  130. data/frameworks/sproutcore/frameworks/designer/ext/page.js +0 -2
  131. data/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -2
  132. data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +2 -3
  133. data/frameworks/sproutcore/frameworks/designer/views/designer.js +24 -8
  134. data/frameworks/sproutcore/frameworks/designer/views/label.js +1 -2
  135. data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +0 -2
  136. data/frameworks/sproutcore/frameworks/designer/views/tab.js +1 -2
  137. data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +2 -2
  138. data/frameworks/sproutcore/frameworks/desktop/english.lproj/drag.css +6 -0
  139. data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +63 -10
  140. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +5 -4
  141. data/frameworks/sproutcore/frameworks/desktop/english.lproj/modal.css +5 -0
  142. data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +1 -0
  143. data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +5 -0
  144. data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +1 -0
  145. data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +1 -1
  146. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +61 -0
  147. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +136 -79
  148. data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +55 -24
  149. data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +295 -147
  150. data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
  151. data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +1 -1
  152. data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +18 -20
  153. data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +2 -2
  154. data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +4 -4
  155. data/frameworks/sproutcore/frameworks/desktop/system/drag.js +337 -231
  156. data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +3 -3
  157. data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +1 -1
  158. data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +2 -2
  159. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +46 -1
  160. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +4 -2
  161. data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +5 -6
  162. data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +11 -11
  163. data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +11 -7
  164. data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +9 -9
  165. data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +19 -0
  166. data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +0 -1
  167. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +249 -0
  168. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +82 -0
  169. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +199 -0
  170. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +288 -0
  171. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +65 -0
  172. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +88 -0
  173. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +165 -0
  174. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +121 -0
  175. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +177 -0
  176. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +240 -0
  177. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +191 -0
  178. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +197 -39
  179. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +141 -0
  180. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +182 -0
  181. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +183 -0
  182. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +133 -0
  183. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +132 -0
  184. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +56 -0
  185. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +167 -0
  186. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +127 -0
  187. data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +30 -1
  188. data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +8 -8
  189. data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +9 -9
  190. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +45 -6
  191. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +2 -1
  192. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +17 -1
  193. data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +44 -29
  194. data/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +231 -0
  195. data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +1 -1
  196. data/frameworks/sproutcore/frameworks/desktop/views/button.js +15 -4
  197. data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +8 -1
  198. data/frameworks/sproutcore/frameworks/desktop/views/collection.js +1739 -1123
  199. data/frameworks/sproutcore/frameworks/desktop/views/form.js +0 -1
  200. data/frameworks/sproutcore/frameworks/desktop/views/grid.js +13 -11
  201. data/frameworks/sproutcore/frameworks/desktop/views/list.js +405 -571
  202. data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +211 -74
  203. data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +319 -169
  204. data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +57 -51
  205. data/frameworks/sproutcore/frameworks/desktop/views/progress.js +2 -2
  206. data/frameworks/sproutcore/frameworks/desktop/views/scene.js +150 -2
  207. data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +92 -50
  208. data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +86 -63
  209. data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +38 -22
  210. data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +51 -12
  211. data/frameworks/sproutcore/frameworks/desktop/views/slider.js +2 -0
  212. data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +17 -1087
  213. data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +3 -3
  214. data/frameworks/sproutcore/frameworks/desktop/views/split.js +35 -9
  215. data/frameworks/sproutcore/frameworks/desktop/views/stacked.js +101 -0
  216. data/frameworks/sproutcore/frameworks/desktop/views/tab.js +23 -22
  217. data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +1 -1
  218. data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +382 -363
  219. data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +7 -279
  220. data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +212 -310
  221. data/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +109 -0
  222. data/frameworks/sproutcore/frameworks/foundation/core.js +25 -0
  223. data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +30 -8
  224. data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +19 -4
  225. data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +219 -3
  226. data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +1 -0
  227. data/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +30 -0
  228. data/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +15 -0
  229. data/frameworks/sproutcore/frameworks/{desktop → foundation}/english.lproj/text_field.css +19 -3
  230. data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +6 -1
  231. data/frameworks/sproutcore/frameworks/foundation/license.js +19 -0
  232. data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +15 -7
  233. data/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +171 -0
  234. data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +5 -5
  235. data/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +462 -0
  236. data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +162 -84
  237. data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +33 -2
  238. data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +17 -3
  239. data/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +159 -0
  240. data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +49 -20
  241. data/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +887 -0
  242. data/frameworks/sproutcore/frameworks/foundation/system/application.js +36 -0
  243. data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +310 -62
  244. data/frameworks/sproutcore/frameworks/foundation/system/datetime.js +729 -0
  245. data/frameworks/sproutcore/frameworks/foundation/system/event.js +57 -21
  246. data/frameworks/sproutcore/frameworks/foundation/system/ready.js +11 -5
  247. data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +55 -16
  248. data/frameworks/sproutcore/frameworks/foundation/system/request.js +152 -27
  249. data/frameworks/sproutcore/frameworks/foundation/system/responder.js +120 -0
  250. data/frameworks/sproutcore/frameworks/foundation/system/responder_context.js +243 -0
  251. data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +29 -6
  252. data/frameworks/sproutcore/frameworks/foundation/system/routes.js +143 -102
  253. data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +9 -2
  254. data/frameworks/sproutcore/frameworks/foundation/system/utils.js +104 -9
  255. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +182 -0
  256. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +193 -0
  257. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +64 -0
  258. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/single_case.js +136 -0
  259. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/empty_case.js +82 -0
  260. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/multiple_case.js +111 -0
  261. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_case.js +193 -0
  262. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_enumerable_case.js +179 -0
  263. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +108 -0
  264. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +35 -0
  265. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +128 -0
  266. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +17 -0
  267. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +325 -0
  268. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +718 -0
  269. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +484 -0
  270. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +28 -28
  271. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +1 -1
  272. data/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +151 -0
  273. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +2 -2
  274. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +1 -1
  275. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +1 -1
  276. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +12 -12
  277. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +1 -1
  278. data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +52 -14
  279. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +27 -23
  280. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +1 -1
  281. data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +12 -10
  282. data/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +148 -0
  283. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +1 -1
  284. data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/methods.js +0 -0
  285. data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/ui.js +53 -1
  286. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +1 -0
  287. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +1 -1
  288. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +35 -0
  289. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +1 -1
  290. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisible.js +51 -0
  291. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +12 -1
  292. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +83 -3
  293. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +1 -1
  294. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +4 -0
  295. data/frameworks/sproutcore/frameworks/foundation/views/container.js +1 -1
  296. data/frameworks/sproutcore/frameworks/foundation/views/field.js +27 -16
  297. data/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -1
  298. data/frameworks/sproutcore/frameworks/foundation/views/label.js +16 -6
  299. data/frameworks/sproutcore/frameworks/{desktop → foundation}/views/text_field.js +39 -15
  300. data/frameworks/sproutcore/frameworks/foundation/views/view.js +328 -83
  301. data/frameworks/sproutcore/frameworks/runtime/README +1 -0
  302. data/frameworks/sproutcore/frameworks/runtime/core.js +110 -31
  303. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +238 -0
  304. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +33 -0
  305. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +121 -0
  306. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +34 -0
  307. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +50 -0
  308. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +46 -0
  309. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +371 -0
  310. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +100 -0
  311. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +49 -0
  312. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +94 -0
  313. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +50 -0
  314. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +47 -0
  315. data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +320 -110
  316. data/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +64 -0
  317. data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +44 -6
  318. data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +142 -77
  319. data/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +104 -0
  320. data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +298 -142
  321. data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +17 -11
  322. data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +55 -15
  323. data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +29 -5
  324. data/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +40 -0
  325. data/frameworks/sproutcore/frameworks/runtime/system/binding.js +39 -15
  326. data/frameworks/sproutcore/frameworks/runtime/system/index_set.js +1166 -0
  327. data/frameworks/sproutcore/frameworks/runtime/system/object.js +33 -15
  328. data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +201 -35
  329. data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +42 -15
  330. data/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +649 -0
  331. data/frameworks/sproutcore/frameworks/runtime/system/set.js +183 -54
  332. data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +20 -11
  333. data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +2 -2
  334. data/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +44 -0
  335. data/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +16 -0
  336. data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +1 -1
  337. data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +1 -1
  338. data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +5 -5
  339. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +57 -0
  340. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +21 -2
  341. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +249 -129
  342. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +11 -2
  343. data/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +55 -0
  344. data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +81 -6
  345. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +195 -0
  346. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +43 -0
  347. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +74 -0
  348. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +42 -0
  349. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +38 -0
  350. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +38 -0
  351. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +74 -0
  352. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +40 -0
  353. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +40 -0
  354. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +36 -0
  355. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +189 -0
  356. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +89 -0
  357. data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +1 -1
  358. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +59 -0
  359. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +75 -0
  360. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +117 -0
  361. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +110 -0
  362. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +65 -0
  363. data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +3 -3
  364. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/add.js +92 -0
  365. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +17 -0
  366. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +85 -0
  367. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/isEqual.js +60 -0
  368. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +87 -0
  369. data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +4 -25
  370. data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +39 -1
  371. data/frameworks/sproutcore/frameworks/testing/core.js +183 -0
  372. data/frameworks/sproutcore/frameworks/testing/english.lproj/runner.css +126 -0
  373. data/frameworks/sproutcore/frameworks/testing/extras.js +0 -26
  374. data/frameworks/sproutcore/frameworks/testing/qunit.js +33 -25
  375. data/frameworks/sproutcore/frameworks/testing/system/dump.js +205 -0
  376. data/frameworks/sproutcore/frameworks/testing/system/equiv.js +201 -0
  377. data/frameworks/sproutcore/frameworks/testing/system/plan.js +691 -0
  378. data/frameworks/sproutcore/frameworks/testing/system/runner.js +209 -0
  379. data/frameworks/sproutcore/frameworks/testing/system/suite.js +228 -0
  380. data/frameworks/sproutcore/frameworks/testing/utils.js +8 -1
  381. data/frameworks/sproutcore/lib/index.rhtml +4 -1
  382. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/10.png +0 -0
  383. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/100.png +0 -0
  384. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/102.png +0 -0
  385. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/110.png +0 -0
  386. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/120.png +0 -0
  387. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/127.png +0 -0
  388. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/18.png +0 -0
  389. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/19.png +0 -0
  390. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/2.png +0 -0
  391. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/24.png +0 -0
  392. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/26.png +0 -0
  393. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/27.png +0 -0
  394. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/28.png +0 -0
  395. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/29.png +0 -0
  396. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/30.png +0 -0
  397. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/31.png +0 -0
  398. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/33.png +0 -0
  399. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/37.png +0 -0
  400. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/41.png +0 -0
  401. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/99.png +0 -0
  402. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/10.png +0 -0
  403. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/100.png +0 -0
  404. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/102.png +0 -0
  405. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/110.png +0 -0
  406. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/120.png +0 -0
  407. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/127.png +0 -0
  408. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/18.png +0 -0
  409. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/19.png +0 -0
  410. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/2.png +0 -0
  411. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/24.png +0 -0
  412. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/26.png +0 -0
  413. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/27.png +0 -0
  414. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/28.png +0 -0
  415. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/29.png +0 -0
  416. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/30.png +0 -0
  417. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/31.png +0 -0
  418. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/33.png +0 -0
  419. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/37.png +0 -0
  420. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/41.png +0 -0
  421. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/99.png +0 -0
  422. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/10.png +0 -0
  423. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/100.png +0 -0
  424. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/102.png +0 -0
  425. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/110.png +0 -0
  426. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/120.png +0 -0
  427. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/127.png +0 -0
  428. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/18.png +0 -0
  429. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/19.png +0 -0
  430. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/2.png +0 -0
  431. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/24.png +0 -0
  432. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/26.png +0 -0
  433. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/27.png +0 -0
  434. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/28.png +0 -0
  435. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/29.png +0 -0
  436. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/30.png +0 -0
  437. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/31.png +0 -0
  438. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/33.png +0 -0
  439. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/37.png +0 -0
  440. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/41.png +0 -0
  441. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/99.png +0 -0
  442. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/10.png +0 -0
  443. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/18.png +0 -0
  444. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/19.png +0 -0
  445. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/2.png +0 -0
  446. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x-2.psd +0 -0
  447. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x.psd +0 -0
  448. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-sprite.psd +0 -0
  449. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-ysprite.psd +0 -0
  450. data/frameworks/sproutcore/themes/standard_theme/Source/shared-icons.psd +0 -0
  451. data/frameworks/sproutcore/themes/standard_theme/Source/sproutcore-logo.psd +0 -0
  452. data/frameworks/sproutcore/themes/standard_theme/Source/sticky-note.psd +0 -0
  453. data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +191 -193
  454. data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +11 -10
  455. data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +85 -4
  456. data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +15 -2
  457. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -0
  458. data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +0 -26
  459. data/frameworks/sproutcore/themes/standard_theme/english.lproj/list_item.css +30 -0
  460. data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +9 -6
  461. data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +20 -11
  462. data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +192 -54
  463. data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +56 -24
  464. data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +13 -7
  465. data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +1 -4
  466. data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -1
  467. data/lib/sproutcore/builders/minify.rb +2 -2
  468. data/lib/sproutcore/builders/test.rb +1 -1
  469. data/lib/sproutcore/buildfile.rb +1 -0
  470. data/lib/sproutcore/rack/dev.rb +1 -1
  471. data/lib/sproutcore/rack/filesystem.rb +265 -0
  472. data/lib/sproutcore/rack/proxy.rb +11 -3
  473. data/lib/sproutcore/rack/service.rb +11 -1
  474. data/lib/sproutcore/tools.rb +11 -1
  475. data/lib/sproutcore/tools/server.rb +6 -4
  476. data/vendor/jsdoc/README.txt +151 -0
  477. data/vendor/jsdoc/changes.txt +47 -0
  478. metadata +263 -308
  479. data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +0 -149
  480. data/frameworks/sproutcore/apps/sc_jsdoc/core.js +0 -16
  481. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +0 -17
  482. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +0 -99
  483. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
  484. data/frameworks/sproutcore/apps/sc_jsdoc/main.js +0 -27
  485. data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +0 -21
  486. data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +0 -209
  487. data/frameworks/sproutcore/apps/sc_qunit/core.js +0 -16
  488. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +0 -17
  489. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +0 -107
  490. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
  491. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +0 -15
  492. data/frameworks/sproutcore/apps/sc_qunit/main.js +0 -18
  493. data/frameworks/sproutcore/apps/sc_qunit/models/test.js +0 -24
  494. data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +0 -52
  495. data/frameworks/sproutcore/apps/tests/controllers/test.js +0 -20
  496. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
  497. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -83
  498. data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +0 -3
  499. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +0 -10
  500. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +0 -10
  501. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +0 -110
  502. data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +0 -156
  503. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +0 -118
  504. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +0 -268
  505. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +0 -433
  506. data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +0 -263
  507. data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +0 -25
  508. data/spec/buildtasks/manifest/spec_helper.rb +0 -35
  509. data/spec/buildtasks/target_spec.rb +0 -214
  510. data/spec/fixtures/builder_tests/Buildfile +0 -15
  511. data/spec/fixtures/builder_tests/apps/combine_test/a.js +0 -1
  512. data/spec/fixtures/builder_tests/apps/combine_test/b.js +0 -1
  513. data/spec/fixtures/builder_tests/apps/combine_test/c.js +0 -1
  514. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +0 -1
  515. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +0 -1
  516. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +0 -1
  517. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +0 -2
  518. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +0 -1
  519. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
  520. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
  521. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +0 -1
  522. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +0 -4
  523. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
  524. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
  525. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +0 -4
  526. data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +0 -1
  527. data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
  528. data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +0 -15
  529. data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +0 -4
  530. data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +0 -7
  531. data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +0 -3
  532. data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +0 -8
  533. data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +0 -9
  534. data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +0 -12
  535. data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +0 -1
  536. data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +0 -3
  537. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +0 -1
  538. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +0 -1
  539. data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +0 -4
  540. data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
  541. data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
  542. data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
  543. data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
  544. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
  545. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +0 -4
  546. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +0 -1
  547. data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
  548. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
  549. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +0 -1
  550. data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +0 -1
  551. data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
  552. data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
  553. data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +0 -1
  554. data/spec/fixtures/buildfiles/basic/Buildfile +0 -16
  555. data/spec/fixtures/buildfiles/basic/task_module.rake +0 -6
  556. data/spec/fixtures/buildfiles/installed/Buildfile +0 -7
  557. data/spec/fixtures/buildfiles/installed/Buildfile2 +0 -5
  558. data/spec/fixtures/buildfiles/project_test/Buildfile +0 -4
  559. data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +0 -2
  560. data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
  561. data/spec/fixtures/entry_for_project/Buildfile +0 -1
  562. data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
  563. data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
  564. data/spec/fixtures/find_targets/custom/Buildfile +0 -8
  565. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
  566. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
  567. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
  568. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
  569. data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +0 -5
  570. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
  571. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
  572. data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
  573. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
  574. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
  575. data/spec/fixtures/find_targets/nested/Buildfile +0 -8
  576. data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +0 -1
  577. data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
  578. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
  579. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
  580. data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
  581. data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
  582. data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
  583. data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
  584. data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
  585. data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
  586. data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
  587. data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
  588. data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
  589. data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
  590. data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
  591. data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
  592. data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
  593. data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
  594. data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
  595. data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
  596. data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
  597. data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
  598. data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
  599. data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
  600. data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
  601. data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
  602. data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
  603. data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
  604. data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
  605. data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
  606. data/spec/fixtures/ordered_entries/apps/no_requires/1.js +0 -1
  607. data/spec/fixtures/ordered_entries/apps/no_requires/B.js +0 -1
  608. data/spec/fixtures/ordered_entries/apps/no_requires/a.js +0 -1
  609. data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +0 -1
  610. data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +0 -1
  611. data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +0 -1
  612. data/spec/fixtures/ordered_entries/apps/no_requires/c.js +0 -1
  613. data/spec/fixtures/ordered_entries/apps/no_requires/core.js +0 -1
  614. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
  615. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
  616. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
  617. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
  618. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
  619. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
  620. data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +0 -1
  621. data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +0 -1
  622. data/spec/fixtures/ordered_entries/apps/with_requires/a.js +0 -2
  623. data/spec/fixtures/ordered_entries/apps/with_requires/b.js +0 -3
  624. data/spec/fixtures/ordered_entries/apps/with_requires/c.js +0 -2
  625. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +0 -2
  626. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +0 -2
  627. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +0 -2
  628. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +0 -1
  629. data/spec/fixtures/real_world/Buildfile +0 -12
  630. data/spec/fixtures/real_world/apps/account/README +0 -1
  631. data/spec/fixtures/real_world/apps/calendar/README +0 -1
  632. data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +0 -1
  633. data/spec/fixtures/real_world/apps/files/README +0 -1
  634. data/spec/fixtures/real_world/apps/mail/README +0 -1
  635. data/spec/fixtures/real_world/apps/mobile_photos/README +0 -1
  636. data/spec/fixtures/real_world/apps/photos/README +0 -1
  637. data/spec/fixtures/real_world/apps/uploader/README +0 -1
  638. data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
  639. data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
  640. data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
  641. data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +0 -26
  642. data/spec/fixtures/real_world/frameworks/sproutcore/README +0 -1
  643. data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
  644. data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
  645. data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
  646. data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
  647. data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
  648. data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
  649. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
  650. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +0 -4
  651. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +0 -1
  652. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
  653. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
  654. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +0 -1
  655. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
  656. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
  657. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +0 -4
  658. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +0 -1
  659. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +0 -1
  660. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
  661. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +0 -6
  662. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +0 -3
  663. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +0 -1
  664. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
  665. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +0 -1
  666. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
  667. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
  668. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
  669. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
  670. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
  671. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
  672. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
  673. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
  674. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
  675. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
  676. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
  677. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
  678. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +0 -1
  679. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
  680. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
  681. data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +0 -4
  682. data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +0 -1
  683. data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +0 -1
  684. data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
  685. data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +0 -6
  686. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
  687. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
  688. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
  689. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +0 -1
  690. data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
  691. data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +0 -1
  692. data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
  693. data/spec/fixtures/real_world/generators/sample_custom/templates/{filename}.js +0 -1
  694. data/spec/fixtures/recursive_project/Buildfile +0 -8
  695. data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
  696. data/spec/lib/builders/combine_spec.rb +0 -67
  697. data/spec/lib/builders/html_spec.rb +0 -577
  698. data/spec/lib/builders/javascript_spec.rb +0 -81
  699. data/spec/lib/builders/sass_spec.rb +0 -43
  700. data/spec/lib/builders/spec_helper.rb +0 -30
  701. data/spec/lib/builders/strings_spec.rb +0 -52
  702. data/spec/lib/builders/stylesheet_spec.rb +0 -63
  703. data/spec/lib/builders/test_index_spec.rb +0 -44
  704. data/spec/lib/builders/test_spec.rb +0 -135
  705. data/spec/lib/buildfile/config_for_spec.rb +0 -81
  706. data/spec/lib/buildfile/define_spec.rb +0 -59
  707. data/spec/lib/buildfile/dup_spec.rb +0 -65
  708. data/spec/lib/buildfile/invoke_spec.rb +0 -130
  709. data/spec/lib/buildfile/load_spec.rb +0 -49
  710. data/spec/lib/buildfile/task/dup_spec.rb +0 -55
  711. data/spec/lib/buildfile/task_defined_spec.rb +0 -17
  712. data/spec/lib/buildfile_commands/build_task_spec.rb +0 -19
  713. data/spec/lib/buildfile_commands/config_spec.rb +0 -97
  714. data/spec/lib/buildfile_commands/import_spec.rb +0 -17
  715. data/spec/lib/buildfile_commands/namespace_spec.rb +0 -18
  716. data/spec/lib/buildfile_commands/proxies_spec.rb +0 -38
  717. data/spec/lib/buildfile_commands/replace_task_spec.rb +0 -29
  718. data/spec/lib/buildfile_commands/task_spec.rb +0 -36
  719. data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +0 -26
  720. data/spec/lib/models/hash_struct/deep_clone_spec.rb +0 -27
  721. data/spec/lib/models/hash_struct/has_options_spec.rb +0 -32
  722. data/spec/lib/models/hash_struct/hash_spec.rb +0 -64
  723. data/spec/lib/models/hash_struct/merge_spec.rb +0 -26
  724. data/spec/lib/models/hash_struct/method_missing.rb +0 -41
  725. data/spec/lib/models/manifest/add_entry_spec.rb +0 -36
  726. data/spec/lib/models/manifest/add_transform_spec.rb +0 -90
  727. data/spec/lib/models/manifest/build_spec.rb +0 -78
  728. data/spec/lib/models/manifest/entry_for_spec.rb +0 -94
  729. data/spec/lib/models/manifest/find_entry.rb +0 -84
  730. data/spec/lib/models/manifest/prepare_spec.rb +0 -62
  731. data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +0 -31
  732. data/spec/lib/models/manifest_entry/prepare_spec.rb +0 -54
  733. data/spec/lib/models/project/add_target_spec.rb +0 -44
  734. data/spec/lib/models/project/buildfile_spec.rb +0 -35
  735. data/spec/lib/models/project/find_targets_for_spec.rb +0 -77
  736. data/spec/lib/models/project/load_nearest_project_spec.rb +0 -23
  737. data/spec/lib/models/project/target_for_spec.rb +0 -33
  738. data/spec/lib/models/project/targets_spec.rb +0 -62
  739. data/spec/lib/models/target/compute_build_number_spec.rb +0 -125
  740. data/spec/lib/models/target/config_spec.rb +0 -30
  741. data/spec/lib/models/target/expand_required_targets_spec.rb +0 -48
  742. data/spec/lib/models/target/installed_languages_spec.rb +0 -47
  743. data/spec/lib/models/target/lproj_for_spec.rb +0 -38
  744. data/spec/lib/models/target/manifest_for_spec.rb +0 -42
  745. data/spec/lib/models/target/parent_target_spec.rb +0 -21
  746. data/spec/lib/models/target/prepare_spec.rb +0 -53
  747. data/spec/lib/models/target/required_targets_spec.rb +0 -119
  748. data/spec/lib/models/target/target_for_spec.rb +0 -56
  749. data/spec/lib/tools/build_number_spec.rb +0 -28
  750. data/spec/lib/tools/gen_spec.rb +0 -207
  751. data/spec/lib/tools/tools_spec.rb +0 -78
  752. data/spec/spec_helper.rb +0 -138
  753. data/vendor/github_gem_lint.rb +0 -22
  754. data/vendor/yui-compressor/yuicompressor-2.4.2.jar +0 -0
@@ -1,6 +1,7 @@
1
1
  .sc-view.sc-control-test-pane {
2
2
  border: 1px #888 solid ;
3
3
  overflow-y: auto;
4
+ background: white;
4
5
  }
5
6
 
6
7
  .sc-view.sc-control-test-pane .sc-view.wrapper {
@@ -0,0 +1,30 @@
1
+ /* SC.LabelView */
2
+
3
+ .sc-label-view.sc-large-size {
4
+ font-size: 18px;
5
+ line-height: 24px;
6
+ }
7
+
8
+ .sc-label-view.sc-regular-size {
9
+ font-size: 12px;
10
+ line-height: 19px;
11
+ }
12
+
13
+ .sc-label-view.sc-small-size {
14
+ font-size: 11px;
15
+ line-height: 14px;
16
+ }
17
+
18
+ .sc-label-view.sc-tiny-size {
19
+ font-size: 9px;
20
+ line-height: 12px;
21
+ }
22
+
23
+ .sc-label-view.disabled {
24
+ color: #999;
25
+ }
26
+
27
+ .sc-label-view img.icon {
28
+ position: relative;
29
+ vertical-align: middle;
30
+ }
@@ -0,0 +1,15 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
4
+ // Portions ©2008-2009 Apple, Inc. All rights reserved.
5
+ // License: Licened under MIT license (see license.js)
6
+ // ==========================================================================
7
+
8
+ sc_require('system/locale');
9
+
10
+ SC.stringsFor('English', {
11
+ '_SC.DateTime.dayNames': 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday',
12
+ '_SC.DateTime.abbreviatedDayNames': 'Sun Mon Tue Wed Thu Fri Sat',
13
+ '_SC.DateTime.monthNames': 'January February March April May June July August September October November December',
14
+ '_SC.DateTime.abbreviatedMonthNames': 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'
15
+ }) ;
@@ -1,12 +1,28 @@
1
1
  /* Common SC.TextFieldView styles - needed to work properly */
2
2
 
3
+ .sc-view .sc-text-field-view{
4
+ overflow: visible;
5
+ z-index:100;
6
+ }
7
+
3
8
  .sc-text-field-view input {
4
9
  position: absolute;
10
+ top: -2px;
11
+ left: -2px;
5
12
  width: 100%;
6
13
  height: 100%;
7
14
  padding: 0px;
8
- margin: 0px;
9
- font-size: 13px;
15
+ }
16
+
17
+ .sc-text-field-view textarea {
18
+ position: absolute;
19
+ top: -2px;
20
+ left: -2px;
21
+ width: 100%;
22
+ height: 100%;
23
+ padding: 0px;
24
+ overflow: auto;
25
+ font-family: "Lucida Grande","Lucida Sans",Verdana,Arial,sans-serif;
10
26
  }
11
27
 
12
28
  .sc-text-field-view .sc-hint {
@@ -18,7 +34,7 @@
18
34
  bottom: 0;
19
35
  padding: 3px;
20
36
  color: #aaa ;
21
- font-size: 13px;
37
+ font-size: 12px;
22
38
 
23
39
  }
24
40
 
@@ -36,5 +36,10 @@
36
36
  }
37
37
 
38
38
  .sc-view.hidden {
39
- display: none;
39
+ display: none !important;
40
+ }
41
+
42
+ /* This className is useful when aligning buttons to the right */
43
+ .sc-view.textAlignRight {
44
+ text-align:right;
40
45
  }
@@ -0,0 +1,19 @@
1
+ /*! @license
2
+
3
+ Portions of this software are copyright Yahoo, Inc, used under the following license:
4
+
5
+ Software License Agreement (BSD License)
6
+ Copyright (c) 2009, Yahoo! Inc.
7
+ All rights reserved.
8
+ Redistribution and use of this software in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
9
+
10
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the
11
+ following disclaimer.
12
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
13
+ Neither the name of Yahoo! Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission of Yahoo! Inc.
14
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15
+
16
+ Sources of Intellectual Property Included in the YUI Library
17
+ Where not otherwise indicated, all YUI content is authored by Yahoo! engineers and consists of Yahoo!-owned intellectual property. YUI is issued by Yahoo! under the BSD license above. In some specific instances, YUI will incorporate work done by developers outside of Yahoo! with their express permission.
18
+
19
+ */
@@ -129,10 +129,10 @@ SC.Button = {
129
129
  */
130
130
  renderTitle: function(context, firstTime) {
131
131
  var icon = this.get('icon') ;
132
- var image = null ;
132
+ var image = '' ;
133
133
  var title = this.get('displayTitle') ;
134
134
  var needsTitle = (!SC.none(title) && title.length>0);
135
-
135
+ var elem;
136
136
  // get the icon. If there is an icon, then get the image and update it.
137
137
  // if there is no image element yet, create it and insert it just before
138
138
  // title.
@@ -148,7 +148,15 @@ SC.Button = {
148
148
  needsTitle = YES ;
149
149
  }
150
150
 
151
- if (needsTitle) context.begin('label').addClass('sc-button-label').push(image, title).end();
151
+ elem = this.$('label');
152
+ if (!firstTime && elem[0]){
153
+ if(needsTitle) { elem[0].innerHTML = image + title; }
154
+ else { this.$()[0].innerHTML = ''; }
155
+ } else {
156
+ if(needsTitle) {
157
+ context.begin('label').addClass('sc-button-label').push(image, title).end();
158
+ }
159
+ }
152
160
  return context ;
153
161
  },
154
162
 
@@ -160,17 +168,17 @@ SC.Button = {
160
168
  var del = this.get('displayDelegate');
161
169
  var content = this.get('content'), value ;
162
170
 
163
- var valueKey = this.getDelegateProperty(del, 'contentValueKey') ;
171
+ var valueKey = this.getDelegateProperty('contentValueKey', del) ;
164
172
  if (valueKey && (key === valueKey || key === '*')) {
165
173
  this.set('value', content ? content.get(valueKey) : null) ;
166
174
  }
167
175
 
168
- var titleKey = this.getDelegateProperty(del, 'contentTitleKey') ;
176
+ var titleKey = this.getDelegateProperty('contentTitleKey', del) ;
169
177
  if (titleKey && (key === titleKey || key === '*')) {
170
178
  this.set('title', content ? content.get(titleKey) : null) ;
171
179
  }
172
180
 
173
- var iconKey = this.getDelegateProperty(del, 'contentIconKey');
181
+ var iconKey = this.getDelegateProperty('contentIconKey', del);
174
182
  if (iconKey && (key === iconKey || key === '*')) {
175
183
  this.set('icon', content ? content.get(iconKey) : null) ;
176
184
  }
@@ -204,7 +212,7 @@ SC.Button = {
204
212
  // tree)
205
213
  return this.triggerAction(evt);
206
214
  }
207
- return YES;
215
+ return NO; // did not handle it; keep searching
208
216
  },
209
217
 
210
218
  /**
@@ -0,0 +1,171 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
4
+ // Portions ©2008-2009 Apple, Inc. All rights reserved.
5
+ // License: Licened under MIT license (see license.js)
6
+ // ==========================================================================
7
+
8
+
9
+ /**
10
+ Used for contentIndexDisclosureState(). Indicates open branch node.
11
+ */
12
+ SC.BRANCH_OPEN = 0x0011;
13
+
14
+ /**
15
+ Used for contentIndexDisclosureState(). Indicates closed branch node.
16
+ */
17
+ SC.BRANCH_CLOSED = 0x0012;
18
+
19
+ /**
20
+ Used for contentIndexDisclosureState(). Indicates leaf node.
21
+ */
22
+ SC.LEAF_NODE = 0x0020;
23
+
24
+ /**
25
+ @namespace
26
+
27
+ This mixin provides standard methods used by a CollectionView to provide
28
+ additional meta-data about content in a collection view such as selection
29
+ or enabled state.
30
+
31
+ You can apply this mixin to a class that you set as a delegate or to the
32
+ object you set as content. SC.ArrayControllers automatically implement
33
+ this mixin.
34
+
35
+ @since SproutCore 1.0
36
+ */
37
+ SC.CollectionContent = {
38
+
39
+ /**
40
+ Used to detect the mixin by SC.CollectionView
41
+ */
42
+ isCollectionContent: YES,
43
+
44
+ /**
45
+ Return YES if the content index should be selected. Default behavior
46
+ looks at the selection property on the view.
47
+
48
+ @param {SC.CollectionView} view the collection view
49
+ @param {SC.Array} content the content object
50
+ @param {Number} idx the content index
51
+ @returns {Boolean} YES, NO, or SC.MIXED_STATE
52
+ */
53
+ contentIndexIsSelected: function(view, content, idx) {
54
+ var sel = view.get('selection');
55
+ return sel ? sel.contains(content, idx) : NO ;
56
+ },
57
+
58
+ /**
59
+ Returns YES if the content index should be enabled. Default looks at the
60
+ isEnabled state of the collection view.
61
+ looks at the selection property on the view.
62
+
63
+ @param {SC.CollectionView} view the collection view
64
+ @param {SC.Array} content the content object
65
+ @param {Number} idx the content index
66
+ @returns {Boolean} YES, NO, or SC.MIXED_STATE
67
+ */
68
+ contentIndexIsEnabled: function(view, content, idx) {
69
+ return view.get('isEnabled');
70
+ },
71
+
72
+ // ..........................................................
73
+ // GROUPING
74
+ //
75
+
76
+ /**
77
+ Optionally return an index set containing the indexes that may be group
78
+ views. For each group view, the delegate will actually be asked to
79
+ confirm the view is a group using the contentIndexIsGroup() method.
80
+
81
+ If grouping is not enabled, return null.
82
+
83
+ @param {SC.CollectionView} view the calling view
84
+ @param {SC.Array} content the content object
85
+ @return {SC.IndexSet}
86
+ */
87
+ contentGroupIndexes: function(view, content) {
88
+ return null;
89
+ },
90
+
91
+ /**
92
+ Returns YES if the item at the specified content index should be rendered
93
+ using the groupExampleView instead of the regular exampleView. Note that
94
+ a group view is different from a branch/leaf view. Group views often
95
+ appear with different layout and a different look and feel.
96
+
97
+ Default always returns NO.
98
+
99
+ @param {SC.CollectionView} view the collection view
100
+ @param {SC.Array} content the content object
101
+ @param {Number} idx the content index
102
+ @returns {Boolean} YES, NO, or SC.MIXED_STATE
103
+ */
104
+ contentIndexIsGroup: function(view, content, idx) {
105
+ return NO ;
106
+ },
107
+
108
+ // ..........................................................
109
+ // OUTLINE VIEWS
110
+ //
111
+
112
+ /**
113
+ Returns the outline level for the item at the specified index. Can be
114
+ used to display hierarchical lists.
115
+
116
+ Default always returns -1 (no outline).
117
+
118
+ @param {SC.CollectionView} view the collection view
119
+ @param {SC.Array} content the content object
120
+ @param {Number} idx the content index
121
+ @returns {Boolean} YES, NO, or SC.MIXED_STATE
122
+ */
123
+ contentIndexOutlineLevel: function(view, content, idx) {
124
+ return -1;
125
+ },
126
+
127
+ /**
128
+ Returns a constant indicating the disclosure state of the item. Must be
129
+ one of SC.BRANCH_OPEN, SC.BRANCH_CLOSED, SC.LEAF_NODE. If you return one
130
+ of the BRANCH options then the item may be rendered with a disclosure
131
+ triangle open or closed. If you return SC.LEAF_NODe then the item will
132
+ be rendered as a leaf node.
133
+
134
+ Default returns SC.LEAF_NODE.
135
+
136
+ @param {SC.CollectionView} view the collection view
137
+ @param {SC.Array} content the content object
138
+ @param {Number} idx the content index
139
+ @returns {Boolean} YES, NO, or SC.MIXED_STATE
140
+ */
141
+ contentIndexDisclosureState: function(view, content, idx) {
142
+ return SC.LEAF_NODE;
143
+ },
144
+
145
+ /**
146
+ Called to expand a content index item if it is currently in a closed
147
+ disclosure state. The default implementation does nothing.
148
+
149
+ @param {SC.CollectionView} view the collection view
150
+ @param {SC.Array} content the content object
151
+ @param {Number} idx the content index
152
+ @returns {void}
153
+ */
154
+ contentIndexExpand: function(view, content, idx) {
155
+ console.log('contentIndexExpand(%@, %@, %@)'.fmt(view,content,idx));
156
+ },
157
+
158
+ /**
159
+ Called to collapse a content index item if it is currently in an open
160
+ disclosure state. The default implementation does nothing.
161
+
162
+ @param {SC.CollectionView} view the collection view
163
+ @param {SC.Array} content the content object
164
+ @param {Number} idx the content index
165
+ @returns {void}
166
+ */
167
+ contentIndexCollapse: function(view, content, idx) {
168
+ console.log('contentIndexCollapse(%@, %@, %@)'.fmt(view,content,idx));
169
+ }
170
+
171
+ };
@@ -5,6 +5,8 @@
5
5
  // License: Licened under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
8
+ sc_require('mixins/string');
9
+
8
10
  /** Indicates a value has a mixed state of both on and off. */
9
11
  SC.MIXED_STATE = '__MIXED__' ;
10
12
 
@@ -195,7 +197,7 @@ SC.Control = {
195
197
  // get actual content key
196
198
  contentKey = this[contentKey] ?
197
199
  this.get(contentKey) :
198
- this.getDelegateProperty(this.displayDelegate, contentKey) ;
200
+ this.getDelegateProperty(contentKey, this.displayDelegate) ;
199
201
 
200
202
  if (contentKey && (all || key === contentKey)) {
201
203
  var v = (content) ?
@@ -222,7 +224,7 @@ SC.Control = {
222
224
  updateContentWithValueObserver: function() {
223
225
  var key = this.contentValueKey ?
224
226
  this.get('contentValueKey') :
225
- this.getDelegateProperty(this.displayDelegate, 'contentValueKey') ;
227
+ this.getDelegateProperty('contentValueKey', this.displayDelegate) ;
226
228
 
227
229
  var content = this.get('content') ;
228
230
  if (!key || !content) return ; // do nothing if disabled
@@ -291,7 +293,7 @@ SC.Control = {
291
293
  */
292
294
  controlSize: SC.REGULAR_CONTROL_SIZE,
293
295
 
294
- displayProperties: 'isEnabled isSelected isFirstResponder isActive'.w(),
296
+ displayProperties: 'isEnabled isSelected isActive controlSize'.w(),
295
297
 
296
298
  /** @private */
297
299
  _CONTROL_TMP_CLASSNAMES: {},
@@ -308,8 +310,6 @@ SC.Control = {
308
310
  var names = this._CONTROL_TMP_CLASSNAMES ; // temporary object
309
311
  names.mixed = sel === SC.MIXED_STATE;
310
312
  names.sel = sel && (sel !== SC.MIXED_STATE) ;
311
- names.disabled = disabled ;
312
- names.focus = this.get('isFirstResponder') ;
313
313
  names.active = this.get('isActive') ;
314
314
  context.setClass(names).addClass(this.get('controlSize'));
315
315
 
@@ -0,0 +1,462 @@
1
+ // ========================================================================
2
+ // SproutCore
3
+ // copyright 2006-2008 Sprout Systems, Inc.
4
+ // ========================================================================
5
+
6
+
7
+ require('views/text_field') ;
8
+
9
+ /**
10
+ @class
11
+
12
+ The inline text editor is used to display an editable area for controls
13
+ that are not always editable such as label views and source list views.
14
+
15
+ You generally will not use the inline editor directly but instead will
16
+ invoke beginEditing() and endEditing() on the views yous are
17
+ editing. If you would like to use the inline editor for your own views,
18
+ you can do that also by using the editing API described here.
19
+
20
+ h2. Using the Inline Editor in Your Own Views
21
+
22
+ If you need to use the inline editor with custom views you have written,
23
+ you will need to work with the class methods to begin, commit, and discard
24
+ editing changes.
25
+
26
+ h3. Starting the Editor
27
+
28
+ The inline editor works by positioning itself over the top of your view
29
+ with the same offset, width, and font information. As the user types, the
30
+ field will automatically resize vertically to make room for the user's text.
31
+
32
+ To activate the inline editor you must call beginEdition() with at least
33
+ the target view you want the editor to position itself on top of:
34
+
35
+ {{{
36
+ SC.InlineTextFieldView.beginEditing({
37
+ target: view, validator: validator
38
+ }) ;
39
+ }}}
40
+
41
+ You can pass a variety of options to this method to configure the inline
42
+ editor behavior, including:
43
+
44
+ - *frame* The editors initial frame in viewport coordinates (REQ)
45
+ - *exampleElement* A DOM element to use when copying styles.
46
+ - *delegate* Optional delegate to receive update notices. If not passed, the target view will be treated as the delegate. (REQ)
47
+ - *value* The initial value of the edit field. If not passed, the value property of the target view will be used instead.
48
+ - *multiline* If YES then the hitting return will add to the value instead of exiting the inline editor.
49
+ - *selectedRange* The range of text that should be selected. If omitted, then the insertion point will be placed at the end of the value.
50
+ - *commitOnBlur* If YES then bluring will commit the value, otherwise it will discard the current value. Defaults to YES.
51
+ - *validator* Optional validator will be attached to the field.
52
+
53
+ If the inline editor is currently in use elsewhere, it will automatically
54
+ close itself over there and begin editing for your view instead. The
55
+ editor expects your source view to implement the InlineTextFieldViewDelegate
56
+ protocol.
57
+
58
+ h2. Commiting or Discarding Changes
59
+
60
+ Normally the editor will automatically commit or discard its changes
61
+ whenever the user exits the edit mode. If you need to force the editor to
62
+ end editing, you can do so by calling commitEditing() or discardEditing():
63
+
64
+ {{{
65
+ SC.InlineTextFieldView.commitEditing();
66
+ SC.InlineTextFieldView.discardEditing();
67
+ }}}
68
+
69
+ Both methods will try to end the editing context and will call the
70
+ relevent delegate methods on the delegate you passed to beginEditing().
71
+
72
+ Note that it is possible an editor may not be able to commit editing
73
+ changes because either the delegate disallowed it or because its validator
74
+ failed. In this case commitEditing() will return NO. If you want to
75
+ end editing anyway, you can discard the editing changes instead by calling
76
+ discardEditing(). This method will generally suceed unless your delegate
77
+ refuses it as well.
78
+
79
+ @extends SC.View
80
+ @extends SC.DelegateSupport
81
+ @extends SC.InlineEditorDelegate
82
+ @since SproutCore 1.0
83
+ */
84
+ SC.InlineTextFieldView = SC.TextFieldView.extend(SC.DelegateSupport, SC.InlineEditorDelegate,
85
+ /** @scope SC.InlineTextFieldView.prototype */ {
86
+
87
+ /**
88
+ Invoked by the class method to begin editing on an inline editor.
89
+
90
+ You generally should call the class method beginEditing() instead of
91
+ this one since it will make sure to create and use the shared editor
92
+ instance.
93
+
94
+ @params options {Hash} hash of options for editing
95
+ @returns {Boolean} YES if editor began editing, NO if it failed.
96
+ */
97
+ beginEditing: function(options) {
98
+ var layout={}, pane;
99
+ // end existing editing if necessary
100
+ this.beginPropertyChanges();
101
+ if (this.get('isEditing') && !this.blurEditor()) {
102
+ this.endPropertyChanges(); return NO ;
103
+ }
104
+
105
+ this._optframe = options.frame ;
106
+ this._optIsCollection = options.isCollection;
107
+ this._exampleElement = options.exampleElement ;
108
+ this._delegate = options.delegate ;
109
+
110
+ if (!this._optframe || !this._delegate) {
111
+ throw "At least frame and delegate options are required for inline editor";
112
+ }
113
+
114
+ this._originalValue = options.value || '' ;
115
+ this._multiline = (options.multiline !== undefined) ? options.multiline : NO ;
116
+ this._commitOnBlur = (options.commitOnBlur !== undefined) ? options.commitOnBlur : YES ;
117
+
118
+ // set field values
119
+ this.set('validator', options.validator) ;
120
+ this.set('value', this._originalValue) ;
121
+ //this.set('selectedRange', options.selectedRange || { start: this._originalValue.length, length: 0 }) ;
122
+
123
+ this.set('isEditing', YES) ;
124
+
125
+ // add to window.
126
+
127
+ pane = this._delegate.pane();
128
+
129
+ layout.height = this._optframe.height;
130
+ layout.width=this._optframe.width;
131
+ if(this._optIsCollection && this._delegate.get('layout').left){
132
+ layout.left=this._optframe.x-this._delegate.get('layout').left;
133
+ }else{
134
+ layout.left=this._optframe.x;
135
+ }
136
+ layout.left=this._optframe.x;
137
+ if(this._optIsCollection && this._delegate.get('layout').top){
138
+ layout.top=this._optframe.y-this._delegate.get('layout').top;
139
+ }else{
140
+ layout.top=this._optframe.y;
141
+ }
142
+
143
+ this.set('layout', layout);
144
+
145
+ this.set('parentNode', pane);
146
+ // get style for view.
147
+
148
+ pane.appendChild(this);
149
+
150
+ SC.RunLoop.begin().end();
151
+
152
+
153
+ var del = this._delegate ;
154
+
155
+ this._className = this.getDelegateProperty(del,"inlineEditorClassName");
156
+ if(this._className && !this.hasClassName(this._className)) {
157
+ this.setClassName(this._className,true);
158
+ }
159
+
160
+ this.invokeDelegateMethod(del, 'inlineEditorWillBeginEditing', this) ;
161
+ // this.resizeToFit(this.getFieldValue()) ;
162
+
163
+ // allow notifications to go
164
+ this.endPropertyChanges() ;
165
+
166
+ // and become first responder
167
+ this.becomeFirstResponder() ;
168
+
169
+ this.invokeDelegateMethod(del, 'inlineEditorDidBeginEditing', this) ;
170
+ },
171
+
172
+
173
+ /**
174
+ Tries to commit the current value of the field and end editing.
175
+
176
+ Do not use this method, use the class method instead.
177
+ */
178
+ commitEditing: function() {
179
+ // try to validate field. If it fails, return false.
180
+ if (!SC.$ok(this.validateSubmit())) return NO ;
181
+ return this._endEditing(this.get('value')) ;
182
+ },
183
+
184
+ /**
185
+ Tries to discard the current value of the field and end editing.
186
+
187
+ Do not use this method, use the class method instead.
188
+ */
189
+ discardEditing: function() {
190
+ return this._endEditing(this._originalValue) ;
191
+ },
192
+
193
+ /**
194
+ Invoked whenever the editor loses (or should lose) first responder
195
+ status to commit or discard editing.
196
+ */
197
+ blurEditor: function() {
198
+ if (!this.get('isEditing')) return YES ;
199
+ return this._commitOnBlur ? this.commitEditing() : this.discardEditing();
200
+ },
201
+
202
+ /** @private
203
+ Called by commitEditing and discardEditing to actually end editing.
204
+
205
+ @returns {Boolean} NO if editing did not exit
206
+ */
207
+ _endEditing: function(finalValue) {
208
+ if (!this.get('isEditing')) return YES ;
209
+
210
+ // get permission from the delegate.
211
+ var del = this._delegate ;
212
+ if (!this.invokeDelegateMethod(del, 'inlineEditorShouldEndEditing', this, finalValue)) return NO ;
213
+
214
+ // OK, we are allowed to end editing. Notify delegate of final value
215
+ // and clean up.
216
+ this.invokeDelegateMethod(del, 'inlineEditorDidEndEditing', this, finalValue) ;
217
+
218
+ // If the delegate set a class name, let's clean it up:
219
+ if(this._className) this.setClassName(this._className, false);
220
+
221
+ // cleanup cached values
222
+ this._originalValue = this._delegate = this._exampleElement = this._optframe = this._className = null ;
223
+ this.set('isEditing', NO) ;
224
+
225
+ // resign first responder if not done already. This may call us in a
226
+ // loop but since isEditing is already NO, nothing will happen.
227
+ if (this.get('isFirstResponder')) this.resignFirstResponder();
228
+ if (this.get('parentNode')) this.removeFromParent() ;
229
+
230
+ return YES ;
231
+ },
232
+
233
+ /**
234
+ YES if the editor is currently visible and editing.
235
+
236
+ @type {Boolean}
237
+ */
238
+ isEditing: NO,
239
+
240
+ /**
241
+ Collects the appropriate style information from the targetView to
242
+ make the inline editor appear similar.
243
+ */
244
+
245
+
246
+ /**
247
+ Resizes the visible textarea to fix the actual text in the text area.
248
+
249
+ This method works by keeping a div positioned immediately beneath the
250
+ text area with an opacity of 0 that contains the same text as the
251
+ input text field itself. This is then used to calculate the required
252
+ size for the text area.
253
+ */
254
+ resizeToFit: function(newValue)
255
+ {
256
+
257
+ // TODO: make this function work for 1.0
258
+
259
+
260
+ // var sizer = this.outlet('sizer');
261
+ // var field = this.outlet('field');
262
+ //
263
+ // // XSS attack waiting to happen... escape the form input;
264
+ // var text = (newValue || '').escapeHTML();
265
+ //
266
+ // // convert the textarea's newlines into something comparable for the sizer
267
+ // // div appending a space to give a line with no text a visible height.
268
+ // text = text.replace((/ {2}/g), "&nbsp; ").replace(/\n/g, "<br />&nbsp;");
269
+ //
270
+ // // get the text size
271
+ // sizer.set('innerHTML', text || "&nbsp;");
272
+ // sizer.recacheFrames() ;
273
+ // var h = sizer.get('frame').height;
274
+ // this.set('frame', { height: h }) ;
275
+ },
276
+
277
+ mouseDown: function(e) {
278
+ arguments.callee.base.call(this, e) ;
279
+ return this.get('isEditing');
280
+ },
281
+
282
+
283
+ keyDown: function(evt) {
284
+ var ret = this.interpretKeyEvents(evt) ;
285
+ if(!ret) this.fieldValueDidChange(true);
286
+ return !ret ? NO : ret ;
287
+ },
288
+
289
+ insertText: null,
290
+
291
+ //keyUp: function() { return true; },
292
+
293
+ // [Safari] if you don't take key focus away from an element before you
294
+ // remove it from the DOM key events are no longer sent to the browser.
295
+ willRemoveFromParent: function() {
296
+ this.$('input')[0].blur();
297
+ },
298
+
299
+ // ask owner to end editing.
300
+ willLoseFirstResponder: function(responder) {
301
+ if (responder !== this) return;
302
+
303
+ // should have been covered by willRemoveFromParent, but this was needed
304
+ // too.
305
+ this.$('input')[0].blur();
306
+ return this.blurEditor() ;
307
+ },
308
+
309
+ // invoked when the user presses escape. Returns true to ignore
310
+ // keystroke
311
+ cancel: function() {
312
+ this.discardEditing();
313
+ return YES;
314
+ },
315
+
316
+ // do it here instead of waiting on the binding to make sure the UI
317
+ // updates immediately.
318
+ fieldValueDidChange: function(partialChange) {
319
+ arguments.callee.base.call(this, partialChange) ;
320
+ //this.resizeToFit(this.getFieldValue()) ;
321
+ },
322
+
323
+ // invoked when the user presses return. If this is a multi-line field,
324
+ // then allow the newine to proceed. Otherwise, try to commit the
325
+ // edit.
326
+ insertNewline: function(evt) {
327
+ if (this._multiline) {
328
+ return arguments.callee.base.call(this, evt) ;
329
+ } else {
330
+ // TODO : this is a work around. There is a bug where the
331
+ // last character would get dropped
332
+ // if the editing was completed by pressing return
333
+ // needs to be fixed
334
+ if (this.get('value') != this.$input().val()) {
335
+ this.set('value', this.$input().val());
336
+ }
337
+
338
+
339
+ this.commitEditing() ;
340
+ return YES ;
341
+ }
342
+ },
343
+
344
+ // Tries to find the next key view when tabbing. If the next view is
345
+ // editable, begins editing.
346
+
347
+ insertTab: function(evt)
348
+ {
349
+ var next = this.get("owner")._delegate.nextValidKeyView();
350
+ this.commitEditing() ;
351
+ if(next) next.beginEditing();
352
+ return YES ;
353
+ },
354
+
355
+ insertBacktab: function(evt)
356
+ {
357
+ var prev = this.get("owner")._delegate.previousValidKeyView();
358
+ this.commitEditing() ;
359
+ if(prev) prev.beginEditing();
360
+ return YES ;
361
+ }
362
+
363
+
364
+ });
365
+
366
+
367
+ SC.InlineTextFieldView.mixin(
368
+ /** @static SC.InlineTextFieldView */ {
369
+ /** Call this method to make the inline editor begin editing for your view.
370
+
371
+ If the inline editor is already being used for another value it will
372
+ try to dismiss itself from the other editor and attach itself to the
373
+ new view instead. If this process fails for some reason (for example
374
+ if the other view did not allow the view to end editing) then this
375
+ method will return false.
376
+
377
+ You should pass a set of options that at least includes the target
378
+ view. See class definition for options.
379
+
380
+ @params options {Hash} hash of options for editing
381
+ @returns {Boolean} YES if editor began editing, NO if it failed.
382
+ */
383
+ beginEditing: function(options) {
384
+ this._exampleElement = options.exampleElement ;
385
+ var layout = options.delegate.get('layout');
386
+ var s = this.updateViewStyle();
387
+
388
+ var str= ".inline-editor input{"+s+"} ";
389
+ str= str+".inline-editor textarea{"+s+"}";
390
+ var pa= document.getElementsByTagName('head')[0] ;
391
+ var el= document.createElement('style');
392
+ el.type= 'text/css';
393
+ el.media= 'screen';
394
+ if(el.styleSheet) el.styleSheet.cssText= str;// IE method
395
+ else el.appendChild(document.createTextNode(str));// others
396
+ pa.appendChild(el);
397
+
398
+ this.editor = this.create({ classNames: 'inline-editor', layout: layout}) ;
399
+ return this.editor.beginEditing(options) ;
400
+
401
+ },
402
+
403
+ /** Save the current value of the inline editor and exit edit mode.
404
+
405
+ If the inline editor is being used it will try to end the editing and
406
+ close. If the inline editor could not end for some reason (for example
407
+ if the delegate did not allow the editing to end) then this method will
408
+ return NO.
409
+
410
+ @returns {Boolean} YES if the inline editor ended or no edit was in
411
+ progress.
412
+ */
413
+ commitEditing: function() {
414
+ return this.editor ? this.editor.commitEditing() : YES ;
415
+ },
416
+
417
+ /** Discard the current value of the inline editor and exit edit mode.
418
+
419
+ If the inline editor is in use, this method will try to end the editing,
420
+ restoring the original value of the target view. If the inline editor
421
+ could not end for some reason (for example if the delegate did not
422
+ allow editing to end) then this method will return NO.
423
+
424
+ @returns {Boolean} YES if the inline editor ended or no edit was in progress.
425
+ */
426
+ discardEditing: function() {
427
+ return this.editor ? this.editor.discardEditing() : YES ;
428
+ },
429
+
430
+ updateViewStyle: function() {
431
+ var el = this._exampleElement[0] ;
432
+ var styles = '';
433
+ var s=SC.getStyle(el,'font-size');
434
+ if(s && s.length>0) styles = styles + "font-size: "+ s + "; ";
435
+ s=SC.getStyle(el,'font-family');
436
+ if(s && s.length>0) styles = styles + "font-family: " + s + "; ";
437
+ s=SC.getStyle(el,'font-weight');
438
+ if(s && s.length>0) styles = styles + "font-weight: " + s + "; ";
439
+ s=SC.getStyle(el,'z-index');
440
+ if(s && s.length>0) styles = styles + "z-index: " + s + "; ";
441
+ s=SC.getStyle(el,'padding-left');
442
+ if(s && s.length>0) styles = styles + "padding-left: " + s + "; ";
443
+ s=SC.getStyle(el,'padding-bottom');
444
+ if(s && s.length>0) styles = styles + "padding-bottom: " + s + "; ";
445
+ s=SC.getStyle(el,'line-height');
446
+ if(s && s.length>0) styles = styles + "line-height: " + s + "; ";
447
+ s=SC.getStyle(el,'text-align');
448
+ if(s && s.length>0) styles = styles + "text-align: " + s + "; ";
449
+
450
+ return styles;
451
+ },
452
+
453
+
454
+ /**
455
+ The current shared inline editor. This property will often remain NULL
456
+ until you actually begin editing for the first time.
457
+
458
+ @type {SC.InlineTextFieldView}
459
+ */
460
+ editor: null
461
+
462
+ }) ;