sproutcore 1.7.1.beta → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (445) hide show
  1. data/CHANGELOG +44 -0
  2. data/README.rdoc +20 -20
  3. data/VERSION.yml +3 -3
  4. data/lib/Buildfile +1 -1
  5. data/lib/buildtasks/build.rake +5 -0
  6. data/lib/buildtasks/manifest.rake +19 -1
  7. data/lib/frameworks/sproutcore/Buildfile +19 -17
  8. data/lib/frameworks/sproutcore/CHANGELOG.md +163 -29
  9. data/lib/frameworks/sproutcore/README.md +29 -8
  10. data/lib/frameworks/sproutcore/apps/statechart_routing/Buildfile +12 -0
  11. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/login_controller.js +11 -0
  12. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/main_controller.js +7 -0
  13. data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/statechart_controller.js +17 -0
  14. data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +25 -0
  15. data/lib/frameworks/sproutcore/apps/statechart_routing/main.js +15 -0
  16. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/_theme.css +18 -0
  17. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/bar_page.js +14 -0
  18. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/foo_page.js +14 -0
  19. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/loading.rhtml +9 -0
  20. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +61 -0
  21. data/lib/frameworks/sproutcore/apps/statechart_routing/resources/main_page.js +46 -0
  22. data/lib/frameworks/sproutcore/apps/statechart_routing/statechart.js +76 -0
  23. data/lib/frameworks/sproutcore/apps/statechart_routing/theme.js +27 -0
  24. data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
  25. data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
  26. data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
  27. data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
  28. data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
  29. data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
  30. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
  31. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +14 -1
  32. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +15 -15
  33. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +1 -1
  34. data/lib/frameworks/sproutcore/frameworks/animation/core.js +8 -5
  35. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +302 -70
  36. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +19 -14
  37. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +471 -149
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +3 -3
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +42 -0
  40. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +3 -2
  41. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
  42. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +1 -1
  43. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +3 -3
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
  46. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +63 -0
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +1 -1
  48. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +37 -2
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +28 -6
  50. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +10 -3
  51. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +2 -2
  52. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +66 -2
  53. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
  54. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
  55. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +58 -57
  56. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
  57. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js.orig +445 -0
  58. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +51 -31
  59. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +5 -1
  60. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +53 -69
  61. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
  62. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +98 -72
  63. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +37 -3
  64. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +7 -4
  65. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +21 -0
  66. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +7 -7
  67. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +23 -1
  68. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/browser.js +66 -0
  69. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/event.js +22 -0
  70. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +11 -11
  71. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +4 -4
  72. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +41 -0
  73. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
  74. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +8 -8
  75. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +17 -16
  76. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
  77. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
  78. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +15 -0
  79. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +5 -5
  80. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +50 -30
  81. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +46 -0
  82. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +1 -43
  83. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +8 -34
  84. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +3 -2
  85. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -1
  86. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +6 -5
  87. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +22 -2
  88. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +2 -2
  89. data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +1 -1
  90. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +0 -2
  91. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +35 -0
  92. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +46 -19
  93. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -9
  94. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +2 -3
  95. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
  96. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -2
  97. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +294 -302
  98. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js.orig +1531 -0
  99. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +4 -2
  100. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +14 -11
  101. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/many_array.js +63 -0
  102. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
  103. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +4 -4
  104. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +50 -10
  105. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +4 -4
  106. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +3 -3
  107. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
  108. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +1 -1
  109. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
  110. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +114 -67
  111. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
  112. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
  113. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +54 -1
  114. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +29 -9
  115. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
  116. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
  117. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +1 -1
  118. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
  119. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
  120. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +37 -45
  121. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +127 -127
  122. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +16 -0
  123. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +42 -4
  124. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
  125. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -7
  126. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +8 -0
  127. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +2 -1
  128. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +1 -0
  129. data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
  130. data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
  131. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
  132. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
  133. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +1 -4
  134. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +19 -6
  135. data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +30 -1
  136. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
  137. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +24 -1
  138. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +121 -28
  139. data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +15 -15
  140. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
  141. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
  142. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +2 -2
  143. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +39 -15
  144. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +3 -3
  145. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +2 -2
  146. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +2 -2
  147. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +14 -6
  148. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +3 -3
  149. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +11 -11
  150. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -3
  151. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -51
  152. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +11 -16
  153. data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
  154. data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +0 -2
  155. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
  156. data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +3 -3
  157. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +9 -9
  158. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +11 -11
  159. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
  160. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
  161. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +107 -81
  162. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +3 -3
  163. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +68 -60
  164. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +57 -12
  165. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +21 -19
  166. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -0
  167. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +2 -2
  168. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +32 -3
  169. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +12 -0
  170. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +12 -0
  171. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -8
  172. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +77 -132
  173. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +5 -6
  174. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +16 -15
  175. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +52 -52
  176. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -1
  177. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
  178. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +147 -147
  179. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +11 -2
  180. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
  181. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +5 -5
  182. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +22 -12
  183. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +13 -7
  184. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +2 -2
  185. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +462 -441
  186. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +48 -62
  187. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +22 -2
  188. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +150 -32
  189. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +104 -45
  190. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +42 -20
  191. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +24 -24
  192. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +148 -154
  193. data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +2 -2
  194. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +2 -2
  195. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +8 -7
  196. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -2
  197. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
  198. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/files.js +1 -1
  199. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +1 -1
  200. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/targets.js +1 -1
  201. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/view_configs.js +1 -1
  202. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/mixins/drop_down.js +1 -1
  203. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +1 -1
  204. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +1 -1
  205. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/web.js +1 -1
  206. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +2 -2
  207. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +2 -2
  208. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +1 -1
  209. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +2 -2
  210. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +3 -3
  211. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +1 -1
  212. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +21 -21
  213. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +1 -1
  214. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +59 -53
  215. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +2 -2
  216. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +1 -1
  217. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +6 -6
  218. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +2 -2
  219. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +2 -2
  220. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -10
  221. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +17 -6
  222. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +38 -14
  223. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +5 -13
  224. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +1 -1
  225. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +5 -3
  226. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +19 -0
  227. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +20 -2
  228. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +1 -1
  229. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +35 -12
  230. data/lib/frameworks/sproutcore/frameworks/formatters/README +6 -0
  231. data/lib/frameworks/sproutcore/frameworks/formatters/english.lproj/strings.js +174 -0
  232. data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +351 -0
  233. data/lib/frameworks/sproutcore/frameworks/formatters/tests/date_formatter.js +517 -0
  234. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +1 -1
  235. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +345 -138
  236. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +5 -3
  237. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +176 -42
  238. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
  239. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +137 -105
  240. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +2 -2
  241. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +2 -2
  242. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +16 -1
  243. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
  244. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +47 -47
  245. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -3
  246. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +1 -1
  247. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +28 -6
  248. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +1 -1
  249. data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +0 -5
  250. data/lib/frameworks/sproutcore/frameworks/foundation/resources/bootstrap.rhtml +34 -19
  251. data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +0 -2
  252. data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +1 -5
  253. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +8 -9
  254. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -2
  255. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +179 -47
  256. data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +34 -1
  257. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
  258. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +26 -12
  259. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +7 -7
  260. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +12 -4
  261. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_metric_optimization.js +202 -0
  262. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +77 -8
  263. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +1 -0
  264. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +2 -2
  265. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +4 -3
  266. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +4 -2
  267. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +2 -2
  268. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +4 -2
  269. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +4 -2
  270. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +2 -2
  271. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -8
  272. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +163 -149
  273. data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
  274. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
  275. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
  276. data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
  277. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +3 -3
  278. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +16 -43
  279. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -3
  280. data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +67 -54
  281. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -38
  282. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +285 -242
  283. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +13 -13
  284. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +19 -22
  285. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +9 -3
  286. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +231 -186
  287. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +145 -143
  288. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +156 -154
  289. data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +5 -5
  290. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +3 -3
  291. data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js.orig +540 -0
  292. data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +2 -2
  293. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -8
  294. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +5 -5
  295. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +12 -0
  296. data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +2 -2
  297. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -1
  298. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +1 -1
  299. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +7 -7
  300. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +98 -32
  301. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +7 -2
  302. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +14 -3
  303. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +98 -13
  304. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +8 -14
  305. data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +1 -1
  306. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +2 -2
  307. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +23 -6
  308. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +69 -18
  309. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +57 -31
  310. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +189 -14
  311. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +82 -22
  312. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +20 -0
  313. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +125 -4
  314. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +1 -1
  315. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +2 -2
  316. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +37 -0
  317. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +2 -2
  318. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +16 -0
  319. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +75 -4
  320. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +41 -0
  321. data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart_delegate.js +113 -0
  322. data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +312 -0
  323. data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +18 -22
  324. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +508 -131
  325. data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +78 -0
  326. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +265 -44
  327. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +16 -0
  328. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +11 -3
  329. data/lib/frameworks/sproutcore/frameworks/statechart/tests/private/state_path_matcher.js +116 -0
  330. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/add_substate.js +108 -0
  331. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/with_concurrent.js +179 -0
  332. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/without_concurrent.js +74 -0
  333. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_state.js +141 -0
  334. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_substate.js +340 -0
  335. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/route_triggered.js +161 -0
  336. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/try_to_handle_event.js +288 -0
  337. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +5 -33
  338. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +213 -0
  339. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +212 -0
  340. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +8 -0
  341. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{state/namespacing.js → statechart/methods/get_state.js} +3 -41
  342. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/{invoke_state_method.js → methods/invoke_state_method.js} +1 -1
  343. data/lib/frameworks/sproutcore/frameworks/statechart/tests/{event_handling/advanced → statechart}/respond_to_event.js +1 -1
  344. data/lib/frameworks/sproutcore/frameworks/statechart/tests/system/state_route_handler_context/methods/retry.js +64 -0
  345. data/lib/frameworks/sproutcore/frameworks/table/core.js +2 -0
  346. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/controls/button.js +0 -1
  347. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars.js +29 -5
  348. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/bind.js +4 -3
  349. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/collection.js +0 -0
  350. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/localization.js +0 -0
  351. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/view.js +0 -0
  352. data/lib/frameworks/sproutcore/frameworks/{handlebars → template_view}/handlebars.js +493 -357
  353. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/checkbox_support.js +0 -0
  354. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/text_field_support.js +13 -2
  355. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/panes/template.js +0 -0
  356. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/controls/button.js +0 -0
  357. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/checkbox_support.js +0 -0
  358. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/text_field_support.js +0 -0
  359. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/panes/template.js +0 -0
  360. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/collection.js +39 -14
  361. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/core.js +0 -0
  362. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/handlebars.js +57 -6
  363. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/bindable_span.js +21 -6
  364. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template.js +9 -3
  365. data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template_collection.js +55 -26
  366. data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
  367. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +122 -122
  368. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -2
  369. data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +4 -4
  370. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +1 -1
  371. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +0 -1
  372. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +4 -4
  373. data/lib/frameworks/sproutcore/lib/index.rhtml +55 -32
  374. data/lib/frameworks/sproutcore/license.js +2 -4
  375. data/lib/frameworks/sproutcore/themes/ace/resources/body.css +5 -1
  376. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +2 -2
  377. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +21 -13
  378. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +17 -10
  379. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +4 -3
  380. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +20 -12
  381. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +16 -8
  382. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/jumbo/button.css +17 -0
  383. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/small/button.css +17 -0
  384. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +2 -2
  385. data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +2 -2
  386. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +5 -3
  387. data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +1 -1
  388. data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/toolbar.css +1 -1
  389. data/lib/gen/app/USAGE +17 -4
  390. data/lib/gen/language/Buildfile +4 -4
  391. data/lib/gen/language/USAGE +4 -4
  392. data/lib/gen/page/templates/pages/@target_name@/Buildfile +7 -7
  393. data/lib/gen/{html_app → statechart_app}/Buildfile +0 -0
  394. data/lib/gen/{html_app → statechart_app}/README +0 -0
  395. data/lib/gen/statechart_app/USAGE +21 -0
  396. data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +9 -0
  397. data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +24 -0
  398. data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +26 -0
  399. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/_theme.css +18 -0
  400. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
  401. data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +21 -0
  402. data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +8 -0
  403. data/lib/gen/statechart_app/templates/apps/@target_name@/states/ready_state.js +12 -0
  404. data/lib/gen/statechart_app/templates/apps/@target_name@/theme.js +24 -0
  405. data/lib/sproutcore/builders.rb +1 -0
  406. data/lib/sproutcore/builders/base.rb +19 -1
  407. data/lib/sproutcore/builders/chance_file.rb +6 -1
  408. data/lib/sproutcore/builders/handlebars.rb +1 -9
  409. data/lib/sproutcore/builders/javascript.rb +1 -10
  410. data/lib/sproutcore/builders/json.rb +25 -0
  411. data/lib/sproutcore/builders/less.rb +1 -1
  412. data/lib/sproutcore/builders/sass.rb +1 -1
  413. data/lib/sproutcore/builders/stylesheet.rb +1 -9
  414. data/lib/sproutcore/helpers/html5_manifest.rb +1 -1
  415. data/lib/sproutcore/helpers/static_helper.rb +42 -0
  416. data/lib/sproutcore/rack/proxy.rb +21 -3
  417. data/lib/sproutcore/rack/service.rb +3 -2
  418. data/lib/sproutcore/tools.rb +18 -25
  419. data/lib/sproutcore/tools/gen.rb +10 -3
  420. data/lib/sproutcore/tools/init.rb +11 -10
  421. data/spec/buildtasks/manifest/prepare_build_tasks/json_spec.rb +62 -0
  422. data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -1
  423. data/spec/fixtures/builder_tests/apps/json_test/sc_static.json +2 -0
  424. data/spec/lib/builders/json_spec.rb +53 -0
  425. data/sproutcore.gemspec +2 -2
  426. data/vendor/chance/lib/chance/parser.rb +1 -1
  427. metadata +222 -177
  428. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
  429. data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
  430. data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
  431. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +0 -69
  432. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
  433. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
  434. data/lib/frameworks/sproutcore/frameworks/mini/license.js +0 -30
  435. data/lib/gen/html_app/USAGE +0 -15
  436. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +0 -11
  437. data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
  438. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -6
  439. data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +0 -1
  440. data/lib/gen/html_project/Buildfile +0 -45
  441. data/lib/gen/html_project/INIT +0 -3
  442. data/lib/gen/html_project/README +0 -1
  443. data/lib/gen/html_project/USAGE +0 -2
  444. data/lib/gen/html_project/templates/@filename@/Buildfile +0 -5
  445. data/lib/gen/html_project/templates/@filename@/README +0 -4
