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
@@ -270,10 +270,14 @@ SC.ObjectDesigner.mixin({
270
270
  needed.
271
271
  */
272
272
  didCreateObject: function(object, attrs) {
273
+ // GATEKEEP: If this isn't a design, bail.
274
+ if (!object.constructor.isDesign) return;
275
+
273
276
  // add designer if page is in design mode
274
- var page = object.get('page'), design = object.constructor;
275
-
276
- if (design.isDesign && page && page.get('needsDesigner')) {
277
+ var page = object.get('page'),
278
+ design = object.constructor;
279
+
280
+ if (page && page.get('needsDesigner')) {
277
281
 
278
282
  // find the designer class
279
283
  var cur = design, origDesign = design;
@@ -6,92 +6,173 @@
6
6
  // ==========================================================================
7
7
 
8
8
 
9
- /**
9
+ /**
10
10
  @namespace
11
-
12
- `CollectionRowDelegate`s are consulted by `SC.ListView` and `SC.TableView` to
13
- control the height of rows, including specifying custom heights for
14
- specific rows.
15
-
16
- You can implement a custom row height in one of two ways.
11
+
12
+ `CollectionRowDelegate`s are consulted by collection views, such as `SC.ListView`
13
+ that lay out items in vertical or horizontal rows, in order to determine the
14
+ height or width of each row.
17
15
  */
18
16
  SC.CollectionRowDelegate = {
19
17
 
20
18
  /**
21
19
  Walk like a duck.
22
-
20
+
23
21
  @type Boolean
24
- @default YES
22
+ @default true
25
23
  */
26
- isCollectionRowDelegate: YES,
27
-
28
- /**
24
+ isCollectionRowDelegate: true,
25
+
26
+ /** @deprecated Version 1.11. Please use the `rowSize` property instead.
29
27
  Size of an item without spacing or padding.
30
- Unless you implement some custom row height
31
- support, this row height will be used for all items.
32
-
28
+ Unless you implement custom row height or widths upport, this row height will be used for all items.
29
+
33
30
  @type Number
34
- @default 18
31
+ @default 24
35
32
  */
36
- itemHeight: 24,
37
-
33
+ itemHeight: null,
34
+
35
+ /**
36
+ The height or width of a row before padding depending on whether the
37
+ collection is laid out vertically or horizontally.
38
+
39
+ Unless you implement custom row size support, this value will be used for
40
+ all rows.
41
+
42
+ @type Number
43
+ @default 24
44
+ */
45
+ // This is a computed property in order to provide backwards compatibility for itemHeight.
46
+ // When itemHeight is removed completely, this can become a simple `24` value.
47
+ rowSize: function (key, value) {
48
+ var itemHeight = this.get('itemHeight'),
49
+ ret = 24;
50
+
51
+ // Backwards compatibility support
52
+ if (!SC.none(itemHeight)) {
53
+ //@if(debug)
54
+ SC.warn('Developer Warning: The itemHeight property of SC.CollectionRowDelegate has been renamed to rowSize.');
55
+ //@endif
56
+
57
+ return itemHeight;
58
+ }
59
+
60
+ if (!SC.none(value)) { ret = value; }
61
+
62
+ return ret;
63
+ }.property('itemHeight').cacheable(),
64
+
38
65
  /**
39
- This inserts empty space between rows that you can use for borders.
40
-
66
+ The amount of space to leave between each row.
67
+
68
+ This is useful when you need to leave space for borders.
69
+
41
70
  @type Number
42
71
  @default 0
43
72
  */
44
73
  rowSpacing: 0,
45
-
74
+
46
75
  /**
76
+ Padding space added to the top and bottom of each row when laid out vertically,
77
+ or to the left and right when laid out horizontally.
78
+
47
79
  This is useful if you are using a custom item view that needs to be padded.
48
- This value is added to the top and bottom of the `itemHeight`.
49
-
80
+
50
81
  @type Number
51
82
  @default 0
52
83
  */
53
84
  rowPadding: 0,
54
-
55
- /**
56
- Total row height used for calculation. Equal to `itemHeight + (2 * rowPadding)`.
57
-
85
+
86
+ /** @deprecated Version 1.11. Please use a combination of rowSize and rowPadding to specify the total height or width of each row.
87
+ Total row size used for calculation. Equal to `rowSize + (2 * rowPadding)`.
88
+
58
89
  @type Number
59
90
  */
60
- rowHeight: function(key, value) {
61
- var rowPadding = this.get('rowPadding');
62
- var itemHeight = this.get('itemHeight');
91
+ rowHeight: function (key, value) {
92
+ var rowPadding = this.get('rowPadding'),
93
+ rowSize = this.get('rowSize');
63
94
 
64
95
  if (value !== undefined) {
65
- this.set('itemHeight', value-rowPadding*2);
96
+ this.set('rowSize', value - rowPadding * 2);
66
97
  return value;
67
98
  }
68
99
 
69
- return itemHeight + rowPadding * 2;
70
- }.property('itemHeight', 'rowPadding'),
100
+ return rowSize + rowPadding * 2;
101
+ }.property('rowSize', 'rowPadding'),
71
102
 
72
- /**
103
+ /** @private - Returns the total row size based on rowSize and rowPadding for convenience. */
104
+ _sc_totalRowSize: function () {
105
+ // Backwards compatibility in case the rowHeight property is set directly.
106
+ return this.get('rowHeight');
107
+ }.property('rowHeight'),
108
+
109
+ /** @deprecated Version 1.11. Please use the `customRowSizeIndexes` property instead.
73
110
  Index set of rows that should have a custom row height. If you need
74
111
  certain rows to have a custom row height, then set this property to a
75
112
  non-null value. Otherwise leave it blank to disable custom row heights.
76
-
113
+
77
114
  @type SC.IndexSet
78
115
  */
79
116
  customRowHeightIndexes: null,
80
-
117
+
81
118
  /**
82
- Called for each index in the `customRowHeightIndexes` set to get the
119
+ Index set of rows that should have a custom row height. If you need
120
+ certain rows to have a custom row height, then set this property to a
121
+ non-null value. Otherwise leave it blank to disable custom row heights.
122
+
123
+ @type SC.IndexSet
124
+ */
125
+ // This is a computed property in order to provide backwards compatibility for customRowHeightIndexes.
126
+ // When customRowHeightIndexes is removed completely, this can become a simple `null` value.
127
+ customRowSizeIndexes: function (key, value) {
128
+ var customRowHeightIndexes = this.get('customRowHeightIndexes'),
129
+ ret = null;
130
+
131
+ // Backwards compatibility support.
132
+ if (!SC.none(customRowHeightIndexes)) {
133
+ //@if(debug)
134
+ SC.warn('Developer Warning: The customRowHeightIndexes property of SC.CollectionRowDelegate has been renamed to customRowSizeIndexes.');
135
+ //@endif
136
+
137
+ return customRowHeightIndexes;
138
+ }
139
+
140
+ if (!SC.none(value)) { ret = value; }
141
+
142
+ return ret;
143
+ }.property('customRowHeightIndexes').cacheable(),
144
+
145
+ /** @deprecated Version 1.11. Please use the `contentIndexRowSize()` function instead.
146
+ Called for each index in the `customRowSizeIndexes` set to get the
83
147
  actual row height for the index. This method should return the default
84
- rowHeight if you don't want the row to have a custom height.
85
-
86
- The default implementation just returns the default rowHeight.
87
-
148
+ rowSize if you don't want the row to have a custom height.
149
+
150
+ The default implementation just returns the default rowSize.
151
+
88
152
  @param {SC.CollectionView} view the calling view
89
153
  @param {Object} content the content array
90
- @param {Number} contentIndex the index
154
+ @param {Number} contentIndex the index
91
155
  @returns {Number} row height
92
156
  */
93
- contentIndexRowHeight: function(view, content, contentIndex) {
94
- return this.get('rowHeight');
157
+ contentIndexRowHeight: function (view, content, contentIndex) {
158
+ return this.get('_sc_totalRowSize');
159
+ },
160
+
161
+ /**
162
+ Called for each index in the `customRowSizeIndexes` set to get the
163
+ actual row size for the index. This method should return the default
164
+ rowSize if you don't want the row to have a custom size.
165
+
166
+ The default implementation just returns the default rowSize plus rowPadding.
167
+
168
+ @param {SC.CollectionView} view the calling view
169
+ @param {Object} content the content array
170
+ @param {Number} contentIndex the index
171
+ @returns {Number} row size
172
+ */
173
+ contentIndexRowSize: function (view, content, contentIndex) {
174
+ // Backwards compatibility in case the contentIndexRowHeight function is overridden.
175
+ return this.contentIndexRowHeight(view, content, contentIndex);
95
176
  }
96
177
 
97
178
  };
@@ -41,7 +41,8 @@ SC.BUTTON3_STATUS = 'button3';
41
41
  Alert panes are a simple way to provide modal messaging that otherwise
42
42
  blocks the user's interaction with your application. Alert panes are
43
43
  useful for showing important error messages and confirmation dialogs. They
44
- provide a better user experience than using the OS-level alert dialogs.
44
+ provide a substantially better user experience than using the OS-level alert
45
+ dialogs.
45
46
 
46
47
  ## Displaying an Alert Pane
47
48
 
@@ -51,27 +52,76 @@ SC.BUTTON3_STATUS = 'button3';
51
52
 
52
53
  There are four variations of this method can you can invoke:
53
54
 
54
- - `warn()` -- displays an alert pane with a warning icon to the left.
55
- - `error()` -- displays an alert with an error icon to the left
56
- - `info()` -- displays an alert with an info icon to the left
57
- - `plain()` -- displays an alert w/o any icon
58
- - `show()` -- displays an alert with a customizable icon to the left
59
-
60
- In addition to passing a message, description and caption, you can also customize
61
- the title of the button 1 (OK) and add an optional button 2 and 3 (Cancel or Extra).
62
-
63
- - button1 -- 1st button from the right. default:OK
64
- - button2 -- 2nd button from the right. Optional. Could be Cancel or 2nd action.
65
- - button3 -- 1st button from the left. Optional. Could be Cancel or alternative option.
66
-
67
- Additionally, you can define a delegate object. This delegate's
68
- `alertPaneDidDismiss()` method will be called when the pane
69
- is dismissed, passing the pane instance and a key indicating which
70
- button was pressed.
55
+ - `warn({})` -- displays an alert pane with a warning icon to the left.
56
+ - `error()` -- displays an alert with an error icon.
57
+ - `info()` -- displays an alert with an info icon.
58
+ - `plain()` -- displays an alert with no icon.
59
+ - `show()` -- displays an alert with the icon class you specify.
60
+
61
+ Each method takes a single argument: a hash of options. These options include:
62
+
63
+ - `message` -- The alert's title message.
64
+ - `description` -- A longer description of the alert, displayed below the title
65
+ in a smaller font.
66
+ - `caption` -- A third layer of alert text, displayed below the description in
67
+ an even-smaller font.
68
+ - `icon` -- This is set for you automatically unless you call `show`. You may
69
+ specify any icon class you wish. The icon is displayed at the alert pane's
70
+ left.
71
+ - `themeName` -- A button theme that is applied to each button. The default is
72
+ `capsule`.
73
+ - `delegate` -- A delegate to be notified when the user reacts to your pane. See
74
+ "Responding to User Actions" below.
75
+ - `buttons` -- An array of up to three hashes used to customize the alert's buttons.
76
+ See "Customizing Buttons" below.
77
+
78
+ ## Responding to User Actions
79
+
80
+ Often, you may wish to be notified when the user has dismissed to your alert. You
81
+ have two options: you may specify a delegate in the options hash, or you may
82
+ customize each button with a target & action.
83
+
84
+ If you specify a delegate, it must implement a method with the following signature:
85
+ `alertPaneDidDismiss(pane, buttonKey)`. When the user dismisses your alert, this
86
+ method will be called with the pane instance and a key indicating which button was
87
+ pressed (one of either `SC.BUTTON1_STATUS`, `SC.BUTTON2_STATUS` or `SC.BUTTON3_STATUS`).
88
+
89
+ If you specify a target/action for a button (see "Customizing Buttons" below) and the
90
+ user dismisses the alert with that button, that action will be triggered. If you specify
91
+ a delegate but no target, the delegate will be used as the target. The action will
92
+ be called with the alert pane itself as the sender (first argument).
93
+
94
+ ## Customizing Buttons
95
+
96
+ SC.AlertPane allows you to specify up to three buttons, arranged from right to left (as
97
+ on Mac OS X). You can customize them by passing an array of up to three options hashes
98
+ on the `buttons` property. By default, the first, rightmost button is the default (i.e.
99
+ it is triggered when the user hits the enter key), and the second button is the "cancel"
100
+ button (triggered by the escape key).
101
+
102
+ If you don't specify any buttons, a single default "OK" button will appear.
103
+
104
+ You may customize the following button options:
105
+
106
+ - `title` -- The button text. Highly recommended unless you like empty buttons.
107
+ - `localize` -- Whether to localize the title.
108
+ - `toolTip` -- An extra hint to show when the user hovers the mouse over the button.
109
+ Make sure that the user can get along fine without this, as tooltips are hard to
110
+ discover and unavailable on touch devices!
111
+ - `isDefault` -- You may specify a different button than the first, rightmost button
112
+ to be the default (triggered by the enter key, and visually distinct in the default
113
+ Ace theme).
114
+ - `isCancel` -- You may specify a different button than the second, middle button
115
+ to be the cancel button (triggered by the escape key).
116
+ - `target` & `action` -- Supports the target/action pattern (see "Responding to User
117
+ Actions" above).
118
+
119
+ (You may also specify a layerId for the button if needed. As always, using custom
120
+ layerIds is dangerous and should be avoided unless you know what you're doing.)
71
121
 
72
122
  ## Examples
73
123
 
74
- Show a simple AlertPane with an OK button:
124
+ Show a simple AlertPane with a warning (!) icon and an OK button:
75
125
 
76
126
  SC.AlertPane.warn({
77
127
  message: "Could not load calendar",
@@ -79,8 +129,7 @@ SC.BUTTON3_STATUS = 'button3';
79
129
  caption: "Try again in a few minutes."
80
130
  });
81
131
 
82
- Show an AlertPane with a customized OK title (title will be 'Try Again') and
83
- custom action:
132
+ Show an AlertPane with a customized OK button title (title will be 'Try Again'):
84
133
 
85
134
  SC.AlertPane.warn({
86
135
  message: "Could not load calendar",
@@ -91,9 +140,20 @@ SC.BUTTON3_STATUS = 'button3';
91
140
  ]
92
141
  });
93
142
 
94
- Show an AlertPane with a custom OK, a Cancel button and an Extra button,
95
- each with custom titles. Also, pass a delegate that will be invoked when
96
- the user's dismisses the dialog.
143
+ Show an AlertPane with fully customized buttons:
144
+
145
+ SC.AlertPane.show({
146
+ message: "Could not load calendar",
147
+ description: "Your internet connection may be unavailable or our servers may be down.",
148
+ caption: "Try again in a few minutes.",
149
+ buttons: [
150
+ { title: "Try Again", toolTip: "Retry the connection", isDefault: true },
151
+ { title: "More Info...", toolTip: "Get more info" },
152
+ { title: "Cancel", toolTip: "Cancel the action", isCancel: true }
153
+ ]
154
+ });
155
+
156
+ Show an alert pane, using the delegate pattern to respond to how the user dismisses it.
97
157
 
98
158
  MyApp.calendarController = SC.Object.create({
99
159
  alertPaneDidDismiss: function(pane, status) {
@@ -101,11 +161,9 @@ SC.BUTTON3_STATUS = 'button3';
101
161
  case SC.BUTTON1_STATUS:
102
162
  this.tryAgain();
103
163
  break;
104
-
105
164
  case SC.BUTTON2_STATUS:
106
165
  // do nothing
107
166
  break;
108
-
109
167
  case SC.BUTTON3_STATUS:
110
168
  this.showMoreInfo();
111
169
  break;
@@ -114,7 +172,6 @@ SC.BUTTON3_STATUS = 'button3';
114
172
  ...
115
173
  });
116
174
 
117
-
118
175
  SC.AlertPane.warn({
119
176
  message: "Could not load calendar",
120
177
  description: "Your internet connection may be unavailable or our servers may be down.",
@@ -127,8 +184,8 @@ SC.BUTTON3_STATUS = 'button3';
127
184
  ]
128
185
  });
129
186
 
130
- Instead of using the delegate pattern above, you can also specify a target
131
- and an action, similar to SC.ButtonView.
187
+ Show an alert pane using the target/action pattern on each button to respond to how the user
188
+ dismisses it.
132
189
 
133
190
  SC.AlertPane.warn({
134
191
  message: "Could not load calendar",
@@ -136,18 +193,23 @@ SC.BUTTON3_STATUS = 'button3';
136
193
  caption: "Try again in a few minutes.",
137
194
  buttons: [
138
195
  {
139
- title: "OK",
140
- action: "didClickOK",
196
+ title: "Try Again",
197
+ action: "doTryAgain",
198
+ target: MyApp.calendarController
199
+ },
200
+ {
201
+ title: "Cancel",
202
+ action: "doCancel",
203
+ target: MyApp.calendarController
204
+ },
205
+ {
206
+ title: "More Info…",
207
+ action: "doGiveMoreInfo",
141
208
  target: MyApp.calendarController
142
209
  }
143
210
  ]
144
211
  });
145
212
 
146
- Also note that in addition to passing the action as a string of the method
147
- name that will be invoked, you can also give a function reference as the
148
- action.
149
-
150
-
151
213
  @extends SC.PanelPane
152
214
  @since SproutCore 1.0
153
215
  */
@@ -430,32 +492,61 @@ SC.AlertPane.mixin(
430
492
  @param {Hash} args
431
493
  @return {SC.AlertPane} the pane shown
432
494
  */
433
- show: function(args) {
495
+ show: function (args) {
434
496
  // normalize the arguments if this is a deprecated call
435
497
  args = SC.AlertPane._argumentsCall.apply(this, arguments);
436
498
 
437
499
  var pane = this.create(args),
438
- idx = 0,
500
+ idx,
439
501
  buttons = args.buttons,
440
- buttonView, title, action, target, themeName;
502
+ button, buttonView, layerId, title, toolTip, action, target, themeName,
503
+ isDefault, isCancel, hasDefault, hasCancel;
504
+
505
+ if (buttons) {
506
+ //@if(debug)
507
+ // Provide some developer support for more than three button hashes.
508
+ if (buttons.length > 3) {
509
+ SC.warn("Tried to show SC.AlertPane with %@ buttons. SC.AlertPane only supports up to three buttons.".fmt(buttons.length));
510
+ }
511
+ //@endif
512
+
513
+ // Determine if any button hash specifies isDefault/isCancel. If so, we need
514
+ // to override the button views' default settings.
515
+ hasDefault = !!buttons.findProperty('isDefault');
516
+ hasCancel = !!buttons.findProperty('isCancel');
441
517
 
442
- if(buttons) {
443
- buttons.forEach(function(button) {
444
- idx++;
445
- if(!button) return;
446
- buttonView = pane.get('button%@'.fmt(idx));
518
+ for (idx = 0; idx < 3; idx++) {
519
+ button = buttons[idx];
520
+ if (!button) continue;
447
521
 
522
+ buttonView = pane.get('button%@'.fmt(idx + 1));
523
+
524
+ layerId = button.layerId;
448
525
  title = button.title;
526
+ localize = button.localize;
527
+ toolTip = button.toolTip;
449
528
  action = button.action;
450
529
  target = button.target;
451
530
  themeName = args.themeName || 'capsule';
452
531
 
453
- buttonView.set('title'.fmt(idx), title);
454
- if(action) buttonView.set('customAction'.fmt(idx), action);
455
- if(target) buttonView.set('customTarget'.fmt(idx), target);
532
+ // If any button has the isDefault/isCancel flags set, we
533
+ // explicitly cast the button's flag to bool, ensuring that this
534
+ // overrides the default. Otherwise, we use undefined so we skip
535
+ // setting the property, ensuring the default value is used.
536
+ isDefault = hasDefault ? !!button.isDefault : undefined;
537
+ isCancel = hasCancel ? !!button.isCancel : undefined;
538
+
539
+ buttonView.set('title', title);
540
+ if (localize === YES) buttonView.set('localize', YES);
541
+ if (toolTip) buttonView.set('toolTip', toolTip);
542
+ if (action) buttonView.set('customAction', action);
543
+ if (target) buttonView.set('customTarget', target);
544
+ if (layerId !== undefined) { buttonView.set('layerId', layerId); }
545
+ if (isDefault !== undefined) { buttonView.set('isDefault', isDefault); }
546
+ if (isCancel !== undefined) { buttonView.set('isCancel', isCancel); }
456
547
  buttonView.set('isVisible', !!title);
457
548
  buttonView.set('themeName', themeName);
458
- });
549
+ }
459
550
  } else {
460
551
  // if there are no buttons defined, just add the standard OK button
461
552
  buttonView = pane.get('button1');