sproutcore 1.6.0.beta.3-java → 1.6.0-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (633) hide show
  1. data/CHANGELOG +70 -0
  2. data/{History.txt → History.rdoc} +0 -0
  3. data/{README.txt → README.rdoc} +3 -2
  4. data/Rakefile +213 -10
  5. data/{Todo.txt → Todo.rdoc} +0 -0
  6. data/VERSION.yml +1 -1
  7. data/bin/sc-docs +6 -1
  8. data/lib/Buildfile +5 -1
  9. data/lib/buildtasks/manifest.rake +14 -1
  10. data/lib/buildtasks/target.rake +20 -23
  11. data/lib/frameworks/sproutcore/Buildfile +8 -3
  12. data/lib/frameworks/sproutcore/CHANGELOG.md +364 -1
  13. data/lib/frameworks/sproutcore/README.md +1 -1
  14. data/lib/frameworks/sproutcore/apps/test_controls/controllers/select.js +12 -0
  15. data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +19 -5
  16. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.css +9 -0
  17. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +243 -199
  18. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +250 -172
  19. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +29 -0
  20. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +5 -0
  21. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +21 -1
  22. data/lib/frameworks/sproutcore/frameworks/core_foundation/controls/button.js +6 -2
  23. data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +2 -42
  24. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/bind.js +38 -15
  25. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +6 -4
  26. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +1 -1
  27. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/checkbox_support.js +11 -6
  28. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +55 -20
  29. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +2 -0
  30. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +26 -20
  31. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +37 -21
  32. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/application.js +2 -7
  33. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +7 -7
  34. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +157 -5
  35. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +2 -2
  36. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +7 -6
  37. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +29 -15
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +8 -8
  40. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +162 -1
  41. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +3 -56
  42. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +24 -8
  43. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +42 -0
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +59 -0
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controls/button.js +39 -57
  46. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +41 -1
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/text_field_support.js +19 -2
  48. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +16 -1
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +5 -3
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +32 -0
  51. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +135 -0
  52. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +29 -18
  53. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +11 -0
  54. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +18 -2
  55. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +10 -6
  56. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +414 -1
  57. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view.js +1 -1
  58. data/lib/frameworks/sproutcore/frameworks/core_foundation/{system → views}/bindable_span.js +2 -1
  59. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +112 -40
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +13 -7
  61. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +2 -1
  62. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +245 -67
  63. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +17 -9
  64. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +8 -18
  65. data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +8 -2
  66. data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +1 -1
  67. data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +1 -1
  68. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +15 -8
  69. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +12 -2
  70. data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +296 -0
  71. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +3 -3
  72. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +330 -326
  73. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -1
  74. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +26 -5
  75. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +1 -1
  76. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +69 -58
  77. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +614 -614
  78. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/data_source.js +203 -0
  79. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +3 -1
  80. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +44 -0
  81. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +2 -0
  82. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +2 -0
  83. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +20 -13
  84. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +76 -47
  85. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +30 -30
  86. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +74 -53
  87. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +0 -1
  88. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +24 -24
  89. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/connectDataSource.js +31 -0
  90. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +1177 -0
  91. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +212 -182
  92. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +6 -67
  93. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +1 -1
  94. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
  95. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
  96. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +13 -15
  97. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +41 -12
  98. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +9 -0
  99. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +6 -3
  100. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +3 -3
  101. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +3 -3
  102. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +1 -1
  103. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +1 -1
  104. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +1 -1
  105. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +1 -1
  106. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +1 -1
  107. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/master_detail.js +3 -2
  108. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/menu.js +12 -2
  109. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +1 -1
  110. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +1 -1
  111. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +1 -1
  112. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +1 -1
  113. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +2 -2
  114. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +1 -1
  115. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -1
  116. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +1 -1
  117. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/toolbar.js +1 -1
  118. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +1 -1
  119. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/workspace.js +1 -1
  120. data/lib/frameworks/sproutcore/frameworks/desktop/resources/alert.css +49 -0
  121. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/a_sample_image.jpg +0 -0
  122. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/apple-logo1.jpeg +0 -0
  123. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/debug/iframe.html +0 -0
  124. data/lib/frameworks/sproutcore/frameworks/desktop/resources/disclosure.css +20 -0
  125. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/drag.css +1 -1
  126. data/lib/frameworks/sproutcore/frameworks/desktop/resources/icons.css +214 -0
  127. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/cap.png +0 -0
  128. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/downbutton.png +0 -0
  129. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-16.png +0 -0
  130. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-24.png +0 -0
  131. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-alert-48.png +0 -0
  132. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-bookmark-16.png +0 -0
  133. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-bookmark-24.png +0 -0
  134. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-cancel-24.png +0 -0
  135. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-document-16.png +0 -0
  136. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-document-24.png +0 -0
  137. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-down-24.png +0 -0
  138. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
  139. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-favorite-16.png +0 -0
  140. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-favorite-24.png +0 -0
  141. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-folder-16.png +0 -0
  142. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-folder-24.png +0 -0
  143. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-group-16.png +0 -0
  144. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-group-24.png +0 -0
  145. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-help-16.png +0 -0
  146. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-help-24.png +0 -0
  147. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-16.png +0 -0
  148. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-24.png +0 -0
  149. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-info-48.png +0 -0
  150. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-left-24.png +0 -0
  151. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-options-16.png +0 -0
  152. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-options-24.png +0 -0
  153. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-redo-24.png +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-right-24.png +0 -0
  155. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-tools-24.png +0 -0
  156. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-trash-16.png +0 -0
  157. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-trash-24.png +0 -0
  158. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-undo-24.png +0 -0
  159. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-up-24.png +0 -0
  160. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-user-16.png +0 -0
  161. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-user-24.png +0 -0
  162. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-bottom.png +0 -0
  163. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-center.png +0 -0
  164. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/thumb-top.png +0 -0
  165. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/track.png +0 -0
  166. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/images/upbutton.png +0 -0
  167. data/lib/frameworks/sproutcore/frameworks/desktop/resources/list_item.css +145 -0
  168. data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu.css +10 -0
  169. data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu_item_view.css +88 -0
  170. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/modal.css +3 -4
  171. data/lib/frameworks/sproutcore/frameworks/desktop/resources/panel.css +91 -0
  172. data/lib/frameworks/sproutcore/frameworks/desktop/resources/picker.css +37 -0
  173. data/lib/frameworks/sproutcore/frameworks/desktop/resources/progress.css +29 -0
  174. data/lib/frameworks/sproutcore/frameworks/desktop/resources/radio.css +11 -0
  175. data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +122 -0
  176. data/lib/frameworks/sproutcore/frameworks/desktop/resources/separator.css +20 -0
  177. data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +34 -0
  178. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/split.css +0 -0
  179. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/split_divider.css +0 -0
  180. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/tab.css +0 -0
  181. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/toolbar.css +0 -0
  182. data/lib/frameworks/sproutcore/frameworks/desktop/{english.lproj → resources}/touch-scroller.css +13 -13
  183. data/lib/frameworks/sproutcore/frameworks/desktop/resources/well.css +65 -0
  184. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +58 -23
  185. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +20 -1
  186. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +121 -103
  187. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +34 -7
  188. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/static_content.js +3 -2
  189. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +1 -3
  190. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +20 -1
  191. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +14 -15
  192. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +43 -16
  193. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +717 -700
  194. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +2 -2
  195. data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +11 -1
  196. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +16 -6
  197. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +4 -7
  198. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +0 -1
  199. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +49 -7
  200. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +9 -2
  201. data/lib/frameworks/sproutcore/frameworks/desktop/{panes → views}/select_button.js +52 -0
  202. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +7 -3
  203. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +4 -26
  204. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +46 -49
  205. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +20 -19
  206. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
  207. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +249 -249
  208. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/mixins/edit_mode.js +13 -5
  209. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/mixins/emptiness.js +53 -37
  210. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/render_delegates/form.js +2 -1
  211. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/render_delegates/form_row.js +3 -11
  212. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/mixins/edit_mode.js +53 -0
  213. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/mixins/emptiness.js +114 -0
  214. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form.js +174 -6
  215. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_row.js +86 -6
  216. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +98 -126
  217. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form_row.js +96 -97
  218. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +2 -1
  219. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +20 -36
  220. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +121 -0
  221. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +90 -0
  222. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/mixins/select_view_menu.js +139 -0
  223. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/render_delegates/select_button.js +14 -0
  224. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/ext/menu_resizing.js +25 -0
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/bindings.js +43 -0
  226. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/check_selected.js +32 -0
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/popup_button/menu_setup.js +40 -0
  228. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/popup_button/show_menu.js +45 -0
  229. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/menu_width.js +49 -0
  230. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/selected_item.js +191 -0
  231. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +264 -0
  232. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +450 -0
  233. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +14 -6
  234. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +1 -1
  235. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split.js +1 -1
  236. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split_divider.js +1 -1
  237. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +9 -0
  238. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +3 -2
  239. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +2 -2
  240. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +16 -19
  241. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +4 -7
  242. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +1 -1
  243. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +85 -16
  244. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +1 -1
  245. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +1 -1
  246. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor_delegate.js +1 -1
  247. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +1 -1
  248. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +4 -2
  249. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +2 -0
  250. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +1 -1
  251. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +1 -1
  252. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +13 -13
  253. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/benchmark.css +0 -0
  254. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/blank.gif +0 -0
  255. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/bootstrap.rhtml +0 -0
  256. data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +36 -0
  257. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/checkbox_view.css +0 -0
  258. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/debug/control-test-pane.css +0 -0
  259. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/favicon.ico +0 -0
  260. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-logo.png +0 -0
  261. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-landscape.jpg +0 -0
  262. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-landscape.png +0 -0
  263. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-portrait.jpg +0 -0
  264. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup-portrait.png +0 -0
  265. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore-startup.png +0 -0
  266. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/images/sproutcore.png +0 -0
  267. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/inline_editor.css +0 -0
  268. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +47 -0
  269. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/radio_view.css +0 -0
  270. data/lib/frameworks/sproutcore/frameworks/foundation/{english.lproj → resources}/static_layout.css +1 -1
  271. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +125 -0
  272. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +5 -1
  273. data/lib/frameworks/sproutcore/frameworks/foundation/system/exception_handler.js +4 -2
  274. data/lib/frameworks/sproutcore/frameworks/foundation/system/math.js +2 -1
  275. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +13 -0
  276. data/lib/frameworks/sproutcore/frameworks/foundation/system/string.js +0 -43
  277. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +11 -11
  278. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +912 -0
  279. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +23 -0
  280. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +36 -7
  281. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +58 -4
  282. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +4 -4
  283. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +1 -3
  284. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +17 -6
  285. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +0 -15
  286. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +3 -3
  287. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +30 -19
  288. data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1 -1
  289. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +2 -76
  290. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +3348 -1591
  291. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +6 -3
  292. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +11 -0
  293. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +38 -12
  294. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/flatten.js +24 -0
  295. data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +2 -1
  296. data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +5 -5
  297. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +21 -2
  298. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +3 -2
  299. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +1 -1
  300. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1 -1
  301. data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +2 -2
  302. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +14 -14
  303. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +4 -1
  304. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +0 -3
  305. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +4 -4
  306. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +4 -4
  307. data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +1 -1
  308. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +3 -3
  309. data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +15 -16
  310. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +6 -2
  311. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +10 -5
  312. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/requiredObjectForPropertyPath.js +29 -0
  313. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +98 -0
  314. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +30 -0
  315. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +17 -0
  316. data/lib/frameworks/sproutcore/frameworks/statechart/debug/monitor.js +4 -73
  317. data/lib/frameworks/sproutcore/frameworks/statechart/debug/sequence_matcher.js +189 -0
  318. data/lib/frameworks/sproutcore/frameworks/statechart/ext/function.js +122 -0
  319. data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +88 -0
  320. data/lib/frameworks/sproutcore/frameworks/statechart/system/empty_state.js +34 -0
  321. data/lib/frameworks/sproutcore/frameworks/statechart/system/history_state.js +97 -0
  322. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +16 -191
  323. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +17 -79
  324. data/lib/frameworks/sproutcore/frameworks/statechart/tests/debug/sequence_matcher.js +464 -0
  325. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +31 -11
  326. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/async/with_concurrent_states.js +6 -4
  327. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/advanced.js +40 -6
  328. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/basic.js +22 -2
  329. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/intermediate.js +44 -3
  330. data/lib/frameworks/sproutcore/frameworks/testing/core.js +61 -9
  331. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/additions.css +0 -0
  332. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/runner.css +10 -2
  333. data/lib/frameworks/sproutcore/frameworks/testing/{english.lproj → resources}/testsuite.css +0 -0
  334. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +66 -27
  335. data/lib/frameworks/sproutcore/frameworks/testing/tests/spy_on.js +41 -0
  336. data/lib/frameworks/sproutcore/frameworks/testing/tests/stub_method.js +9 -0
  337. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +80 -0
  338. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/core.css +20 -0
  339. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/fonts.css +39 -0
  340. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +126 -0
  341. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +57 -0
  342. data/lib/frameworks/sproutcore/lib/index.rhtml +8 -4
  343. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked.psd +0 -0
  344. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked_active.psd +0 -0
  345. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed.psd +0 -0
  346. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed_active.psd +0 -0
  347. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked.psd +0 -0
  348. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked_active.psd +0 -0
  349. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked.psd +0 -0
  350. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked_active.psd +0 -0
  351. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed.psd +0 -0
  352. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed_active.psd +0 -0
  353. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked.psd +0 -0
  354. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked_active.psd +0 -0
  355. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu_item.psd +0 -0
  356. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked.png +0 -0
  357. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked_active.png +0 -0
  358. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed.png +0 -0
  359. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed_active.png +0 -0
  360. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked.png +0 -0
  361. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked_active.png +0 -0
  362. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked.png +0 -0
  363. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked_active.png +0 -0
  364. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed.png +0 -0
  365. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed_active.png +0 -0
  366. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked.png +0 -0
  367. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked_active.png +0 -0
  368. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +13 -4
  369. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +16 -14
  370. data/lib/frameworks/sproutcore/themes/ace/resources/form/form.css +9 -0
  371. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +3 -1
  372. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu_item.png +0 -0
  373. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/picker.js +1 -1
  374. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/workspace.js +1 -1
  375. data/lib/frameworks/sproutcore/themes/ace/resources/split/split.css +1 -1
  376. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +1 -1
  377. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/panel.js +1 -1
  378. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +2 -0
  379. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +1 -1
  380. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/well.js +1 -1
  381. data/lib/gen/app/templates/apps/@target_name@/Buildfile +1 -4
  382. data/lib/gen/app/templates/apps/@target_name@/core.js +1 -4
  383. data/lib/gen/app/templates/apps/@target_name@/main.js +1 -4
  384. data/lib/gen/app/templates/apps/@target_name@/resources/main_page.js +1 -4
  385. data/lib/gen/app/templates/apps/@target_name@/theme.js +1 -4
  386. data/lib/gen/controller/templates/controllers/{@filename@.js → @filename@_controller.js} +1 -4
  387. data/lib/gen/controller/templates/tests/controllers/{@filename@.js → @filename@_test.js} +1 -4
  388. data/lib/gen/data-source/templates/data_sources/{@filename@.js → @filename@_data_source.js} +1 -4
  389. data/lib/gen/design/templates/resources/@filename@.js +1 -4
  390. data/lib/gen/framework/templates/frameworks/@target_name@/core.js +1 -4
  391. data/lib/gen/framework/templates/frameworks/@target_name@/english.lproj/strings.js +1 -4
  392. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +1 -4
  393. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +2 -0
  394. data/lib/gen/html_project/templates/@filename@/Buildfile +1 -4
  395. data/lib/gen/html_project/templates/@filename@/README +1 -4
  396. data/lib/gen/language/Buildfile +1 -1
  397. data/lib/gen/language/templates/@filename@/strings.js +1 -4
  398. data/lib/gen/model/templates/fixtures/{@filename@.js → @filename@_fixtures.js} +2 -5
  399. data/lib/gen/model/templates/models/{@filename@.js → @filename@_model.js} +1 -4
  400. data/lib/gen/model/templates/tests/models/{@filename@.js → @filename@_test.js} +1 -4
  401. data/lib/gen/page/templates/pages/@target_name@/Buildfile +1 -4
  402. data/lib/gen/page/templates/pages/@target_name@/core.js +1 -4
  403. data/lib/gen/page/templates/pages/@target_name@/en.lproj/strings.js +1 -4
  404. data/lib/gen/page/templates/pages/@target_name@/resources/body.css +3 -1
  405. data/lib/gen/project/templates/@filename@/Buildfile +1 -4
  406. data/lib/gen/project/templates/@filename@/README +1 -5
  407. data/lib/gen/responder/templates/states/{@filename@.js → @filename@_state.js} +1 -4
  408. data/lib/gen/test/templates/tests/{@filename@.js → @filename@_test.js} +1 -4
  409. data/lib/gen/theme/templates/themes/@target_name@/resources/theme_styles.css +1 -5
  410. data/lib/gen/theme/templates/themes/@target_name@/theme.js +1 -4
  411. data/lib/gen/view/templates/tests/views/{@filename@.js → @filename@_test.js} +1 -4
  412. data/lib/gen/view/templates/views/{@filename@.js → @filename@_view.js} +1 -4
  413. data/lib/sproutcore.rb +5 -15
  414. data/lib/sproutcore/builders/base.rb +5 -1
  415. data/lib/sproutcore/builders/handlebars.rb +12 -1
  416. data/lib/sproutcore/builders/module.rb +2 -2
  417. data/lib/sproutcore/buildfile/string_ext.rb +0 -4
  418. data/lib/sproutcore/helpers/cssmin.rb +44 -59
  419. data/lib/sproutcore/helpers/static_helper.rb +4 -2
  420. data/lib/sproutcore/helpers/text_helper.rb +11 -13
  421. data/lib/sproutcore/models/generator.rb +22 -0
  422. data/lib/sproutcore/models/manifest.rb +4 -4
  423. data/lib/sproutcore/models/manifest_entry.rb +1 -0
  424. data/lib/sproutcore/models/target.rb +3 -107
  425. data/lib/sproutcore/rack.rb +0 -1
  426. data/lib/sproutcore/rack/builder.rb +3 -0
  427. data/lib/sproutcore/rack/dev.rb +0 -1
  428. data/lib/sproutcore/rack/proxy.rb +240 -93
  429. data/lib/sproutcore/rack/service.rb +1 -1
  430. data/lib/sproutcore/render_engines/haml.rb +2 -5
  431. data/lib/sproutcore/tools.rb +11 -11
  432. data/lib/sproutcore/tools/build.rb +2 -0
  433. data/lib/sproutcore/tools/docs.rb +2 -37
  434. data/lib/sproutcore/tools/init.rb +10 -22
  435. data/lib/sproutcore/tools/manifest.rb +21 -22
  436. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +21 -1
  437. data/spec/buildtasks/target_spec.rb +9 -0
  438. data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -0
  439. data/spec/fixtures/builder_tests/apps/handlebars_test/{template.handlebars → templates/template.handlebars} +2 -0
  440. data/{lib/doc_templates/sproutcore/allclasses.tmpl → spec/fixtures/ordered_entries/apps/template_style/a.js} +0 -0
  441. data/spec/fixtures/{real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER → ordered_entries/apps/template_style/template_style.js} +0 -0
  442. data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +1 -1
  443. data/spec/lib/builders/handlebars_spec.rb +10 -4
  444. data/spec/lib/buildfile_commands/build_task_spec.rb +1 -1
  445. data/spec/lib/tools/manifest_spec.rb +11 -0
  446. data/sproutcore.gemspec +8 -7
  447. data/vendor/chance/lib/chance/instance.rb +8 -9
  448. metadata +167 -266
  449. data/lib/doc_templates/jsdoc/allclasses.tmpl +0 -17
  450. data/lib/doc_templates/jsdoc/allfiles.tmpl +0 -56
  451. data/lib/doc_templates/jsdoc/class.tmpl +0 -487
  452. data/lib/doc_templates/jsdoc/index.tmpl +0 -38
  453. data/lib/doc_templates/jsdoc/publish.js +0 -170
  454. data/lib/doc_templates/jsdoc/static/default.css +0 -162
  455. data/lib/doc_templates/jsdoc/static/header.html +0 -2
  456. data/lib/doc_templates/jsdoc/static/index.html +0 -19
  457. data/lib/doc_templates/jsdoc/symbol.tmpl +0 -35
  458. data/lib/doc_templates/sproutcore/allfiles.tmpl +0 -56
  459. data/lib/doc_templates/sproutcore/class.tmpl +0 -674
  460. data/lib/doc_templates/sproutcore/classes-json.tmpl +0 -55
  461. data/lib/doc_templates/sproutcore/index.tmpl +0 -62
  462. data/lib/doc_templates/sproutcore/publish.js +0 -346
  463. data/lib/doc_templates/sproutcore/static/default.css +0 -258
  464. data/lib/doc_templates/sproutcore/static/header.html +0 -2
  465. data/lib/doc_templates/sproutcore/static/index.html +0 -19
  466. data/lib/doc_templates/sproutcore/symbol.tmpl +0 -35
  467. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/core.css +0 -378
  468. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/view.css +0 -57
  469. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +0 -56
  470. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +0 -73
  471. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +0 -916
  472. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
  473. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +0 -185
  474. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -12
  475. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +0 -101
  476. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +0 -91
  477. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +0 -35
  478. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +0 -33
  479. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +0 -10
  480. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +0 -132
  481. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +0 -19
  482. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +0 -69
  483. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +0 -14
  484. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/well.css +0 -71
  485. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/english.lproj/default_styles.css +0 -5
  486. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/english.lproj/strings.js +0 -15
  487. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_checkbox_field.js +0 -17
  488. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_field.js +0 -17
  489. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_label.js +0 -17
  490. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_radio_field.js +0 -17
  491. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_text_field.js +0 -17
  492. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +0 -40
  493. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/images/favicon.ico +0 -0
  494. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +0 -47
  495. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +0 -146
  496. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +0 -55
  497. data/lib/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +0 -69
  498. data/lib/sproutcore/rack/docs.rb +0 -24
  499. data/vendor/jsdoc/README.txt +0 -151
  500. data/vendor/jsdoc/app/frame.js +0 -33
  501. data/vendor/jsdoc/app/frame/Chain.js +0 -102
  502. data/vendor/jsdoc/app/frame/Dumper.js +0 -144
  503. data/vendor/jsdoc/app/frame/Hash.js +0 -47
  504. data/vendor/jsdoc/app/frame/Link.js +0 -142
  505. data/vendor/jsdoc/app/frame/Namespace.js +0 -10
  506. data/vendor/jsdoc/app/frame/Opt.js +0 -134
  507. data/vendor/jsdoc/app/frame/Reflection.js +0 -26
  508. data/vendor/jsdoc/app/frame/String.js +0 -93
  509. data/vendor/jsdoc/app/frame/Testrun.js +0 -129
  510. data/vendor/jsdoc/app/handlers/FOODOC.js +0 -26
  511. data/vendor/jsdoc/app/handlers/XMLDOC.js +0 -26
  512. data/vendor/jsdoc/app/handlers/XMLDOC/DomReader.js +0 -159
  513. data/vendor/jsdoc/app/handlers/XMLDOC/XMLDoc.js +0 -16
  514. data/vendor/jsdoc/app/handlers/XMLDOC/XMLParse.js +0 -292
  515. data/vendor/jsdoc/app/lib/JSDOC.js +0 -98
  516. data/vendor/jsdoc/app/lib/JSDOC/DocComment.js +0 -200
  517. data/vendor/jsdoc/app/lib/JSDOC/DocTag.js +0 -294
  518. data/vendor/jsdoc/app/lib/JSDOC/JsDoc.js +0 -162
  519. data/vendor/jsdoc/app/lib/JSDOC/JsPlate.js +0 -100
  520. data/vendor/jsdoc/app/lib/JSDOC/Lang.js +0 -144
  521. data/vendor/jsdoc/app/lib/JSDOC/Parser.js +0 -109
  522. data/vendor/jsdoc/app/lib/JSDOC/PluginManager.js +0 -33
  523. data/vendor/jsdoc/app/lib/JSDOC/Symbol.js +0 -681
  524. data/vendor/jsdoc/app/lib/JSDOC/SymbolSet.js +0 -226
  525. data/vendor/jsdoc/app/lib/JSDOC/TextStream.js +0 -41
  526. data/vendor/jsdoc/app/lib/JSDOC/Token.js +0 -18
  527. data/vendor/jsdoc/app/lib/JSDOC/TokenReader.js +0 -332
  528. data/vendor/jsdoc/app/lib/JSDOC/TokenStream.js +0 -133
  529. data/vendor/jsdoc/app/lib/JSDOC/Util.js +0 -32
  530. data/vendor/jsdoc/app/lib/JSDOC/Walker.js +0 -453
  531. data/vendor/jsdoc/app/main.js +0 -74
  532. data/vendor/jsdoc/app/plugins/commentSrcJson.js +0 -19
  533. data/vendor/jsdoc/app/plugins/frameworkPrototype.js +0 -16
  534. data/vendor/jsdoc/app/plugins/functionCall.js +0 -10
  535. data/vendor/jsdoc/app/plugins/publishSrcHilite.js +0 -62
  536. data/vendor/jsdoc/app/plugins/sproutcoreTags.js +0 -26
  537. data/vendor/jsdoc/app/plugins/symbolLink.js +0 -9
  538. data/vendor/jsdoc/app/plugins/tagParamConfig.js +0 -31
  539. data/vendor/jsdoc/app/plugins/tagSynonyms.js +0 -43
  540. data/vendor/jsdoc/app/run.js +0 -346
  541. data/vendor/jsdoc/app/t/TestDoc.js +0 -144
  542. data/vendor/jsdoc/app/t/runner.js +0 -13
  543. data/vendor/jsdoc/app/test.js +0 -304
  544. data/vendor/jsdoc/app/test/addon.js +0 -24
  545. data/vendor/jsdoc/app/test/anon_inner.js +0 -14
  546. data/vendor/jsdoc/app/test/augments.js +0 -31
  547. data/vendor/jsdoc/app/test/augments2.js +0 -26
  548. data/vendor/jsdoc/app/test/borrows.js +0 -41
  549. data/vendor/jsdoc/app/test/borrows2.js +0 -23
  550. data/vendor/jsdoc/app/test/config.js +0 -22
  551. data/vendor/jsdoc/app/test/constructs.js +0 -18
  552. data/vendor/jsdoc/app/test/encoding.js +0 -10
  553. data/vendor/jsdoc/app/test/encoding_other.js +0 -12
  554. data/vendor/jsdoc/app/test/functions_anon.js +0 -39
  555. data/vendor/jsdoc/app/test/functions_nested.js +0 -33
  556. data/vendor/jsdoc/app/test/global.js +0 -13
  557. data/vendor/jsdoc/app/test/globals.js +0 -25
  558. data/vendor/jsdoc/app/test/ignore.js +0 -10
  559. data/vendor/jsdoc/app/test/inner.js +0 -16
  560. data/vendor/jsdoc/app/test/jsdoc_test.js +0 -477
  561. data/vendor/jsdoc/app/test/lend.js +0 -33
  562. data/vendor/jsdoc/app/test/memberof.js +0 -20
  563. data/vendor/jsdoc/app/test/memberof_constructor.js +0 -15
  564. data/vendor/jsdoc/app/test/name.js +0 -19
  565. data/vendor/jsdoc/app/test/namespace_nested.js +0 -23
  566. data/vendor/jsdoc/app/test/nocode.js +0 -13
  567. data/vendor/jsdoc/app/test/oblit_anon.js +0 -20
  568. data/vendor/jsdoc/app/test/overview.js +0 -20
  569. data/vendor/jsdoc/app/test/param_inline.js +0 -37
  570. data/vendor/jsdoc/app/test/params_optional.js +0 -8
  571. data/vendor/jsdoc/app/test/prototype.js +0 -17
  572. data/vendor/jsdoc/app/test/prototype_nested.js +0 -9
  573. data/vendor/jsdoc/app/test/prototype_oblit.js +0 -13
  574. data/vendor/jsdoc/app/test/prototype_oblit_constructor.js +0 -24
  575. data/vendor/jsdoc/app/test/public.js +0 -10
  576. data/vendor/jsdoc/app/test/shared.js +0 -42
  577. data/vendor/jsdoc/app/test/shared2.js +0 -2
  578. data/vendor/jsdoc/app/test/shortcuts.js +0 -22
  579. data/vendor/jsdoc/app/test/static_this.js +0 -13
  580. data/vendor/jsdoc/app/test/synonyms.js +0 -23
  581. data/vendor/jsdoc/app/test/tosource.js +0 -23
  582. data/vendor/jsdoc/app/test/variable_redefine.js +0 -14
  583. data/vendor/jsdoc/changes.txt +0 -47
  584. data/vendor/jsdoc/conf/sample.conf +0 -31
  585. data/vendor/jsdoc/java/build.xml +0 -36
  586. data/vendor/jsdoc/java/build_1.4.xml +0 -36
  587. data/vendor/jsdoc/java/classes/js.jar +0 -0
  588. data/vendor/jsdoc/java/src/JsDebugRun.java +0 -21
  589. data/vendor/jsdoc/java/src/JsRun.java +0 -21
  590. data/vendor/jsdoc/jsdebug.jar +0 -0
  591. data/vendor/jsdoc/jsrun.jar +0 -0
  592. data/vendor/jsdoc/t/TestDoc.js +0 -144
  593. data/vendor/jsdoc/t/runner.js +0 -13
  594. data/vendor/jsdoc/test.js +0 -304
  595. data/vendor/jsdoc/test/addon.js +0 -24
  596. data/vendor/jsdoc/test/anon_inner.js +0 -14
  597. data/vendor/jsdoc/test/augments.js +0 -31
  598. data/vendor/jsdoc/test/augments2.js +0 -26
  599. data/vendor/jsdoc/test/borrows.js +0 -41
  600. data/vendor/jsdoc/test/borrows2.js +0 -23
  601. data/vendor/jsdoc/test/config.js +0 -22
  602. data/vendor/jsdoc/test/constructs.js +0 -18
  603. data/vendor/jsdoc/test/encoding.js +0 -10
  604. data/vendor/jsdoc/test/encoding_other.js +0 -12
  605. data/vendor/jsdoc/test/functions_anon.js +0 -39
  606. data/vendor/jsdoc/test/functions_nested.js +0 -33
  607. data/vendor/jsdoc/test/global.js +0 -13
  608. data/vendor/jsdoc/test/globals.js +0 -25
  609. data/vendor/jsdoc/test/ignore.js +0 -10
  610. data/vendor/jsdoc/test/inner.js +0 -16
  611. data/vendor/jsdoc/test/jsdoc_test.js +0 -477
  612. data/vendor/jsdoc/test/lend.js +0 -33
  613. data/vendor/jsdoc/test/memberof.js +0 -20
  614. data/vendor/jsdoc/test/memberof_constructor.js +0 -15
  615. data/vendor/jsdoc/test/name.js +0 -19
  616. data/vendor/jsdoc/test/namespace_nested.js +0 -23
  617. data/vendor/jsdoc/test/nocode.js +0 -13
  618. data/vendor/jsdoc/test/oblit_anon.js +0 -20
  619. data/vendor/jsdoc/test/overview.js +0 -20
  620. data/vendor/jsdoc/test/param_inline.js +0 -37
  621. data/vendor/jsdoc/test/params_optional.js +0 -8
  622. data/vendor/jsdoc/test/prototype.js +0 -17
  623. data/vendor/jsdoc/test/prototype_nested.js +0 -9
  624. data/vendor/jsdoc/test/prototype_oblit.js +0 -13
  625. data/vendor/jsdoc/test/prototype_oblit_constructor.js +0 -24
  626. data/vendor/jsdoc/test/public.js +0 -10
  627. data/vendor/jsdoc/test/shared.js +0 -42
  628. data/vendor/jsdoc/test/shared2.js +0 -2
  629. data/vendor/jsdoc/test/shortcuts.js +0 -22
  630. data/vendor/jsdoc/test/static_this.js +0 -13
  631. data/vendor/jsdoc/test/synonyms.js +0 -23
  632. data/vendor/jsdoc/test/tosource.js +0 -23
  633. data/vendor/jsdoc/test/variable_redefine.js +0 -14