@@ -89,6 +89,11 @@ test('hasButtons', function() {
89
89
  equals(view2.$('.button-bottom, .button-top').length, 0, 'scrollers with buttons should not have an up or a down button');
90
90
  });
91
91
 
92
+ test('hasThumb', function() {
93
+ equals(view.$('.thumb').height(), view.get('thumbLength'), 'vertical scroller should have the right height');
94
+ equals(view1.$('.thumb').width(), view1.get('thumbLength'), 'horizontal scroller should have the right width');
95
+ });
96
+
92
97
  test('aria-role', function() {
93
98
  var viewElem = view.$();
94
99
  equals(viewElem.attr('role'), 'scrollbar', 'aria role set to the scroller');
@@ -431,13 +431,13 @@ var pane;
431
431
  viewElem = sv.$(),
432
432
  segments, i, len, segmentViewElem, role;
433
433
 
434
- equals(viewElem.attr('role'), 'tablist', "The segmented view has aria role set");
434
+ equals(viewElem.attr('role'), 'group', "The segmented view has aria role set");
435
435
 
436
436
  segments = sv.get('childViews');
437
437
  for( i = 0, len = segments.length; i<len; ++i) {
438
438
  segmentViewElem = segments[i].$();
439
439
  role = segmentViewElem.attr('role');
440
- equals(role, "tab", "segment " + (i+1) + " have aria role set");
440
+ equals(role, "button", "segment " + (i+1) + " have aria role set");
441
441
  }
442
442
  });
