sproutcore 1.6.0.beta.3 → 1.6.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (280) hide show
  1. data/CHANGELOG +33 -0
  2. data/Rakefile +213 -10
  3. data/VERSION.yml +1 -1
  4. data/lib/Buildfile +5 -1
  5. data/lib/buildtasks/manifest.rake +7 -1
  6. data/lib/frameworks/sproutcore/Buildfile +3 -2
  7. data/lib/frameworks/sproutcore/CHANGELOG.md +154 -1
  8. data/lib/frameworks/sproutcore/README.md +1 -1
  9. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.css +9 -0
  10. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +254 -207
  11. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +243 -172
  12. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +29 -0
  13. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +5 -0
  14. data/lib/frameworks/sproutcore/frameworks/core_foundation/controls/button.js +6 -2
  15. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/bind.js +36 -14
  16. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +3 -3
  17. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +14 -15
  18. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +14 -14
  19. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/application.js +2 -7
  20. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +3 -3
  21. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +2 -2
  22. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
  23. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +20 -12
  24. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +61 -0
  25. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +20 -6
  26. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +42 -0
  27. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controls/button.js +39 -57
  28. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +5 -3
  29. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +32 -0
  30. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +25 -0
  31. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +28 -17
  32. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +396 -0
  33. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view.js +1 -1
  34. data/lib/frameworks/sproutcore/frameworks/core_foundation/{system → views}/bindable_span.js +2 -1
  35. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +78 -51
  36. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +4 -3
  37. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +2 -1
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +233 -67
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +3 -1
  40. data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +8 -2
  41. data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +1 -1
  42. data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +1 -1
  43. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +15 -8
  44. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +2 -2
  45. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +1 -0
  46. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +3 -2
  47. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +66 -55
  48. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/data_source.js +190 -0
  49. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +21 -0
  50. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +15 -1
  51. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +0 -1
  52. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +212 -182
  53. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +14 -16
  54. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
  55. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +23 -11
  56. data/lib/frameworks/sproutcore/frameworks/desktop/resources/alert.css +49 -0
  57. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/a_sample_image.jpg +0 -0
  58. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/apple-logo1.jpeg +0 -0
  59. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/iframe.html +0 -0
  60. data/lib/frameworks/sproutcore/frameworks/desktop/resources/disclosure.css +20 -0
  61. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/drag.css +1 -1
  62. data/lib/frameworks/sproutcore/frameworks/desktop/resources/icons.css +214 -0
  63. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/cap.png +0 -0
  64. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/downbutton.png +0 -0
  65. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-16.png +0 -0
  66. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-24.png +0 -0
  67. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-48.png +0 -0
  68. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-bookmark-16.png +0 -0
  69. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-bookmark-24.png +0 -0
  70. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-cancel-24.png +0 -0
  71. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-document-16.png +0 -0
  72. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-document-24.png +0 -0
  73. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-down-24.png +0 -0
  74. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
  75. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-favorite-16.png +0 -0
  76. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-favorite-24.png +0 -0
  77. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-folder-16.png +0 -0
  78. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-folder-24.png +0 -0
  79. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-group-16.png +0 -0
  80. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-group-24.png +0 -0
  81. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-help-16.png +0 -0
  82. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-help-24.png +0 -0
  83. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-16.png +0 -0
  84. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-24.png +0 -0
  85. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-48.png +0 -0
  86. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-left-24.png +0 -0
  87. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-options-16.png +0 -0
  88. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-options-24.png +0 -0
  89. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-redo-24.png +0 -0
  90. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-right-24.png +0 -0
  91. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-tools-24.png +0 -0
  92. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-trash-16.png +0 -0
  93. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-trash-24.png +0 -0
  94. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-undo-24.png +0 -0
  95. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-up-24.png +0 -0
  96. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-user-16.png +0 -0
  97. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-user-24.png +0 -0
  98. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-bottom.png +0 -0
  99. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-center.png +0 -0
  100. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-top.png +0 -0
  101. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/track.png +0 -0
  102. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/upbutton.png +0 -0
  103. data/lib/frameworks/sproutcore/frameworks/desktop/resources/list_item.css +145 -0
  104. data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu.css +10 -0
  105. data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu_item_view.css +88 -0
  106. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/modal.css +3 -4
  107. data/lib/frameworks/sproutcore/frameworks/desktop/resources/panel.css +91 -0
  108. data/lib/frameworks/sproutcore/frameworks/desktop/resources/picker.css +37 -0
  109. data/lib/frameworks/sproutcore/frameworks/desktop/resources/progress.css +29 -0
  110. data/lib/frameworks/sproutcore/frameworks/desktop/resources/radio.css +11 -0
  111. data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +121 -0
  112. data/lib/frameworks/sproutcore/frameworks/desktop/resources/separator.css +20 -0
  113. data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +34 -0
  114. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/split.css +0 -0
  115. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/split_divider.css +0 -0
  116. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/tab.css +0 -0
  117. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/toolbar.css +0 -0
  118. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/touch-scroller.css +13 -13
  119. data/lib/frameworks/sproutcore/frameworks/desktop/resources/well.css +65 -0
  120. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +114 -103
  121. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/static_content.js +3 -2
  122. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +7 -6
  123. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +18 -0
  124. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +4 -7
  125. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +9 -2
  126. data/lib/frameworks/sproutcore/frameworks/desktop/{panes → views}/select_button.js +43 -0
  127. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +35 -33
  128. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +2 -2
  129. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +15 -8
  130. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +4 -7
  131. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +55 -13
  132. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +3 -1
  133. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +7 -7
  134. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/benchmark.css +0 -0
  135. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/blank.gif +0 -0
  136. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/bootstrap.rhtml +0 -0
  137. data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +36 -0
  138. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/checkbox_view.css +0 -0
  139. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/debug/control-test-pane.css +0 -0
  140. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/favicon.ico +0 -0
  141. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-logo.png +0 -0
  142. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-landscape.jpg +0 -0
  143. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-landscape.png +0 -0
  144. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-portrait.jpg +0 -0
  145. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-portrait.png +0 -0
  146. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup.png +0 -0
  147. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore.png +0 -0
  148. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/inline_editor.css +0 -0
  149. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +47 -0
  150. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/radio_view.css +0 -0
  151. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/static_layout.css +1 -1
  152. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +130 -0
  153. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +5 -1
  154. data/lib/frameworks/sproutcore/frameworks/foundation/system/string.js +0 -43
  155. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +5 -2
  156. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +4 -4
  157. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +4 -5
  158. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +1 -1
  159. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +5 -5
  160. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +6 -3
  161. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +11 -0
  162. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +2 -2
  163. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +2 -2
  164. data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +2 -2
  165. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +1 -1
  166. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +2 -2
  167. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +2 -2
  168. data/lib/frameworks/sproutcore/frameworks/statechart/debug/monitor.js +4 -73
  169. data/lib/frameworks/sproutcore/frameworks/statechart/debug/sequence_matcher.js +189 -0
  170. data/lib/frameworks/sproutcore/frameworks/statechart/ext/function.js +122 -0
  171. data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +88 -0
  172. data/lib/frameworks/sproutcore/frameworks/statechart/system/empty_state.js +34 -0
  173. data/lib/frameworks/sproutcore/frameworks/statechart/system/history_state.js +97 -0
  174. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +7 -189
  175. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +14 -78
  176. data/lib/frameworks/sproutcore/frameworks/statechart/tests/debug/sequence_matcher.js +464 -0
  177. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +31 -11
  178. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/async/with_concurrent_states.js +6 -4
  179. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/advanced.js +40 -6
  180. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/basic.js +22 -2
  181. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/intermediate.js +44 -3
  182. data/lib/frameworks/sproutcore/frameworks/testing/core.js +61 -9
  183. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/additions.css +0 -0
  184. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/runner.css +11 -2
  185. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/testsuite.css +0 -0
  186. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +66 -27
  187. data/lib/frameworks/sproutcore/frameworks/testing/tests/spy_on.js +41 -0
  188. data/lib/frameworks/sproutcore/frameworks/testing/tests/stub_method.js +9 -0
  189. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/core.css +24 -0
  190. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/fonts.css +39 -0
  191. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +126 -0
  192. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +57 -0
  193. data/lib/frameworks/sproutcore/lib/index.rhtml +7 -4
  194. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked.png +0 -0
  195. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked_active.png +0 -0
  196. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed.png +0 -0
  197. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed_active.png +0 -0
  198. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked.png +0 -0
  199. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked_active.png +0 -0
  200. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked.png +0 -0
  201. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked_active.png +0 -0
  202. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed.png +0 -0
  203. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed_active.png +0 -0
  204. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked.png +0 -0
  205. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked_active.png +0 -0
  206. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +13 -4
  207. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +16 -14
  208. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu_item.png +0 -0
  209. data/lib/gen/app/templates/apps/@target_name@/Buildfile +1 -4
  210. data/lib/gen/app/templates/apps/@target_name@/core.js +1 -4
  211. data/lib/gen/app/templates/apps/@target_name@/main.js +1 -4
  212. data/lib/gen/app/templates/apps/@target_name@/resources/main_page.js +1 -4
  213. data/lib/gen/app/templates/apps/@target_name@/theme.js +1 -4
  214. data/lib/gen/controller/templates/controllers/{@filename@.js → @filename@_controller.js} +1 -4
  215. data/lib/gen/controller/templates/tests/controllers/{@filename@.js → @filename@_test.js} +1 -4
  216. data/lib/gen/data-source/templates/data_sources/{@filename@.js → @filename@_data_source.js} +1 -4
  217. data/lib/gen/design/templates/resources/@filename@.js +1 -4
  218. data/lib/gen/framework/templates/frameworks/@target_name@/core.js +1 -4
  219. data/lib/gen/framework/templates/frameworks/@target_name@/english.lproj/strings.js +1 -4
  220. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +1 -4
  221. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +2 -0
  222. data/lib/gen/html_project/templates/@filename@/Buildfile +1 -4
  223. data/lib/gen/html_project/templates/@filename@/README +1 -4
  224. data/lib/gen/language/templates/@filename@/strings.js +1 -4
  225. data/lib/gen/model/templates/fixtures/{@filename@.js → @filename@_fixtures.js} +2 -5
  226. data/lib/gen/model/templates/models/{@filename@.js → @filename@_model.js} +1 -4
  227. data/lib/gen/model/templates/tests/models/{@filename@.js → @filename@_test.js} +1 -4
  228. data/lib/gen/page/templates/pages/@target_name@/Buildfile +1 -4
  229. data/lib/gen/page/templates/pages/@target_name@/core.js +1 -4
  230. data/lib/gen/page/templates/pages/@target_name@/en.lproj/strings.js +1 -4
  231. data/lib/gen/page/templates/pages/@target_name@/resources/body.css +3 -1
  232. data/lib/gen/project/templates/@filename@/Buildfile +1 -4
  233. data/lib/gen/project/templates/@filename@/README +1 -5
  234. data/lib/gen/responder/templates/states/{@filename@.js → @filename@_state.js} +1 -4
  235. data/lib/gen/test/templates/tests/{@filename@.js → @filename@_test.js} +1 -4
  236. data/lib/gen/theme/templates/themes/@target_name@/resources/theme_styles.css +1 -5
  237. data/lib/gen/theme/templates/themes/@target_name@/theme.js +1 -4
  238. data/lib/gen/view/templates/tests/views/{@filename@.js → @filename@_test.js} +1 -4
  239. data/lib/gen/view/templates/views/{@filename@.js → @filename@_view.js} +1 -4
  240. data/lib/sproutcore.rb +4 -1
  241. data/lib/sproutcore/builders/handlebars.rb +1 -1
  242. data/lib/sproutcore/builders/module.rb +2 -2
  243. data/lib/sproutcore/helpers/static_helper.rb +4 -2
  244. data/lib/sproutcore/models/generator.rb +22 -0
  245. data/lib/sproutcore/models/manifest_entry.rb +1 -0
  246. data/lib/sproutcore/models/target.rb +4 -1
  247. data/lib/sproutcore/rack/builder.rb +3 -0
  248. data/lib/sproutcore/tools.rb +11 -11
  249. data/lib/sproutcore/tools/init.rb +10 -22
  250. data/lib/sproutcore/tools/manifest.rb +21 -22
  251. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +21 -1
  252. data/spec/fixtures/ordered_entries/apps/template_style/a.js +0 -0
  253. data/spec/fixtures/ordered_entries/apps/template_style/template_style.js +0 -0
  254. data/spec/lib/buildfile_commands/build_task_spec.rb +1 -1
  255. data/spec/lib/tools/manifest_spec.rb +11 -0
  256. data/sproutcore.gemspec +2 -2
  257. data/vendor/chance/lib/chance/instance.rb +3 -1
  258. metadata +118 -74
  259. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/core.css +0 -378
  260. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/view.css +0 -57
  261. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +0 -56
  262. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +0 -73
  263. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +0 -916
  264. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
  265. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +0 -185
  266. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -12
  267. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +0 -101
  268. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +0 -91
  269. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +0 -35
  270. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +0 -33
  271. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +0 -10
  272. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +0 -132
  273. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +0 -19
  274. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +0 -69
  275. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +0 -14
  276. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/well.css +0 -71
  277. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +0 -40
  278. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +0 -47
  279. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +0 -146
  280. data/lib/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +0 -69
