sproutcore 1.10.3.1 → 1.11.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (380) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG +4 -8
  3. data/VERSION.yml +2 -2
  4. data/lib/frameworks/sproutcore/Buildfile +5 -4
  5. data/lib/frameworks/sproutcore/CHANGELOG.md +274 -40
  6. data/lib/frameworks/sproutcore/CONTRIBUTORS.md +133 -0
  7. data/lib/frameworks/sproutcore/README.md +31 -144
  8. data/lib/frameworks/sproutcore/apps/showcase/controllers/source_tree_controller.js +9 -4
  9. data/lib/frameworks/sproutcore/apps/showcase/resources/stylesheet.css +5 -0
  10. data/lib/frameworks/sproutcore/apps/showcase/system/views_item_content.js +1 -1
  11. data/lib/frameworks/sproutcore/apps/showcase/views/split_views.js +15 -2
  12. data/lib/frameworks/sproutcore/apps/showcase/views/stacked_views.js +1 -1
  13. data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +11 -1
  14. data/lib/frameworks/sproutcore/frameworks/ajax/mixins/websocket_delegate.js +90 -0
  15. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +81 -5
  16. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +23 -4
  17. data/lib/frameworks/sproutcore/frameworks/ajax/system/websocket.js +475 -0
  18. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +149 -26
  19. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/websocket.js +197 -0
  20. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/xhr_response_test.js +65 -0
  21. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +4 -0
  22. data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/horizontal_stack_layout.js +232 -52
  23. data/lib/frameworks/sproutcore/frameworks/core_foundation/child_view_layouts/vertical_stack_layout.js +235 -49
  24. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +23 -13
  25. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +3 -1
  26. data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +81 -1
  27. data/lib/frameworks/sproutcore/frameworks/core_foundation/english.lproj/ordinal.js +17 -0
  28. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
  29. data/lib/frameworks/sproutcore/frameworks/{desktop/tests/views/disclosure/methods.js → core_foundation/french.lproj/ordinal.js} +7 -4
  30. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +2 -6
  31. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +1 -1
  32. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +104 -69
  33. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane_statechart.js +6 -1
  34. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/child_view_layout_protocol.js +59 -0
  35. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/view_transition_protocol.js +18 -1
  36. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/application.js +192 -0
  37. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/bezier_curves.js +52 -0
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/color.js +384 -64
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/core_query.js +6 -14
  40. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +21 -35
  41. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +72 -36
  42. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +90 -34
  43. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +55 -7
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +20 -15
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/req_anim_frame.js +9 -10
  46. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +763 -542
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/selection_set.js +4 -3
  48. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +1 -7
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +14 -0
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/touch.js +538 -0
  51. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils/rect.js +56 -1
  52. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +99 -4
  53. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/single_case.js +25 -19
  54. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/core_tests.js +75 -0
  55. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/ext/number_test.js +81 -0
  56. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/action_support.js +4 -4
  57. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/responder_context.js +4 -4
  58. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +19 -1
  59. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/color.js +36 -20
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/design_modes_test.js +83 -0
  61. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeMainPane.js +7 -3
  62. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/mouse_events.js +338 -0
  63. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/root_responder.js +14 -89
  64. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/touch.js +106 -0
  65. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +2 -2
  66. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/touch.js +136 -0
  67. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/rect.js +42 -1
  68. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +11 -0
  69. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +5 -5
  70. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/design_mode_test.js +457 -0
  71. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/sendEvent.js +36 -10
  72. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/background_color.js +44 -0
  73. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/border_frame_test.js +51 -24
  74. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/childViewLayout_test.js +176 -1
  75. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +46 -16
  76. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +69 -15
  77. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +2 -2
  78. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layout.js +7 -1
  79. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +30 -10
  80. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +376 -71
  81. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +0 -10
  82. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/viewDidResize.js +117 -34
  83. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view_states_test.js +52 -2
  84. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +656 -42
  85. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +159 -38
  86. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +0 -7
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/design_mode.js +206 -0
  88. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +0 -28
  89. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +21 -6
  90. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +372 -450
  91. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +28 -13
  92. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +22 -51
  93. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/statechart.js +59 -30
  94. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +0 -29
  95. data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +22 -10
  96. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +42 -36
  97. data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +54 -3
  98. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +178 -59
  99. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +2 -2
  100. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +206 -132
  101. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +214 -118
  102. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +96 -13
  103. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +14 -4
  104. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +82 -42
  105. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +272 -177
  106. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/store_interaction_test.js +54 -0
  107. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/datetime_recordattribute.js +24 -16
  108. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +6 -3
  109. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +267 -35
  110. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +57 -46
  111. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +150 -53
  112. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +57 -17
  113. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +13 -9
  114. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/polymorphism → datastore}/tests/models/polymorphism/many.js +2 -2
  115. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/polymorphism → datastore}/tests/models/polymorphism/simple.js +0 -0
  116. data/lib/frameworks/sproutcore/frameworks/{experimental/frameworks/polymorphism → datastore}/tests/models/polymorphism/single.js +12 -2
  117. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +20 -15
  118. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +9 -2
  119. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +80 -14
  120. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/autonomous_dataSourceCallbacks.js +280 -0
  121. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/autonomous_pushChanges.js +232 -0
  122. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +31 -5
  123. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +16 -2
  124. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +60 -40
  125. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/materializeRecord.js +78 -0
  126. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -1
  127. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +20 -0
  128. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/{resources → english.lproj}/strings.js +0 -0
  129. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/french.lproj/strings.js +45 -0
  130. data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +7 -3
  131. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +125 -44
  132. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +139 -48
  133. data/lib/frameworks/sproutcore/frameworks/desktop/panes/draggable.js +202 -0
  134. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +59 -56
  135. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +13 -49
  136. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +466 -305
  137. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +49 -12
  138. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +79 -21
  139. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/split.js +12 -2
  140. data/lib/frameworks/sproutcore/frameworks/desktop/resources/menu_item_view.css +8 -0
  141. data/lib/frameworks/sproutcore/frameworks/desktop/resources/overlay-scroller.css +187 -0
  142. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +94 -30
  143. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +163 -3
  144. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +97 -78
  145. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +61 -1
  146. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +7 -3
  147. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +47 -22
  148. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +66 -9
  149. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +21 -11
  150. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +12 -18
  151. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +17 -14
  152. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
  153. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +9 -6
  154. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/collection_fast_path.js +54 -21
  155. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +52 -20
  156. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +94 -4
  157. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/keyboard.js +177 -0
  158. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +13 -1
  159. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +9 -9
  160. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +18 -0
  161. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +104 -0
  162. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +48 -49
  163. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/drag_and_drop.js +22 -18
  164. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +17 -5
  165. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/link_view_test.js +136 -0
  166. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/contentIndexesInRect.js +77 -0
  167. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/drag_and_drop.js +53 -16
  168. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/layoutForContentIndex.js +41 -0
  169. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +25 -25
  170. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +102 -27
  171. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/{rowHeightForContentIndex.js → rowSizeForContentIndex.js} +7 -6
  172. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +2 -0
  173. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +70 -75
  174. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +29 -30
  175. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +57 -0
  176. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/menu_scroll_view/menu_scroll_view_test.js +206 -0
  177. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +15 -0
  178. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +15 -7
  179. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +16 -11
  180. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +164 -12
  181. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/scale.js +387 -0
  182. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/touch.js +549 -0
  183. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +214 -45
  184. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -5
  185. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +73 -22
  186. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +88 -3
  187. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/methods.js +8 -0
  188. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/methods.js +16 -1
  189. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/ui.js +54 -0
  190. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/dividers.js +21 -2
  191. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/static_content.js +31 -25
  192. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +109 -29
  193. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +10 -1
  194. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +3 -0
  195. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +779 -603
  196. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +106 -7
  197. data/lib/frameworks/sproutcore/frameworks/desktop/views/link_view.js +406 -0
  198. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +437 -245
  199. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +13 -0
  200. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +124 -62
  201. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +176 -597
  202. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroller_view.js +206 -0
  203. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +3 -0
  204. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +5 -4
  205. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +3 -0
  206. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +56 -158
  207. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll_view.js +2560 -0
  208. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +458 -242
  209. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +117 -54
  210. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +18 -12
  211. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +162 -34
  212. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +30 -15
  213. data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +33 -7
  214. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +22 -2
  215. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +47 -22
  216. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +0 -6
  217. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +2 -1
  218. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form_row.js +21 -21
  219. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -3
  220. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/mixins/select_view_menu.js +24 -10
  221. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/ext/menu_resizing.js +1 -1
  222. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/bindings.js +7 -4
  223. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/check_selected.js +7 -9
  224. data/lib/frameworks/sproutcore/frameworks/{desktop/tests/panes/select_button/methods.js → experimental/frameworks/select_view/tests/views/select/method.js} +54 -76
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/selected_item.js +35 -0
  226. data/lib/frameworks/sproutcore/frameworks/{desktop/tests/panes/select_button → experimental/frameworks/select_view/tests/views/select}/ui.js +107 -36
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +225 -66
  228. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +39 -38
  229. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +5 -18
  230. data/lib/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +12 -0
  231. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/inflections.js +84 -0
  232. data/lib/frameworks/sproutcore/frameworks/foundation/french.lproj/inflections.js +41 -0
  233. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_mixin.js +1 -0
  234. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +7 -0
  235. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +3 -4
  236. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +6 -2
  237. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +408 -239
  238. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
  239. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +2 -1
  240. data/lib/frameworks/sproutcore/frameworks/foundation/spanish.lproj/inflections.js +38 -0
  241. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +104 -76
  242. data/lib/frameworks/sproutcore/frameworks/foundation/system/string.js +20 -94
  243. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +33 -22
  244. data/lib/frameworks/sproutcore/frameworks/foundation/system/undo_manager.js +475 -0
  245. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/auto_resize_test.js +163 -1
  246. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +41 -0
  247. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +2 -5
  248. data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/methods.js +268 -0
  249. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/undo_manager.js +231 -0
  250. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +16 -0
  251. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +27 -0
  252. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +24 -0
  253. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +135 -6
  254. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/fade_transition.js +6 -0
  255. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/pop_transition.js +7 -0
  256. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/scale_transition.js +6 -0
  257. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/slide_transition.js +4 -0
  258. data/lib/frameworks/sproutcore/frameworks/foundation/transitions/swap_dissolve_transition.js +3 -1
  259. data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +21 -21
  260. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +65 -15
  261. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -1
  262. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +1 -1
  263. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +193 -213
  264. data/lib/frameworks/sproutcore/frameworks/jquery/{jquery-1.8.3-patched.js → jquery-1.11.1.js} +7507 -6684
  265. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +28 -11
  266. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +26 -0
  267. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +54 -25
  268. data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +0 -6
  269. data/lib/frameworks/sproutcore/frameworks/runtime/ext/number.js +36 -0
  270. data/lib/frameworks/sproutcore/frameworks/runtime/ext/window.js +25 -0
  271. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +3 -3
  272. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1 -1
  273. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +156 -66
  274. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +2 -2
  275. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +150 -65
  276. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +57 -11
  277. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +68 -49
  278. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +14 -6
  279. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +23 -23
  280. data/lib/frameworks/sproutcore/frameworks/runtime/tests/ext/number_test.js +44 -0
  281. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +0 -10
  282. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable/enumerable.js +340 -285
  283. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +104 -3
  284. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/observer_set.js +14 -1
  285. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +15 -2
  286. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +21 -18
  287. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +52 -19
  288. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/pane.js +27 -24
  289. data/lib/frameworks/sproutcore/frameworks/template_view/controls/button.js +30 -0
  290. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/bind.js +1 -1
  291. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/collection.js +2 -0
  292. data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/view.js +1 -0
  293. data/lib/frameworks/sproutcore/frameworks/template_view/tests/mixins/template_helpers/checkbox_support.js +2 -2
  294. data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/handlebars.js +4 -2
  295. data/lib/frameworks/sproutcore/frameworks/template_view/views/bindable_span.js +1 -1
  296. data/lib/frameworks/sproutcore/frameworks/template_view/views/template_collection.js +16 -14
  297. data/lib/frameworks/sproutcore/frameworks/testing/core.js +5 -3
  298. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +13 -0
  299. data/lib/frameworks/sproutcore/lib/index.rhtml +2 -2
  300. data/lib/frameworks/sproutcore/phantomjs/test_runner.js +28 -7
  301. data/lib/frameworks/sproutcore/scripts/run_sc_server_master.sh +1 -1
  302. data/lib/frameworks/sproutcore/themes/ace/resources/_variables.css +2 -0
  303. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +1 -0
  304. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +3 -4
  305. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal.css +15 -15
  306. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal_overlay.css +74 -0
  307. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical.css +11 -13
  308. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical_overlay.css +74 -0
  309. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob-active.png +0 -0
  310. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob-active@2x.png +0 -0
  311. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob.png +0 -0
  312. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/knob@2x.png +0 -0
  313. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/{22px → jumbo}/slider.css +9 -4
  314. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/track.png +0 -0
  315. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/jumbo/track@2x.png +0 -0
  316. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob-active.png +0 -0
  317. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob-active@2x.png +0 -0
  318. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob.png +0 -0
  319. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/knob@2x.png +0 -0
  320. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/slider.css +32 -0
  321. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/track.png +0 -0
  322. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/regular/track@2x.png +0 -0
  323. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +13 -0
  324. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob-active.png +0 -0
  325. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob-active@2x.png +0 -0
  326. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob.png +0 -0
  327. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/knob@2x.png +0 -0
  328. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/slider.css +32 -0
  329. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/track.png +0 -0
  330. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/small/track@2x.png +0 -0
  331. data/lib/frameworks/sproutcore/themes/ace/resources/split/split.css +2 -3
  332. data/lib/sproutcore/builders/chance_file.rb +3 -3
  333. data/lib/sproutcore/helpers/minifier.rb +1 -0
  334. data/vendor/chance/lib/chance/instance.rb +34 -34
  335. data/vendor/chance/lib/chance/instance/spriting.rb +21 -16
  336. metadata +81 -58
  337. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +0 -17
  338. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +0 -710
  339. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +0 -267
  340. data/lib/frameworks/sproutcore/frameworks/desktop/resources/touch-scroller.css +0 -196
  341. data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +0 -224
  342. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +0 -163
  343. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +0 -177
  344. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +0 -2053
  345. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +0 -1024
  346. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +0 -404
  347. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/render_delegates/menu_scroller.js +0 -28
  348. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/tests/menu/scroll.js +0 -235
  349. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +0 -363
  350. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroller.js +0 -250
  351. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +0 -47
  352. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +0 -134
  353. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/desktop_scroller.js +0 -92
  354. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/native_scroll.js +0 -25
  355. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/scroll.js +0 -33
  356. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/touch_scroller.js +0 -76
  357. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/integration.js +0 -25
  358. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/methods.js +0 -143
  359. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/ui.js +0 -256
  360. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +0 -1164
  361. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroller.js +0 -332
  362. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +0 -236
  363. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroller.js +0 -347
  364. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroll.js +0 -15
  365. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroller.js +0 -10
  366. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +0 -804
  367. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroller.js +0 -133
  368. data/lib/frameworks/sproutcore/frameworks/foundation/tasks/preload_bundle.js +0 -41
  369. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal_touch.css +0 -91
  370. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical_touch.css +0 -92
  371. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob.png +0 -0
  372. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob_active.png +0 -0
  373. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/slider.css +0 -27
  374. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob.png +0 -0
  375. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob_active.png +0 -0
  376. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/slider.css +0 -27
  377. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob.png +0 -0
  378. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob_active.png +0 -0
  379. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/track.png +0 -0
  380. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/track.png +0 -0