443
443
 
@@ -83,9 +83,22 @@ var pane = SC.ControlTestPane.design()
83
83
  isEnabledKey: 'isEnabled',
84
84
  itemSortKey: 'pos',
85
85
  showCheckbox: YES
86
- }) ;
86
+ })
87
+
88
+ // sample11
89
+ .add("SelectButtonWithEmptyName", SC.SelectView, {
90
+ items: [{ title: "None", icon: 'select-button-icon' },
91
+ { title: "Low", icon: 'select-button-icon' },
92
+ { title: "Medium", icon: 'select-button-icon' },
93
+ { title: "High", icon: 'select-button-icon' }],
94
+ itemTitleKey: 'title',
95
+ itemIconKey: 'icon',
96
+ emptyName: '&lt;empty&gt;',
97
+ escapeHTML: NO,
98
+ showCheckbox: YES
99
+ });
87
100
 
88
- pane.show();
101
+ pane.show();
89
102
 
90
103
  // ..........................................................
91
104
  // TEST VIEWS
@@ -112,6 +125,7 @@ test("Check the visiblity of the selectButtons", function() {
112
125
  ok(pane.view('redraw').get('isVisibleInWindow'), 'redraw.isVisibleInWindow should be YES') ;
113
126
  ok(pane.view('SelectButtonWithIcon').get('isVisibleInWindow'), 'SelectButtonWithIcon.isVisibleInWindow should be YES') ;
114
127
  ok(pane.view('StaticLayout').get('isVisibleInWindow'), 'StaticLayout.isVisibleInWindow should be YES') ;
128
+ ok(pane.view('SelectButtonWithEmptyName').get('isVisibleInWindow'), 'SelectButtonWithEmptyName.isVisibleInWindow should be YES') ;
115
129
  }) ;
