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
@@ -0,0 +1,161 @@
1
+ // ==========================================================================
2
+ // SC Unit Test
3
+ // ==========================================================================
4
+ /*globals SC */
5
+
6
+ var sc, del, foo;
7
+
8
+ module("SC.State: routeTriggered method Tests", {
9
+
10
+ setup: function() {
11
+
12
+ del = SC.Object.create(SC.StatechartDelegate, {
13
+
14
+ info: {},
15
+
16
+ returnValue: YES,
17
+
18
+ statechartShouldStateHandleTriggeredRoute: function(statechart, state, context) {
19
+ this.info.statechartShouldStateHandleTriggeredRoute = {
20
+ statechart: statechart,
21
+ state: state,
22
+ context: context
23
+ };
24
+
25
+ return this.get('returnValue');
26
+ },
27
+
28
+ statechartStateCancelledHandlingTriggeredRoute: function(statechart, state, context) {
29
+ this.info.statechartStateCancelledHandlingTriggeredRoute = {
30
+ statechart: statechart,
31
+ state: state,
32
+ context: context
33
+ };
34
+ }
35
+
36
+ });
37
+
38
+ sc = SC.Statechart.create({
39
+
40
+ initialState: 'foo',
41
+
42
+ delegate: del,
43
+
44
+ foo: SC.State.design({
45
+
46
+ info: {},
47
+
48
+ location: 'foo/bar',
49
+
50
+ createStateRouteHandlerContext: function(attr) {
51
+ this.info.createStateRouteHandlerContext = {
52
+ attr: attr
53
+ };
54
+ return sc_super();
55
+ },
56
+
57
+ handleTriggeredRoute: function(context) {
58
+ this.info.handleTriggeredRoute = {
59
+ context: context
60
+ };
61
+ }
62
+
63
+ })
64
+
65
+ });
66
+
67
+ sc.initStatechart();
68
+ foo = sc.getState('foo');
69
+ },
70
+
71
+ teardown: function() {
72
+ sc = del = foo = null;
73
+ }
74
+
75
+ });
76
+
77
+ test("invoke routeTriggered where delegate does allow state to handle route", function() {
78
+ var info, context, params = { value: 'test' };
79
+
80
+ foo.routeTriggered(params);
81
+
82
+ info = foo.info.createStateRouteHandlerContext;
83
+
84
+ ok(info, "state.createStateRouteHandlerContext should have been invoked");
85
+ ok(info.attr, "state.createStateRouteHandlerContext should be provided attr param");
86
+
87
+ info = foo.info.handleTriggeredRoute;
88
+
89
+ ok(info, "state.handleTriggeredRoute should have been invoked");
90
+
91
+ context = info.context;
92
+
93
+ ok(SC.kindOf(context, SC.StateRouteHandlerContext), "state.handleTriggeredRoute should be provided a state route handler context object");
94
+ equals(context.get('state'), foo, "context.state should be state foo");
95
+ equals(context.get('location'), 'foo/bar', "context.location should be 'foo/bar'");
96
+ equals(context.get('params'), params, "context.params should be value passed to state.routeTriggered method");
97
+ equals(context.get('handler'), foo.routeTriggered, "context.handler should be reference to state.routeTriggered");
98
+
99
+ info = del.info.statechartShouldStateHandleTriggeredRoute;
100
+
101
+ ok(info, "del.statechartShouldStateHandleTriggeredRoute should have been invoked");
102
+ equals(info.statechart, sc, "del.statechartShouldStateHandleTriggeredRoute should be provided a statechart");
103
+ equals(info.state, foo, "del.statechartShouldStateHandleTriggeredRoute should be provided a state");
104
+
105
+ context = info.context;
106
+
107
+ ok(SC.kindOf(context, SC.StateRouteHandlerContext), "state.statechartShouldStateHandleTriggeredRoute should be provided a state route handler context object");
108
+ equals(context.get('state'), foo, "context.state should be state foo");
109
+ equals(context.get('location'), 'foo/bar', "context.location should be 'foo/bar'");
110
+ equals(context.get('params'), params, "context.params should be value passed to state.routeTriggered method");
111
+ equals(context.get('handler'), foo.routeTriggered, "context.handler should be reference to state.routeTriggered");
112
+
113
+ info = del.info.statechartStateCancelledHandlingTriggeredRoute;
114
+
115
+ ok(!info, "del.statechartStateCancelledHandlingTriggeredRoute should have been invoked");
116
+ });
117
+
118
+ test("invoke routeTriggered where delegate does not allow state to handle route", function() {
119
+ var info, context, params = { value: 'test' };
120
+
121
+ del.set('returnValue', NO);
122
+ foo.routeTriggered(params);
123
+
124
+ info = foo.info.createStateRouteHandlerContext;
125
+
126
+ ok(info, "state.createStateRouteHandlerContext should have been invoked");
127
+ ok(info.attr, "state.createStateRouteHandlerContext should be provided attr param");
128
+
129
+ info = foo.info.handleTriggeredRoute;
130
+
131
+ ok(!info, "state.handleTriggeredRoute should have been invoked");
132
+
133
+ info = del.info.statechartShouldStateHandleTriggeredRoute;
134
+
135
+ ok(info, "del.statechartShouldStateHandleTriggeredRoute should have been invoked");
136
+ equals(info.statechart, sc, "del.statechartShouldStateHandleTriggeredRoute should be provided a statechart");
137
+ equals(info.state, foo, "del.statechartShouldStateHandleTriggeredRoute should be provided a state");
138
+
139
+ context = info.context;
140
+
141
+ ok(SC.kindOf(context, SC.StateRouteHandlerContext), "state.statechartShouldStateHandleTriggeredRoute should be provided a state route handler context object");
142
+ equals(context.get('state'), foo, "context.state should be state foo");
143
+ equals(context.get('location'), 'foo/bar', "context.location should be 'foo/bar'");
144
+ equals(context.get('params'), params, "context.params should be value passed to state.routeTriggered method");
145
+ equals(context.get('handler'), foo.routeTriggered, "context.handler should be reference to state.routeTriggered");
146
+
147
+ info = del.info.statechartStateCancelledHandlingTriggeredRoute;
148
+
149
+ ok(info, "del.statechartStateCancelledHandlingTriggeredRoute should have been invoked");
150
+ equals(info.statechart, sc, "del.statechartStateCancelledHandlingTriggeredRoute should be provided a statechart");
151
+ equals(info.state, foo, "del.statechartStateCancelledHandlingTriggeredRoute should be provided a state");
152
+
153
+ context = info.context;
154
+
155
+ ok(SC.kindOf(context, SC.StateRouteHandlerContext), "state.statechartStateCancelledHandlingTriggeredRoute should be provided a state route handler context object");
156
+ equals(context.get('state'), foo, "context.state should be state foo");
157
+ equals(context.get('location'), 'foo/bar', "context.location should be 'foo/bar'");
158
+ equals(context.get('params'), params, "context.params should be value passed to state.routeTriggered method");
159
+ equals(context.get('handler'), foo.routeTriggered, "context.handler should be reference to state.routeTriggered");
160
+
161
+ });
@@ -0,0 +1,288 @@
1
+ // ==========================================================================
2
+ // SC Unit Test
3
+ // ==========================================================================
4
+ /*globals SC */
5
+
6
+ var sc, root, foo, bar;
7
+
8
+ module("SC.State: addSubstate method Tests", {
9
+
10
+ setup: function() {
11
+
12
+ sc = SC.Statechart.create({
13
+
14
+ stateWillTryToHandleEvent: function(state, event, handler) {
15
+ sc_super();
16
+ this.stateWillTryToHandleEventInfo = {
17
+ state: state,
18
+ event: event,
19
+ handler: handler
20
+ };
21
+ },
22
+
23
+ stateDidTryToHandleEvent: function(state, event, handler, handled) {
24
+ sc_super();
25
+ this.stateDidTryToHandleEventInfo = {
26
+ state: state,
27
+ event: event,
28
+ handler: handler,
29
+ handled: handled
30
+ };
31
+ },
32
+
33
+ initialState: 'foo',
34
+
35
+ foo: SC.State.design({
36
+
37
+ eventHandlerReturnValue: YES,
38
+
39
+ _notifyHandledEvent: function(handler, event, arg1, arg2) {
40
+ this.handledEventInfo = {
41
+ handler: handler,
42
+ event: event,
43
+ arg1: arg1,
44
+ arg2: arg2
45
+ };
46
+ },
47
+
48
+ eventHandler1: function(arg1, arg2) {
49
+ this._notifyHandledEvent('eventHandler1', 'eventHandler1', arg1, arg2);
50
+ return this.get('eventHandlerReturnValue');
51
+ },
52
+
53
+ eventHandler2: function(event, arg1, arg2) {
54
+ this._notifyHandledEvent('eventHandler2', event, arg1, arg2);
55
+ return this.get('eventHandlerReturnValue');
56
+ }.handleEvents('test1'),
57
+
58
+ eventHandler3: function(event, arg1, arg2) {
59
+ this._notifyHandledEvent('eventHandler3', event, arg1, arg2);
60
+ return this.get('eventHandlerReturnValue');
61
+ }.handleEvents(/^digit[0-9]$/),
62
+
63
+ unknownEvent: function(event, arg1, arg2) {
64
+ this._notifyHandledEvent('unknownEvent', event, arg1, arg2);
65
+ return this.get('eventHandlerReturnValue');
66
+ }
67
+
68
+ })
69
+
70
+ });
71
+
72
+ sc.initStatechart();
73
+ foo = sc.getState('foo');
74
+ },
75
+
76
+ teardown: function() {
77
+ sc = foo = null;
78
+ }
79
+
80
+ });
81
+
82
+ test("try to invoke state foo's eventHandler1 event handler", function() {
83
+
84
+ var ret = foo.tryToHandleEvent('eventHandler1', 100, 200);
85
+
86
+ var info = foo.handledEventInfo;
87
+
88
+ equals(ret, true, 'foo.tryToHandleEvent should return true');
89
+ ok(info, 'foo.handledEventInfo should not be null');
90
+ equals(info.handler, 'eventHandler1', 'foo.eventHandler1 should have been invoked');
91
+ equals(info.arg1, 100, 'foo.eventHandler1 should handle event 100');
92
+ equals(info.arg2, 200, 'foo.eventHandler1 should handle event 200');
93
+
94
+ info = sc.stateWillTryToHandleEventInfo;
95
+
96
+ ok(info, 'sc.stateWillTryToHandleEvent should have been invoked');
97
+ equals(info.state, foo, 'sc.stateWillTryToHandleEvent should have been passed state foo');
98
+ equals(info.event, 'eventHandler1', 'sc.stateWillTryToHandleEvent should have been passed event eventHandler1');
99
+ equals(info.handler, 'eventHandler1', 'sc.stateWillTryToHandleEvent should have been passed handler eventHandler1');
100
+
101
+ info = sc.stateDidTryToHandleEventInfo;
102
+
103
+ ok(info, 'sc.stateDidTryToHandleEventInfo should have been invoked');
104
+ equals(info.state, foo, 'sc.stateDidTryToHandleEventInfo should have been passed state foo');
105
+ equals(info.event, 'eventHandler1', 'sc.stateDidTryToHandleEventInfo should have been passed event eventHandler1');
106
+ equals(info.handler, 'eventHandler1', 'sc.stateDidTryToHandleEventInfo should have been passed handler eventHandler1');
107
+ equals(info.handled, true, 'sc.stateDidTryToHandleEventInfo should have been passed handled true');
108
+
109
+ });
110
+
111
+ test("try to invoke state foo's eventHandler2 event handler", function() {
112
+
113
+ var ret = foo.tryToHandleEvent('test1', 100, 200);
114
+
115
+ var info = foo.handledEventInfo;
116
+
117
+ equals(ret, true, 'foo.tryToHandleEvent should return true');
118
+ ok(info, 'foo.handledEventInfo should not be null');
119
+ equals(info.handler, 'eventHandler2', 'foo.eventHandler2 should have been invoked');
120
+ equals(info.event, 'test1', 'foo.eventHandler2 should handle event test1');
121
+ equals(info.arg1, 100, 'foo.eventHandler2 should handle event 100');
122
+ equals(info.arg2, 200, 'foo.eventHandler2 should handle event 200');
123
+
124
+ info = sc.stateWillTryToHandleEventInfo;
125
+
126
+ ok(info, 'sc.stateWillTryToHandleEvent should have been invoked');
127
+ equals(info.state, foo, 'sc.stateWillTryToHandleEvent should have been passed state foo');
128
+ equals(info.event, 'test1', 'sc.stateWillTryToHandleEvent should have been passed event test1');
129
+ equals(info.handler, 'eventHandler2', 'sc.stateWillTryToHandleEvent should have been passed handler eventHandler2');
130
+
131
+ info = sc.stateDidTryToHandleEventInfo;
132
+
133
+ ok(info, 'sc.stateDidTryToHandleEventInfo should have been invoked');
134
+ equals(info.state, foo, 'sc.stateDidTryToHandleEventInfo should have been passed state foo');
135
+ equals(info.event, 'test1', 'sc.stateDidTryToHandleEventInfo should have been passed event test1');
136
+ equals(info.handler, 'eventHandler2', 'sc.stateDidTryToHandleEventInfo should have been passed handler eventHandler2');
137
+ equals(info.handled, true, 'sc.stateDidTryToHandleEventInfo should have been passed handled true');
138
+
139
+ });
140
+
141
+ test("try to invoke state foo's eventHandler3 event handler", function() {
142
+
143
+ var ret = foo.tryToHandleEvent('digit3', 100, 200);
144
+
145
+ var info = foo.handledEventInfo;
146
+
147
+ equals(ret, true, 'foo.tryToHandleEvent should return true');
148
+ ok(info, 'foo.handledEventInfo should not be null');
149
+ equals(info.handler, 'eventHandler3', 'foo.eventHandler3 should have been invoked');
150
+ equals(info.event, 'digit3', 'foo.eventHandler3 should handle event test1');
151
+ equals(info.arg1, 100, 'foo.eventHandler3 should handle event 100');
152
+ equals(info.arg2, 200, 'foo.eventHandler3 should handle event 200');
153
+
154
+ info = sc.stateWillTryToHandleEventInfo;
155
+
156
+ ok(info, 'sc.stateWillTryToHandleEvent should have been invoked');
157
+ equals(info.state, foo, 'sc.stateWillTryToHandleEvent should have been passed state foo');
158
+ equals(info.event, 'digit3', 'sc.stateWillTryToHandleEvent should have been passed event digit3');
159
+ equals(info.handler, 'eventHandler3', 'sc.stateWillTryToHandleEvent should have been passed handler eventHandler3');
160
+
161
+ info = sc.stateDidTryToHandleEventInfo;
162
+
163
+ ok(info, 'sc.stateDidTryToHandleEventInfo should have been invoked');
164
+ equals(info.state, foo, 'sc.stateDidTryToHandleEventInfo should have been passed state foo');
165
+ equals(info.event, 'digit3', 'sc.stateDidTryToHandleEventInfo should have been passed event digit3');
166
+ equals(info.handler, 'eventHandler3', 'sc.stateDidTryToHandleEventInfo should have been passed handler eventHandler3');
167
+ equals(info.handled, true, 'sc.stateDidTryToHandleEventInfo should have been passed handled true');
168
+
169
+ });
170
+
171
+ test("try to invoke state foo's unknownEvent event handler", function() {
172
+
173
+ var ret = foo.tryToHandleEvent('test', 100, 200);
174
+
175
+ var info = foo.handledEventInfo;
176
+
177
+ equals(ret, true, 'foo.tryToHandleEvent should return true');
178
+ ok(info, 'foo.handledEventInfo should not be null');
179
+ equals(info.handler, 'unknownEvent', 'foo.unknownEvent should have been invoked');
180
+ equals(info.event, 'test', 'foo.unknownEvent should handle event test');
181
+ equals(info.arg1, 100, 'foo.unknownEvent should handle event 100');
182
+ equals(info.arg2, 200, 'foo.unknownEvent should handle event 200');
183
+
184
+ info = sc.stateWillTryToHandleEventInfo;
185
+
186
+ ok(info, 'sc.stateWillTryToHandleEvent should have been invoked');
187
+ equals(info.state, foo, 'sc.stateWillTryToHandleEvent should have been passed state foo');
188
+ equals(info.event, 'test', 'sc.stateWillTryToHandleEvent should have been passed event test');
189
+ equals(info.handler, 'unknownEvent', 'sc.stateWillTryToHandleEvent should have been passed handler unknownEvent');
190
+
191
+ info = sc.stateDidTryToHandleEventInfo;
192
+
193
+ ok(info, 'sc.stateDidTryToHandleEventInfo should have been invoked');
194
+ equals(info.state, foo, 'sc.stateDidTryToHandleEventInfo should have been passed state foo');
195
+ equals(info.event, 'test', 'sc.stateDidTryToHandleEventInfo should have been passed event test');
196
+ equals(info.handler, 'unknownEvent', 'sc.stateDidTryToHandleEventInfo should have been passed handler unknownEvent');
197
+ equals(info.handled, true, 'sc.stateDidTryToHandleEventInfo should have been passed handled true');
198
+
199
+ });
200
+
201
+ test("try not to invoke any of state foo's event handlers", function() {
202
+
203
+ foo.unknownEvent = undefined;
204
+
205
+ var ret = foo.tryToHandleEvent('test', 100, 200);
206
+
207
+ var info = foo.handledEventInfo;
208
+
209
+ equals(ret, NO, 'foo.tryToHandleEvent should return false');
210
+ ok(!info, 'foo.handledEventInfo should be null');
211
+
212
+ info = sc.stateWillTryToHandleEventInfo;
213
+ ok(!info, 'sc.stateWillTryToHandleEvent should not have been invoked');
214
+
215
+ info = sc.stateDidTryToHandleEventInfo;
216
+ ok(!info, 'sc.stateDidTryToHandleEventInfo should not have been invoked');
217
+
218
+ });
219
+
220
+ test("try to invoke state foo's eventHandler1 but tryToHandleEvent returns false", function() {
221
+ foo.eventHandlerReturnValue = NO;
222
+
223
+ var ret = foo.tryToHandleEvent('eventHandler1', 100, 200);
224
+
225
+ var info = foo.handledEventInfo;
226
+
227
+ equals(ret, NO, 'foo.tryToHandleEvent should return false');
228
+ ok(info, 'foo.handledEventInfo should be null');
229
+ equals(info.handler, 'eventHandler1', 'foo.eventHandler1 should have been invoked');
230
+ equals(info.event, 'eventHandler1', 'foo.eventHandler1 should handle event test');
231
+ equals(info.arg1, 100, 'foo.eventHandler1 should handle event 100');
232
+ equals(info.arg2, 200, 'foo.eventHandler1 should handle event 200');
233
+
234
+ info = sc.stateWillTryToHandleEventInfo;
235
+ ok(info, 'sc.stateWillTryToHandleEvent should not have been invoked');
236
+ equals(info.state, foo, 'sc.stateWillTryToHandleEvent should have been passed state foo');
237
+ equals(info.event, 'eventHandler1', 'sc.stateWillTryToHandleEvent should have been passed event test');
238
+ equals(info.handler, 'eventHandler1', 'sc.stateWillTryToHandleEvent should have been passed handler eventHandler1');
239
+
240
+ info = sc.stateDidTryToHandleEventInfo;
241
+ ok(info, 'sc.stateDidTryToHandleEventInfo should not have been invoked');
242
+ equals(info.state, foo, 'sc.stateDidTryToHandleEventInfo should have been passed state foo');
243
+ equals(info.event, 'eventHandler1', 'sc.stateDidTryToHandleEventInfo should have been passed event test');
244
+ equals(info.handler, 'eventHandler1', 'sc.stateDidTryToHandleEventInfo should have been passed handler eventHandler1');
245
+ equals(info.handled, false, 'sc.stateDidTryToHandleEventInfo should have been passed handled false');
246
+ });
247
+
248
+ test("try to invoke all of state foo's handlers but tryToHandleEvent returns false", function() {
249
+ var ret, info;
250
+
251
+ foo.eventHandlerReturnValue = NO;
252
+
253
+ ret = foo.tryToHandleEvent('eventHandler1');
254
+
255
+ equals(ret, NO, 'foo.tryToHandleEvent should return false');
256
+ info = foo.handledEventInfo;
257
+ ok(info, 'foo.handledEventInfo should be null');
258
+ equals(info.handler, 'eventHandler1', 'foo.eventHandler1 should have been invoked');
259
+ ok(sc.stateWillTryToHandleEventInfo, 'sc.stateWillTryToHandleEvent should not have been invoked');
260
+ ok(sc.stateDidTryToHandleEventInfo, 'sc.stateDidTryToHandleEventInfo should not have been invoked');
261
+
262
+ ret = foo.tryToHandleEvent('test1');
263
+
264
+ equals(ret, NO, 'foo.tryToHandleEvent should return false for event test1');
265
+ info = foo.handledEventInfo;
266
+ ok(info, 'foo.handledEventInfo should be null');
267
+ equals(info.handler, 'eventHandler2', 'foo.eventHandler2 should have been invoked');
268
+ ok(sc.stateWillTryToHandleEventInfo, 'sc.stateWillTryToHandleEvent should not have been invoked');
269
+ ok(sc.stateDidTryToHandleEventInfo, 'sc.stateDidTryToHandleEventInfo should not have been invoked');
270
+
271
+ ret = foo.tryToHandleEvent('digit3');
272
+
273
+ equals(ret, NO, 'foo.tryToHandleEvent should return false for event digit3');
274
+ info = foo.handledEventInfo;
275
+ ok(info, 'foo.handledEventInfo should be null');
276
+ equals(info.handler, 'eventHandler3', 'foo.eventHandler3 should have been invoked');
277
+ ok(sc.stateWillTryToHandleEventInfo, 'sc.stateWillTryToHandleEvent should not have been invoked');
278
+ ok(sc.stateDidTryToHandleEventInfo, 'sc.stateDidTryToHandleEventInfo should not have been invoked');
279
+
280
+ ret = foo.tryToHandleEvent('blah');
281
+
282
+ equals(ret, NO, 'foo.tryToHandleEvent should return false for event blah');
283
+ info = foo.handledEventInfo;
284
+ ok(info, 'foo.handledEventInfo should be null');
285
+ equals(info.handler, 'unknownEvent', 'foo.unknownEvent should have been invoked');
286
+ ok(sc.stateWillTryToHandleEventInfo, 'sc.stateWillTryToHandleEvent should not have been invoked');
287
+ ok(sc.stateDidTryToHandleEventInfo, 'sc.stateDidTryToHandleEventInfo should not have been invoked');
288
+ });
@@ -96,10 +96,10 @@ test("pass no context when going to state a's history state using state", functi
96
96
  stateD.gotoState('f');
97
97
  stateF.gotoHistoryState('a');
98
98
  equals(stateD.get('isCurrentState'), true);
99
- equals(stateD.get('enterStateContext'), null);
100
- equals(stateA.get('enterStateContext'), null);
101
- equals(stateB.get('exitStateContext'), null);
102
- equals(stateF.get('exitStateContext'), null);
99
+ equals(stateD.get('enterStateContext'), null, "state D's enterState method should not be passed a context value");
100
+ equals(stateA.get('enterStateContext'), null, "state A's enterState method should not be passed a context value");
101
+ equals(stateB.get('exitStateContext'), null, "state B's enterState method should not be passed a context value");
102
+ equals(stateF.get('exitStateContext'), null, "state F's enterState method should not be passed a context value");
103
103
  });
