sproutcore 1.7.1.beta → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (445) hide show
  1. data/CHANGELOG +44 -0
  2. data/README.rdoc +20 -20
  3. data/VERSION.yml +3 -3
  4. data/lib/Buildfile +1 -1
  5. data/lib/buildtasks/build.rake +5 -0
  6. data/lib/buildtasks/manifest.rake +19 -1
  7. data/lib/frameworks/sproutcore/Buildfile +19 -17
  8. data/lib/frameworks/sproutcore/CHANGELOG.md +163 -29
  9. data/lib/frameworks/sproutcore/README.md +29 -8
  10. data/lib/frameworks/sproutcore/apps/statechart_routing/Buildfile +12 -0
  11. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/login_controller.js +11 -0
  12. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/main_controller.js +7 -0
  13. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/statechart_controller.js +17 -0
  14. data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +25 -0
  15. data/lib/frameworks/sproutcore/apps/statechart_routing/main.js +15 -0
  16. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/_theme.css +18 -0
  17. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/bar_page.js +14 -0
  18. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/foo_page.js +14 -0
  19. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/loading.rhtml +9 -0
  20. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +61 -0
  21. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/main_page.js +46 -0
  22. data/lib/frameworks/sproutcore/apps/statechart_routing/statechart.js +76 -0
  23. data/lib/frameworks/sproutcore/apps/statechart_routing/theme.js +27 -0
  24. data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
  25. data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
  26. data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
  27. data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
  28. data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
  29. data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
  30. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
  31. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +14 -1
  32. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +15 -15
  33. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +1 -1
  34. data/lib/frameworks/sproutcore/frameworks/animation/core.js +8 -5
  35. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +302 -70
  36. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +19 -14
  37. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +471 -149
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +3 -3
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +42 -0
  40. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +3 -2
  41. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
  42. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +1 -1
  43. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +3 -3
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
  46. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +63 -0
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +1 -1
  48. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +37 -2
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +28 -6
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +10 -3
  51. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +2 -2
  52. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +66 -2
  53. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
  54. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
  55. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +58 -57
  56. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
  57. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js.orig +445 -0
  58. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +51 -31
  59. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +5 -1
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +53 -69
  61. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
  62. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +98 -72
  63. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +37 -3
  64. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +7 -4
  65. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +21 -0
  66. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +7 -7
  67. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +23 -1
  68. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/browser.js +66 -0
  69. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/event.js +22 -0
  70. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +11 -11
  71. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +4 -4
  72. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +41 -0
  73. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
  74. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +8 -8
  75. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +17 -16
  76. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
  77. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
  78. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +15 -0
  79. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +5 -5
  80. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +50 -30
  81. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +46 -0
  82. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +1 -43
  83. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +8 -34
  84. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +3 -2
  85. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -1
  86. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +6 -5
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +22 -2
  88. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +2 -2
  89. data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +1 -1
  90. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +0 -2
  91. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +35 -0
  92. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +46 -19
  93. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -9
  94. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +2 -3
  95. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
  96. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -2
  97. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +294 -302
  98. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js.orig +1531 -0
  99. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +4 -2
  100. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +14 -11
  101. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/many_array.js +63 -0
  102. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
  103. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +4 -4
  104. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +50 -10
  105. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +4 -4
  106. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +3 -3
  107. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
  108. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +1 -1
  109. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
  110. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +114 -67
  111. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
  112. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
  113. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +54 -1
  114. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +29 -9
  115. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
  116. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
  117. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +1 -1
  118. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
  119. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
  120. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +37 -45
  121. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +127 -127
  122. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +16 -0
  123. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +42 -4
  124. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
  125. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -7
  126. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +8 -0
  127. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +2 -1
  128. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +1 -0
  129. data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
  130. data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
  131. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
  132. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
  133. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +1 -4
  134. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +19 -6
  135. data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +30 -1
  136. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
  137. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +24 -1
  138. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +121 -28
  139. data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +15 -15
  140. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
  141. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
  142. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +2 -2
  143. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +39 -15
  144. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +3 -3
  145. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +2 -2
  146. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +2 -2
  147. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +14 -6
  148. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +3 -3
  149. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +11 -11
  150. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -3
  151. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -51
  152. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +11 -16
  153. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +0 -2
  155. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
  156. data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +3 -3
  157. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +9 -9
  158. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +11 -11
  159. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
  160. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
  161. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +107 -81
  162. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +3 -3
  163. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +68 -60
  164. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +57 -12
  165. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +21 -19
  166. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -0
  167. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +2 -2
  168. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +32 -3
  169. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +12 -0
  170. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +12 -0
  171. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -8
  172. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +77 -132
  173. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +5 -6
  174. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +16 -15
  175. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +52 -52
  176. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -1
  177. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
  178. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +147 -147
  179. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +11 -2
  180. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
  181. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +5 -5
  182. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +22 -12
  183. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +13 -7
  184. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +2 -2
  185. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +462 -441
  186. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +48 -62
  187. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +22 -2
  188. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +150 -32
  189. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +104 -45
  190. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +42 -20
  191. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +24 -24
  192. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +148 -154
  193. data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +2 -2
  194. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +2 -2
  195. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +8 -7
  196. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -2
  197. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
  198. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/files.js +1 -1
  199. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +1 -1
  200. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/targets.js +1 -1
  201. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/view_configs.js +1 -1
  202. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/mixins/drop_down.js +1 -1
  203. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +1 -1
  204. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +1 -1
  205. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/web.js +1 -1
  206. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +2 -2
  207. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +2 -2
  208. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +1 -1
  209. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +2 -2
  210. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +3 -3
  211. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +1 -1
  212. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +21 -21
  213. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +1 -1
  214. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +59 -53
  215. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +2 -2
  216. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +1 -1
  217. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +6 -6
  218. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +2 -2
  219. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +2 -2
  220. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -10
  221. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +17 -6
  222. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +38 -14
  223. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +5 -13
  224. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +1 -1
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +5 -3
  226. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +19 -0
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +20 -2
  228. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +1 -1
  229. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +35 -12
  230. data/lib/frameworks/sproutcore/frameworks/formatters/README +6 -0
  231. data/lib/frameworks/sproutcore/frameworks/formatters/english.lproj/strings.js +174 -0
  232. data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +351 -0
  233. data/lib/frameworks/sproutcore/frameworks/formatters/tests/date_formatter.js +517 -0
  234. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +1 -1
  235. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +345 -138
  236. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +5 -3
  237. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +176 -42
  238. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
  239. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +137 -105
  240. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +2 -2
  241. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +2 -2
  242. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +16 -1
  243. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
  244. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +47 -47
  245. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -3
  246. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +1 -1
  247. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +28 -6
  248. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +1 -1
  249. data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +0 -5
  250. data/lib/frameworks/sproutcore/frameworks/foundation/resources/bootstrap.rhtml +34 -19
  251. data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +0 -2
  252. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +1 -5
  253. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +8 -9
  254. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -2
  255. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +179 -47
  256. data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +34 -1
  257. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
  258. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +26 -12
  259. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +7 -7
  260. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +12 -4
  261. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_metric_optimization.js +202 -0
  262. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +77 -8
  263. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +1 -0
  264. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +2 -2
  265. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +4 -3
  266. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +4 -2
  267. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +2 -2
  268. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +4 -2
  269. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +4 -2
  270. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +2 -2
  271. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -8
  272. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +163 -149
  273. data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
  274. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
  275. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
  276. data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
  277. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +3 -3
  278. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +16 -43
  279. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -3
  280. data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +67 -54
  281. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -38
  282. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +285 -242
  283. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +13 -13
  284. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +19 -22
  285. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +9 -3
  286. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +231 -186
  287. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +145 -143
  288. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +156 -154
  289. data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +5 -5
  290. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +3 -3
  291. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js.orig +540 -0
  292. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +2 -2
  293. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -8
  294. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +5 -5
  295. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +12 -0
  296. data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +2 -2
  297. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -1
  298. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +1 -1
  299. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +7 -7
  300. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +98 -32
  301. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +7 -2
  302. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +14 -3
  303. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +98 -13
  304. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +8 -14
  305. data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +1 -1
  306. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +2 -2
  307. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +23 -6
  308. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +69 -18
  309. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +57 -31
  310. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +189 -14
  311. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +82 -22
  312. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +20 -0
  313. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +125 -4
  314. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +1 -1
  315. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +2 -2
  316. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +37 -0
  317. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +2 -2
  318. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +16 -0
  319. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +75 -4
  320. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +41 -0
  321. data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart_delegate.js +113 -0
  322. data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +312 -0
  323. data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +18 -22
  324. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +508 -131
  325. data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +78 -0
  326. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +265 -44
  327. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +16 -0
  328. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +11 -3
  329. data/lib/frameworks/sproutcore/frameworks/statechart/tests/private/state_path_matcher.js +116 -0
  330. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/add_substate.js +108 -0
  331. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/with_concurrent.js +179 -0
  332. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/without_concurrent.js +74 -0
  333. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_state.js +141 -0
  334. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_substate.js +340 -0
  335. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/route_triggered.js +161 -0
  336. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/try_to_handle_event.js +288 -0
  337. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +5 -33
  338. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +213 -0
  339. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +212 -0
  340. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +8 -0
  341. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{state/namespacing.js → statechart/methods/get_state.js} +3 -41
  342. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/{invoke_state_method.js → methods/invoke_state_method.js} +1 -1
  343. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{event_handling/advanced → statechart}/respond_to_event.js +1 -1
  344. data/lib/frameworks/sproutcore/frameworks/statechart/tests/system/state_route_handler_context/methods/retry.js +64 -0
  345. data/lib/frameworks/sproutcore/frameworks/table/core.js +2 -0
  346. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/controls/button.js +0 -1
  347. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars.js +29 -5
  348. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/bind.js +4 -3
  349. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/collection.js +0 -0
  350. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/localization.js +0 -0
  351. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/view.js +0 -0
  352. data/lib/frameworks/sproutcore/frameworks/{handlebars → template_view}/handlebars.js +493 -357
  353. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/checkbox_support.js +0 -0
  354. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/text_field_support.js +13 -2
  355. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/panes/template.js +0 -0
  356. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/controls/button.js +0 -0
  357. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/checkbox_support.js +0 -0
  358. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/text_field_support.js +0 -0
  359. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/panes/template.js +0 -0
  360. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/collection.js +39 -14
  361. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/core.js +0 -0
  362. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/handlebars.js +57 -6
  363. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/bindable_span.js +21 -6
  364. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template.js +9 -3
  365. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template_collection.js +55 -26
  366. data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
  367. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +122 -122
  368. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -2
  369. data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +4 -4
  370. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +1 -1
  371. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +0 -1
  372. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +4 -4
  373. data/lib/frameworks/sproutcore/lib/index.rhtml +55 -32
  374. data/lib/frameworks/sproutcore/license.js +2 -4
  375. data/lib/frameworks/sproutcore/themes/ace/resources/body.css +5 -1
  376. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +2 -2
  377. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +21 -13
  378. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +17 -10
  379. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +4 -3
  380. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +20 -12
  381. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +16 -8
  382. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/jumbo/button.css +17 -0
  383. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/small/button.css +17 -0
  384. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +2 -2
  385. data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +2 -2
  386. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +5 -3
  387. data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +1 -1
  388. data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/toolbar.css +1 -1
  389. data/lib/gen/app/USAGE +17 -4
  390. data/lib/gen/language/Buildfile +4 -4
  391. data/lib/gen/language/USAGE +4 -4
  392. data/lib/gen/page/templates/pages/@target_name@/Buildfile +7 -7
  393. data/lib/gen/{html_app → statechart_app}/Buildfile +0 -0
  394. data/lib/gen/{html_app → statechart_app}/README +0 -0
  395. data/lib/gen/statechart_app/USAGE +21 -0
  396. data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +9 -0
  397. data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +24 -0
  398. data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +26 -0
  399. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/_theme.css +18 -0
  400. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
  401. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +21 -0
  402. data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +8 -0
  403. data/lib/gen/statechart_app/templates/apps/@target_name@/states/ready_state.js +12 -0
  404. data/lib/gen/statechart_app/templates/apps/@target_name@/theme.js +24 -0
  405. data/lib/sproutcore/builders.rb +1 -0
  406. data/lib/sproutcore/builders/base.rb +19 -1
  407. data/lib/sproutcore/builders/chance_file.rb +6 -1
  408. data/lib/sproutcore/builders/handlebars.rb +1 -9
  409. data/lib/sproutcore/builders/javascript.rb +1 -10
  410. data/lib/sproutcore/builders/json.rb +25 -0
  411. data/lib/sproutcore/builders/less.rb +1 -1
  412. data/lib/sproutcore/builders/sass.rb +1 -1
  413. data/lib/sproutcore/builders/stylesheet.rb +1 -9
  414. data/lib/sproutcore/helpers/html5_manifest.rb +1 -1
  415. data/lib/sproutcore/helpers/static_helper.rb +42 -0
  416. data/lib/sproutcore/rack/proxy.rb +21 -3
  417. data/lib/sproutcore/rack/service.rb +3 -2
  418. data/lib/sproutcore/tools.rb +18 -25
  419. data/lib/sproutcore/tools/gen.rb +10 -3
  420. data/lib/sproutcore/tools/init.rb +11 -10
  421. data/spec/buildtasks/manifest/prepare_build_tasks/json_spec.rb +62 -0
  422. data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -1
  423. data/spec/fixtures/builder_tests/apps/json_test/sc_static.json +2 -0
  424. data/spec/lib/builders/json_spec.rb +53 -0
  425. data/sproutcore.gemspec +2 -2
  426. data/vendor/chance/lib/chance/parser.rb +1 -1
  427. metadata +222 -177
  428. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
  429. data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
  430. data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
  431. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +0 -69
  432. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
  433. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
  434. data/lib/frameworks/sproutcore/frameworks/mini/license.js +0 -30
  435. data/lib/gen/html_app/USAGE +0 -15
  436. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +0 -11
  437. data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
  438. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -6
  439. data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +0 -1
  440. data/lib/gen/html_project/Buildfile +0 -45
  441. data/lib/gen/html_project/INIT +0 -3
  442. data/lib/gen/html_project/README +0 -1
  443. data/lib/gen/html_project/USAGE +0 -2
  444. data/lib/gen/html_project/templates/@filename@/Buildfile +0 -5
  445. data/lib/gen/html_project/templates/@filename@/README +0 -4
