sproutcore 1.6.0.rc.2-java → 1.6.0.1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (390) hide show
  1. data/CHANGELOG +12 -0
  2. data/VERSION.yml +1 -1
  3. data/bin/sc-docs +6 -1
  4. data/lib/buildtasks/target.rake +1 -1
  5. data/lib/frameworks/sproutcore/Buildfile +5 -1
  6. data/lib/frameworks/sproutcore/CHANGELOG.md +175 -1
  7. data/lib/frameworks/sproutcore/apps/test_controls/controllers/select.js +12 -0
  8. data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +19 -5
  9. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +28 -31
  10. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +9 -2
  11. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +21 -1
  12. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +1 -1
  13. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/checkbox_support.js +6 -1
  14. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +26 -8
  15. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +2 -0
  16. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +12 -5
  17. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +25 -9
  18. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +157 -5
  19. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +7 -6
  20. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +9 -3
  21. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +8 -8
  22. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +104 -4
  23. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +3 -56
  24. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +4 -2
  25. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +59 -0
  26. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +41 -1
  27. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/text_field_support.js +10 -2
  28. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +16 -1
  29. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +1 -1
  30. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +11 -0
  31. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +18 -2
  32. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +10 -6
  33. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +18 -1
  34. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +9 -1
  35. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +9 -4
  36. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +15 -3
  37. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +14 -8
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +8 -18
  39. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +12 -2
  40. data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +296 -0
  41. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +1 -1
  42. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +330 -326
  43. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +22 -1
  44. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +1 -1
  45. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +614 -614
  46. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/data_source.js +14 -1
  47. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +3 -1
  48. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +2 -0
  49. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +2 -0
  50. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +20 -13
  51. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +61 -46
  52. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +30 -30
  53. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +24 -24
  54. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/connectDataSource.js +31 -0
  55. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +1177 -0
  56. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +4 -63
  57. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +1 -1
  58. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
  59. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +7 -8
  60. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +18 -1
  61. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +9 -0
  62. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +3 -3
  63. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +3 -3
  64. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +1 -1
  65. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +1 -1
  66. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +1 -1
  67. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +1 -1
  68. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +1 -1
  69. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/master_detail.js +3 -2
  70. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/menu.js +12 -2
  71. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +1 -1
  72. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +1 -1
  73. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +1 -1
  74. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +1 -1
  75. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +2 -2
  76. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +1 -1
  77. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -1
  78. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +1 -1
  79. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/toolbar.js +1 -1
  80. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +1 -1
  81. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/workspace.js +1 -1
  82. data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +1 -0
  83. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +33 -22
  84. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +20 -1
  85. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +10 -3
  86. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +34 -7
  87. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +14 -15
  88. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +40 -14
  89. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +699 -700
  90. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +2 -2
  91. data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +11 -1
  92. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +16 -6
  93. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +0 -1
  94. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +49 -7
  95. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +9 -0
  96. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +6 -2
  97. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +4 -26
  98. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +20 -19
  99. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
  100. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +249 -249
  101. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/mixins/edit_mode.js +13 -5
  102. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/mixins/emptiness.js +53 -37
  103. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/render_delegates/form.js +2 -1
  104. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/render_delegates/form_row.js +3 -11
  105. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/mixins/edit_mode.js +53 -0
  106. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/mixins/emptiness.js +114 -0
  107. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form.js +174 -6
  108. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_row.js +86 -6
  109. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +80 -110
  110. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form_row.js +96 -97
  111. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +2 -1
  112. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +20 -36
  113. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +121 -0
  114. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +90 -0
  115. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/mixins/select_view_menu.js +139 -0
  116. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/render_delegates/select_button.js +14 -0
  117. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/ext/menu_resizing.js +25 -0
  118. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/bindings.js +43 -0
  119. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/mixins/select_view_menu/check_selected.js +32 -0
  120. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/popup_button/menu_setup.js +40 -0
  121. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/popup_button/show_menu.js +45 -0
  122. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/menu_width.js +49 -0
  123. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/tests/views/select/selected_item.js +191 -0
  124. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +264 -0
  125. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +450 -0
  126. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +14 -6
  127. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +1 -1
  128. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split.js +1 -1
  129. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split_divider.js +1 -1
  130. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +9 -0
  131. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +3 -2
  132. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +7 -17
  133. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +1 -1
  134. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +35 -8
  135. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +1 -1
  136. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +1 -1
  137. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor_delegate.js +1 -1
  138. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +1 -1
  139. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
  140. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +2 -0
  141. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +1 -1
  142. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +1 -1
  143. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +6 -6
  144. data/lib/frameworks/sproutcore/frameworks/foundation/resources/images/favicon.ico +0 -0
  145. data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +0 -5
  146. data/lib/frameworks/sproutcore/frameworks/foundation/system/exception_handler.js +4 -2
  147. data/lib/frameworks/sproutcore/frameworks/foundation/system/math.js +2 -1
  148. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +13 -0
  149. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +6 -9
  150. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +912 -0
  151. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +36 -7
  152. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +58 -4
  153. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +1 -3
  154. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +0 -15
  155. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +2 -2
  156. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +25 -14
  157. data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1 -1
  158. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -9
  159. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/flatten.js +24 -0
  160. data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +2 -1
  161. data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +5 -5
  162. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +19 -0
  163. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +3 -2
  164. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +1 -1
  165. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1 -1
  166. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +14 -14
  167. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +3 -0
  168. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +2 -2
  169. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +2 -2
  170. data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +1 -1
  171. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +3 -3
  172. data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +15 -16
  173. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +6 -2
  174. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +30 -0
  175. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +17 -0
  176. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +9 -2
  177. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +3 -1
  178. data/lib/frameworks/sproutcore/frameworks/testing/resources/runner.css +0 -1
  179. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +80 -0
  180. data/lib/frameworks/sproutcore/frameworks/yuireset/resources/core.css +0 -4
  181. data/lib/frameworks/sproutcore/lib/index.rhtml +2 -1
  182. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +3 -3
  183. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +2 -2
  184. data/lib/frameworks/sproutcore/themes/ace/resources/form/form.css +9 -0
  185. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +3 -1
  186. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/picker.js +1 -1
  187. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/workspace.js +1 -1
  188. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +1 -1
  189. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/panel.js +1 -1
  190. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +2 -0
  191. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +1 -1
  192. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/well.js +1 -1
  193. data/lib/sproutcore/builders/base.rb +5 -1
  194. data/lib/sproutcore/builders/handlebars.rb +12 -1
  195. data/lib/sproutcore/models/target.rb +1 -9
  196. data/lib/sproutcore/rack/proxy.rb +238 -92
  197. data/lib/sproutcore/tools/docs.rb +1 -7
  198. data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -0
  199. data/spec/fixtures/builder_tests/apps/handlebars_test/{template.handlebars → templates/template.handlebars} +2 -0
  200. data/spec/lib/builders/handlebars_spec.rb +10 -4
  201. data/sproutcore.gemspec +3 -1
  202. metadata +74 -274
  203. data/design/Technical Notes.graffle/QuickLook/Preview.pdf +0 -0
  204. data/design/Technical Notes.graffle/QuickLook/Thumbnail.tiff +0 -0
  205. data/design/Technical Notes.graffle/data.plist +0 -5534
  206. data/design/Technical Notes.graffle/image8.png +0 -0
  207. data/lib/frameworks/sproutcore/design/CollectionView State Charts.graffle +0 -4848
  208. data/lib/frameworks/sproutcore/design/Design Charts.graffle +0 -16845
  209. data/lib/frameworks/sproutcore/design/Sproutcore_DatastoreDesign.graffle/QuickLook/Preview.pdf +0 -0
  210. data/lib/frameworks/sproutcore/design/Sproutcore_DatastoreDesign.graffle/QuickLook/Thumbnail.tiff +0 -0
  211. data/lib/frameworks/sproutcore/design/Sproutcore_DatastoreDesign.graffle/data.plist +0 -19588
  212. data/lib/frameworks/sproutcore/design/Sproutcore_DatastoreDesign.graffle/image8.png +0 -0
  213. data/lib/frameworks/sproutcore/design/Sproutcore_Design_Template.graffle/QuickLook/Preview.pdf +0 -0
  214. data/lib/frameworks/sproutcore/design/Sproutcore_Design_Template.graffle/QuickLook/Thumbnail.tiff +0 -0
  215. data/lib/frameworks/sproutcore/design/Sproutcore_Design_Template.graffle/data.plist +0 -1452
  216. data/lib/frameworks/sproutcore/design/Sproutcore_Design_Template.graffle/image8.png +0 -0
  217. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/QuickLook/Preview.pdf +0 -0
  218. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/QuickLook/Thumbnail.tiff +0 -0
  219. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/data.plist +0 -24187
  220. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image10.png +0 -0
  221. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image11.png +0 -0
  222. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image13.png +0 -0
  223. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image15.png +0 -0
  224. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image16.png +0 -0
  225. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image17.png +0 -0
  226. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image18.png +0 -0
  227. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image19.png +0 -0
  228. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image22.tiff +0 -0
  229. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image23.png +0 -0
  230. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image24.png +0 -0
  231. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image25.png +0 -0
  232. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image30.png +0 -0
  233. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image31.png +0 -0
  234. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image8.png +0 -0
  235. data/lib/frameworks/sproutcore/design/TestRunner_Design.graffle/image9.png +0 -0
  236. data/lib/frameworks/sproutcore/design/greenhouse-statechart.graffle +0 -9025
  237. data/lib/frameworks/sproutcore/design/iphone-webapp-loading.psd +0 -0
  238. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/english.lproj/default_styles.css +0 -5
  239. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/english.lproj/strings.js +0 -15
  240. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_checkbox_field.js +0 -17
  241. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_field.js +0 -17
  242. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_label.js +0 -17
  243. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_radio_field.js +0 -17
  244. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/tests/views/form_text_field.js +0 -17
  245. data/lib/frameworks/sproutcore/themes/ace/designs/dark.psd +0 -0
  246. data/lib/frameworks/sproutcore/themes/ace/designs/light.psd +0 -0
  247. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/active_button.psd +0 -0
  248. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/normal_button.psd +0 -0
  249. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_active_button.psd +0 -0
  250. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_button.psd +0 -0
  251. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button.psd +0 -0
  252. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_capsule.psd +0 -0
  253. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_pointer.psd +0 -0
  254. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button.psd +0 -0
  255. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_capsule.psd +0 -0
  256. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_pointer.psd +0 -0
  257. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button.psd +0 -0
  258. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_capsule.psd +0 -0
  259. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_pointer.psd +0 -0
  260. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button.psd +0 -0
  261. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_capsule.psd +0 -0
  262. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_pointer.psd +0 -0
  263. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button.psd +0 -0
  264. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button_pointer.psd +0 -0
  265. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button.psd +0 -0
  266. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button_pointer.psd +0 -0
  267. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button.psd +0 -0
  268. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button_pointer.psd +0 -0
  269. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button.psd +0 -0
  270. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button_pointer.psd +0 -0
  271. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/active_button.psd +0 -0
  272. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/normal_button.psd +0 -0
  273. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_active_button.psd +0 -0
  274. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_button.psd +0 -0
  275. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button.psd +0 -0
  276. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_capsule.psd +0 -0
  277. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_pointer.psd +0 -0
  278. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button.psd +0 -0
  279. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_capsule.psd +0 -0
  280. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_pointer.psd +0 -0
  281. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button.psd +0 -0
  282. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_capsule.psd +0 -0
  283. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_pointer.psd +0 -0
  284. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button.psd +0 -0
  285. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_capsule.psd +0 -0
  286. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_pointer.psd +0 -0
  287. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button.psd +0 -0
  288. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button_pointer.psd +0 -0
  289. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button.psd +0 -0
  290. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button_pointer.psd +0 -0
  291. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button.psd +0 -0
  292. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button_pointer.psd +0 -0
  293. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button.psd +0 -0
  294. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button_pointer.psd +0 -0
  295. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/popup/active_select.psd +0 -0
  296. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/popup/normal_select.psd +0 -0
  297. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked.psd +0 -0
  298. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked_active.psd +0 -0
  299. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed.psd +0 -0
  300. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed_active.psd +0 -0
  301. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked.psd +0 -0
  302. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked_active.psd +0 -0
  303. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked.psd +0 -0
  304. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked_active.psd +0 -0
  305. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed.psd +0 -0
  306. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed_active.psd +0 -0
  307. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked.psd +0 -0
  308. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked_active.psd +0 -0
  309. data/lib/frameworks/sproutcore/themes/ace/designs/psds/collection/source-list/selection.psd +0 -0
  310. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed.psd +0 -0
  311. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed_active.psd +0 -0
  312. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open.psd +0 -0
  313. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open_active.psd +0 -0
  314. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/checkmark.psd +0 -0
  315. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/checkmark_active.psd +0 -0
  316. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/down.psd +0 -0
  317. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu.psd +0 -0
  318. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu_item.psd +0 -0
  319. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/up.psd +0 -0
  320. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/panel.psd +0 -0
  321. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/pointers.psd +0 -0
  322. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover.psd +0 -0
  323. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_empty.psd +0 -0
  324. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_notoolbar.psd +0 -0
  325. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers.psd +0 -0
  326. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers_notoolbar.psd +0 -0
  327. data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_content.psd +0 -0
  328. data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_indeterminate_content.psd +0 -0
  329. data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_track.psd +0 -0
  330. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_active.psd +0 -0
  331. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_mixed.psd +0 -0
  332. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_mixed_active.psd +0 -0
  333. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_selected.psd +0 -0
  334. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_selected_active.psd +0 -0
  335. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_unselected.psd +0 -0
  336. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/thumb.psd +0 -0
  337. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows.psd +0 -0
  338. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows_active.psd +0 -0
  339. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/thumb.psd +0 -0
  340. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows.psd +0 -0
  341. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows_active.psd +0 -0
  342. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_active.psd +0 -0
  343. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_normal.psd +0 -0
  344. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected.psd +0 -0
  345. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected_active.psd +0 -0
  346. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_active.psd +0 -0
  347. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_normal.psd +0 -0
  348. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected.psd +0 -0
  349. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected_active.psd +0 -0
  350. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_active.psd +0 -0
  351. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_normal.psd +0 -0
  352. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected.psd +0 -0
  353. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected_active.psd +0 -0
  354. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_active.psd +0 -0
  355. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_normal.psd +0 -0
  356. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected.psd +0 -0
  357. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected_active.psd +0 -0
  358. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob.psd +0 -0
  359. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob_active.psd +0 -0
  360. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob.psd +0 -0
  361. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob_active.psd +0 -0
  362. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob.psd +0 -0
  363. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob_active.psd +0 -0
  364. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/track.psd +0 -0
  365. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/track.psd +0 -0
  366. data/lib/frameworks/sproutcore/themes/ace/designs/psds/toolbar/toolbar.psd +0 -0
  367. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch.psd +0 -0
  368. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_handle.psd +0 -0
  369. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_off.psd +0 -0
  370. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_on.psd +0 -0
  371. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/Panel.drawit/Data +0 -0
  372. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
  373. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
  374. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/SproutCore Theme Buttons.psd +0 -0
  375. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView Pattern.drawit/Data +0 -0
  376. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg +0 -0
  377. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg +0 -0
  378. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-x.drawit/Data +0 -0
  379. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
  380. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
  381. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-y.drawit/Data +0 -0
  382. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
  383. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
  384. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sc-theme-repeat-x-2.psd +0 -0
  385. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sc-theme-repeat-x.psd +0 -0
  386. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sc-theme-sprite.psd +0 -0
  387. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sc-theme-ysprite.psd +0 -0
  388. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/shared-icons.psd +0 -0
  389. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sproutcore-logo.psd +0 -0
  390. data/lib/frameworks/sproutcore/themes/legacy_theme/Source/sticky-note.psd +0 -0