116
130
 
117
131
  //test2
@@ -194,7 +208,7 @@ test("redraw", function() {
194
208
  view.set('items', ['Calendar', 'Work', 'Home']);
195
209
  SC.RunLoop.end();
196
210
  ok(view.get('items').length === 3, "Items length should be 3");
197
-
211
+
198
212
  // Can someone actually put a redraw test here?
199
213
  }) ;
200
214
 
@@ -222,3 +236,18 @@ test("StaticLayout", function() {
222
236
  ok(!view.$().hasClass('disabled'), 'should not have disabled class');
223
237
  ok(!view.$().hasClass('sel'), 'should not have sel class');
224
238
  });
239
+
240
+ //test11
241
+ test("SelectButtonWithEmptyName", function() {
242
+ var view=pane.view('SelectButtonWithEmptyName').$(),
243
+ label = pane.view('SelectButtonWithEmptyName').$('label');
244
+ console.log('label = ' + label);
245
+ ok(!view.hasClass('icon'), 'hasClass(Icon) should be NO') ;
246
+ ok(view.hasClass('sc-view'), 'hasClass(sc-view) should be YES') ;
247
+ ok(view.hasClass('sc-button-view'), 'hasClass(sc-button-view) should be YES') ;
248
+ ok(view.hasClass('sc-regular-size'), 'hasClass(sc-regular-size) should be YES') ;
249
+ ok(!view.hasClass('sel'), 'hasClass(sel) should be NO') ;
250
+ ok(!view.hasClass('disabled'), 'hasClass(disabled) should be NO') ;
251
+ ok(!view.hasClass('def'), 'hasClass(def) should be NO') ;
252
+ equals(label[0].innerHTML, '&lt;empty&gt;', 'The label should be "&lt;empty&gt;"');
253
+ });
@@ -49,6 +49,18 @@ test("Layout direction is Vertical",function() {
49
49
  equals(view.getPath('thumbViewCursor.cursorStyle'),"ns-resize",'The Cursor is');
50
50
  });
51
51
 
52
+ test("Cursor remains correct after drag", function() {
53
+ view.set('layoutDirection', SC.LAYOUT_HORIZONTAL) ;
54
+ equals(view.getPath('thumbViewCursor.cursorStyle'), "ew-resize", 'The Cursor is');
55
+
56
+ // Trigger the action
57
+ var elem = view.getPath('dividerView.layer');
58
+ SC.Event.trigger(elem, 'mousedown');
59
+ SC.Event.trigger(elem, 'mouseup');
60
+
61
+ equals(view.getPath('thumbViewCursor.cursorStyle'), "ew-resize",'The Cursor is');
62
+ });
63
+
52
64
  //