@@ -223,7 +223,7 @@ SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
223
223
  },
224
224
 
225
225
  /**
226
- Removes the passed object from the array. If the underyling content
226
+ Removes the passed object from the array. If the underlying content
227
227
  is a single object, then this simply sets the content to null. Otherwise
228
228
  it will call removeObject() on the content.
229
229
 
@@ -410,12 +410,12 @@ SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
410
410
  },
411
411
 
412
412
  _scac_arrayContentDidChange: function(start, removed, added) {
413
+ this._scac_cached = NO;
413
414
  this.arrayContentDidChange(start, removed, added);
414
415
  if (this._kvo_enumerable_property_chains) {
415
416
  var addedObjects = this.slice(start, start+added);
416
417
  this.setupEnumerablePropertyChains(addedObjects);
417
418
  }
418
- this._scac_cached = NO;
419
419
  this.updateSelectionAfterContentChange();
420
420
  },
421
421
 
@@ -524,7 +524,7 @@ SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
524
524
  }.observes('orderBy'),
525
525
 
526
526
  /** @private
527
- Whenver the content "status" property changes, relay out.
527
+ Whenever the content "status" property changes, relay out.
528
528
  */
529
529
  _scac_contentStatusDidChange: function() {
530
530
  this.notifyPropertyChange('status');
@@ -39,6 +39,48 @@ SC.mixin(SC.Object.prototype, /** @scope SC.Object.prototype */ {
39
39
  // schedule the timer
40
40
  return SC.Timer.schedule({ target: this, action: f, interval: interval });
41
41
  },
42
+
43
+ /**
44
+ A convenience method which makes it easy to coalesce invocations to ensure
45
+ that the method is only called once. This is useful if you need to schedule
46
+ a call but only want it to trigger once after some defined interval has
47
+ passed.
48
+
49
+ @param {Function|String} method reference or method name
50
+ @param {Number} interval
51
+ */
52
+ invokeOnceLater: function(method, interval) {
53
+ if (interval === undefined) { interval = 1 ; }
54
+
55
+ var timers = this._sc_invokeOnceLaterTimers,
56
+ methodGuid, existingTimer, f, newTimer;
57
+
58
+ // ensure we always deal with real functions
59
+ if (SC.typeOf(method) === SC.T_STRING) {
60
+ method = this[method];
61
+ }
62
+
63
+ methodGuid = SC.guidFor(method);
64
+
65
+ if(!timers) {
66
+ this._sc_invokeOnceLaterTimers = timers = {};
67
+ }
68
+
69
+ existingTimer = timers[methodGuid];
70
+ if(existingTimer) existingTimer.invalidate();
71
+
72
+ f = function() {
73
+ // GC assistance for IE
74
+ delete timers[methodGuid];
75
+ return method.apply(this, arguments);
76
+ };
77
+
78
+ // schedule the timer
79
+ newTimer = SC.Timer.schedule({ target: this, action: f, interval: interval });
80
+ timers[methodGuid] = newTimer;
81
+
82
+ return newTimer;
83
+ },
42
84
 
43
85
  /**
44
86
  Lookup the named property path and then invoke the passed function,
@@ -29,12 +29,12 @@ SC.RunLoop = SC.RunLoop.extend(
29
29
 
30
30
  Note that timers should fire only once per run loop to avoid the
31
31
  situation where a timer might cause an infinite loop by constantly
32
- rescheduling itself everytime it is fired.
32
+ rescheduling itself every time it is fired.
33
33
  */
34
34
  endRunLoop: function() {
35
35
  this.fireExpiredTimers(); // fire them timers!
36
36
  var ret = sc_super(); // do everything else
37
- this.scheduleNextTimeout(); // schedule a timout if timers remain
37
+ this.scheduleNextTimeout(); // schedule a timeout if timers remain
38
38
  return ret;
39
39
  },
40
40
 
@@ -161,3 +161,4 @@ SC.RunLoop = SC.RunLoop.extend(
161
161
 
162
162
  // Recreate the currentRunLoop with the new methods
163
163
  SC.RunLoop.currentRunLoop = SC.RunLoop.create();
164
+ SC.RunLoop.runLoopClass = SC.RunLoop;
@@ -54,6 +54,13 @@ SC.supplement(String.prototype,
54
54
  var args = SC.$A(arguments);
55
55
  args.unshift(this);
56
56
  return SC.String.locWithDefault.apply(SC.String, args);
57
+ },
58
+
59
+ /**
60
+ @see SC.String.mult
61
+ */
62
+ mult: function(value) {
63
+ return SC.String.mult(this, value);
57
64
  }
58
65
 
59
66
  });
@@ -56,7 +56,7 @@ SC.ActionSupport =
56
56
  actionContext: null,
57
57
 
58
58
  /**
59
- Perform the action. If an action paramter is not provided, then
59
+ Perform the action. If an action parameter is not provided, then
60
60
  the action defaults to the `action` property.
61
61
 
62
62
  @param {String} [action] The action to fire.
@@ -99,12 +99,12 @@ SC.DelegateSupport = {
99
99
 
100
100
  while(idx<len) {
101
101
  ret = arguments[idx++];
102
- if (ret && ret[key] !== undefined) {
102
+ if (ret && ret[key] != undefined) {
103
103
  return ret.get ? ret.get(key) : ret[key] ;
104
104
  }
105
105
  }
106
106
 
107
- return (this[key] !== undefined) ? this.get(key) : undefined ;
107
+ return (this[key] != undefined) ? this.get(key) : undefined ;
108
108
  }
109
109
 
110
110
  };
@@ -183,7 +183,7 @@ SC.ResponderContext = {
183
183
  },
184
184
 
185
185
  _notifyWillLoseFirstResponder: function(responder, cur, root, evt) {
186
- if (cur === root) return ; // nothing to do
186
+ if (!cur || cur === root) return ; // nothing to do
187
187
 
188
188
  cur.willLoseFirstResponder(responder, evt);
189
189
  cur.set('hasFirstResponder', NO);
@@ -193,7 +193,7 @@ SC.ResponderContext = {
193
193
  },
194
194
 
195
195
  _notifyDidBecomeFirstResponder: function(responder, cur, root) {
196
- if (cur === root) return ; // nothing to do
196
+ if (!cur || cur === root) return ; // nothing to do
197
197
 
198
198
  var next = this.nextResponderFor(cur);
199
199
  if (next) this._notifyDidBecomeFirstResponder(responder, next, root);
@@ -220,7 +220,7 @@ SC.ResponderContext = {
220
220
 
221
221
  @param {String} action name of action
222
222
  @param {Object} sender object sending the action
223
- @param {Object} context optional additonal context info
223
+ @param {Object} context optional additional context info
224
224
  @returns {SC.Responder} the responder that handled it or null
225
225
  */
226
226
  sendAction: function(action, sender, context) {
@@ -65,7 +65,7 @@ SC.SelectionSupport = {
65
65
  have groups or want to otherwise limit the kinds of objects that can be
66
66
  selected.
67
67
 
68
- the default imeplementation returns firstObject property.
68
+ the default implementation returns firstObject property.
69
69
 
70
70
  @returns {Object} first selectable object
71
71
  */
@@ -0,0 +1,63 @@
1
+ /**
2
+ SC.bodyOverflowArbitrator is a central object responsible for controlling the overflow on the body element.
3
+
4
+ Use it from views that would otherwise set the body overflow style directly; call requestHidden to ask for
5
+ the body to have overflow:hidden, and call requestVisible to ask for the body to be visible.
6
+
7
+ Call withdrawRequest to register that you no longer have any interest in the body overflow setting. Don't
8
+ forget to do this, or your object could be affecting the body overflow long after it's no longer relevant.
9
+
10
+ When calling requestHidden, requestVisible, and withdrawRequest, pass your object as the first argument so
11
+ that its request can be associated with its GUID.
12
+
13
+ When calling requestHidden or requestVisible, you may optionally pass true as a second argument to signify
14
+ that your desire for hidden or visible overflow is important. An important visible-request will override
15
+ any other, but an important hidden-request will override a normal visible-request. A normal visible-request
16
+ will in turn override a normal hidden-request.
17
+ */
18
+ SC.bodyOverflowArbitrator = SC.Object.create(/**@scope SC.bodyOverflowArbitrator.prototype */{
19
+ /** Request that the body be given overflow:hidden;. Pass your object, then (optionally) true to confer importance. */
20
+ requestHidden: function(from,important) { this._makeRequest(from,-1-9*!!important); },
21
+
22
+ /** Request that the body be given overflow:visible;. Pass your object, then (optionally) true to confer importance. */
23
+ requestVisible: function(from,important) { this._makeRequest(from,1+9*!!important); },
24
+
25
+ /** State that your object no longer cares about the body overflow. */
26
+ withdrawRequest: function(from) {
27
+ if(!from) return;
28
+ var guid = SC.guidFor(from);
29
+ if(this._requests[guid]) delete this._requests[guid];
30
+ this.setOverflow();
31
+ },
32
+
33
+ /** Perform the action of setting the overflow depending on what requests are currently registered. Does nothing if there are no requests. */
34
+ setOverflow: function() {
35
+ var overflow = this._decideOverflow();
36
+ if(overflow!==undefined) document.body.style.overflow = overflow ? "auto" : "hidden";
37
+ // console.log("Body Overflow Arbitrator now decides "+(overflow===undefined?"that overflow is unimportant.":"to use overflow:"+(overflow===true?'visible':"hidden")+";")+" Requests are:",this._requests);
38
+ },
39
+
40
+ _makeRequest: function(from,value) {
41
+ if(!from) return;
42
+ var guid = SC.guidFor(from);
43
+ this._requests[guid] = value;
44
+ this.setOverflow();
45
+ },
46
+
47
+ _requests: {},
48
+ _decideOverflow: function() {
49
+ var haveHidden, haveVisible, haveImportantHidden, haveImportantVisible,
50
+ reqs = this._requests, req;
51
+ for(var i in reqs) {
52
+ if((req=reqs[i])<0) haveHidden=YES;
53
+ if(req<-1) haveImportantHidden=YES;
54
+ if(req>0) haveVisible=YES;
55
+ if(req>1) haveImportantVisible=YES;
56
+ }
57
+ if(haveImportantVisible) return YES; //important-visible takes all.
58
+ if(haveVisible && haveImportantHidden) return NO; //important-hidden beats regular-visible.
59
+ if(haveVisible) return YES; //regular-visible beats regular-hidden
60
+ if(haveHidden) return NO; //if there is a hidden, it can win now.
61
+ return undefined; //if nobody cared, return undefined to prevent work.
62
+ }
63
+ });
@@ -41,7 +41,7 @@ SC.Pane.reopen(
41
41
  var nextValidKeyView;
42
42
 
43
43
  // Handle tab key presses if we don't have a first responder already
44
- if ((evt.which === 9 || (SC.browser.mozilla && evt.keyCode ===9)) && !this.get('firstResponder')) {
44
+ if (evt.keyCode === 9 && !this.get('firstResponder')) {
45
45
  // Cycle forwards by default, backwards if the shift key is held
46
46
  if (evt.shiftKey) {
47
47
  nextValidKeyView = this.get('previousValidKeyView');
@@ -5,7 +5,6 @@
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
  sc_require("panes/pane");
8
-
9
8
  SC.Pane.reopen(
10
9
  /** @scope SC.Pane.prototype */ {
11
10
 
@@ -37,7 +36,9 @@ SC.Pane.reopen(
37
36
  wDim.height = document.body.clientHeight;
38
37
 
39
38
  // IE7 is the only browser which reports clientHeight _including_ scrollbar.
40
- if (SC.browser.isIE && SC.browser.compareVersion("7.0") === 0) {
39
+ if (SC.browser.name === SC.BROWSER.ie &&
40
+ SC.browser.compareVersion(SC.browser.version, "7") === 0) {
41
+
41
42
  var scrollbarSize = SC.platform.get('scrollbarSize');
42
43
  if (document.body.scrollWidth > wDim.width) {
43
44
  wDim.width -= scrollbarSize;
@@ -79,13 +80,47 @@ SC.Pane.reopen(
79
80
  */
80
81
  windowSizeDidChange: function(oldSize, newSize) {
81
82
  this.set('currentWindowSize', newSize) ;
83
+ this.setBodyOverflowIfNeeded();
82
84
  this.parentViewDidResize(); // start notifications.
83
85
  return this ;
84
86
  },
85
87
 
88
+ /**
89
+ Changes the body overflow according to whether minWidth or minHeight
90
+ are present in the layout hash. If there are no minimums, nothing
91
+ is done unless true is passed as the first argument. If so, then
92
+ overflow:hidden; will be used.
93
+
94
+ It's possible to call this manually and pass YES to remove overflow
95
+ if setting layout to a hash without minWidth and minHeight, but it's
96
+ probably not a good idea to do so unless you're doing it from the main
97
+ pane. There's only one body tag, after all, and if this is called from
98
+ multiple different panes, the panes could fight over whether it gets
99
+ an overflow if care isn't taken!
100
+
101
+ @param {Boolean} [force] force a style to be set even if there are
102
+ no minimums.
103
+ */
104
+ setBodyOverflowIfNeeded: function(force) {
105
+ //Code to get rid of Lion rubberbanding.
106
+ var layout = this.get('layout'),
107
+ size = this.get('currentWindowSize');
108
+ if(!layout || !size || !size.width || !size.height) return;
109
+ var minW = layout.minWidth,
110
+ minH = layout.minHeight;
111
+ if(force===true || minW || minH) {
112
+ if( (minH && size.height<minH) || (minW && size.width<minW) ) {
113
+ SC.bodyOverflowArbitrator.requestVisible(this);
114
+ } else {
115
+ SC.bodyOverflowArbitrator.requestHidden(this);
116
+ }
117
+ }
118
+ },
119
+
86
120
  /** @private */
87
121
  paneLayoutDidChange: function() {
88
122
  this.invokeOnce(this.updateLayout);
123
+ this.setBodyOverflowIfNeeded();
89
124
  }.observes('layout'),
90
125
 
91
126
  recomputeDependentProperties: function(original) {
@@ -6,6 +6,10 @@
6
6
  // ==========================================================================
7
7
 
8
8
  sc_require('panes/pane');
9
+ sc_require('panes/keyboard');
10
+ sc_require('panes/layout');
11
+ sc_require('panes/manipulation');
12
+ sc_require('panes/visibility');
9
13
 
10
14
  /** @class
11
15
 
@@ -30,10 +34,31 @@ SC.MainPane = SC.Pane.extend({
30
34
  /** @private */
31
35
  layout: { top: 0, left: 0, bottom: 0, right: 0, minHeight:200, minWidth:200 },
32
36
 
37
+ init:function(){
38
+ var wDim = {x: 0, y: 0, width: 1000, height: 1000},
39
+ layout = this.get('layout'), isOverflowing = false;
40
+
41
+ //Initial computation to get ride of Lion rubberbanding.
42
+ if (document && document.body) {
43
+ wDim.width = document.body.clientWidth;
44
+ wDim.height = document.body.clientHeight;
45
+
46
+ if( layout.minHeight || layout.minWidth ) {
47
+ if( (layout.minHeight && wDim.height<layout.minHeight) || (layout.minWidth && wDim.width<layout.minWidth) ) {
48
+ SC.bodyOverflowArbitrator.requestVisible(this);
49
+ } else {
50
+ // to avoid Lion rubberbanding
51
+ SC.bodyOverflowArbitrator.requestHidden(this);
52
+ }
53
+ }
54
+ }
55
+ sc_super();
56
+ },
57
+
33
58
  /** @private - extends SC.Pane's method */
34
59
  paneDidAttach: function() {
35
- var ret = sc_super();
36
- var responder = this.rootResponder;
60
+ var ret = sc_super(),
61
+ responder = this.rootResponder;
37
62
  responder.makeMainPane(this);
38
63
  if (!responder.get('keyRootView')) responder.makeKeyPane(this);
39
64
  return ret ;
@@ -43,8 +68,5 @@ SC.MainPane = SC.Pane.extend({
43
68
  acceptsKeyPane: YES,
44
69
 
45
70
  /** @private */
46
- classNames: ['sc-main'],
47
-
48
- ariaRole: 'application'
49
-
71
+ classNames: ['sc-main']
50
72
  });
@@ -6,8 +6,18 @@
6
6
  // ==========================================================================
7
7
 
8
8
  sc_require('views/view');
9
+ sc_require('views/view/acceleration');
10
+ sc_require('views/view/cursor');
11
+ sc_require('views/view/enabled');
12
+ sc_require('views/view/keyboard');
13
+ sc_require('views/view/layout');
14
+ sc_require('views/view/manipulation');
15
+ sc_require('views/view/theming');
16
+ sc_require('views/view/touch');
17
+ sc_require('views/view/visibility');
9
18
  sc_require('mixins/responder_context');
10
19
 
20
+
11
21
  /**
12
22
  Indicates a value has a mixed state of both on and off.
13
23
 
@@ -439,9 +449,6 @@ SC.Pane = SC.View.extend(SC.ResponderContext,
439
449
  if (dom && dom.parentNode) dom.parentNode.removeChild(dom) ;
440
450
  dom = null ;
441
451
 
442
- // layer is cached by SC.View in this._view_layer, remove it so that the DOM node can be freed
443
- this.destroyLayer();
444
-
445
452
  // remove intercept
446
453
  this._removeIntercept();
447
454
 
@@ -13,7 +13,7 @@
13
13
  array content as needed.
14
14
 
15
15
  Your object does not need to implement all of these methods, but it should
16
- at least implment the sparseArrayDidRequestIndex() method.
16
+ at least implement the sparseArrayDidRequestIndex() method.
17
17
 
18
18
  @since SproutCore 1.0
19
19
  */
@@ -43,7 +43,7 @@ SC.SparseArrayDelegate = {
43
43
  /**
44
44
  Invoked when an object requests an index on the sparse array that has not
45
45
  yet been set. You should implement this method to set the object at the
46
- index using provideObjectsAtIndex() or provideObjectsInRange() on the
46
+ index using provideObjectAtIndex() or provideObjectsInRange() on the
47
47
  sparse array. You can call these methods immediately during this handler
48
48
  or you can wait and call them at a later time once you have loaded any
49
49
  data.
@@ -5,16 +5,81 @@
5
5
  // License: Licensed under MIT license (see license.js)
6
6
  // ==========================================================================
7
7
 
8
+
8
9
  SC.mixin(SC.browser,
9
10
  /** @scope SC.browser */ {
10
11
 
11
12
  /**
13
+ Version Strings should not be compared against Numbers. For example,
14
+ the version "1.20" is greater than "1.2" and less than "1.200", but as
15
+ Numbers, they are all 1.2.
16
+
17
+ Pass in one of the browser versions: SC.browser.version,
18
+ SC.browser.engineVersion or SC.browser.osVersion and a String to compare
19
+ against. The function will split each version on the decimals and compare
20
+ the parts numerically.
21
+
22
+ Examples:
23
+
24
+ SC.browser.compare('1.20', '1.2') == 18
25
+ SC.browser.compare('1.08', '1.8') == 0
26
+ SC.browser.compare('1.1.1', '1.1.004') == -3
27
+
28
+ @param version {String} One of SC.browser.version, SC.browser.engineVersion or SC.browser.osVersion
29
+ @param other {String} The version to compare against.
30
+ @return {Number} The difference between the versions at the first difference.
31
+ */
32
+ compare: function(version, other) {
33
+ var coerce,
34
+ parts,
35
+ tests;
36
+
37
+ // Ensure that the versions are Strings.
38
+ if (typeof version === 'number' || typeof other === 'number') {
39
+ SC.warn('SC.browser.compare(): Versions compared against Numbers may not provide accurate results. Use a String of decimal separated Numbers instead.')
40
+ version = String(version);
41
+ other = String(other);
42
+ }
43
+
44
+ // This function transforms the String to a Number or NaN
45
+ coerce = function (part) {
46
+ return Number(part.match(/^[0-9]+/));
47
+ };
48
+
49
+ parts = SC.A(version.split('.')).map(coerce);
50
+ tests = SC.A(other.split('.')).map(coerce);
51
+
52
+ // Test each part stopping when there is a difference.
53
+ for (var i = 0; i < tests.length; i++) {
54
+ var check = parts[i] - tests[i];
55
+ if (isNaN(check)) return 0;
56
+ if (check !== 0) return check;
57
+ }
58
+
59
+ return 0;
60
+ },
61
+
62
+ /** @deprecated Since 1.7. Use SC.browser.compare(version, otherVersion) instead.
63
+
12
64
  Pass any number of arguments, and this will check them against the browser
13
65
  version split on ".". If any of them are not equal, return the inequality.
14
66
  If as many arguments as were passed in are equal, return 0. If something
15
67
  is NaN, return 0.
16
68
  */
69
+
70
+ // Deprecation Note:
71
+ //
72
+ // This function forces the comparison against the value of
73
+ // SC.browser.version, but the old value of SC.browser.version would
74
+ // occasionally be the browser's version or the layout engine's version,
75
+ // which could cause unexpected results. As well, there was no way to
76
+ // compare the actual browser version or OS version.
17
77
  compareVersion: function () {
78
+ SC.warn('SC.browser.compareVersion() has been deprecated. Please ' +
79
+ 'use SC.browser.compare() instead. Example: ' +
80
+ 'SC.browser.compareVersion(16,0,912) < 0 becomes ' +
81
+ 'SC.browser.compare(SC.browser.engineVersion, \'16.0.912\').');
82
+
18
83
  if (this._versionSplit === undefined) {
19
84
  var coerce = function (part) {
20
85
  return Number(part.match(/^[0-9]+/));
@@ -28,9 +93,8 @@ SC.mixin(SC.browser,
28
93
  if (isNaN(check)) return 0;
29
94
  if (check !== 0) return check;
30
95
  }
31
-
96
+
32
97
  return 0;
33
98
  }
34
99
 
35
100
  });
36
-