@@ -8,6 +8,7 @@
8
8
  /*globals SC */
9
9
 
10
10
  /**
11
+ @class
11
12
 
12
13
  Represents a state within a statechart.
13
14
 
@@ -17,11 +18,14 @@
17
18
  You do not create an instance of a state itself. The statechart manager will go through its
18
19
  state heirarchy and create the states itself.
19
20
 
20
- @author Michael Cohen
21
+ For more information on using statecharts, see SC.StatechartManager.
21
22
 
23
+ @author Michael Cohen
24
+ @extends SC.Object
22
25
  */
23
- SC.State = SC.Object.extend({
24
-
26
+ SC.State = SC.Object.extend(
27
+ /** @lends SC.State.prototype */ {
28
+
25
29
  /**
26
30
  The name of the state
27
31
 
@@ -1025,7 +1029,7 @@ SC.State = SC.Object.extend({
1025
1029
  var sc = this.get('statechart');
1026
1030
  sc.statechartLogError(msg);
1027
1031
  }
1028
-
1032
+
1029
1033
  });
1030
1034
 
1031
1035
  /**
@@ -1057,6 +1061,14 @@ SC.State.plugin = function(value) {
1057
1061
  var args = SC.A(arguments); args.shift();
1058
1062
  var func = function() {
1059
1063
  var klass = SC.objectForPropertyPath(value);
1064
+ if (!klass) {
1065
+ console.error('SC.State.plugin: Unable to determine path %@'.fmt(value));
1066
+ return undefined;
1067
+ }
1068
+ if (!klass.isClass || !klass.kindOf(SC.State)) {
1069
+ console.error('SC.State.plugin: Unable to extend. %@ must be a class extending from SC.State'.fmt(value));
1070
+ return undefined;
1071
+ }
1060
1072
  return klass.extend.apply(klass, args);
1061
1073
  };
1062
1074
  func.statePlugin = YES;
@@ -1064,190 +1076,3 @@ SC.State.plugin = function(value) {
1064
1076
  };
1065
1077
 
1066
1078
  SC.State.design = SC.State.extend;
1067
-
1068
- /**
1069
- Extends the JS Function object with the handleEvents method that
1070
- will provide more advanced event handling capabilities when constructing
1071
- your statechart's states.
1072
-
1073
- By default, when you add a method to a state, the state will react to
1074
- events that matches a method's name, like so:
1075
-
1076
- state = SC.State.extend({
1077
- // Will be invoked when a event named "foo" is sent to this state
1078
- foo: function(event, sender, context) { ... }
1079
- });
1080
-
1081
- In some situations, it may be advantageous to use one method that can react to
1082
- multiple events instead of having multiple methods that essentially all do the
1083
- same thing. In order to set a method to handle more than one event you use
1084
- the handleEvents method which can be supplied a list of string and/or regular
1085
- expressions. The following example demonstrates the use of handleEvents:
1086
-
1087
- state = SC.State.extend({
1088
- eventHandlerA: function(event, sender, context) {
1089
- }.handleEvents('foo', 'bar'),
1090
-
1091
- eventHandlerB: function(event, sender, context) {
1092
- }.handleEvents(/num\d/, 'decimal')
1093
- });
1094
-
1095
- Whenever events 'foo' and 'bar' are sent to the state, the method eventHandlerA
1096
- will be invoked. When there is an event that matches the regular expression
1097
- /num\d/ or the event is 'decimal' then eventHandlerB is invoked. In both
1098
- cases, the name of the event will be supplied to the event handler.
1099
-
1100
- It should be noted that the use of regular expressions may impact performance
1101
- since that statechart will not be able to fully optimize the event handling logic based
1102
- on its use. Therefore the use of regular expression should be used sparingly.
1103
-
1104
- @param {(String|RegExp)...} args
1105
- */
1106
- Function.prototype.handleEvents = function() {
1107
- this.isEventHandler = YES;
1108
- this.events = arguments;
1109
- return this;
1110
- };
1111
-
1112
- /**
1113
- Extends the JS Function object with the stateObserves method that will
1114
- create a state observe handler on a given state object.
1115
-
1116
- Use a stateObserves() instead of the common observes() method when you want a
1117
- state to observer changes to some property on the state itself or some other
1118
- object.
1119
-
1120
- Any method on the state that has stateObserves is considered a state observe
1121
- handler and behaves just like when you use observes() on a method, but with an
1122
- important difference. When you apply stateObserves to a method on a state, those
1123
- methods will be active *only* when the state is entered, otherwise those methods
1124
- will be inactive. This removes the need for you having to explicitly call
1125
- addObserver and removeObserver. As an example:
1126
-
1127
- state = SC.State.extend({
1128
- foo: null,
1129
- user: null,
1130
- observeHandlerA: function(target, key) {
1131
- }.stateObserves('MyApp.someController.status'),
1132
-
1133
- observeHandlerB: function(target, key) {
1134
- }.stateObserves('foo'),
1135
-
1136
- observeHandlerC: function(target, key) {
1137
- }.stateObserves('.user.name', '.user.salary')
1138
- });
1139
-
1140
- Above, state has three state observe handlers: observeHandlerA, observeHandlerB, and
1141
- observeHandlerC. When state is entered, the state will automatically add itself as
1142
- an observer for all of its registered state observe handlers. Therefore when
1143
- foo changes, observeHandlerB will be invoked, and when MyApp.someController's status
1144
- changes then observeHandlerA will be invoked. The moment that state is exited then
1145
- the state will automatically remove itself as an observer for all of its registered
1146
- state observe handlers. Therefore none of the state observe handlers will be
1147
- invoked until the next time the state is entered.
1148
-
1149
- @param {String...} args
1150
- */
1151
- Function.prototype.stateObserves = function() {
1152
- this.isStateObserveHandler = YES;
1153
- this.args = SC.A(arguments);
1154
- return this;
1155
- };
1156
-
1157
- /**
1158
- Represents a history state that can be assigned to a SC.State object's
1159
- initialSubstate property.
1160
-
1161
- If a SC.HistoryState object is assigned to a state's initial substate,
1162
- then after a state is entered the statechart will refer to the history
1163
- state object to determine the next course of action. If the state has
1164
- its historyState property assigned then the that state will be entered,
1165
- otherwise the default state assigned to history state object will be entered.
1166
-
1167
- An example of how to use:
1168
-
1169
- stateA: SC.State.design({
1170
- initialSubstate: SC.HistoryState({
1171
- defaultState: 'stateB'
1172
- }),
1173
-
1174
- stateB: SC.State.design({ ... }),
1175
-
1176
- stateC: SC.State.design({ ... })
1177
- })
1178
- */
1179
- SC.HistoryState = SC.Object.extend({
1180
-
1181
- /**
1182
- Used to indicate if the statechart should recurse the
1183
- history states after entering the this object's parent state
1184
-
1185
- @property {Boolean}
1186
- */
1187
- isRecursive: NO,
1188
-
1189
- /**
1190
- The default state to enter if the parent state does not
1191
- yet have its historyState property assigned to something
1192
- other than null.
1193
-
1194
- The value assigned to this property must be the name of an
1195
- immediate substate that belongs to the parent state. The
1196
- statechart will manage the property upon initialization.
1197
-
1198
- @property {String}
1199
- */
1200
- defaultState: null,
1201
-
1202
- /** @private
1203
- Managed by the statechart
1204
-
1205
- The statechart that owns this object.
1206
- */
1207
- statechart: null,
1208
-
1209
- /** @private
1210
- Managed by the statechart
1211
-
1212
- The state that owns this object
1213
- */
1214
- parentState: null,
1215
-
1216
- /**
1217
- Used by the statechart during a state transition process.
1218
-
1219
- Returns a state to enter based on whether the parent state has
1220
- its historyState property assigned. If not then this object's
1221
- assigned default state is returned.
1222
- */
1223
- state: function() {
1224
- var defaultState = this.get('defaultState'),
1225
- historyState = this.getPath('parentState.historyState');
1226
- return !!historyState ? historyState : defaultState;
1227
- }.property().cacheable(),
1228
-
1229
- /** @private */
1230
- parentHistoryStateDidChange: function() {
1231
- this.notifyPropertyChange('state');
1232
- }.observes('*parentState.historyState')
1233
-
1234
- });
1235
-
1236
- /**
1237
- The default name given to an empty state
1238
- */
1239
- SC.EMPTY_STATE_NAME = "__EMPTY_STATE__";
1240
-
1241
- /**
1242
- Represents an empty state that gets assigned as a state's initial substate
1243
- if the state does not have an initial substate defined.
1244
- */
1245
- SC.EmptyState = SC.State.extend({
1246
-
1247
- name: SC.EMPTY_STATE_NAME,
1248
-
1249
- enterState: function() {
1250
- this.stateLogWarning("No initial substate was defined for state %@. Entering default empty state".fmt(this.get('parentState')));
1251
- }
1252
-
1253
- });
@@ -10,6 +10,8 @@
10
10
  sc_require('system/state');
11
11
 
12
12
  /**
13
+ @class
14
+
13
15
  The startchart manager mixin allows an object to be a statechart. By becoming a statechart, the
14
16
  object can then be manage a set of its own states.
15
17
 
@@ -60,7 +62,7 @@ sc_require('system/state');
60
62
 
61
63
  If you liked to specify a class that should be used as the root state but using the above method to defined
62
64
  states, you can set the rootStateExample property with a class that extends from SC.State. If the
63
- rootStateExaple property is not explicitly assigned the then default class used will be SC.State.
65
+ rootStateExample property is not explicitly assigned the then default class used will be SC.State.
64
66
 
65
67
  To provide your statechart with orthogonality, you use concurrent states. If you use concurrent states,
66
68
  then your statechart will have multiple current states. That is because each concurrent state represents an
@@ -163,10 +165,9 @@ sc_require('system/state');
163
165
  into as many files as you see fit.
164
166
 
165
167
  @author Michael Cohen
166
-
167
168
  */
168
169
 
169
- SC.StatechartManager = {
170
+ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
170
171
 
171
172
  // Walk like a duck
172
173
  isResponderContext: YES,
@@ -547,7 +548,8 @@ SC.StatechartManager = {
547
548
  trace = this.get('allowStatechartTracing'),
548
549
  rootState = this.get('rootState'),
549
550
  paramState = state,
550
- paramFromCurrentState = fromCurrentState;
551
+ paramFromCurrentState = fromCurrentState,
552
+ msg;
551
553
 
552
554
  state = rootState.getSubstate(state);
553
555
 
@@ -578,7 +580,7 @@ SC.StatechartManager = {
578
580
  // Check to make sure the current state given is actually a current state of this statechart
579
581
  fromCurrentState = rootState.getSubstate(fromCurrentState);
580
582
  if (SC.none(fromCurrentState) || !fromCurrentState.get('isCurrentState')) {
581
- var msg = "Can not to goto state %@. %@ is not a recognized current state in statechart";
583
+ msg = "Can not to goto state %@. %@ is not a recognized current state in statechart";
582
584
  this.statechartLogError(msg.fmt(paramState, paramFromCurrentState));
583
585
  this._gotoStateLocked = NO;
584
586
  return;
@@ -588,12 +590,18 @@ SC.StatechartManager = {
588
590
  // No explicit current state to start from; therefore, just use the first current state as
589
591
  // a default, if there is a current state.
590
592
  fromCurrentState = this.get('currentStates')[0];
593
+ msg = "gotoState: fromCurrentState not explicitly provided. Using a default current state to transition from: %@";
594
+ this.statechartLogWarning(msg.fmt(fromCurrentState));
591
595
  }
592
596
 
593
597
  if (trace) {
594
598
  this.statechartLogTrace("BEGIN gotoState: %@".fmt(state));
595
- this.statechartLogTrace("starting from current state: %@".fmt(fromCurrentState));
596
- this.statechartLogTrace("current states before: %@".fmt(this.get('currentStates')));
599
+ msg = "starting from current state: %@";
600
+ msg = msg.fmt(fromCurrentState ? fromCurrentState : '---');
601
+ this.statechartLogTrace(msg);
602
+ msg = "current states before: %@";
603
+ msg = msg.fmt(this.getPath('currentStates.length') > 0 ? this.get('currentStates') : '---');
604
+ this.statechartLogTrace(msg);
597
605
  }
598
606
 
599
607
  // If there is a current state to start the transition process from, then determine what
@@ -739,7 +747,7 @@ SC.StatechartManager = {
739
747
  parentState = parentState.get('parentState');
740
748
  }
741
749
 
742
- if (this.get('allowStatechartTracing')) this.statechartLogTrace("exiting state: %@".fmt(state));
750
+ if (this.get('allowStatechartTracing')) this.statechartLogTrace("<-- exiting state: %@".fmt(state));
743
751
 
744
752
  state.set('currentSubstates', []);
745
753
  state.notifyPropertyChange('isCurrentState');
@@ -787,7 +795,7 @@ SC.StatechartManager = {
787
795
  parentState = parentState.get('parentState');
788
796
  }
789
797
 
790
- if (this.get('allowStatechartTracing')) this.statechartLogTrace("entering state: %@".fmt(state));
798
+ if (this.get('allowStatechartTracing')) this.statechartLogTrace("--> entering state: %@".fmt(state));
791
799
 
792
800
  state.notifyPropertyChange('isCurrentState');
793
801
 
@@ -1474,73 +1482,3 @@ SC.Statechart = SC.Object.extend(SC.StatechartManager, {
1474
1482
  });
1475
1483
 
1476
1484
  SC.Statechart.design = SC.Statechart.extend;
1477
-
1478
- /**
1479
- Represents a call that is intended to be asynchronous. This is
1480
- used during a state transition process when either entering or
1481
- exiting a state.
1482
- */
1483
- SC.Async = SC.Object.extend({
1484
-
1485
- func: null,
1486
-
1487
- arg1: null,
1488
-
1489
- arg2: null,
1490
-
1491
- /** @private
1492
- Called by the statechart
1493
- */
1494
- tryToPerform: function(state) {
1495
- var func = this.get('func'),
1496
- arg1 = this.get('arg1'),
1497
- arg2 = this.get('arg2'),
1498
- funcType = SC.typeOf(func);
1499
-
1500
- if (funcType === SC.T_STRING) {
1501
- state.tryToPerform(func, arg1, arg2);
1502
- }
1503
- else if (funcType === SC.T_FUNCTION) {
1504
- func.apply(state, [arg1, arg2]);
1505
- }
1506
- }
1507
-
1508
- });
1509
-
1510
- /**
1511
- Singleton
1512
- */
1513
- SC.Async.mixin({
1514
-
1515
- /**
1516
- Call in either a state's enterState or exitState method when you
1517
- want a state to perform an asynchronous action, such as an animation.
1518
-
1519
- Examples:
1520
-
1521
- SC.State.extend({
1522
-
1523
- enterState: function() {
1524
- return SC.Async.perform('foo');
1525
- },
1526
-
1527
- exitState: function() {
1528
- return SC.Async.perform('bar', 100);
1529
- }
1530
-
1531
- foo: function() { ... },
1532
-
1533
- bar: function(arg) { ... }
1534
-
1535
- });
1536
-
1537
- @param func {String|Function} the functio to be invoked on a state
1538
- @param arg1 Optional. An argument to pass to the given function
1539
- @param arg2 Optional. An argument to pass to the given function
1540
- @return {SC.Async} a new instance of a SC.Async
1541
- */
1542
- perform: function(func, arg1, arg2) {
1543
- return SC.Async.create({ func: func, arg1: arg1, arg2: arg2 });
1544
- }
1545
-
1546
- });
@@ -0,0 +1,464 @@
1
+ // ==========================================================================
2
+ // SC.Statechart Unit Test
3
+ // ==========================================================================
4
+ /*globals SC */
5
+
6
+ var obj, monitor, rootState, a, b, c, d, e, m, n, o, p, x, y;
7
+
8
+ module("SC.Statechart: Destroy Statechart Tests", {
9
+ setup: function() {
10
+
11
+ obj = SC.Object.create(SC.StatechartManager, {
12
+
13
+ initialState: 'A',
14
+ A: SC.State.design(),
15
+ B: SC.State.design(),
16
+ C: SC.State.design(),
17
+ D: SC.State.design(),
18
+ E: SC.State.design(),
19
+ M: SC.State.design(),
20
+ N: SC.State.design(),
21
+ O: SC.State.design(),
22
+ P: SC.State.design(),
23
+ X: SC.State.design(),
24
+ Y: SC.State.design()
25
+
26
+ });
27
+
28
+ obj.initStatechart();
29
+ rootState = obj.get('rootState');
30
+ a = obj.getState('A');
31
+ b = obj.getState('B');
32
+ c = obj.getState('C');
33
+ d = obj.getState('D');
34
+ e = obj.getState('E');
35
+ m = obj.getState('M');
36
+ n = obj.getState('N');
37
+ o = obj.getState('O');
38
+ p = obj.getState('P');
39
+ x = obj.getState('X');
40
+ y = obj.getState('Y');
41
+
42
+ monitor = SC.StatechartMonitor.create({ statechart: obj });
43
+ },
44
+
45
+ teardown: function() {
46
+ obj = monitor = rootState = null;
47
+ a = b = c = d = e = m = n = o = p = x = y = null;
48
+ }
49
+ });
50
+
51
+ test("match against sequence entered A", function() {
52
+ monitor.pushEnteredState(a);
53
+
54
+ var matcher = monitor.matchSequence();
55
+
56
+ ok(matcher.begin().entered(a).end(), "should match entered A");
57
+ ok(matcher.begin().entered('A').end(), "should match entered 'A'");
58
+ ok(!matcher.begin().entered(b).end(), "should not match entered B");
59
+ ok(!matcher.begin().exited(a).end(), "should not match exited A");
60
+ ok(!matcher.begin().exited(b).end(), "should not match exited B");
61
+ ok(!matcher.begin().entered(a, b).end(), "should not match entered [A, B]");
62
+ ok(!matcher.begin().entered(a).entered(b).end(), "should not match entered A, entered B");
63
+ });
64
+
65
+ test("match against sequence exited A", function() {
66
+ monitor.pushExitedState(a);
67
+
68
+ var matcher = monitor.matchSequence();
69
+
70
+ ok(matcher.begin().exited(a).end(), "should match exited A");
71
+ ok(matcher.begin().exited('A').end(), "should match exited 'A'");
72
+ ok(!matcher.begin().exited(b).end(), "should not match exited B");
73
+ ok(!matcher.begin().entered(a).end(), "should not match entered A");
74
+ ok(!matcher.begin().entered(b).end(), "should not match entered B");
75
+ ok(!matcher.begin().exited(a, b).end(), "should not match exited [A, B]");
76
+ ok(!matcher.begin().exited(a).exited(b).end(), "should not match exited A, exited B");
77
+ });
78
+
79
+ test("match against sequence entered A, entered B", function() {
80
+ monitor.pushEnteredState(a);
81
+ monitor.pushEnteredState(b);
82
+
83
+ var matcher = monitor.matchSequence();
84
+
85
+ ok(matcher.begin().entered(a, b).end(), "should match entered [A, B]");
86
+ ok(matcher.begin().entered('A', 'B').end(), "should match entered ['A', 'B']");
87
+ ok(matcher.begin().entered(a).entered(b).end(), "should match entered A, entered B");
88
+ ok(!matcher.begin().entered(a).end(), "should not match entered A");
89
+ ok(!matcher.begin().entered(b).end(), "should not match entered B");
90
+ ok(!matcher.begin().entered(b, a).end(), "should not match entered [B, A]");
91
+ ok(!matcher.begin().entered('B', 'A').end(), "should match entered ['B', 'A']");
92
+ ok(!matcher.begin().entered(b).entered(a).end(), "should not matched entered B, entered A");
93
+ ok(!matcher.begin().entered(a, c).end(), "should not match entered [A, C]");
94
+ ok(!matcher.begin().entered('A', 'C').end(), "should not match entered [A, C]");
95
+ ok(!matcher.begin().entered(a).entered(c).end(), "should not match entered A, entered C");
96
+ ok(!matcher.begin().entered(a, b, c).end(), "should not match entered [A, B, C]");
97
+ });
98
+
99
+ test("match against sequence exited A, exited B", function() {
100
+ monitor.pushExitedState(a);
101
+ monitor.pushExitedState(b);
102
+
103
+ var matcher = monitor.matchSequence();
104
+
105
+ ok(matcher.begin().exited(a, b).end(), "should match exited [A, B]");
106
+ ok(matcher.begin().exited('A', 'B').end(), "should match exited ['A', 'B']");
107
+ ok(matcher.begin().exited(a).exited(b).end(), "should match exited A, entered B");
108
+ ok(!matcher.begin().exited(a).end(), "should not match exited A");
109
+ ok(!matcher.begin().exited(b).end(), "should not match exited B");
110
+ ok(!matcher.begin().exited(b, a).end(), "should not match exited [B, A]");
111
+ ok(!matcher.begin().exited('B', 'A').end(), "should not match exited ['B', 'A']");
112
+ ok(!matcher.begin().exited(b).exited(a).end(), "should not matched exited B, exited A");
113
+ ok(!matcher.begin().exited(a, c).end(), "should not match exited [A, C]");
114
+ ok(!matcher.begin().exited('A', 'C').end(), "should not match exited ['A', 'C']");
115
+ ok(!matcher.begin().exited(a).exited(c).end(), "should not match exited A, exited C");
116
+ });
117
+
118
+ test("match against sequence exited A, entered B", function() {
119
+ monitor.pushExitedState(a);
120
+ monitor.pushEnteredState(b);
121
+
122
+ var matcher = monitor.matchSequence();
123
+
124
+ ok(matcher.begin().exited(a).entered(b).end(), "should match exited A, entered B");
125
+ ok(matcher.begin().exited('A').entered('B').end(), "should match exited 'A', entered 'B'");
126
+ ok(!matcher.begin().entered(a).exited(a).end(), "should not match entered A, exited B");
127
+ ok(!matcher.begin().entered('A').exited('B').end(), "should not match entered 'A', exited 'B'");
128
+ ok(!matcher.begin().exited(a).entered(c).end(), "should not match exited A, entered C");
129
+ ok(!matcher.begin().exited(a).entered(b, c).end(), "should not match exited A, entered [B, C]");
130
+ ok(!matcher.begin().exited(a).entered(b).entered(c).end(), "should not match exited A, entered B, entered C");
131
+ ok(!matcher.begin().exited(a).entered(b).exited(c).end(), "should not match exited A, entered B, exited C");
132
+ });
133
+
134
+ test("match against sequence seq(enter A), seq(enter B)", function() {
135
+ monitor.pushEnteredState(a);
136
+ monitor.pushEnteredState(b);
137
+
138
+ var matcher = monitor.matchSequence();
139
+
140
+ matcher.begin()
141
+ .beginSequence()
142
+ .entered(a)
143
+ .endSequence()
144
+ .beginSequence()
145
+ .entered(b)
146
+ .endSequence()
147
+ .end();
148
+
149
+ ok(matcher.get('match'), "should match seq(entered A), seq(entered B)");
150
+
151
+ matcher.begin()
152
+ .beginSequence()
153
+ .entered(a)
154
+ .entered(b)
155
+ .endSequence()
156
+ .end();
157
+
158
+ ok(matcher.get('match'), "should match seq(entered A, entered B)");
159
+
160
+ matcher.begin()
161
+ .beginSequence()
162
+ .entered(a)
163
+ .entered(b)
164
+ .endSequence()
165
+ .end();
166
+
167
+ ok(matcher.get('match'), "should match seq(entered A, entered B)");
168
+
169
+ matcher.begin()
170
+ .beginSequence()
171
+ .entered(a, b)
172
+ .endSequence()
173
+ .end();
174
+
175
+ ok(matcher.get('match'), "should match seq(entered [A, B]");
176
+
177
+ matcher.begin()
178
+ .beginSequence()
179
+ .entered(a)
180
+ .endSequence()
181
+ .end();
182
+
183
+ ok(!matcher.get('match'), "should not match seq(entered A)");
184
+
185
+ matcher.begin()
186
+ .beginSequence()
187
+ .entered(a)
188
+ .endSequence()
189
+ .beginSequence()
190
+ .entered(c)
191
+ .endSequence()
192
+ .end();
193
+
194
+ ok(!matcher.get('match'), "should not match seq(entered A), seq(entered C)");
195
+
196
+ matcher.begin()
197
+ .beginSequence()
198
+ .entered(a)
199
+ .endSequence()
200
+ .beginSequence()
201
+ .entered(b)
202
+ .endSequence()
203
+ .beginSequence()
204
+ .entered(c)
205
+ .endSequence()
206
+ .end();
207
+
208
+ ok(!matcher.get('match'), "should not match seq(entered A), seq(entered B), seq(entered C)");
209
+ });
210
+
211
+ test("match against sequence con(entered A)", function() {
212
+ monitor.pushEnteredState(a);
213
+
214
+ var matcher = monitor.matchSequence();
215
+
216
+ matcher.begin()
217
+ .beginConcurrent()
218
+ .entered(a)
219
+ .endConcurrent()
220
+ .end();
221
+
222
+ ok(matcher.get('match'), "should match con(entered A)");
223
+
224
+ matcher.begin()
225
+ .beginConcurrent()
226
+ .beginSequence()
227
+ .entered(a)
228
+ .endSequence()
229
+ .endConcurrent()
230
+ .end();
231
+
232
+ ok(matcher.get('match'), "should match con(seq(entered A))");
233
+
234
+ matcher.begin()
235
+ .beginConcurrent()
236
+ .entered(b)
237
+ .endConcurrent()
238
+ .end();
239
+
240
+ ok(!matcher.get('match'), "should match con(entered B)");
241
+
242
+ matcher.begin()
243
+ .beginConcurrent()
244
+ .exited(a)
245
+ .endConcurrent()
246
+ .end();
247
+
248
+ ok(!matcher.get('match'), "should match con(exited B)");
249
+
250
+ matcher.begin()
251
+ .beginConcurrent()
252
+ .entered(a)
253
+ .entered(b)
254
+ .endConcurrent()
255
+ .end();
256
+
257
+ ok(!matcher.get('match'), "should not match con(entered A, entered B)");
258
+
259
+ matcher.begin()
260
+ .beginConcurrent()
261
+ .entered(b)
262
+ .entered(a)
263
+ .endConcurrent()
264
+ .end();
265
+
266
+ ok(!matcher.get('match'), "should not match con(entered B, entered A)");
267
+ });
268
+
269
+ test("match against sequence con(entered A entered B)", function() {
270
+ monitor.pushEnteredState(a);
271
+ monitor.pushEnteredState(b);
272
+
273
+ var matcher = monitor.matchSequence();
274
+
275
+ matcher.begin()
276
+ .beginConcurrent()
277
+ .entered(a)
278
+ .entered(b)
279
+ .endConcurrent()
280
+ .end();
281
+
282
+ ok(matcher.get('match'), "should match con(entered A, entered B)");
283
+
284
+ matcher.begin()
285
+ .beginConcurrent()
286
+ .entered(b)
287
+ .entered(a)
288
+ .endConcurrent()
289
+ .end();
290
+
291
+ ok(matcher.get('match'), "should match con(entered B, entered A)");
292
+
293
+ matcher.begin()
294
+ .beginConcurrent()
295
+ .beginSequence()
296
+ .entered(a)
297
+ .endSequence()
298
+ .entered(b)
299
+ .endConcurrent()
300
+ .end();
301
+
302
+ ok(matcher.get('match'), "should match con(seq(entered A), entered B)");
303
+
304
+ matcher.begin()
305
+ .beginConcurrent()
306
+ .beginSequence()
307
+ .entered(a)
308
+ .endSequence()
309
+ .beginSequence()
310
+ .entered(b)
311
+ .endSequence()
312
+ .endConcurrent()
313
+ .end();
314
+
315
+ ok(matcher.get('match'), "should match con(seq(entered A), seq(entered B))");
316
+
317
+ matcher.begin()
318
+ .beginConcurrent()
319
+ .entered(a, b)
320
+ .endConcurrent()
321
+ .end();
322
+
323
+ ok(matcher.get('match'), "should match con(entered [A, B])");
324
+
325
+ matcher.begin()
326
+ .beginConcurrent()
327
+ .beginSequence()
328
+ .entered(a)
329
+ .entered(b)
330
+ .endSequence()
331
+ .endConcurrent()
332
+ .end();
333
+
334
+ ok(matcher.get('match'), "should match con(entered [A, B])");
335
+
336
+ matcher.begin()
337
+ .beginConcurrent()
338
+ .entered(a)
339
+ .endConcurrent()
340
+ .end();
341
+
342
+ ok(!matcher.get('match'), "should not match con(entered A])");
343
+
344
+ matcher.begin()
345
+ .beginConcurrent()
346
+ .entered(a)
347
+ .entered(c)
348
+ .endConcurrent()
349
+ .end();
350
+
351
+ ok(!matcher.get('match'), "should not match con(entered A, entered C)");
352
+
353
+ matcher.begin()
354
+ .beginConcurrent()
355
+ .entered(a)
356
+ .entered(b)
357
+ .entered(c)
358
+ .endConcurrent()
359
+ .end();
360
+
361
+ ok(!matcher.get('match'), "should not match con(entered A, entered B, entered C)");
362
+
363
+ });
364
+
365
+ test("match against sequence con(entered A entered B)", function() {
366
+ monitor.pushEnteredState(a);
367
+ monitor.pushEnteredState(b);
368
+ monitor.pushEnteredState(x);
369
+ monitor.pushEnteredState(m);
370
+ monitor.pushEnteredState(n);
371
+ monitor.pushEnteredState(y);
372
+ monitor.pushEnteredState(o);
373
+ monitor.pushEnteredState(p);
374
+ monitor.pushEnteredState(c);
375
+
376
+ var matcher = monitor.matchSequence();
377
+
378
+ matcher.begin()
379
+ .entered(a)
380
+ .entered(b)
381
+ .beginConcurrent()
382
+ .beginSequence()
383
+ .entered(x, m, n)
384
+ .endSequence()
385
+ .beginSequence()
386
+ .entered(y, o, p)
387
+ .endSequence()
388
+ .endConcurrent()
389
+ .entered(c)
390
+ .end();
391
+
392
+ ok(matcher.get('match'),
393
+ "should match entered A, entered B, con(seq(entered [X, M, N]), seq(entered [Y, O, P])) entered C)");
394
+
395
+ matcher.begin()
396
+ .entered(a)
397
+ .entered(b)
398
+ .beginConcurrent()
399
+ .beginSequence()
400
+ .entered(y, o, p)
401
+ .endSequence()
402
+ .beginSequence()
403
+ .entered(x, m, n)
404
+ .endSequence()
405
+ .endConcurrent()
406
+ .entered(c)
407
+ .end();
408
+
409
+ ok(matcher.get('match'),
410
+ "should match entered A, entered B, con(seq(entered [Y, O, P]), seq(entered [X, M, N])) entered C)");
411
+
412
+ matcher.begin()
413
+ .entered(a)
414
+ .entered(b)
415
+ .beginConcurrent()
416
+ .beginSequence()
417
+ .entered(x, m)
418
+ .endSequence()
419
+ .beginSequence()
420
+ .entered(y, o, p)
421
+ .endSequence()
422
+ .endConcurrent()
423
+ .entered(c)
424
+ .end();
425
+
426
+ ok(!matcher.get('match'),
427
+ "should not match entered A, entered B, con(seq(entered [X, M]), seq(entered [Y, O, P])) entered C)");
428
+
429
+ matcher.begin()
430
+ .entered(a)
431
+ .entered(b)
432
+ .beginConcurrent()
433
+ .beginSequence()
434
+ .entered(x, m, n)
435
+ .endSequence()
436
+ .beginSequence()
437
+ .entered(y, o)
438
+ .endSequence()
439
+ .endConcurrent()
440
+ .entered(c)
441
+ .end();
442
+
443
+ ok(!matcher.get('match'),
444
+ "should not match entered A, entered B, con(seq(entered [X, M]), seq(entered [Y, O])) entered C)");
445
+
446
+ matcher.begin()
447
+ .entered(a)
448
+ .entered(b)
449
+ .beginConcurrent()
450
+ .beginSequence()
451
+ .entered(x, m, n)
452
+ .endSequence()
453
+ .beginSequence()
454
+ .entered(y, o, p)
455
+ .endSequence()
456
+ .entered(e)
457
+ .endConcurrent()
458
+ .entered(c)
459
+ .end();
460
+
461
+ ok(!matcher.get('match'),
462
+ "should not match entered A, entered B, con(seq(entered [X, M, N]), seq(entered [Y, O, P]), entered E) entered C)");
463
+
464
+ });