53
65
  // test("performing the mouse up event", function() {
54
66
  // var elem = thumb.get('layer');
@@ -15,6 +15,18 @@ var CommentView = SC.View.extend(SC.StaticLayout, SC.Control, {
15
15
 
16
16
  classNames: 'comment-view',
17
17
 
18
+ contentKeys: {
19
+ 'contentFromKey': 'from',
20
+ 'contentDateKey': 'date',
21
+ 'contentCommentKey': 'comment'
22
+ },
23
+
24
+ contentFromKey: 'from',
25
+
26
+ contentDateKey: 'date',
27
+
28
+ contentCommentKey: 'comment',
29
+
18
30
  contentPropertyDidChange: function(target, key) {
19
31
 
20
32
  // update everything!
@@ -42,11 +42,3 @@ module("SC.TabView", {
42
42
  }
43
43
  });
44
44
 
45
- test("Methods of TabView are untested");
46
-
47
-
48
- //_tab_nowShowingDidChange: function() {
49
-
50
- //_tab_saveUserDefault: function() {
51
-
52
- //_tab_itemsDidChange: function() {
@@ -62,7 +62,7 @@ SC.ButtonView = SC.View.extend(SC.Control,
62
62
 
63
63
  /**
64
64
  Tied to the isEnabled state
65
-
65
+
66
66
  @type Boolean
67
67
  @default YES
68
68
  */
@@ -90,8 +90,8 @@ SC.ButtonView = SC.View.extend(SC.Control,
90
90
 
91
91
  // ..........................................................
92
92
  // Value Handling
93
- //
94
-
93
+ //
94
+
95
95
  /**
96
96
  Used to automatically update the state of the button view for toggle style
97
97
  buttons.
@@ -103,26 +103,26 @@ SC.ButtonView = SC.View.extend(SC.Control,
103
103
  `toggleOffValue`. Alternatively, if you leave these properties set to
104
104
  `YES` or `NO`, the button will do its best to convert a value to an
105
105
  appropriate state:
106
-
106
+
107
107
  - `null`, `false`, `0` -- `isSelected = false`
108
108
  - any other single value -- `isSelected = true`
109
109
  - array -- if all values are the same state, that state; otherwise `MIXED`.
110
-
110
+
111
111
  @type Object
112
112
  @default null
113
- */
113
+ */
114
114
  value: null,
115
115
 
116
116
  /**
117
117
  Value of a selected toggle button.
118
-
118
+
119
119
  For a toggle button, set this to any object value you want. The button
120
120
  will be selected if the value property equals the targetValue. If the
121
121
  value is an array of multiple items that contains the targetValue, then
122
122
  the button will be set to a mixed state.
123
-
123
+
124
124
  default is YES
125
-
125
+
126
126
  @type Boolean|Object
127
127
  @default YES
128
128
  */
@@ -130,11 +130,11 @@ SC.ButtonView = SC.View.extend(SC.Control,
130
130
 
131
131
  /**
132
132
  Value of an unselected toggle button.
133
-
133
+
134
134
  For a toggle button, set this to any object value you want. When the
135
135
  user toggle's the button off, the value of the button will be set to this
136
136
  value.
137
-
137
+
138
138
  @type Boolean|Object
139
139
  @default NO
140
140
  */
@@ -143,16 +143,16 @@ SC.ButtonView = SC.View.extend(SC.Control,
143
143
 
144
144
  // ..........................................................
145
145
  // Title Handling
146
- //
147
-
146
+ //
147
+
148
148
  /**
149
149
  If YES, then the title will be localized.
150
-
150
+
151
151
  @type Boolean
152
152
  @default NO
153
153
  */
154
154
  localize: NO,
155
-
155
+
156
156
  /** @private */
157
157
  localizeBindingDefault: SC.Binding.bool(),
158
158
 
@@ -160,26 +160,28 @@ SC.ButtonView = SC.View.extend(SC.Control,
160
160
  The button title. If localize is `YES`, then this should be the
161
161
  localization key to display. Otherwise, this will be the actual string
162
162
  displayed in the title. This property is observable and bindable.
163
-
163
+
164
164
  @type String
165
165
  @default ""
166
166
  */
167
167
  title: "",
168
168
 
169
+ tooltip: "",
170
+
169
171
  /**
170
172
  If set, the title property will be updated automatically
171
173
  from the content using the key you specify.
172
-
174
+
173
175
  @type String
174
176
  @default null
175
177
  */
176
178
  contentTitleKey: null,
177
-
179
+
178
180
  /**
179
181
  The button icon. Set this to either a URL or a CSS class name (for
180
182
  spriting). Note that if you pass a URL, it must contain at
181
183
  least one slash to be detected as such.
182
-
184
+
183
185
  @type String
184
186
  @default null
185
187
  */
@@ -188,7 +190,7 @@ SC.ButtonView = SC.View.extend(SC.Control,
188
190
  /**
189
191
  If you set this property, the icon will be updated automatically from the
190
192
  content using the key you specify.
191
-
193
+
192
194
  @type String
193
195
  @default null
194
196
  */
@@ -198,15 +200,15 @@ SC.ButtonView = SC.View.extend(SC.Control,
198
200
  If YES, button will attempt to display an ellipsis if the title cannot
199
201
  fit inside of the visible area. This feature is not available on all
200
202
  browsers.
201
-
203
+
202
204
  @type Boolean
203
205
  @default YES
204
206
  */
205
207
  needsEllipsis: YES,
206
-
208
+
207
209
  /**
208
210
  This is generated by localizing the title property if necessary.
209
-
211
+
210
212
  @type String
211
213
  @observes 'title'
212
214
  @observes 'localize'
@@ -215,10 +217,10 @@ SC.ButtonView = SC.View.extend(SC.Control,
215
217
  var ret = this.get('title');
216
218
  return (ret && this.get('localize')) ? SC.String.loc(ret) : (ret || '');
217
219
  }.property('title','localize').cacheable(),
218
-
220
+
219
221
  /**
220
222
  The key equivalent that should trigger this button on the page.
221
-
223
+
222
224
  @type String
223
225
  @default null
224
226
  */
@@ -227,7 +229,7 @@ SC.ButtonView = SC.View.extend(SC.Control,
227
229
 
228
230
  // ..........................................................
229
231
  // BEHAVIOR
230
- //
232
+ //
231
233
 
232
234
  /**
233
235
  The behavioral mode of this button.
@@ -243,7 +245,7 @@ SC.ButtonView = SC.View.extend(SC.Control,
243
245
  - `SC.TOGGLE_OFF_BEHAVIOR` -- Pressing the button will set the current state to
244
246
  false no matter the previous value.
245
247
  - `SC.HOLD_BEHAVIOR` -- Pressing the button will cause the action to repeat at a
246
- regular interval specifed by 'holdInterval'
248
+ regular interval specified by 'holdInterval'
247
249
 
248
250
  @type String
249
251
  @default SC.PUSH_BEHAVIOR
@@ -331,7 +333,7 @@ SC.ButtonView = SC.View.extend(SC.Control,
331
333
 
332
334
  // ..........................................................
333
335
  // Auto Resize Support
334
- //
336
+ //
335
337
  //
336
338
  // These properties are provided so that SC.AutoResize can be mixed in
337
339
  // to enable automatic resizing of the button.
@@ -345,7 +347,8 @@ SC.ButtonView = SC.View.extend(SC.Control,
345
347
  */
346
348
  /** @private */
347
349
  autoResizeLayer: function() {
348
- return this.get('layer');
350
+ var ret = this.invokeRenderDelegateMethod('getRenderedAutoResizeLayer', this.$());
351
+ return ret || this.get('layer');
349
352
  }.property('layer').cacheable(),
350
353
 
351
354
  /** @private */
@@ -414,24 +417,6 @@ SC.ButtonView = SC.View.extend(SC.Control,
414
417
  */
415
418
  didTriggerAction: function() {},
416
419
 
417
- /*
418
- TODO Why is this not set by the theme? --TD
419
- */
420
- /**
421
- The minimum width the button title should consume. This property is used
422
- when generating the HTML styling for the title itself. The default
423
- width of 80 usually provides a nice looking style, but you can set it to 0
424
- if you want to disable minimum title width.
425
-
426
- Note that the title width does not exactly match the width of the button
427
- itself. Extra padding added by the theme can impact the final total
428
- size.
429
-
430
- @type Number
431
- @default 80
432
- */
433
- titleMinWidth: 80,
434
-
435
420
 
436
421
  // ................................................................
437
422
  // INTERNAL SUPPORT
@@ -450,13 +435,13 @@ SC.ButtonView = SC.View.extend(SC.Control,
450
435
  }
451
436
 
452
437
  // if value is not null, update isSelected to match value. If value is
453
- // null, we assume you may be using isSelected only.
438
+ // null, we assume you may be using isSelected only.
454
439
  if (!SC.none(this.get('value'))) this._button_valueDidChange();
455
440
  },
456
441
 
457
442
  /**
458
443
  The WAI-ARIA role of the button.
459
-
444
+
460
445
  @type String
461
446
  @default 'button'
462
447
  @readOnly
@@ -470,59 +455,36 @@ SC.ButtonView = SC.View.extend(SC.Control,
470
455
  /**
471
456
  The following properties affect how `SC.ButtonView` is rendered, and will
472
457
  cause the view to be rerendered if they change.
473
-
458
+
474
459
  @type Array
475
460
  @default [
476
- 'icon', 'displayTitle', 'value', 'displayToolTip', 'isDefault', 'isCancel',
477
- 'escapeHTML', 'needsEllipsis', 'hint', 'titleMinWidth', 'supportFocusRing'
461
+ 'icon', 'displayTitle', 'value', 'displayToolTip', 'isDefault', 'isCancel',
462
+ 'escapeHTML', 'needsEllipsis', 'tooltip', 'supportFocusRing'
478
463
  ]
479
464
  */
480
465
  displayProperties: [
481
- 'icon', 'displayTitle', 'value', 'displayToolTip', 'isDefault', 'isCancel',
482
- 'escapeHTML', 'needsEllipsis', 'hint', 'titleMinWidth', 'supportFocusRing'
466
+ 'icon', 'displayTitle', 'value', 'displayToolTip', 'isDefault', 'isCancel',
467
+ 'escapeHTML', 'needsEllipsis', 'tooltip', 'supportFocusRing',
468
+ 'buttonBehavior'
483
469
  ],
484
470
 
485
471
  /**
486
472
  The name of the render delegate in the theme that should be used to
487
473
  render the button.
488
-
474
+
489
475
  In this case, the 'button' property will be retrieved from the theme and
490
476
  set to the render delegate of this view.
491
-
477
+
492
478
  @type String
493
479
  @default 'buttonRenderDelegate'
494
480
  */
495
481
  renderDelegateName: 'buttonRenderDelegate',
496
482
 
497
- /**
498
- Updates the value, title, and icon keys based on the content object, if
499
- set.
500
-
501
- @type {Object} target the target of the object that changed
502
- @type {String} key name of property that changed
503
- @returns {SC.ButtonView} receiver
504
- */
505
- contentPropertyDidChange: function(target, key) {
506
- var del = this.get('displayDelegate'),
507
- content = this.get('content'), value ;
508
-
509
- var valueKey = this.getDelegateProperty('contentValueKey', del) ;
510
- if (valueKey && (key === valueKey || key === '*')) {
511
- this.set('value', content ? (content.get ? content.get(valueKey) : content[valueKey]) : null) ;
512
- }
513
-
514
- var titleKey = this.getDelegateProperty('contentTitleKey', del) ;
515
- if (titleKey && (key === titleKey || key === '*')) {
516
- this.set('title', content ? (content.get ? content.get(titleKey) : content[titleKey]) : null) ;
517
- }
518
-
519
- var iconKey = this.getDelegateProperty('contentIconKey', del);
520
- if (iconKey && (key === iconKey || key === '*')) {
521
- this.set('icon', content ? (content.get ? content.get(iconKey) : content[iconKey]) : null) ;
522
- }
523
-
524
- return this ;
525
- },
483
+ contentKeys: {
484
+ 'contentValueKey': 'value',
485
+ 'contentTitleKey': 'title',
486
+ 'contentIconKey': 'icon'
487
+ },
526
488
 
527
489
  /** @private - when title changes, dirty display. */
528
490
  _button_displayObserver: function() {
@@ -530,9 +492,9 @@ SC.ButtonView = SC.View.extend(SC.Control,
530
492
  }.observes('title', 'icon', 'value'),
531
493
 
532
494
  /**
533
- Handle a key equivalent if set. Trigger the default action for the
495
+ Handle a key equivalent if set. Trigger the default action for the
534
496
  button. Depending on the implementation this may vary.
535
-
497
+
536
498
  @param {String} keystring
537
499
  @param {SC.Event} evt
538
500
  @returns {Boolean} YES if handled, NO otherwise
@@ -545,13 +507,13 @@ SC.ButtonView = SC.View.extend(SC.Control,
545
507
  var equiv = this.get('keyEquivalent');
546
508
 
547
509
  // button has defined a keyEquivalent and it matches!
548
- // if triggering succeeded, true will be returned and the operation will
549
- // be handeled (i.e performKeyEquivalent will cease crawling the view
510
+ // if triggering succeeded, true will be returned and the operation will
511
+ // be handled (i.e performKeyEquivalent will cease crawling the view
550
512
  // tree)
551
513
  if (equiv) {
552
514
  if (equiv === keystring) return this.triggerAction(evt);
553
-
554
- // should fire if isDefault OR isCancel. This way if isDefault AND
515
+
516
+ // should fire if isDefault OR isCancel. This way if isDefault AND
555
517
  // isCancel, responds to both return and escape
556
518
  } else if ((this.get('isDefault') && (keystring === 'return')) ||
557
519
  (this.get('isCancel') && (keystring === 'escape'))) {
@@ -562,27 +524,27 @@ SC.ButtonView = SC.View.extend(SC.Control,
562
524
  },
563
525
 
564
526
  // ..........................................................
565
- // VALUE <-> isSelected STATE MANAGEMNT
566
- //
527
+ // VALUE <-> isSelected STATE MANAGEMENT
528
+ //
567
529
 
568
530
  /**
569
531
  This is the standard logic to compute a proposed isSelected state for a
570
532
  new value. This takes into account the `toggleOnValue`/`toggleOffValue`
571
533
  properties, among other things. It may return `YES`, `NO`, or
572
534
  `SC.MIXED_STATE`.
573
-
535
+
574
536
  @param {Object} value
575
537
  @returns {Boolean} return state
576
538
  */
577
539
  computeIsSelectedForValue: function(value) {
578
540
  var targetValue = this.get('toggleOnValue'), state, next ;
579
-
541
+
580
542
  if (SC.typeOf(value) === SC.T_ARRAY) {
581
543
 
582
544
  // treat a single item array like a single value
583
545
  if (value.length === 1) {
584
546
  state = (value[0] == targetValue) ;
585
-
547
+
586
548
  // for a multiple item array, check the states of all items.
587
549
  } else {
588
550
  state = null;
@@ -594,7 +556,7 @@ SC.ButtonView = SC.View.extend(SC.Control,
594
556
  return state === SC.MIXED_STATE ; // stop when we hit a mixed state.
595
557
  });
596
558
  }
597
-
559
+
598
560
  // for single values, just compare to the toggleOnValue...use truthiness
599
561
  } else {
600
562
  if(value === SC.MIXED_STATE) state = SC.MIXED_STATE;
@@ -611,7 +573,7 @@ SC.ButtonView = SC.View.extend(SC.Control,
611
573
  state = this.computeIsSelectedForValue(value);
612
574
  this.set('isSelected', state) ; // set new state...
613
575
  }.observes('value'),
614
-
576
+
615
577
  /** @private
616
578
  Whenever the selected state is changed, make sure the button value is
617
579
  also updated. Note that this may be called because the value has just
@@ -620,7 +582,7 @@ SC.ButtonView = SC.View.extend(SC.Control,
620
582
  _button_isSelectedDidChange: function() {
621
583
  var newState = this.get('isSelected'),
622
584
  curState = this.computeIsSelectedForValue(this.get('value'));
623
-
585
+
624
586
  // fix up the value, but only if computed state does not match.
625
587
  // never fix up value if isSelected is set to MIXED_STATE since this can
626
588
  // only come from the value.
@@ -633,11 +595,11 @@ SC.ButtonView = SC.View.extend(SC.Control,
633
595
 
634
596
  /** @private
635
597
  Used to store the keyboard equivalent.
636
-
598
+
637
599
  Setting the isDefault property to YES, for example, will cause the
638
600
  `keyEquivalent` property to 'return'. This cached value is used to restore
639
601
  the `keyEquivalent` property if isDefault is set back to NO.
640
-
602
+
641
603
  @type String
642
604
  */
643
605
  _defaultKeyEquivalent: null,
@@ -832,19 +794,20 @@ SC.ButtonView = SC.View.extend(SC.Control,
832
794
  _runAction: function(evt) {
833
795
  var action = this.get('action'),
834
796
  target = this.get('target') || null,
835
- rootResponder = this.getPath('pane.rootResponder');
836
-
797
+ rootResponder;
798
+
837
799
  if (action) {
838
- if (this._hasLegacyActionHandler()) {
839
- // old school... V
840
- this._triggerLegacyActionHandler(evt);
800
+ if (action && (SC.typeOf(action) === SC.T_FUNCTION)) {
801
+ this.action(evt);
802
+ return;
841
803
  } else {
804
+ rootResponder = this.getPath('pane.rootResponder');
842
805
  if (rootResponder) {
843
806
  // newer action method + optional target syntax...
844
807
  rootResponder.sendAction(action, target, this, this.get('pane'), null, this);
845
808
  }
846
809
  }
847
- }
810
+ }
848
811
  },
849
812
 
850
813
  /** @private */
@@ -861,27 +824,7 @@ SC.ButtonView = SC.View.extend(SC.Control,
861
824
  }
862
825
  },
863
826
 
864
- /** @private */
865
- _hasLegacyActionHandler: function() {
866
- var action = this.get('action');
867
- if (action && (SC.typeOf(action) === SC.T_FUNCTION)) return true;
868
- if (action && (SC.typeOf(action) === SC.T_STRING) && (action.indexOf('.') != -1)) return true;
869
- return false;
870
- },
871
-
872
- /** @private */
873
- _triggerLegacyActionHandler: function( evt )
874
- {
875
- if (!this._hasLegacyActionHandler()) return false;
876
-
877
- var action = this.get('action');
878
- if (SC.typeOf(action) === SC.T_FUNCTION) this.action(evt);
879
- if (SC.typeOf(action) === SC.T_STRING) {
880
- eval("this.action = function(e) { return "+ action +"(this, e); };");
881
- this.action(evt);
882
- }
883
- },
884
-
827
+
885
828
  /** @private */
886
829
  didBecomeKeyResponderFrom: function(keyView) {
887
830
  // focus the text field.
@@ -893,15 +836,17 @@ SC.ButtonView = SC.View.extend(SC.Control,
893
836
  }
894
837
  }
895
838
  },
896
-
839
+
897
840
  /** @private */
898
841
  willLoseKeyResponderTo: function(responder) {
899
842
  if (this._isFocused) this._isFocused = NO ;
900
843
  },
901
-
844
+
902
845
  /** @private */
903
846
  didAppendToDocument: function() {
904
- if(parseInt(SC.browser.msie, 0)===7 && this.get('useStaticLayout')){
847
+ if(SC.browser.isIE &&
848
+ SC.browser.compare(SC.browser.engineVersion, '7') === 0 &&
849
+ this.get('useStaticLayout')){
905
850
  var layout = this.get('layout'),
906
851
  elem = this.$(), w=0;
907
852
  if(elem && elem[0] && (w=elem[0].clientWidth) && w!==0 && this._labelMinWidthIE7===0){
@@ -936,7 +881,7 @@ SC.ButtonView = SC.View.extend(SC.Control,
936
881
  @constant
937
882
  @type Number
938
883
  */
939
- SC.ButtonView.CLICK_AND_HOLD_DELAY = SC.browser.msie ? 600 : 300;
884
+ SC.ButtonView.CLICK_AND_HOLD_DELAY = SC.browser.isIE ? 600 : 300;
940
885
 
941
886
  SC.REGULAR_BUTTON_HEIGHT=24;
942
887