@@ -5,13 +5,93 @@
5
5
  // ==========================================================================
6
6
 
7
7
  /*globals Forms module test ok equals same stop start */
8
+ var pane = SC.Pane.create();
9
+ module("Forms - Form Row", {
10
+ setup: function() {
11
+ pane.append();
12
+ },
8
13
 
9
- module("Forms.FormRowView");
14
+ teardown: function() {
15
+ pane.remove();
16
+ }
17
+ });
18
+
19
+ // - binds content
20
+ // - sets contentValueKey, respecting _singleField
21
+
22
+ test("Binds content to child views", function() {
23
+ SC.RunLoop.begin();
24
+ var test = SC.FormRowView.create({
25
+ childViews: 'a b'.w(),
26
+ a: SC.View.create(),
27
+ b: SC.View.create({ content: "HI" })
28
+ });
29
+ var content = SC.Object.create();
30
+ test.set('content', content);
31
+ SC.RunLoop.end();
32
+
33
+ equals(test.a.get('content'), content, "Content was set on view without content");
34
+ equals(test.b.get('content'), "HI", "Content stayed the same on view with content");
35
+ });
36
+
37
+ test("Sets contentValueKey on children", function() {
38
+ SC.RunLoop.begin();
39
+ var test = SC.FormRowView.create({
40
+ childViews: 'a b'.w(),
41
+ a: SC.View.create(),
42
+ b: SC.View.create({ contentValueKey: "HI" })
43
+ });
44
+ SC.RunLoop.end();
45
+
46
+ equals(test.a.get('contentValueKey'), 'a', "contentValueKey was set on the view without one");
47
+ equals(test.b.get('contentValueKey'), "HI", "contentValueKey was not set on view with one");
48
+ });
49
+
50
+ test("Sets contentValueKey to own key for _singleField", function() {
51
+ SC.RunLoop.begin();
52
+ var test = SC.FormRowView.create({
53
+ formKey: "theFormKey",
54
+ childViews: '_singleField'.w(),
55
+ _singleField: SC.View.create()
56
+ });
57
+ SC.RunLoop.end();
10
58
 
11
- // TODO: Replace with real unit test for Forms.FormRowView
12
- test("test description", function() {
13
- var expected = "test";
14
- var result = "test";
15
- equals(result, expected, "test should equal test");
59
+ equals(test._singleField.get('contentValueKey'), 'theFormKey', "contentValueKey is set to row's formKey if the view is a _singleField");
16
60
  });
17
61
 
62
+ test("Measuring label width", function() {
63
+ SC.RunLoop.begin();
64
+ var row = SC.FormRowView.create({
65
+ label: "Hi"
66
+ });
67
+ pane.appendChild(row);
68
+ SC.RunLoop.end();
69
+
70
+ var size = row.get('rowLabelMeasuredSize');
71
+ ok(size > 0, "Size should not be 0");
72
+
73
+ SC.RunLoop.begin();
74
+ row.set('label', "Hiyo!");
75
+ SC.RunLoop.end();
76
+
77
+ var newSize = row.get('rowLabelMeasuredSize');
78
+ ok(newSize > size, "Size grew when label text did");
79
+ });
80
+
81
+ test("Creating Form Rows", function() {
82
+ var ret = SC.FormRowView.row("the label", SC.View.extend({
83
+ aProperty: YES
84
+ }), { extendedRow: YES });
85
+
86
+ ret = SC.FormRowView.create(ret);
87
+
88
+ equals(ret.extendedRow, YES, "Row was extended");
89
+ equals(ret._singleField.get('aProperty'), YES, "Property was defined on field");
90
+ equals(ret.get('label'), "the label");
91
+
92
+ ret = SC.FormRowView.row(SC.View.extend({ aProperty: YES }), { extendedRow: YES });
93
+ ret = SC.FormRowView.create(ret);
94
+
95
+ equals(ret.extendedRow, YES, "Row was extended");
96
+ equals(ret._singleField.get('aProperty'), YES, "Property was defined on field");
97
+ });
@@ -12,11 +12,8 @@ sc_require("views/form_row");
12
12
 
13
13
  /**
14
14
  @class
15
-
16
- FormView is a lot like a normal view. However, in addition to the childViews
17
- collection, it has a fields collection. The items referenced here are NOT
18
- just children; they are explicity stated in the array fields, which works
19
- just like childViews, but marks fields to be laid out automatically.
15
+ FormView lays out rows, manages their label widths, binds their
16
+ content properties, and sets up their contentValueKeys as needed.
20
17
 
21
18
  Usually, you will place rows into the FormView:
22
19
 
@@ -32,96 +29,74 @@ sc_require("views/form_row");
32
29
  items: ["male", "female"]
33
30
  }))
34
31
 
35
- The name of the row (ie. 'fullName'), is passed down to the *FieldView, and used as the key
32
+ The name of the row (ie. 'fullName'), is passed down to the fields, and used as the key
36
33
  to bind the value property to the content. In this case it will bind content.fullName to the
37
- value property of the textFieldView. Easy!
38
-
39
- One important thing about the field collection: It can contain any type of
40
- view, including other FormViews or subclasses of FormView.
41
-
42
- This is important, because this is how you make nice rows that have a
43
- label and a field: these rows are actually subclasses of FormView itself.
44
-
45
- Editing
46
- -------
47
-
48
- The form does not allow editing by default; editing must be started by calling
49
- beginEditing.
34
+ value property of the textFieldView.
50
35
 
51
36
 
52
37
  @extends SC.View
53
- @implements SC.Editable
38
+ @implements SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEditMode
54
39
  */
55
40
 
56
41
  SC.FormView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEditMode, /** @scope SC.FormView.prototype */ {
42
+ // We lay out forms vertically. Each item gets its own "row". Wrapping makes
43
+ // no sense, as the FormView should grow with each row.
57
44
  layoutDirection: SC.LAYOUT_VERTICAL,
58
45
  canWrap: NO,
59
-
60
- renderDelegateName: 'formRenderDelegate',
61
-
62
- formFlowSpacing: undefined,
63
- formFlowSpacingDefault: { left: 5, top: 5, bottom: 5, right: 5 },
64
-
65
- defaultFlowSpacing: function() {
66
- return this.getThemedProperty('formFlowSpacing', 'FORM_FLOW_SPACING');
67
- }.property('formFlowSpacing', 'theme'),
68
-
69
- classNames: ["sc-form-view"],
70
46
 
71
- /**
72
- Whether to automatically start editing.
73
- */
74
- editsByDefault: YES,
47
+ renderDelegateName: 'formRenderDelegate',
75
48
 
76
49
  /**
77
- The input key view (to set previousKeyView for the first row, field, or sub-form).
50
+ The default padding around items in the form. By default, this comes from the theme.
51
+ You can supply your own directly, or override the formRenderDelegate:
78
52
 
79
- For fields, this will likely be the field itself.
53
+ // base it on the existing render delegate
54
+ MyTheme.formRenderDelegate = SC.AceTheme.formRenderDelegate.create({
55
+ flowSpacing: { left: 5, top: 5, right: 5, bottom: 5 }
56
+ });
80
57
  */
81
- firstKeyView: null,
58
+ defaultFlowSpacing: SC.propertyFromRenderDelegate('flowSpacing', {}),
59
+
60
+ classNames: ["sc-form-view"],
82
61
 
83
62
  /**
84
- The output key view.
63
+ Whether to automatically start editing.
85
64
  */
86
- lastKeyView: null,
65
+ editsByDefault: YES,
87
66
 
88
67
  /**
89
- The content to bind the form to. This content object is passed to all children.
68
+ The content to bind the form to. This content object is passed to all children.
90
69
 
91
- All child views, if added at design time via string-based childViews array, will get their
92
- contentValueKey set to their string. Note that SC.RowView passes on its contentValueKey to its
93
- child field if it doesn't have its own, and if its isNested property is YES, uses it to find its
94
- own content object.
70
+ All child views, if added at design time via string-based childViews array, will get their
71
+ contentValueKey set to their own key. Note that SC.RowView passes on its contentValueKey to its
72
+ child field, and if its isNested property is YES, uses it to find its own content object.
95
73
  */
96
74
  content: null,
97
75
 
98
76
  /**
99
- Rows in the form do not have to be full objects at load time. They can also be simple hashes
100
- which are then passed to exampleRow.extend.
77
+ Rows in the form do not have to be full SC.FormRowView at design time. They can also be hashes
78
+ that get loaded into rows.
101
79
  */
102
80
  exampleRow: SC.FormRowView.extend({
103
81
  labelView: SC.FormRowView.LabelView.extend({ textAlign: SC.ALIGN_RIGHT })
104
82
  }),
105
83
 
106
84
  /**
107
- Init function.
85
+ @private
108
86
  */
109
- init: function()
110
- {
87
+ init: function() {
111
88
  if (this.get("editsByDefault")) this.set("isEditing", YES);
112
89
  sc_super();
113
90
  },
114
91
 
115
92
  /**
116
- Calls _updateFields to load the fields.
117
93
  */
118
- createChildViews: function()
119
- {
120
- // keep array of keys so we can pass on key to child.
94
+ createChildViews: function() {
121
95
  var cv = SC.clone(this.get("childViews"));
122
96
  var idx, len = cv.length, key, v, exampleRow = this.get("exampleRow");
123
-
124
- // preprocess to handle templated rows (rows that use exampleRow to initialize)
97
+
98
+ // rows that are provided as plain hashes need to be created by passing them into
99
+ // exampleRow.extend.
125
100
  for (idx = 0; idx < len; idx++) {
126
101
  key = cv[idx];
127
102
  if (SC.typeOf(key) === SC.T_STRING) {
@@ -131,56 +106,54 @@ SC.FormView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEd
131
106
  }
132
107
  }
133
108
  }
134
-
135
- // We need to add in contentValueKey before we call sc_super
136
- for (idx = 0; idx < len; idx++) {
137
- key = cv[idx];
138
- if (SC.typeOf(key) === SC.T_STRING) {
139
- v = this.get(key);
140
- if (v.isClass && v.prototype.hasContentValueSupport && !v.prototype.contentValueKey && v.prototype.isFormRow) {
141
- v.prototype.contentValueKey = key ;
142
- } else {
143
- v.prototype.formKey = key;
144
- }
145
- }
146
- }
147
-
148
- // get content for further ops
109
+
110
+ // we will be initializing the 'content' property for all child views
149
111
  var content = this.get("content");
150
112
  sc_super();
151
-
152
- // now, do the actual passing it
113
+
153
114
  for (idx = 0; idx < len; idx++) {
154
115
  key = cv[idx];
155
-
116
+
156
117
  // if the view was originally declared as a string, then we have something to give it
157
118
  if (SC.typeOf(key) === SC.T_STRING) {
158
119
  // try to get the actual view
159
120
  v = this.get(key);
160
-
161
- // see if it does indeed exist, and if it doesn't have a value already
162
- if (v && !v.isClass && v.isFormRow) {
163
- // set content
121
+
122
+ if (v && !v.isClass) {
123
+ // we used to set contentValueKey on applicable children, but given that was too
124
+ // implicit: any LabelView child of the form view would get the contentValueKey.
125
+ //
126
+ // instead, we give ALL views a formKey for their convenience; if they want to
127
+ // use contentValue support they should do so directly.
128
+ v.set('formKey', key);
129
+
130
+ // We used to try to be clever and bind child views' 'content' to
131
+ // individual properties if the views didn't have content value support.
132
+ // For instance, a plain view named 'myView' would get bound to content.myView.
133
+ //
134
+ // Cleverness is evil, so, we have dropped this. Instead, we always bind content,
135
+ // and always do so directly.
164
136
  if (!v.get("content")) {
165
-
166
- // controls can calculate their own value based on the contentValueKey we set earlier
167
- if (v.get('hasContentValueSupport')) v.bind('content', '.owner.content');
168
- // if it isn't a control then we can't use contentValueKey, so bind the content manually
169
- else v.bind('content', '.owner.content.' + key);
137
+ v.bind('content', this, 'content');
170
138
  }
171
-
172
- // set the label size measuring stuff
173
- if (this.get('labelWidth') !== null) v.set("shouldMeasureLabel", NO);
174
-
175
- // set label (if possible)
176
- if (v.get("isFormRow") && SC.none(v.get("label"))) {
177
- v.set("label", key.humanize().titleize());
139
+
140
+ // for form rows, set up label measuring and the label itself.
141
+ if (v.isFormRow) {
142
+ // set label (if possible).
143
+ if (SC.none(v.get('label'))) {
144
+ v.set("label", key.humanize().titleize());
145
+ }
146
+
147
+ // set the label size measuring stuff
148
+ if (this.get('labelWidth') !== null) {
149
+ v.set("shouldMeasureLabel", NO);
150
+ }
178
151
  }
152
+
179
153
  }
180
154
  }
181
155
  }
182
-
183
- // our internal bookeeping to prevent .
156
+
184
157
  this._hasCreatedRows = YES;
185
158
  this.recalculateLabelWidth();
186
159
  },
@@ -192,10 +165,18 @@ SC.FormView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEd
192
165
  isRowDelegate: YES,
193
166
 
194
167
  /**
195
- The manually specified label width (null to automatically calculate, which is the default).
168
+ Supply a label width to avoid automatically calculating the widths of the labels
169
+ in the form. Leave null to let SproutCore automatically determine the proper width
170
+ for the label.
171
+
172
+ @type Number
173
+ @default null
196
174
  */
197
175
  labelWidth: null,
198
176
 
177
+ /**
178
+ Tells the child rows whether they should measure their labels or not.
179
+ */
199
180
  labelWidthDidChange: function() {
200
181
  var childViews = this.get('childViews'), i, len = childViews.length,
201
182
  shouldMeasure = SC.none(this.get('labelWidth'));
@@ -208,14 +189,17 @@ SC.FormView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEd
208
189
  }.observes('labelWidth'),
209
190
 
210
191
  /**
211
- Calculates the current label width (if labelWidth is not null, it sets using the label width)
192
+ Propagates the label width to the child rows, finding the measured size if necessary.
212
193
  */
213
194
  recalculateLabelWidth: function() {
214
- if (!this._hasCreatedRows) return;
195
+ if (!this._hasCreatedRows) {
196
+ return;
197
+ }
215
198
 
216
199
  var ret = this.get("labelWidth"), children = this.get("childViews"), idx, len = children.length, child;
217
200
 
218
- // calculate by looping through child views and getting size (if possible)
201
+ // calculate by looping through child views and getting size (if possible and if
202
+ // no label width is explicitly set)
219
203
  if (ret === null) {
220
204
  ret = 0;
221
205
  for (idx = 0; idx < len; idx++) {
@@ -269,19 +253,5 @@ SC.mixin(SC.FormView, {
269
253
  row: function(optionalClass, properties, rowExt)
270
254
  {
271
255
  return SC.FormRowView.row(optionalClass, properties, rowExt);
272
- },
273
-
274
- /**
275
- Creates a field.
276
-
277
- Behind the scenes, this wraps the fieldClass in a FormFieldView—usually a
278
- specialized variant of FormFieldView meant specifically to wrap that class.
279
-
280
- You can add your own special variants of FormFieldView if you want to expose
281
- special features of your own view by calling FormFieldView.registerWrapper.
282
- */
283
- field: function(fieldClass, properties)
284
- {
285
- return SC.FormFieldView.field(fieldClass, properties);
286
256
  }
287
257
  });
@@ -8,95 +8,93 @@
8
8
  /*globals Forms */
9
9
 
10
10
  /** @class
11
- Represents a single row in a form. Rows have label and any number of other child views.
11
+ Represents a single row in a form. Rows have label and any number of other child views.
12
12
 
13
-
14
- @extends SC.FormView
15
- @author Alex Iskander
13
+
14
+ @extends SC.FormView
15
+ @author Alex Iskander
16
16
  */
17
17
  sc_require("mixins/emptiness");
18
18
  sc_require("mixins/edit_mode");
19
19
 
20
20
  SC.FormRowView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.FormsEditMode,
21
21
  /** @scope Forms.FormRowView.prototype */ {
22
+ classNames: ["sc-form-row-view"],
22
23
  renderDelegateName: 'formRowRenderDelegate',
23
-
24
- layout: {left: 0, width: 0, height: 0},
25
24
 
26
- rowFlowSpacing: undefined,
27
- rowFlowPadding: undefined,
28
-
25
+ flowPadding: SC.propertyFromRenderDelegate('flowPadding'),
26
+ defaultFlowSpacing: SC.propertyFromRenderDelegate('flowSpacing'),
27
+
29
28
  fillWidth: YES,
29
+ layoutDirection: SC.LAYOUT_HORIZONTAL,
30
+
31
+ layout: {left: 0, width: 0, height: 0},
32
+
33
+ /**
34
+ Walks like a duck.
35
+ */
36
+ isFormRow: YES,
37
+
38
+ /**
39
+ A value set so that FormView knows to tell us about the row label size change.
40
+ */
41
+ hasRowLabel: YES,
42
+
30
43
 
31
- defaultFlowSpacing: function() {
32
- return this.getThemedProperty("rowFlowSpacing", 'FORM_ROW_FLOW_SPACING');
33
- }.property("rowFlowSpacing", "theme"),
44
+ /**
45
+ The text to display next to the row. If undefined, SproutCore will try
46
+ to set it automatically to the key corresponding to this row in the FormView.
47
+ */
48
+ label: undefined,
34
49
 
35
- flowPadding: function() {
36
- return this.getThemedProperty("rowFlowPadding", 'FORM_ROW_FLOW_PADDING');
37
- }.property("rowFlowPadding", "theme"),
50
+ /**
51
+ The actual size for the label, as assigned by the parent FormView.
52
+ */
53
+ rowLabelSize: 0,
38
54
 
39
- classNames: ["sc-form-row-view"],
55
+ /**
56
+ The measured size of the label. The parent FormView may use this to
57
+ determine the proper rowLabelSize.
58
+ */
59
+ rowLabelMeasuredSize: 0,
40
60
 
41
61
  /**
42
- Walks like a duck.
62
+ If NO, the label will not automatically measure itself. The parent
63
+ FormView normally manages this property for FormRowView.
64
+
65
+ Note that FormRowView never changes its own rowLabelSize: it only
66
+ measures it. The measurement is placed into rowLabelMeasuredSize.
67
+
68
+ The FormView then sets the rowLabelSize, which is used to set the
69
+ width of the LabelView.
43
70
  */
44
- isFormRow: YES,
45
-
46
- /**
47
- The label for the row (string label)
48
- */
49
- label: "",
50
-
51
- /**
52
- The current size of the labels.
53
- */
54
- rowLabelSize: 0,
55
-
56
- /**
57
- The current measured size of the label.
58
- */
59
- rowLabelMeasuredSize: 0,
60
-
61
- /**
62
- If NO, the label will not automatically measure itself.
63
- */
64
- shouldMeasureLabel: YES,
65
-
66
- /**
67
- A value set so that FormView knows to tell us about the row label size change.
68
- */
69
- hasRowLabel: YES,
70
-
71
- /**
72
- The label view.
73
- */
74
- labelView: null,
75
-
76
- /**
77
- Direction of the flow.
78
- */
79
- layoutDirection: SC.LAYOUT_HORIZONTAL,
80
-
71
+ shouldMeasureLabel: YES,
72
+
73
+ /**
74
+ The label view. The default is an SC.FormRowView.LabelView, which is
75
+ configured to handle resizing.
76
+ */
77
+ labelView: null, // NOTE: gets set at end of file.
78
+
81
79
  /**
82
- Updates keys, content, etc. on fields. Also, handles our "special" field (only-one case)
80
+ Updates keys, content, etc. on fields. Also, handles our "special" field (only-one case)
83
81
  */
84
- createChildViews: function()
85
- {
82
+ createChildViews: function() {
86
83
  // keep array of keys so we can pass on key to child.
87
- var cv = SC.clone(this.get("childViews"));
84
+ var cv = SC.clone(this.get('childViews'));
88
85
 
89
86
  // add label
90
87
  if (this.labelView.isClass) {
91
88
  this.labelView = this.createChildView(this.labelView, {
92
- value: this.get("label")
89
+ value: this.get('label')
93
90
  });
94
- this.labelView.addObserver("measuredSize", this, "labelSizeDidChange");
95
- this.labelView.bind("shouldMeasureSize", this, "shouldMeasureLabel");
96
- this.get("childViews").unshift(this.labelView);
91
+
92
+ this.labelView.addObserver('measuredSize', this, 'labelSizeDidChange');
93
+ this.labelView.bind('shouldMeasureSize', this, 'shouldMeasureLabel');
94
+ this.get('childViews').unshift(this.labelView);
97
95
  }
98
96
 
99
- var content = this.get("content");
97
+ var content = this.get('content');
100
98
 
101
99
  sc_super();
102
100
 
@@ -110,27 +108,29 @@ SC.FormRowView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.Form
110
108
  if (SC.typeOf(key) === SC.T_STRING) {
111
109
  // try to get the actual view
112
110
  v = this.get(key);
113
-
111
+
114
112
  // see if it does indeed exist, and if it doesn't have a value already
115
113
  if (v && !v.isClass) {
116
- if (!v.get("contentValueKey")) {
114
+ if (!v.get('contentValueKey')) {
117
115
  //
118
116
  // NOTE: WE HAVE A SPECIAL CASE
119
- // If this is the single field, pass through our contentValueKey
117
+ // If this is the single field, pass through our formKey
118
+ // Single-field rows are created by the SC.FormView.row helper.
120
119
  if (key === "_singleField") {
121
- v.set("contentValueKey", this.get("contentValueKey"));
120
+ v.set('contentValueKey', this.get('formKey'));
122
121
  } else {
123
- v.set("contentValueKey", key);
122
+ v.set('contentValueKey', key);
124
123
  }
125
124
  }
126
- if (!v.get("content")) {
127
- v.bind('content', '.owner.content') ;
125
+
126
+ if (!v.get('content')) {
127
+ v.bind('content', this, 'content') ;
128
128
  }
129
129
  }
130
-
130
+
131
131
  }
132
132
  }
133
-
133
+
134
134
  this.rowLabelSizeDidChange();
135
135
  },
136
136
 
@@ -156,32 +156,31 @@ SC.FormRowView = SC.View.extend(SC.FlowedLayout, SC.CalculatesEmptiness, SC.Form
156
156
  });
157
157
 
158
158
  SC.FormRowView.mixin({
159
- row: function(label, fieldType, ext)
160
- {
161
- if (label.isClass) {
162
- ext = fieldType;
163
- fieldType = label;
164
- label = null;
165
- }
166
- // now, create a hash (will be used by the parent form's exampleRow)
167
- if (!ext) {
168
- ext = {};
169
- } else {
170
- ext = SC.clone(ext);
171
- }
172
- ext.label = label;
173
- ext.childViews = ["_singleField"];
174
- ext._singleField = fieldType;
175
- return ext;
176
- },
177
-
178
- LabelView: SC.LabelView.extend(SC.AutoResize, SC.CalculatesEmptiness, {
179
- shouldAutoResize: NO, // only change the measuredSize so we can update.
180
- layout: { left:0, top:0, width: 0, height: 18 },
181
- fillHeight: YES,
182
- classNames: ["sc-form-label"],
159
+ row: function(label, fieldType, ext) {
160
+ if (label.isClass) {
161
+ ext = fieldType;
162
+ fieldType = label;
163
+ label = null;
164
+ }
165
+ // now, create a hash (will be used by the parent form's exampleRow)
166
+ if (!ext) {
167
+ ext = {};
168
+ } else {
169
+ ext = SC.clone(ext);
170
+ }
171
+ ext.label = label;
172
+ ext.childViews = ["_singleField"];
173
+ ext._singleField = fieldType;
174
+ return ext;
175
+ },
176
+
177
+ LabelView: SC.LabelView.extend(SC.AutoResize, SC.CalculatesEmptiness, {
178
+ shouldAutoResize: NO, // only change the measuredSize so we can update.
179
+ layout: { left:0, top:0, width: 0, height: 18 },
180
+ fillHeight: YES,
181
+ classNames: ["sc-form-label"],
183
182
  isValue: NO
184
- })
183
+ })
185
184
  });
186
185
 
187
186
  SC.FormRowView.prototype.labelView = SC.FormRowView.LabelView.design();