@@ -113,10 +113,17 @@ test("send event eventB", function() {
113
113
  equals(statechart.stateIsCurrentState('f'), true, 'current state should be f');
114
114
 
115
115
  equals(monitor.get('length'), 4, 'state sequence should be of length 4');
116
- equals(monitor.matchSequence()
117
- .begin()
118
- .exited('c').entered('d')
119
- .exited('e').entered('f')
116
+ equals(monitor.matchSequence().begin()
117
+ .beginConcurrent()
118
+ .beginSequence()
119
+ .exited('c')
120
+ .entered('d')
121
+ .endSequence()
122
+ .beginSequence()
123
+ .exited('e')
124
+ .entered('f')
125
+ .endSequence()
126
+ .endConcurrent()
120
127
  .end(),
121
128
  true, 'sequence should be exited[c], entered[d], exited[e], entered[f]');
122
129
  });
@@ -137,10 +144,15 @@ test("send event eventB then eventC", function() {
137
144
  equals(statechart.stateIsCurrentState('e'), true, 'current state should be e');
138
145
 
139
146
  equals(monitor.get('length'), 4, 'state sequence should be of length 4');
140
- equals(monitor.matchSequence()
141
- .begin()
142
- .exited('d').entered('c')
143
- .exited('f').entered('e')
147
+ equals(monitor.matchSequence().begin()
148
+ .beginConcurrent()
149
+ .beginSequence()
150
+ .exited('d').entered('c')
151
+ .endSequence()
152
+ .beginSequence()
153
+ .exited('f').entered('e')
154
+ .endSequence()
155
+ .endConcurrent()
144
156
  .end(),
145
157
  true, 'sequence should be exited[d], entered[c], exited[f], entered[e]');
146
158
  });
@@ -156,9 +168,17 @@ test("send event eventD", function() {
156
168
  statechart.sendEvent('eventD');
157
169
 
158
170
  equals(monitor.get('length'), 6, 'state sequence should be of length 6');
159
- equals(monitor.matchSequence()
160
- .begin()
161
- .exited('c', 'a', 'e', 'b', 'x').entered('y')
171
+ equals(monitor.matchSequence().begin()
172
+ .beginConcurrent()
173
+ .beginSequence()
174
+ .exited('c', 'a')
175
+ .endSequence()
176
+ .beginSequence()
177
+ .exited('e', 'b')
178
+ .endSequence()
179
+ .endConcurrent()
180
+ .exited('x')
181
+ .entered('y')
162
182
  .end(),
163
183
  true, 'sequence should be exited[c, a, e, b, x], entered[y]');
164
184
 
@@ -79,10 +79,12 @@ test("go to state b", function() {
79
79
  equals(statechart.get('gotoStateActive'), NO, "statechart should not have active gotoState");
80
80
  equals(statechart.get('gotoStateSuspended'), NO, "statechart should not have active gotoState suspended");
81
81
 
82
- equals(monitor.matchSequence()
83
- .begin()
84
- .exited('a')
85
- .entered('b', 'c', 'd')
82
+ equals(monitor.matchSequence().begin()
83
+ .exited('a')
84
+ .entered('b')
85
+ .beginConcurrent()
86
+ .entered('c', 'd')
87
+ .endConcurrent()
86
88
  .end(),
87
89
  true, 'sequence should be exited[a], entered[b, c, d]');
88
90
  equals(statechart.get('currentStateCount'), 2, 'current state count should be 2');
@@ -112,8 +112,27 @@ module("SC.Statechart: With Concurrent States - Goto State Advanced Tests", {
112
112
 
113
113
  test("check statechart initialization", function() {
114
114
  equals(monitor.get('length'), 10, 'initial state sequence should be of length 10');
115
- equals(monitor.matchSequence().begin().entered(root, 'a', 'b', 'd', 'c', 'f', 'h', 'l', 'i', 'n').end(), true,
116
- 'initial sequence should be entered[ROOT, a, b, d, c, f, h, l, i, n]');
115
+ equals(monitor.matchSequence().begin()
116
+ .entered(root, 'a')
117
+ .beginConcurrent()
118
+ .beginSequence()
119
+ .entered('b', 'd')
120
+ .endSequence()
121
+ .beginSequence()
122
+ .entered('c', 'f')
123
+ .beginConcurrent()
124
+ .beginSequence()
125
+ .entered('h', 'l')
126
+ .endSequence()
127
+ .beginSequence()
128
+ .entered('i', 'n')
129
+ .endSequence()
130
+ .endConcurrent()
131
+ .endSequence()
132
+ .endConcurrent()
133
+ .entered()
134
+ .end(),
135
+ true, 'initial sequence should be entered[ROOT, a, b, d, c, f, h, l, i, n]');
117
136
 
118
137
  equals(statechart.get('currentStateCount'), 3, 'current state count should be 3');
119
138
  equals(statechart.stateIsCurrentState('d'), true, 'current state should be d');
@@ -150,10 +169,25 @@ test("from state l, go to state g", function() {
150
169
  stateL.gotoState('g');
151
170
 
152
171
  equals(monitor.get('length'), 10, 'initial state sequence should be of length 10');
153
- equals(monitor.matchSequence()
154
- .begin()
155
- .exited('l', 'h', 'n', 'i', 'f')
156
- .entered('g', 'j', 'p', 'k', 'r')
172
+ equals(monitor.matchSequence().begin()
173
+ .beginConcurrent()
174
+ .beginSequence()
175
+ .exited('l', 'h')
176
+ .endSequence()
177
+ .beginSequence()
178
+ .exited('n', 'i')
179
+ .endSequence()
180
+ .endConcurrent()
181
+ .exited('f')
182
+ .entered('g')
183
+ .beginConcurrent()
184
+ .beginSequence()
185
+ .entered('j', 'p')
186
+ .endSequence()
187
+ .beginSequence()
188
+ .entered('k', 'r')
189
+ .endSequence()
190
+ .endConcurrent()
157
191
  .end(),
158
192
  true, 'initial sequence should be exited[l, h, n, i, f], entered[g, j, p, k, r]');
159
193
 
@@ -52,8 +52,28 @@ module("SC.Statechart: With Concurrent States - Goto State Basic Tests", {
52
52
 
53
53
  test("check statechart initialization", function() {
54
54
  equals(monitor.get('length'), 5, 'initial state sequence should be of length 5');
55
- equals(monitor.matchSequence().begin().entered(root, 'a', 'c', 'b', 'e').end(), true, 'initial sequence should be entered[ROOT, a, c, b, e]');
56
- equals(monitor.matchSequence().begin().entered(root, 'a', 'b', 'c', 'e').end(), false, 'initial sequence should not be entered[ROOT, a, b, c, e]');
55
+ equals(monitor.matchSequence().begin()
56
+ .entered(root)
57
+ .beginConcurrent()
58
+ .beginSequence()
59
+ .entered('a', 'c')
60
+ .endSequence()
61
+ .beginSequence()
62
+ .entered('b', 'e')
63
+ .endSequence()
64
+ .endConcurrent()
65
+ .end(),
66
+ true, 'initial sequence should be entered[ROOT, a, c, b, e]');
67
+ equals(monitor.matchSequence().begin()
68
+ .entered(root)
69
+ .beginConcurrent()
70
+ .entered('a', 'b')
71
+ .endConcurrent()
72
+ .beginConcurrent()
73
+ .entered('c', 'e')
74
+ .endConcurrent()
75
+ .end(),
76
+ false, 'initial sequence should not be entered[ROOT, a, b, c, e]');
57
77
 
58
78
  equals(statechart.get('currentStateCount'), 2, 'current state count should be 2');
59
79
 
@@ -60,7 +60,20 @@ module("SC.Statechart: With Concurrent States - Goto State Intermediate Tests",
60
60
 
61
61
  test("check statechart initialization", function() {
62
62
  equals(monitor.get('length'), 6, 'initial state sequence should be of length 5');
63
- equals(monitor.matchSequence().begin().entered(root, 'a', 'b', 'd', 'c', 'f').end(), true, 'initial sequence should be entered[ROOT, a, b, d, c, f]');
63
+
64
+ equals(monitor.matchSequence().begin()
65
+ .entered(root, 'a')
66
+ .beginConcurrent()
67
+ .beginSequence()
68
+ .entered('b', 'd')
69
+ .endSequence()
70
+ .beginSequence()
71
+ .entered('c', 'f')
72
+ .endSequence()
73
+ .endConcurrent()
74
+ .end(),
75
+ true, 'initial sequence should be entered[ROOT, a, b, d, c, f]');
76
+
64
77
  equals(statechart.get('currentStateCount'), 2, 'current state count should be 2');
65
78
  equals(statechart.stateIsCurrentState('d'), true, 'current state should be d');
66
79
  equals(statechart.stateIsCurrentState('f'), true, 'current state should be f');
@@ -98,7 +111,21 @@ test("from state a, go to state z and then back to state a", function() {
98
111
  stateA.gotoState('z');
99
112
 
100
113
  equals(monitor.get('length'), 6, 'initial state sequence should be of length 6');
101
- equals(monitor.matchSequence().begin().exited('d', 'b', 'f', 'c', 'a').entered('z').end(), true, 'sequence should be exited[d, b, f, c, a], entered[z]');
114
+
115
+ equals(monitor.matchSequence().begin()
116
+ .beginConcurrent()
117
+ .beginSequence()
118
+ .exited('d', 'b')
119
+ .endSequence()
120
+ .beginSequence()
121
+ .exited('f', 'c')
122
+ .endSequence()
123
+ .endConcurrent()
124
+ .exited('a')
125
+ .entered('z')
126
+ .end(),
127
+ true, 'sequence should be exited[d, b, f, c, a], entered[z]');
128
+
102
129
  equals(statechart.get('currentStateCount'), 1, 'current state count should be 1');
103
130
  equals(statechart.stateIsCurrentState('z'), true, 'current state should be z');
104
131
 
@@ -106,7 +133,21 @@ test("from state a, go to state z and then back to state a", function() {
106
133
  stateZ.gotoState('a');
107
134
 
108
135
  equals(monitor.get('length'), 6, 'initial state sequence should be of length 6');
109
- equals(monitor.matchSequence().begin().exited('z').entered('a', 'b', 'd', 'c', 'f').end(), true, 'sequence should be exited[z], entered[a, b, d, c, f]');
136
+
137
+ equals(monitor.matchSequence().begin()
138
+ .exited('z')
139
+ .entered('a')
140
+ .beginConcurrent()
141
+ .beginSequence()
142
+ .entered('b', 'd')
143
+ .endSequence()
144
+ .beginSequence()
145
+ .entered('c', 'f')
146
+ .endSequence()
147
+ .endConcurrent()
148
+ .end(),
149
+ true, 'sequence should be exited[z], entered[a, b, d, c, f]');
150
+
110
151
  equals(statechart.get('currentStateCount'), 2, 'current state count should be 1');
111
152
  equals(statechart.stateIsCurrentState('d'), true, 'current state should be d');
112
153
  equals(statechart.stateIsCurrentState('f'), true, 'current state should be f');
@@ -178,22 +178,74 @@ CoreTest = {
178
178
 
179
179
  return ret ;
180
180
  },
181
-
182
181
 
183
182
  /** Test is OK */
184
183
  OK: 'passed',
185
-
184
+
186
185
  /** Test failed */
187
186
  FAIL: 'failed',
188
-
187
+
189
188
  /** Test raised exception */
190
189
  ERROR: 'errors',
191
-
190
+
192
191
  /** Test raised warning */
193
192
  WARN: 'warnings',
194
-
195
- showUI : false
196
-
197
-
198
-
193
+
194
+ showUI : false,
195
+
196
+ spyOn: function(object, method) {
197
+ if(!object) throw new Error('ERROR: Attempted to spy upon an invalid object');
198
+ if(!object[method]) throw new Error('ERROR: The requested method does not exist on the given object');
199
+
200
+ var spy = new CoreTest.Spy;
201
+ object[method] = function() { spy.call(CoreTest.argumentsArray(arguments)) };
202
+ return spy;
203
+ },
204
+
205
+ stubMethod: function(object, method) {
206
+ if(!object) throw new Error('ERROR: Attempted to spy upon an invalid object');
207
+ if(!object[method]) throw new Error('ERROR: The requested method does not exist on the given object');
208
+
209
+ var stub = new CoreTest.Stub;
210
+ object[method] = function() { return stub.call() };
211
+ return stub;
212
+ }
213
+ };
214
+
215
+ CoreTest.Spy = function() {
216
+ this.wasCalled = false;
217
+ };
218
+
219
+ CoreTest.Spy.prototype.call = function(args) {
220
+ this.wasCalledWithArguments = args;
221
+ this.wasCalled = true;
222
+ };
223
+
224
+ CoreTest.Spy.prototype.wasCalledWith = function() {
225
+ return CoreTest._isIdenticalArray(this.wasCalledWithArguments,CoreTest.argumentsArray(arguments));
226
+ };
227
+
228
+ CoreTest.Stub = function() {
229
+ };
230
+
231
+ CoreTest.Stub.prototype.andReturn = function(value) {
232
+ this.stubbedValue = value;
233
+ };
234
+
235
+ CoreTest.Stub.prototype.call = function() {
236
+ if(this.stubbedValue === undefined) throw new Error('ERROR: You never specified what value the stub should return');
237
+ return this.stubbedValue;
238
+ };
239
+
240
+ CoreTest.argumentsArray = function(args) {
241
+ var arrayOfArgs = [];
242
+ for (var i = 0; i < args.length; i++) arrayOfArgs.push(args[i]);
243
+ return arrayOfArgs;
244
+ };
245
+
246
+ CoreTest._isIdenticalArray = function(array1, array2) {
247
+ if(array1.length !== array2.length) return false;
248
+ for(var i = 0; i < array1.length; i++)
249
+ if(array1[i] !== array2[i]) return false;
250
+ return true;
199
251
  };
@@ -27,7 +27,7 @@
27
27
  position: relative;
28
28
  }
29
29
 
30
- .testresult label.hide-passed {
30
+ .testresult label.hide-passed, .testresult label.show-progress {
31
31
  position: absolute;
32
32
  display: block;
33
33
  margin: 0;
@@ -38,10 +38,14 @@
38
38
  margin-top: -8px;
39
39
  }
40
40
 
41
- .testresult label.hide-passed.disabled {
41
+ .testresult label.hide-passed.disabled, .testresult label.show-progress.disabled {
42
42
  color: #aaa;
43
43
  }
44
44
 
45
+ .testresult label.show-progress {
46
+ left: 200px;
47
+ }
48
+
45
49
  .testresult em {
46
50
  display: block;
47
51
  font-weight: normal;
@@ -67,6 +71,7 @@
67
71
  .core-test table {
68
72
  background: #000;
69
73
  border-spacing: 1px;
74
+ border-collapse: separate;
70
75
  width: 100%;
71
76
  }
72
77
 
@@ -80,6 +85,10 @@
80
85
  padding: 4px;
81
86
  }
82
87
 
88
+ .core-test table th {
89
+ font-weight: bold;
90
+ }
91
+
83
92
  .core-test tbody td {
84
93
  text-align: center;
85
94
  padding: 8px;
@@ -25,7 +25,9 @@ CoreTest.Runner = {
25
25
  */
26
26
  plan: null,
27
27
  errors: null,
28
-
28
+
29
+ showProgress: false,
30
+
29
31
  create: function() {
30
32
  var len = arguments.length,
31
33
  ret = CoreTest.beget(this),
@@ -46,41 +48,63 @@ CoreTest.Runner = {
46
48
 
47
49
  planDidBegin: function(plan) {
48
50
  // setup the report DOM element.
49
- this.report = Q$(['<div class="core-test">',
50
- '<div class="useragent">UserAgent</div>',
51
- '<div class="testresult">',
52
- '<label class="hide-passed">',
53
- '<input type="checkbox" checked="checked" /> Hide passed tests',
54
- '</label>',
55
- '<span class="status">Running...</span>',
56
- '</div>',
57
- '<div class="detail">',
58
- '<table>',
59
- '<thead><tr>',
60
- '<th class="desc">Test</th><th>Result</th>',
61
- '</tr></thead>',
62
- '<tbody><tr></tr></tbody>',
63
- '</table>',
64
- '</div>',
65
- '</div>'].join(''));
66
-
67
-
51
+ var str = [
52
+ '<div class="core-test">',
53
+ '<div class="useragent">UserAgent</div>',
54
+ '<div class="testresult">',
55
+ '<label class="hide-passed">',
56
+ '<input type="checkbox" checked="checked" /> Hide passed tests',
57
+ '</label>'
58
+ ];
59
+
60
+ if (navigator.userAgent.indexOf('MSIE')==-1) {
61
+ str.push(
62
+ '<label class="show-progress">',
63
+ '<input type="checkbox"'+(this.showProgress?' checked="checked"':'')+'" /> Show progess (slower)',
64
+ '</label>'
65
+ );
66
+ }
67
+
68
+ str.push(
69
+ '<label class="show-progress">',
70
+ '<input type="checkbox"'+(this.showProgress?' checked="checked"':'')+'" /> Show progess (slower)',
71
+ '</label>',
72
+ '<span class="status">Running...</span>',
73
+ '</div>',
74
+ '<div class="detail">',
75
+ '<table>',
76
+ '<thead><tr>',
77
+ '<th class="desc">Test</th><th>Result</th>',
78
+ '</tr></thead>',
79
+ '<tbody><tr></tr></tbody>',
80
+ '</table>',
81
+ '</div>',
82
+ '</div>'
83
+ );
84
+
85
+ this.report = Q$(str.join(''));
86
+
68
87
  this.report.find('.useragent').html(navigator.userAgent);
69
88
  this.logq = this.report.find('tbody');
70
89
  this.testCount = 0 ;
71
90
 
72
91
  // listen to change event
73
92
  var runner = this;
74
- this.checkbox = this.report.find('.hide-passed input');
75
- this.checkbox.change(function() {
93
+ this.hidePassedCheckbox = this.report.find('.hide-passed input');
94
+ this.hidePassedCheckbox.change(function() {
76
95
  runner.hidePassedTestsDidChange();
77
96
  });
78
-
97
+
98
+ this.showProgressCheckbox = this.report.find('.show-progress input');
99
+ this.showProgressCheckbox.change(function() {
100
+ runner.showProgressCheckboxDidChange();
101
+ });
102
+
79
103
  Q$('body').append(this.report);
80
104
  },
81
105
 
82
106
  hidePassedTestsDidChange: function() {
83
- var checked = !!this.checkbox.val();
107
+ var checked = this.hidePassedCheckbox.is(':checked');
84
108
 
85
109
  if (checked) {
86
110
  this.logq.addClass('hide-clean');
@@ -88,7 +112,12 @@ CoreTest.Runner = {
88
112
  this.logq.removeClass('hide-clean');
89
113
  }
90
114
  },
91
-
115
+
116
+ showProgressCheckboxDidChange: function(){
117
+ this.showProgress = this.showProgressCheckbox.is(':checked');
118
+ if (this.showProgress) { this.flush(); }
119
+ },
120
+
92
121
  planDidFinish: function(plan, r) {
93
122
  this.flush();
94
123
 
@@ -128,9 +157,11 @@ CoreTest.Runner = {
128
157
  if(CoreTest.showUI) Q$('.core-test').css("right", "360px");
129
158
  result.html(str);
130
159
 
160
+ CoreTest.finished = true;
161
+
131
162
  if (this.errors) CoreTest.errors=this.errors.join('');
132
163
 
133
-
164
+
134
165
  // Unload the SproutCore event system so that the user can select the text
135
166
  // of the various events. (It is handy when looking at failed tests.)
136
167
  if (SC && SC.Event && SC.Event.unload) {
@@ -201,7 +232,15 @@ CoreTest.Runner = {
201
232
 
202
233
  // called when the plan takes a break. Good time to flush HTML output.
203
234
  planDidPause: function(plan) {
204
- if(navigator.userAgent.indexOf('MSIE')==-1) this.flush();
235
+ if(!this._cacheResultSelector){
236
+ this._cacheResultSelector = this.report.find('.testresult .status');
237
+ }
238
+ var result = this._cacheResultSelector;
239
+
240
+ if (this.resultStr && navigator.userAgent.indexOf('MSIE')==-1) result.html(this.resultStr);
241
+ this.resultStr = null ;
242
+
243
+ if (this.showProgress) { this.flush(); }
205
244
  },
206
245
 
207
246
  // flush any pending HTML changes...