104
104
 
105
105
  test("pass context when going to state a's history state using statechart - gotoHistoryState('f', context)", function() {
@@ -160,32 +160,4 @@ test("pass context when going to state a's history state using state - gotoHisto
160
160
  equals(stateA.get('enterStateContext'), context, 'state a should have context upon entering');
161
161
  equals(stateB.get('exitStateContext'), context, 'state b should have context upon exiting');
162
162
  equals(stateF.get('exitStateContext'), context, 'state f should have context upon exiting');
163
- });
164
-
165
- //
166
- // test("pass context when going to state f using state - gotoState('f', context)", function() {
167
- // stateC.gotoState('f', context);
168
- // equals(stateF.get('isCurrentState'), true);
169
- // equals(stateC.get('exitStateContext'), context, 'state c should have context upon exiting');
170
- // equals(stateA.get('exitStateContext'), context, 'state a should have context upon exiting');
171
- // equals(stateB.get('enterStateContext'), context, 'state b should have context upon entering');
172
- // equals(stateF.get('enterStateContext'), context, 'state f should have context upon entering');
173
- // });
174
- //
175
- // test("pass context when going to state f using statechart - gotoState('f', stateC, context) ", function() {
176
- // statechart.gotoState('f', stateC, context);
177
- // equals(stateF.get('isCurrentState'), true);
178
- // equals(stateC.get('exitStateContext'), context, 'state c should have context upon exiting');
179
- // equals(stateA.get('exitStateContext'), context, 'state a should have context upon exiting');
180
- // equals(stateB.get('enterStateContext'), context, 'state b should have context upon entering');
181
- // equals(stateF.get('enterStateContext'), context, 'state f should have context upon entering');
182
- // });
183
- //
184
- // test("pass context when going to state f using statechart - gotoState('f', stateC, false, context) ", function() {
185
- // statechart.gotoState('f', stateC, false, context);
186
- // equals(stateF.get('isCurrentState'), true);
187
- // equals(stateC.get('exitStateContext'), context, 'state c should have context upon exiting');
188
- // equals(stateA.get('exitStateContext'), context, 'state a should have context upon exiting');
189
- // equals(stateB.get('enterStateContext'), context, 'state b should have context upon entering');
190
- // equals(stateF.get('enterStateContext'), context, 'state f should have context upon entering');
191
- // });
163
+ });