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
@@ -11,8 +11,9 @@ sc_require('views/view/animation');
11
11
  SC.CSS_TRANSFORM_NAMES = ['rotateX', 'rotateY', 'rotateZ', 'scale'];
12
12
 
13
13
  SC.CSS_TRANSFORM_MAP = {
14
- rotate: function () {
15
- return null;
14
+ rotate: function (val) {
15
+ if (SC.typeOf(val) === SC.T_NUMBER) { val += 'deg'; }
16
+ return 'rotate(' + val + ')';
16
17
  },
17
18
 
18
19
  rotateX: function (val) {
@@ -103,6 +104,18 @@ SC.View.LayoutStyleCalculator = {
103
104
  }
104
105
 
105
106
  style[transformAttribute] = transforms.length > 0 ? transforms.join(' ') : null;
107
+
108
+ // Transform origin.
109
+ var transformOriginAttribute = SC.browser.experimentalStyleNameFor('transformOrigin'),
110
+ originX = layout.transformOriginX,
111
+ originY = layout.transformOriginY;
112
+ if (originX == null && originY == null) {
113
+ style[transformOriginAttribute] = null;
114
+ } else {
115
+ if (originX == null) originX = 0.5;
116
+ if (originY == null) originY = 0.5;
117
+ style[transformOriginAttribute] = (originX * 100) + '% ' + (originY * 100) + '%';
118
+ }
106
119
  }
107
120
 
108
121
  // Reset any transitions.
@@ -353,21 +366,23 @@ SC.View.LayoutStyleCalculator = {
353
366
 
354
367
  if (shouldTranslate) {
355
368
  var transformAttribute = SC.browser.experimentalStyleNameFor('transform'),
356
- curValue = style[transformAttribute];
369
+ curValue = style[transformAttribute],
370
+ newValue;
357
371
 
358
- // Don't overwrite previously transformed values.
359
- if (curValue) {
360
- curValue += ' ';
361
- } else {
362
- curValue = '';
363
- }
372
+ newValue = 'translateX(' + style.left + 'px) translateY(' + style.top + 'px)';
364
373
 
365
- style[transformAttribute] = curValue + 'translateX(' + style.left + 'px) translateY(' + style.top + 'px)';
374
+ // double check to make sure this is needed
375
+ if (SC.platform.supportsCSS3DTransforms) { newValue += ' translateZ(0px)'; }
376
+
377
+ // Append any current transforms.
378
+ // NOTE: The order of transforms is important. If we scale before translate, our translations
379
+ // will be scaled and incorrect.
380
+ if (curValue) { newValue += ' ' + curValue; }
381
+ style[transformAttribute] = newValue;
382
+
383
+ // Set the absolute left & top style to 0,0 (will be translated from there).
366
384
  style.left = 0;
367
385
  style.top = 0;
368
-
369
- // double check to make sure this is needed
370
- if (SC.platform.supportsCSS3DTransforms) { style[transformAttribute] += ' translateZ(0px)'; }
371
386
  }
372
387
  }
373
388
 
@@ -3,23 +3,10 @@ sc_require("views/view");
3
3
  SC.View.reopen(
4
4
  /** @scope SC.View.prototype */{
5
5
 
6
- /**
7
- This code exists to make it possible to pool SC.Views.
8
- */
9
- _lastLayerId: null,
10
-
11
- /** @private */
12
- init: function (original) {
13
- original();
14
-
15
- // Set up the cached layerId if it has been set on create.
16
- this._lastLayerId = this.get('layerId');
17
- }.enhance(),
18
-
19
6
  /**
20
7
  Handles changes in the layer id.
21
8
  */
22
- layerIdDidChange: function () {
9
+ layerIdDidChange: function() {
23
10
  var layer = this.get('layer'),
24
11
  lid = this.get('layerId'),
25
12
  lastId = this._lastLayerId;
@@ -60,7 +47,7 @@ SC.View.reopen(
60
47
  @param {SC.View} beforeView
61
48
  @returns {SC.View} the receiver
62
49
  */
63
- insertBefore: function (view, beforeView) {
50
+ insertBefore: function(view, beforeView) {
64
51
  view.beginPropertyChanges(); // limit notifications
65
52
 
66
53
  // Reset any views that are already building in or out.
@@ -80,25 +67,9 @@ SC.View.reopen(
80
67
  // }
81
68
  // });
82
69
 
83
- return this;
70
+ return this ;
84
71
  },
85
72
 
86
- removeChild: function (original, view) {
87
- if (!view) { return this; } // nothing to do
88
- if (view.parentView !== this) {
89
- throw new Error("%@.removeChild(%@) must belong to parent".fmt(this, view));
90
- }
91
-
92
- // notify views
93
- // TODO: Deprecate these notifications.
94
- if (view.willRemoveFromParent) { view.willRemoveFromParent(); }
95
- if (this.willRemoveChild) { this.willRemoveChild(view); }
96
-
97
- original(view);
98
-
99
- return this;
100
- }.enhance(),
101
-
102
73
  /**
103
74
  Replace the oldView with the specified view in the receivers childNodes
104
75
  array. This will also replace the DOM node of the oldView with the DOM
@@ -111,13 +82,13 @@ SC.View.reopen(
111
82
  @param view {SC.View} the view to remove from the DOM.
112
83
  @returns {SC.View} the receiver
113
84
  */
114
- replaceChild: function (view, oldView) {
85
+ replaceChild: function(view, oldView) {
115
86
  // suspend notifications
116
87
  view.beginPropertyChanges();
117
88
  oldView.beginPropertyChanges();
118
89
  this.beginPropertyChanges();
119
90
 
120
- this.insertBefore(view, oldView).removeChild(oldView);
91
+ this.insertBefore(view,oldView).removeChild(oldView) ;
121
92
 
122
93
  // resume notifications
123
94
  this.endPropertyChanges();
@@ -176,7 +147,7 @@ SC.View.reopen(
176
147
  // }
177
148
  this.endPropertyChanges();
178
149
 
179
- return this;
150
+ return this ;
180
151
  },
181
152
 
182
153
  /**
@@ -186,7 +157,7 @@ SC.View.reopen(
186
157
  @param view {SC.View} the view to insert
187
158
  @returns {SC.View} the receiver
188
159
  */
189
- appendChild: function (view) {
160
+ appendChild: function(view) {
190
161
  return this.insertBefore(view, null);
191
162
  },
192
163
 
@@ -200,7 +171,7 @@ SC.View.reopen(
200
171
 
201
172
  @deprecated Version 1.10
202
173
  */
203
- buildInChild: function (view) {
174
+ buildInChild: function(view) {
204
175
  view.willBuildInToView(this);
205
176
  this.appendChild(view);
206
177
  view.buildInToView(this);
@@ -212,7 +183,7 @@ SC.View.reopen(
212
183
 
213
184
  @deprecated Version 1.10
214
185
  */
215
- buildOutChild: function (view) {
186
+ buildOutChild: function(view) {
216
187
  view.buildOutFromView(this);
217
188
  },
218
189
 
@@ -221,14 +192,14 @@ SC.View.reopen(
221
192
 
222
193
  @deprecated Version 1.10
223
194
  */
224
- buildInDidFinishFor: function (child) {
195
+ buildInDidFinishFor: function(child) {
225
196
  },
226
197
 
227
198
  /**
228
199
  @private
229
200
  Called by child view when build out finishes. By default removes the child view.
230
201
  */
231
- buildOutDidFinishFor: function (child) {
202
+ buildOutDidFinishFor: function(child) {
232
203
  this.removeChild(child);
233
204
  },
234
205
 
@@ -251,7 +222,7 @@ SC.View.reopen(
251
222
 
252
223
  @deprecated Version 1.10
253
224
  */
254
- buildIn: function () {
225
+ buildIn: function() {
255
226
  //@if(debug)
256
227
  SC.warn("The SC.View build methods have been deprecated in favor of the transition plugins. To build in a view, please provide a transitionIn plugin (many are pre-built in SproutCore) and to build out a view, please provide a transitionOut plugin.");
257
228
  //@endif
@@ -263,7 +234,7 @@ SC.View.reopen(
263
234
 
264
235
  @deprecated Version 1.10
265
236
  */
266
- buildOut: function () {
237
+ buildOut: function() {
267
238
  //@if(debug)
268
239
  SC.warn("The SC.View build methods have been deprecated in favor of the transition plugins. To build in a view, please provide a transitionIn plugin (many are pre-built in SproutCore) and to build out a view, please provide a transitionOut plugin.");
269
240
  //@endif
@@ -276,7 +247,7 @@ SC.View.reopen(
276
247
  It is usually called before a build in, by the parent view.
277
248
  @deprecated Version 1.10
278
249
  */
279
- resetBuild: function () {
250
+ resetBuild: function() {
280
251
 
281
252
  },
282
253
 
@@ -289,7 +260,7 @@ SC.View.reopen(
289
260
 
290
261
  @deprecated Version 1.10
291
262
  */
292
- buildOutDidCancel: function () {
263
+ buildOutDidCancel: function() {
293
264
 
294
265
  },
295
266
 
@@ -303,7 +274,7 @@ SC.View.reopen(
303
274
 
304
275
  @deprecated Version 1.10
305
276
  */
306
- buildInDidCancel: function () {
277
+ buildInDidCancel: function() {
307
278
 
308
279
  },
309
280
 
@@ -312,7 +283,7 @@ SC.View.reopen(
312
283
 
313
284
  @deprecated Version 1.10
314
285
  */
315
- buildInDidFinish: function () {
286
+ buildInDidFinish: function() {
316
287
  this.isBuildingIn = NO;
317
288
  this._buildingInTo.buildInDidFinishFor(this);
318
289
  this._buildingInTo = null;
@@ -323,7 +294,7 @@ SC.View.reopen(
323
294
 
324
295
  @deprecated Version 1.10
325
296
  */
326
- buildOutDidFinish: function () {
297
+ buildOutDidFinish: function() {
327
298
  this.isBuildingOut = NO;
328
299
  this._buildingOutFrom.buildOutDidFinishFor(this);
329
300
  this._buildingOutFrom = null;
@@ -334,7 +305,7 @@ SC.View.reopen(
334
305
 
335
306
  @deprecated Version 1.10
336
307
  */
337
- resetBuildState: function () {
308
+ resetBuildState: function() {
338
309
  if (this.isBuildingIn) {
339
310
  this.buildInDidCancel();
340
311
  this.isBuildingIn = NO;
@@ -359,7 +330,7 @@ SC.View.reopen(
359
330
 
360
331
  Mostly, this cancels any build out _before_ the view is removed through parent change.
361
332
  */
362
- willBuildInToView: function (view) {
333
+ willBuildInToView: function(view) {
363
334
  // stop any current build outs (and if we need to, we also need to build in again)
364
335
  if (this.isBuildingOut) {
365
336
  this.buildOutDidCancel();
@@ -370,7 +341,7 @@ SC.View.reopen(
370
341
  @private (semi)
371
342
  Called by building parent view's buildInChild method.
372
343
  */
373
- buildInToView: function (view) {
344
+ buildInToView: function(view) {
374
345
  // if we are already building in, do nothing.
375
346
  if (this.isBuildingIn) { return; }
376
347
 
@@ -386,7 +357,7 @@ SC.View.reopen(
386
357
 
387
358
  The supplied view should always be the parent view.
388
359
  */
389
- buildOutFromView: function (view) {
360
+ buildOutFromView: function(view) {
390
361
  // if we are already building out, do nothing.
391
362
  if (this.isBuildingOut) { return; }
392
363
 
@@ -230,6 +230,9 @@ SC.CoreView.reopen(
230
230
  /* @private Internal variable used to store the original frame before running an automatic transition. */
231
231
  _preTransitionFrame: null,
232
232
 
233
+ /* @private Internal variable used to cache layout properties which must be reset after the transition. */
234
+ _transitionLayoutCache: null,
235
+
233
236
  /**
234
237
  The current state of the view as managed by its internal statechart.
235
238
 
@@ -363,6 +366,9 @@ SC.CoreView.reopen(
363
366
  if (idx < 0) { idx = childViews.length; }
364
367
  childViews.insertAt(idx, this);
365
368
 
369
+ // Pass the current designMode to the view (and its children).
370
+ this.updateDesignMode(this.get('designMode'), parentView.get('designMode'));
371
+
366
372
  // Notify adopted (on self and all child views).
367
373
  this._adopted();
368
374
 
@@ -506,8 +512,10 @@ SC.CoreView.reopen(
506
512
  case SC.CoreView.ATTACHED_SHOWN:
507
513
  case SC.CoreView.ATTACHED_SHOWN_ANIMATING:
508
514
  //@if(debug)
509
- // This should be avoided, because moving the view layer without explicitly removing it first is a dangerous practice.
510
- SC.warn("Developer Warning: You can not attach the view, %@, to a new node without properly detaching it first.".fmt(this));
515
+ if (parentNode !== this.getPath('parentView.layer')) {
516
+ // This should be avoided, because moving the view layer without explicitly removing it first is a dangerous practice.
517
+ SC.warn("Developer Warning: You can not attach the view, %@, to a new node without properly detaching it first.".fmt(this));
518
+ }
511
519
  //@endif
512
520
  break;
513
521
  case SC.CoreView.UNATTACHED_BY_PARENT:
@@ -654,6 +662,9 @@ SC.CoreView.reopen(
654
662
  if (immediately) {
655
663
  // Note: *will* detach notice already sent.
656
664
  this.cancelAnimation(); // Fires didTransitionOut callback (state changes to UNATTACHED/notifications sent).
665
+
666
+ // Detach immediately.
667
+ this._executeDoDetach();
657
668
  }
658
669
 
659
670
  // Don't try to notify or run transition out code again.
@@ -843,10 +854,11 @@ SC.CoreView.reopen(
843
854
 
844
855
  // Update states after *will* and before *did* notifications!
845
856
  this._gotoUnattachedState();
857
+ this._callOnChildViews('_gotoUnattachedByParentState');
846
858
 
847
- // Notify *did* (bottom-up from children to parent).
848
- this._callOnChildViews('_parentDidRender');
859
+ // Notify *did* (top-down from parent to children).
849
860
  this._rendered();
861
+ this._callOnChildViews('_rendered');
850
862
 
851
863
  // Bypass the unattached state for adopted views.
852
864
  var parentView = this.get('parentView');
@@ -1007,9 +1019,9 @@ SC.CoreView.reopen(
1007
1019
 
1008
1020
  // Notify *did* (bottom-up from children to parent).
1009
1021
  if (this.didShowInDocument) { this.didShowInDocument(); }
1010
- if (state === SC.CoreView.ATTACHED_SHOWING) {
1011
- this._callOnChildViews('_parentDidShowInDocument');
1012
- }
1022
+ // if (state === SC.CoreView.ATTACHED_SHOWING) {
1023
+ // this._callOnChildViews('_parentDidShowInDocument');
1024
+ // }
1013
1025
  }
1014
1026
  },
1015
1027
 
@@ -1419,14 +1431,6 @@ SC.CoreView.reopen(
1419
1431
  }
1420
1432
  },
1421
1433
 
1422
- /** @private Updates according to parent did render. */
1423
- _parentDidRender: function () {
1424
- // Update states after *will* and before *did* notifications!
1425
- this._gotoUnattachedByParentState();
1426
-
1427
- this._rendered();
1428
- },
1429
-
1430
1434
  /** @private Starts building out view if appropriate. */
1431
1435
  _parentWillBuildOutFromDocument: function (owningView) {
1432
1436
  var state = this.get('viewState'),
@@ -1504,6 +1508,10 @@ SC.CoreView.reopen(
1504
1508
  this._notifyWillDetach();
1505
1509
  },
1506
1510
 
1511
+ _ancestorDidChangeParent: function () {
1512
+ this.notifyPropertyChange('pane');
1513
+ },
1514
+
1507
1515
  /** @private Routes according to parent did detach. */
1508
1516
  _parentDidRemoveFromDocument: function () {
1509
1517
  var state = this.get('viewState');
@@ -1623,25 +1631,43 @@ SC.CoreView.reopen(
1623
1631
  },
1624
1632
 
1625
1633
  /** @private */
1626
- _setupTransition: function () {
1634
+ _setupTransition: function (transition) {
1635
+ // Get a copy of the layout.
1636
+ var layout = SC.clone(this.get('layout'));
1627
1637
  // Prepare for a transition.
1628
- this._preTransitionLayout = SC.clone(this.get('layout'));
1638
+ this._preTransitionLayout = layout;
1629
1639
  this._preTransitionFrame = this.get('borderFrame');
1640
+ // Cache appropriate layout values.
1641
+ var layoutProperties = SC.get(transition, 'layoutProperties');
1642
+ // If the transition specifies any layouts, cache them.
1643
+ if (layoutProperties && layoutProperties.length) {
1644
+ this._transitionLayoutCache = {};
1645
+ var i, prop, len = layoutProperties.length;
1646
+ for (i = 0; i < len; i++) {
1647
+ prop = layoutProperties[i];
1648
+ this._transitionLayoutCache[prop] = layout[prop] === undefined ? null : layout[prop];
1649
+ }
1650
+ }
1630
1651
  },
1631
1652
 
1632
1653
  /** @private */
1633
1654
  _teardownTransition: function () {
1634
- // Some transition plugins will send a didTransitionIn/Out event even
1635
- // if the transition was cancelled. In either case, the transition can't
1636
- // be cleaned up multiple times.
1637
- if (this._preTransitionLayout) {
1638
- // Reset the layout to its original value.
1639
- this.set('layout', this._preTransitionLayout);
1655
+ // Make sure this isn't being called twice for the same transition. For example,
1656
+ // some transition plugins will send a didTransitionIn/Out event even if the
1657
+ // transition was cancelled.
1640
1658
 
1641
- // Clean up.
1642
- this._preTransitionLayout = null;
1643
- this._preTransitionFrame = null;
1659
+ // If we have a hash of cached layout properties, adjust back to it.
1660
+ if (this._transitionLayoutCache) {
1661
+ this.adjust(this._transitionLayoutCache);
1644
1662
  }
1663
+ // Otherwise, just set the layout back to what it was.
1664
+ else if (this._preTransitionLayout) {
1665
+ this.set('layout', this._preTransitionLayout);
1666
+ }
1667
+ // Clean up.
1668
+ this._preTransitionLayout = null;
1669
+ this._preTransitionFrame = null;
1670
+ this._transitionLayoutCache = null;
1645
1671
  },
1646
1672
 
1647
1673
  /** @private Attempts to run a transition hide, ensuring any incoming transitions are stopped in place. */
@@ -1662,7 +1688,7 @@ SC.CoreView.reopen(
1662
1688
  // inPlace = true;
1663
1689
  // break;
1664
1690
  // default:
1665
- this._setupTransition();
1691
+ this._setupTransition(transitionHide);
1666
1692
  // }
1667
1693
 
1668
1694
  // Set up the hiding transition.
@@ -1688,7 +1714,7 @@ SC.CoreView.reopen(
1688
1714
  inPlace = true;
1689
1715
  break;
1690
1716
  default:
1691
- this._setupTransition();
1717
+ this._setupTransition(transitionIn);
1692
1718
  }
1693
1719
 
1694
1720
  // Set up the incoming transition.
@@ -1706,7 +1732,7 @@ SC.CoreView.reopen(
1706
1732
  options = this.get('transitionOutOptions') || {};
1707
1733
 
1708
1734
  if (!inPlace) {
1709
- this._setupTransition();
1735
+ this._setupTransition(transitionOut);
1710
1736
  }
1711
1737
 
1712
1738
  // Increment the shared building out count.
@@ -1736,7 +1762,7 @@ SC.CoreView.reopen(
1736
1762
  // this.cancelAnimation(SC.LayoutState.CURRENT);
1737
1763
  // inPlace = true;
1738
1764
  // } else {
1739
- this._setupTransition();
1765
+ this._setupTransition(transitionShow);
1740
1766
  // }
1741
1767
 
1742
1768
  // Set up the showing transition.
@@ -1746,6 +1772,9 @@ SC.CoreView.reopen(
1746
1772
 
1747
1773
  // Execute the showing transition.
1748
1774
  transitionShow.run(this, options, this._preTransitionLayout, this._preTransitionFrame);
1775
+
1776
+ // This view's state is going to be transitioning, but all child views are now considered shown.
1777
+ this._callOnChildViews('_parentDidShowInDocument');
1749
1778
  },
1750
1779
 
1751
1780
  /** @private */