@@ -1,155 +1,42 @@
1
- [![Build Status](https://travis-ci.org/sproutcore/sproutcore.png)](https://travis-ci.org/sproutcore/sproutcore)
1
+ [![Build Status](https://travis-ci.org/sproutcore/sproutcore.png?branch=master)](https://travis-ci.org/sproutcore/sproutcore)
2
2
 
3
- SproutCore HTML5 Application Framework
4
- ======================================
3
+ SproutCore: For Native-Caliber Web Apps
4
+ =======
5
5
 
6
- SproutCore is a framework for building blazing-fast, desktop-like applications
7
- in the web browser using only native HTML5 features. With SproutCore, you can
8
- build rich, interactive applications in the web in less code than most simple
9
- web pages require today.
6
+ SproutCore is a JS-MVC framework for building blazing-fast, native-caliber web
7
+ applications. SproutCore's full-stack approach to single-page application
8
+ development gives you the tools you need to build rich, powerful applications...
9
+ which happen to run in the browser.
10
10
 
11
- The easiest way to get started with SproutCore is using the build tools
12
- included with the SproutCore package when you install it from the Ruby gem.
13
- Please see the Getting Started documentation on the
14
- [SproutCore website](http://www.sproutcore.com/) for more information.
11
+ ## Getting Started
15
12
 
16
- For additional SproutCore user support, join the sproutcore@googlegroups.com
17
- mailing list and for those interested in working on the framework itself, please
18
- join sproutcore-dev@googlegroups.com.
13
+ The easiest way to get started with SproutCore is to install the Ruby gem.
14
+ You can find instructions [here](http://sproutcore.com/install/). Once you've
15
+ got SproutCore installed, checkout the
16
+ [Getting Started](http://guides.sproutcore.com/getting_started.html) tutorial.
19
17
 
18
+ ## Next Steps
20
19
 
21
- ## Contributors
20
+ Once you're through the Getting Started tutorial:
22
21
 
23
- SproutCore has been built thanks to the tireless efforts of many talented
24
- developers. Special thanks to the following developers who contributed lots of
25
- code and ideas:
22
+ - Check out the [Showcase](http://showcase.sproutcore.com/) for demos of a number
23
+ of views and concepts.
24
+ - Check out lead developer Tyler Keating's book,
25
+ [SproutCore Web Application Development](http://blog.sproutcore.com/sproutcore-book-available/).
26
+ - Check out Juniper, the [web app](http://juniper.dcporter.net/) +
27
+ [annotated source code](https://github.com/dcporter/juniper) combo, for a deep
28
+ dive into SproutCore features and best practices in action.
26
29
 
27
- - Alex Iskander
28
- - Alex Johnson
29
- - Andreas Cederström
30
- - Andrew Dupont
31
- - Asko Soukka
32
- - Benedikt Böhm
33
- - Brandon Blatnick
34
- - Brandon Dimcheff
35
- - Brian Cully
36
- - Brian Mitchell
37
- - Brian Moore
38
- - Bruz Marzolf
39
- - Charles Jolley
40
- - Charlie Lai
41
- - Cherif Yaya
42
- - Chris Hyle
43
- - Christopher M Pieper
44
- - Christopher Swasey
45
- - Chuck Edwall
46
- - Colin Campbell
47
- - Corey Burrows
48
- - Cortland Klein
49
- - Devin Torres
50
- - Devon Govett
51
- - Emrys Ingersoll
52
- - Eric Kidd
53
- - Erich Ocean
54
- - Evin Grano
55
- - Ganesh J
56
- - Gareth Townsend
57
- - Geoffrey Donaldson
58
- - Gopal Sharma
59
- - Gregory Moeck
60
- - Hemanth Kumar
61
- - James A. Rosen
62
- - James Austin
63
- - James Craig
64
- - James F. Herdman
65
- - James Ribar
66
- - Jason Dooley
67
- - Jason Ketterman
68
- - Jeff Pittman
69
- - Jim Benton
70
- - Jiří Zajpt
71
- - Joe Gaudet
72
- - John Rogelstad
73
- - Jonathan Lewis
74
- - Joshua Dickens
75
- - Joshua Holt
76
- - Joubert Nel
77
- - Juan Pinzon
78
- - Julian Viereck
79
- - Konstantin Bender
80
- - Lauri Fjallstrom
81
- - Lawrence Pit
82
- - Levi McCallum
83
- - Luke Burton
84
- - Luke Melia
85
- - Mahesh Mukundan
86
- - Majd Taby
87
- - Martin Häcker
88
- - Martin Ottenwaelter
89
- - Matt Smith
90
- - Matthew Grantham
91
- - Matthias Loitsch
92
- - Maurits Lamers
93
- - Michael Cohen
94
- - Michael Gillogly
95
- - Michael Harris
96
- - Michael Krotscheck
97
- - Michael Rykov
98
- - Michal Kurgan
99
- - Mike Ball
100
- - Mike Subelsky
101
- - Mitch Oliver
102
- - Mitchell Rivera
103
- - Mohammed Ashik
104
- - Mohammed Taher
105
- - Nathan Baxter
106
- - Nicolas Badia
107
- - Nirumal Thomas
108
- - Nitin Gupta
109
- - Onar Vikingstad
110
- - Patrick Walton
111
- - Paul Chavard
112
- - Paul Lambert
113
- - Peter Bergström
114
- - Peter Wagenet
115
- - Piotr Sarnacki
116
- - Piotr Steininger
117
- - Rajesh Segu
118
- - Ray Bodenhorn
119
- - Rich Harrison
120
- - Richard Klancer
121
- - Rick Russell
122
- - Rob Linton
123
- - Robert Buchholz
124
- - Rodrigo Basa
125
- - Ryan Mudryk
126
- - Ryan Nielsen
127
- - Santhakumar Murugaiyan
128
- - Sean Eidemiller
129
- - Sergey Ukustov
130
- - Steven Tate
131
- - Sudarshan Bhat
132
- - Sunny Ripert
133
- - Suvajit Gupta
134
- - Tanner Donovan
135
- - Teresa Tsui
136
- - Thomas Balthazar
137
- - Thomas Bartelmess
138
- - Thomas Bradford
139
- - Thomas Lang
140
- - Tim Evans
141
- - Tom Dale
142
- - Tomasz Mazur
143
- - Topher Fangio
144
- - Trek Glowacki
145
- - Tyler Keating
146
- - Umberto Nicoletti
147
- - Vibul Imtarnasa
148
- - Vincent Fiano
149
- - Wesley Workman
150
- - William Kakes
151
- - Yehuda Katz
152
- - Yogesh Kumar
30
+ ## Support
31
+
32
+ Resources for SproutCore developers include [the docs](http://docs.sproutcore.com/)
33
+ for API documentation, and [the Guides](http://guides.sproutcore.com/) for a
34
+ series of topical walk-throughs.
35
+
36
+ For additional SproutCore user support, join the
37
+ [mailing list](https://groups.google.com/group/sproutcore), or stop by the #sproutcore
38
+ [IRC channel](http://sproutcore.com/community/#tab=irc). For those interested in
39
+ contributing to the framework itself, please join sproutcore-dev@googlegroups.com.
153
40
 
154
41
  ## Acknowledgements
155
42
 
@@ -38,6 +38,11 @@ Showcase.sources = SC.Object.create(SC.CollectionContent, SC.TreeItemContent, {
38
38
  name: "Displaying Big Data",
39
39
  view: 'Showcase.mainPage.demoView'
40
40
  }),
41
+ SC.Object.create({
42
+ appPath: 'http://demos.sproutcore.com/flot_demo',
43
+ name: "Flot (or other) Integration",
44
+ view: 'Showcase.mainPage.demoView'
45
+ }),
41
46
  SC.Object.create({
42
47
  appPath: 'http://demos.sproutcore.com/lively_view_demo',
43
48
  name: "Transition Plugins",
@@ -129,10 +134,10 @@ Showcase.sources = SC.Object.create(SC.CollectionContent, SC.TreeItemContent, {
129
134
  name: "SC.SourceListView",
130
135
  view: 'Showcase.viewsPage.sourceListViews'
131
136
  }),
132
- // SC.Object.create({
133
- // name: "SC.SplitView",
134
- // view: 'Showcase.viewsPage.splitViews'
135
- // }),
137
+ SC.Object.create({
138
+ name: "SC.SplitView",
139
+ view: 'Showcase.viewsPage.splitViews'
140
+ }),
136
141
  SC.Object.create({
137
142
  name: "SC.StackedView",
138
143
  view: 'Showcase.viewsPage.stackedViews'
@@ -382,3 +382,8 @@ $theme.sc-label-view.tab-view {
382
382
  background-color: #ff2e2a;
383
383
  }
384
384
  }
385
+
386
+ $theme.demo-split-view-label {
387
+ text-align: center;
388
+ line-height: 40px;
389
+ }
@@ -23,7 +23,7 @@ Showcase.ViewsItemContent = SC.Object.extend({
23
23
 
24
24
  parts = example.split(' ');
25
25
  parts.forEach(function(part, index) {
26
- if (part.indexOf('.extend(') >= 0 || part.indexOf('function(') >= 0 || part.indexOf('({') >= 0) {
26
+ if (part.indexOf('.extend(') >= 0 || part.indexOf('.design(') >= 0 || part.indexOf('function(') >= 0 || part.indexOf('({') >= 0) {
27
27
  parts[index] = padding + part;
28
28
  padding += ' ';
29
29
  } else if (part.indexOf('}.property') >= 0 || part.indexOf('})') >= 0) {
@@ -13,10 +13,23 @@ sc_require('views/views_list_view.js');
13
13
  */
14
14
  Showcase.splitViews = SC.ScrollView.design({
15
15
  contentView: Showcase.ViewsListView.design({
16
+ exampleHeight: 200,
16
17
  content: [
17
18
  Showcase.ViewsItemContent.create({
18
- title: 'Regular',
19
- example: "SC.SplitView.extend({ layout: { top: 20, bottom: 20, left: 20, right: 20 }, topLeftView: SC.LabelView.design({ value: 'Left View' }), bottomRightView: SC.LabelView.design({ value: 'Right View' }) })"
19
+ title: 'Horizontal (default)',
20
+ example: "SC.SplitView.extend({ layout: { top: 20, bottom: 20, left: 20, right: 20 }, childViews: ['leftView', 'rightView'], leftView: SC.LabelView.design(SC.SplitChild, { classNames: ['demo-split-view-label'], value: 'Left View', minimumSize: 80 }), rightView: SC.LabelView.design(SC.SplitChild, { classNames: ['demo-split-view-label'], value: 'Right View', minimumSize: 80 }) })"
21
+ }),
22
+ Showcase.ViewsItemContent.create({
23
+ title: 'Vertical',
24
+ example: "SC.SplitView.extend({ layoutDirection: SC.LAYOUT_VERTICAL, layout: { top: 20, bottom: 20, left: 20, right: 20 }, childViews: ['topView', 'bottomView'], topView: SC.LabelView.design(SC.SplitChild, { classNames: ['demo-split-view-label'], value: 'Top View', minimumSize: 40 }), bottomView: SC.LabelView.design(SC.SplitChild, { classNames: ['demo-split-view-label'], value: 'Bottom View', minimumSize: 40 }) })"
25
+ }),
26
+ Showcase.ViewsItemContent.create({
27
+ title: 'Custom Initial Size',
28
+ example: "SC.SplitView.extend({ layout: { top: 20, bottom: 20, left: 20, right: 20 }, childViews: ['leftView', 'rightView'], leftView: SC.LabelView.design(SC.SplitChild, { classNames: ['demo-split-view-label'], size: 120, value: 'Left View', minimumSize: 80 }), rightView: SC.LabelView.design(SC.SplitChild, { classNames: ['demo-split-view-label'], value: 'Right View', minimumSize: 80 }) })"
29
+ }),
30
+ Showcase.ViewsItemContent.create({
31
+ title: 'Three Children',
32
+ example: "SC.SplitView.extend({ layout: { top: 20, bottom: 20, left: 20, right: 20 }, childViews: ['leftView', 'middleView', 'rightView'], leftView: SC.LabelView.design(SC.SplitChild, { classNames: ['demo-split-view-label'], value: 'Left View', minimumSize: 80 }), middleView: SC.LabelView.design(SC.SplitChild, { classNames: ['demo-split-view-label'], value: 'Middle View', minimumSize: 80 }), rightView: SC.LabelView.design(SC.SplitChild, { classNames: ['demo-split-view-label'], value: 'Right View', minimumSize: 80 }) })"
20
33
  })
21
34
  ]
22
35
  })
@@ -16,7 +16,7 @@ Showcase.stackedViews = SC.ScrollView.design({
16
16
  content: [
17
17
  Showcase.ViewsItemContent.create({
18
18
  title: 'Regular',
19
- example: "SC.ScrollView.extend({ classNames: ['my-scroll-view'], layout: { left: 20, right: 20, top: 20, bottom: 20 }, contentView: SC.StackedView.extend({ classNames: ['my-stacked-view'], content: ['These rows have statically laid out content with random heights. Selecting a row causes the row to re-render and change its height.',1,2,3,4,5,6], exampleView: SC.View.extend({ displayProperties: ['isSelected'], useStaticLayout: true, render: function(context) { context.setClass('sel', this.get('isSelected')); context.push('<div style=\"height: ' + (20 + Math.round((Math.random() * 100))) + 'px;\">' + this.get('content') + '</div>'); } }), selectionDidChange: function() { this.updateHeight(false); }.observes('selection') }) })"
19
+ example: "SC.ScrollView.extend({ classNames: ['my-scroll-view'], layout: { left: 20, right: 20, top: 20, bottom: 20 }, contentView: SC.StackedView.extend({ classNames: ['my-stacked-view'], content: ['These rows have statically laid out content with random heights. Selecting a row causes the row to re-render with a new height.',1,2,3,4,5,6], exampleView: SC.View.extend({ displayProperties: ['isSelected'], useStaticLayout: true, render: function(context) { context.setClass('sel', this.get('isSelected')); context.push('<div style=\"height: ' + (20 + Math.round((Math.random() * 100))) + 'px;\">' + this.get('content') + '</div>'); } }), selectionDidChange: function() { this.updateHeight(false); }.observes('selection') }) })"
20
20
  })
21
21
  ],
22
22
  exampleHeight: 420
@@ -205,8 +205,18 @@ TestRunner.mainPage = SC.Page.design({
205
205
 
206
206
  locationLabel: SC.LabelView.design({
207
207
  classNames: ['location-label'],
208
+ escapeHTML: false,
208
209
  layout: { right: 10, centerY: 0, height: 16, left: 100 },
209
- valueBinding: SC.Binding.oneWay("TestRunner.testController.displayName")
210
+ contentBinding: SC.Binding.oneWay("TestRunner.testController.content"),
211
+ value: function () {
212
+ var content = this.get('content');
213
+
214
+ if (content) {
215
+ return '<a href="%@" target="_blank">%@</a>'.fmt(content.get('url'), content.get('displayName'));
216
+ } else {
217
+ return '';
218
+ }
219
+ }.property('content')
210
220
  })
211
221
 
212
222
  }),
@@ -0,0 +1,90 @@
1
+ // ==========================================================================
2
+ // Project: SC.WebSocket
3
+ // Copyright: ©2013 Nicolas BADIA and contributors
4
+ // License: Licensed under MIT license (see license.js)
5
+ // ==========================================================================
6
+
7
+ /**
8
+ @namespace
9
+
10
+ A WebSocket Delegate is consulted by `SC.WebSocket` when events are received.
11
+ You may want to handle this events before propagate them to eventual listeners.
12
+
13
+ Example:
14
+
15
+ var ws = SC.WebSocket.create({
16
+ server: 'ws://server',
17
+ delegate: MyApp.WebSocketDelegate
18
+ });
19
+
20
+ @since SproutCore 1.11
21
+ @author Nicolas BADIA
22
+ */
23
+ SC.WebSocketDelegate = {
24
+
25
+ /**
26
+ Walk like a duck
27
+
28
+ @type Boolean
29
+ */
30
+ isWebSocketDelegate: true,
31
+
32
+ // ..........................................................
33
+ // CALLBACKS
34
+ //
35
+
36
+ /**
37
+ The passed webSocket connection is open.
38
+
39
+ @param webSocket {SC.WebSocket} The webSocket object
40
+ @param event {Event}
41
+ */
42
+ webSocketDidOpen: function (webSocket, event) {},
43
+
44
+ /**
45
+ A message has been received. Before processing it, you have
46
+ a chance to check it.
47
+
48
+ For example, if `isJSON` is true, you will want to check if the message
49
+ is a correct JSON.
50
+
51
+ @param webSocket {SC.WebSocket} The webSocket object
52
+ @param data {String}
53
+ @returns {String|Boolean} Return true to prevent further handling
54
+ */
55
+ webSocketDidReceiveMessage: function (webSocket, data) {
56
+ switch(data) {
57
+ case 'ping': return true; break;
58
+ }
59
+
60
+ if (this.get('isJSON')) {
61
+ try {
62
+ JSON.parse(data);
63
+ }
64
+ catch(e) {
65
+ return true;
66
+ }
67
+ }
68
+ },
69
+
70
+ /**
71
+ The websocket connection is close. Return true to prevent a
72
+ reconnection or further handling.
73
+
74
+ @param webSocket {SC.WebSocket} The webSocket object
75
+ @param closeEvent {CloseEvent} The closeEvent
76
+ @returns {Boolean} Return true to prevent further handling
77
+ */
78
+ webSocketDidClose: function (webSocket, closeEvent) {},
79
+
80
+ /**
81
+ Call when an error occur.
82
+
83
+ @param webSocket {SC.WebSocket} The webSocket object
84
+ @param event {Event}
85
+ @returns {Boolean} Return true to prevent further handling
86
+ */
87
+ webSocketDidError: function (webSocket, event) {},
88
+
89
+ };
90
+
@@ -30,6 +30,18 @@ SC.Request = SC.Object.extend(SC.Copyable, SC.Freezable,
30
30
  // PROPERTIES
31
31
  //
32
32
 
33
+ /**
34
+ Whether to allow credentials, such as Cookies, in the request. While this has no effect on
35
+ requests to the same domain, cross-domain requests require that the transport be configured to
36
+ allow the inclusion of credentials such as Cookies.
37
+
38
+ You can change this property using the chainable `credentials()` helper method (or set it directly).
39
+
40
+ @type Boolean
41
+ @default YES
42
+ */
43
+ allowCredentials: YES,
44
+
33
45
  /**
34
46
  Sends the request asynchronously instead of blocking the browser. You
35
47
  should almost always make requests asynchronous. You can change this
@@ -88,6 +100,29 @@ SC.Request = SC.Object.extend(SC.Copyable, SC.Freezable,
88
100
  return ret;
89
101
  }.property().cacheable(),
90
102
 
103
+ /**
104
+ Whether the request is within the same domain or not. The response class may use this property
105
+ to determine specific cross domain configurations.
106
+
107
+ @field
108
+ @type Boolean
109
+ */
110
+ isSameDomain: function () {
111
+ var address = this.get('address'),
112
+ urlRegex = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
113
+ location = window.location,
114
+ parts, originParts;
115
+
116
+ // This pattern matching strategy was taken from jQuery.
117
+ parts = urlRegex.exec( address.toLowerCase() );
118
+ originParts = urlRegex.exec( window.location.href.toLowerCase() );
119
+
120
+ return SC.none(parts) ||
121
+ (parts[1] === originParts[1] && // protocol
122
+ parts[2] === originParts[2] && // domain
123
+ (parts[3] || (parts[1] === "http:" ? 80 : 443 ) ) === (originParts[3] || (originParts[1] === "http:" ? 80 : 443))); // port
124
+ }.property('address').cacheable(),
125
+
91
126
  /**
92
127
  Underlying response class to actually handle this request. Currently the
93
128
  only supported option is SC.XHRResponse which uses a traditional
@@ -222,7 +257,7 @@ SC.Request = SC.Object.extend(SC.Copyable, SC.Freezable,
222
257
  concatenatedProperties: 'COPY_KEYS',
223
258
 
224
259
  /** @private */
225
- COPY_KEYS: ['attachIdentifyingHeaders', 'isAsynchronous', 'isJSON', 'isXML', 'address', 'type', 'timeout', 'body', 'responseClass', 'willSend', 'didSend', 'willReceive', 'didReceive'],
260
+ COPY_KEYS: ['attachIdentifyingHeaders', 'allowCredentials', 'isAsynchronous', 'isJSON', 'isXML', 'address', 'type', 'timeout', 'body', 'responseClass', 'willSend', 'didSend', 'willReceive', 'didReceive'],
226
261
 
227
262
  /**
228
263
  Returns a copy of the current request. This will only copy certain
@@ -318,6 +353,17 @@ SC.Request = SC.Object.extend(SC.Copyable, SC.Freezable,
318
353
  return this.set('isAsynchronous', flag);
319
354
  },
320
355
 
356
+ /**
357
+ Converts the current request to request allowing credentials or not.
358
+
359
+ @param {Boolean} flag YES to request allowing credentials, NO to disallow credentials. Default YES.
360
+ @returns {SC.Request} receiver
361
+ */
362
+ credentials: function(flag) {
363
+ if (flag === undefined) { flag = YES; }
364
+ return this.set('allowCredentials', flag);
365
+ },
366
+
321
367
  /**
322
368
  Sets the maximum amount of time the request will wait for a response.
323
369
 
@@ -480,6 +526,12 @@ SC.Request = SC.Object.extend(SC.Copyable, SC.Freezable,
480
526
  notify: function(statusOrEvent, target, action) {
481
527
  var args;
482
528
 
529
+ //@if (debug)
530
+ if (statusOrEvent === 'loadend' && SC.Request.WARN_ON_LOADEND) {
531
+ SC.warn("Developer Warning: You have called SC.Request#notify for the 'loadend' event. Note that on certain platforms, like older iPads, loadend is not supported and this notification will fail silently. You can protect against this by checking SC.platform.get('supportsXHR2LoadEndEvent'), and attaching listeners for load, error and abort instead. (This is not done automatically because your code may need to handle event type and fire order considerations.) To suppress this warning, set SC.Request.WARN_ON_LOADEND to NO.");
532
+ }
533
+ //@endif
534
+
483
535
  // Normalize arguments
484
536
  if (SC.typeOf(statusOrEvent) !== SC.T_NUMBER && SC.typeOf(statusOrEvent) !== SC.T_STRING) {
485
537
  // Accept multiple additional arguments (Do so before shifting the arguments!)
@@ -571,6 +623,9 @@ SC.Request.mixin(
571
623
 
572
624
  });
573
625
 
626
+ /* @private Gates loadend warning. */
627
+ SC.Request.WARN_ON_LOADEND = YES;
628
+
574
629
  /**
575
630
  @class
576
631
 
@@ -639,7 +694,7 @@ SC.Request.manager = SC.Object.create(
639
694
  Cancels a specific request. If the request is pending it will simply
640
695
  be removed. Otherwise it will actually be cancelled.
641
696
 
642
- @param {Object} response a response object
697
+ @param {SC.Response} response a response object
643
698
  @returns {Boolean} YES if cancelled
644
699
  */
645
700
  cancel: function(response) {
@@ -682,13 +737,13 @@ SC.Request.manager = SC.Object.create(
682
737
  var r = inflight.objectAt(i);
683
738
  r.cancel();
684
739
  }
685
-
740
+
686
741
  // Manually scrub the arrays without screwing up memory pointers.
687
742
  pending.replace(0, pendingLen);
688
743
  inflight.replace(0, inflightLen);
689
-
744
+
690
745
  return YES;
691
-
746
+
692
747
  }
693
748
  return NO;
694
749
  },
@@ -717,8 +772,29 @@ SC.Request.manager = SC.Object.create(
717
772
  the transport from the queue and kicks off the next one.
718
773
  */
719
774
  transportDidClose: function(response) {
775
+ this.get('pending').removeObject(response);
720
776
  this.get('inflight').removeObject(response);
721
777
  this.fireRequestIfNeeded();
778
+ },
779
+
780
+ /**
781
+ Checks if the response is in the pending queue.
782
+
783
+ @param {SC.Response} response a response object
784
+ @return {Boolean} is response in pending queue
785
+ */
786
+ isPending: function(response) {
787
+ return this.get('pending').contains(response);
788
+ },
789
+
790
+ /**
791
+ Checks if the response is in the inflight queue.
792
+
793
+ @param {SC.Response} response a response object
794
+ @return {Boolean} is response in inflight queue
795
+ */
796
+ isInFlight: function(response) {
797
+ return this.get('inflight').contains(response);
722
798
  }
723
799
 
724
800
  });