sproutit-sproutcore 1.0.0.20090407205609 → 1.0.0.20090408130025

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (574) hide show
  1. data/frameworks/sproutcore/Buildfile +63 -0
  2. data/frameworks/sproutcore/HISTORY +682 -0
  3. data/frameworks/sproutcore/README +22 -0
  4. data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +149 -0
  5. data/frameworks/sproutcore/apps/sc_jsdoc/core.js +16 -0
  6. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +17 -0
  7. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +99 -0
  8. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
  9. data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/strings.js +15 -0
  10. data/frameworks/sproutcore/apps/sc_jsdoc/main.js +27 -0
  11. data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +21 -0
  12. data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +209 -0
  13. data/frameworks/sproutcore/apps/sc_qunit/core.js +16 -0
  14. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +17 -0
  15. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +107 -0
  16. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
  17. data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +15 -0
  18. data/frameworks/sproutcore/apps/sc_qunit/main.js +18 -0
  19. data/frameworks/sproutcore/apps/sc_qunit/models/test.js +24 -0
  20. data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +52 -0
  21. data/frameworks/sproutcore/apps/tests/controllers/targets.js +47 -0
  22. data/frameworks/sproutcore/apps/tests/controllers/test.js +20 -0
  23. data/frameworks/sproutcore/apps/tests/controllers/tests.js +38 -0
  24. data/frameworks/sproutcore/apps/tests/core.js +35 -0
  25. data/frameworks/sproutcore/apps/tests/english.lproj/loading.rhtml +9 -0
  26. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +19 -0
  27. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +86 -0
  28. data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +17 -0
  29. data/frameworks/sproutcore/apps/tests/fixtures/target.js +43 -0
  30. data/frameworks/sproutcore/apps/tests/fixtures/test.js +43 -0
  31. data/frameworks/sproutcore/apps/tests/main.js +39 -0
  32. data/frameworks/sproutcore/apps/tests/models/target.js +49 -0
  33. data/frameworks/sproutcore/apps/tests/models/test.js +20 -0
  34. data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +15 -0
  35. data/frameworks/sproutcore/apps/tests/tests/controllers/test.js +15 -0
  36. data/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +15 -0
  37. data/frameworks/sproutcore/apps/tests/tests/models/target.js +15 -0
  38. data/frameworks/sproutcore/apps/tests/tests/models/test.js +15 -0
  39. data/frameworks/sproutcore/apps/welcome/core.js +23 -0
  40. data/frameworks/sproutcore/apps/welcome/english.lproj/loading.rhtml +8 -0
  41. data/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +43 -0
  42. data/frameworks/sproutcore/apps/welcome/english.lproj/strings.js +15 -0
  43. data/frameworks/sproutcore/apps/welcome/main.js +36 -0
  44. data/frameworks/sproutcore/design/Design Charts.graffle +15819 -0
  45. data/frameworks/sproutcore/design/Record State Table.numbers +0 -0
  46. data/frameworks/sproutcore/frameworks/datastore/core.js +14 -0
  47. data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +113 -0
  48. data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +256 -0
  49. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +196 -0
  50. data/frameworks/sproutcore/frameworks/datastore/debug/json.js +71 -0
  51. data/frameworks/sproutcore/frameworks/datastore/debug/standard_setup.js +96 -0
  52. data/frameworks/sproutcore/frameworks/datastore/fixtures/author_fixtures.js +2503 -0
  53. data/frameworks/sproutcore/frameworks/datastore/fixtures/sample.js +17 -0
  54. data/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +92 -0
  55. data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +38 -0
  56. data/frameworks/sproutcore/frameworks/datastore/models/record.js +430 -0
  57. data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +361 -0
  58. data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +305 -0
  59. data/frameworks/sproutcore/frameworks/datastore/system/query.js +128 -0
  60. data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +149 -0
  61. data/frameworks/sproutcore/frameworks/datastore/system/store.js +1689 -0
  62. data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +86 -0
  63. data/frameworks/sproutcore/frameworks/datastore/tests/integration/contact_model.js +114 -0
  64. data/frameworks/sproutcore/frameworks/datastore/tests/integration/mail_model.js +91 -0
  65. data/frameworks/sproutcore/frameworks/datastore/tests/integration/test_runner_model.js +56 -0
  66. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +73 -0
  67. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/readAttribute.js +48 -0
  68. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +42 -0
  69. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/storeDidChangeProperties.js +138 -0
  70. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +46 -0
  71. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +71 -0
  72. data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +115 -0
  73. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +40 -0
  74. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +116 -0
  75. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +135 -0
  76. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +110 -0
  77. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +99 -0
  78. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +180 -0
  79. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +126 -0
  80. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +163 -0
  81. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +166 -0
  82. data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +175 -0
  83. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +54 -0
  84. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +126 -0
  85. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +127 -0
  86. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +57 -0
  87. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +78 -0
  88. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +247 -0
  89. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +106 -0
  90. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/init.js +21 -0
  91. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +61 -0
  92. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +74 -0
  93. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readEditableDataHash.js +74 -0
  94. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +74 -0
  95. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/removeDataHash.js +144 -0
  96. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +137 -0
  97. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/writeDataHash.js +130 -0
  98. data/frameworks/sproutcore/frameworks/debug/core.js +1 -0
  99. data/frameworks/sproutcore/frameworks/deprecated/core.js +61 -0
  100. data/frameworks/sproutcore/frameworks/deprecated/lib/button_views.rb +330 -0
  101. data/frameworks/sproutcore/frameworks/deprecated/lib/collection_view.rb +83 -0
  102. data/frameworks/sproutcore/frameworks/deprecated/lib/core_views.rb +326 -0
  103. data/frameworks/sproutcore/frameworks/deprecated/lib/form_views.rb +253 -0
  104. data/frameworks/sproutcore/frameworks/deprecated/lib/index.rhtml +75 -0
  105. data/frameworks/sproutcore/frameworks/deprecated/lib/menu_views.rb +93 -0
  106. data/frameworks/sproutcore/frameworks/deprecated/server/rails_server.js +80 -0
  107. data/frameworks/sproutcore/frameworks/deprecated/server/rest_server.js +178 -0
  108. data/frameworks/sproutcore/frameworks/deprecated/server/server.js +674 -0
  109. data/frameworks/sproutcore/frameworks/deprecated/system/animator.js +679 -0
  110. data/frameworks/sproutcore/frameworks/deprecated/system/binding.js +36 -0
  111. data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +77 -0
  112. data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +314 -0
  113. data/frameworks/sproutcore/frameworks/deprecated/system/event.js +60 -0
  114. data/frameworks/sproutcore/frameworks/deprecated/system/globals.js +20 -0
  115. data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +60 -0
  116. data/frameworks/sproutcore/frameworks/deprecated/system/node_descriptor.js +72 -0
  117. data/frameworks/sproutcore/frameworks/deprecated/system/object.js +124 -0
  118. data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +433 -0
  119. data/frameworks/sproutcore/frameworks/deprecated/system/string.js +109 -0
  120. data/frameworks/sproutcore/frameworks/deprecated/tests/application/application.rhtml +125 -0
  121. data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/clippingFrame.rhtml +401 -0
  122. data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/frame.rhtml +357 -0
  123. data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/isVisibleInWindow.rhtml +147 -0
  124. data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/base.rhtml +298 -0
  125. data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/incremental_rendering.rhtml +260 -0
  126. data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/source_list_rendering.rhtml +143 -0
  127. data/frameworks/sproutcore/frameworks/deprecated/tests/views/popup_button.rhtml +128 -0
  128. data/frameworks/sproutcore/frameworks/deprecated/tests/views/text_field.rhtml +37 -0
  129. data/frameworks/sproutcore/frameworks/deprecated/views/collection.js +24 -0
  130. data/frameworks/sproutcore/frameworks/designer/coders/design.js +30 -0
  131. data/frameworks/sproutcore/frameworks/designer/coders/localization.js +28 -0
  132. data/frameworks/sproutcore/frameworks/designer/coders/object.js +347 -0
  133. data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +102 -0
  134. data/frameworks/sproutcore/frameworks/designer/css/css_rule.js +22 -0
  135. data/frameworks/sproutcore/frameworks/designer/css/css_style.js +29 -0
  136. data/frameworks/sproutcore/frameworks/designer/css/css_style_sheet.js +201 -0
  137. data/frameworks/sproutcore/frameworks/designer/ext/page.js +88 -0
  138. data/frameworks/sproutcore/frameworks/designer/ext/view.js +40 -0
  139. data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +18 -0
  140. data/frameworks/sproutcore/frameworks/designer/views/designer.js +553 -0
  141. data/frameworks/sproutcore/frameworks/designer/views/label.js +17 -0
  142. data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +13 -0
  143. data/frameworks/sproutcore/frameworks/designer/views/tab.js +17 -0
  144. data/frameworks/sproutcore/frameworks/desktop/core.js +6 -0
  145. data/frameworks/sproutcore/frameworks/desktop/debug/drag.js +41 -0
  146. data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +56 -0
  147. data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/a_sample_image.jpg +0 -0
  148. data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/apple-logo1.jpeg +0 -0
  149. data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/iframe.html +23 -0
  150. data/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +71 -0
  151. data/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +943 -0
  152. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
  153. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_222222.png +0 -0
  154. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_454545.png +0 -0
  155. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_888888.png +0 -0
  156. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_ffffff.png +0 -0
  157. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
  158. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/indicator.gif +0 -0
  159. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-x.png +0 -0
  160. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-y.png +0 -0
  161. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sc-theme-sprite.png +0 -0
  162. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/000000.png +0 -0
  163. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/ffffff.png +0 -0
  164. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sticky-note.png +0 -0
  165. data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +156 -0
  166. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +83 -0
  167. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +99 -0
  168. data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +3 -0
  169. data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +94 -0
  170. data/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +39 -0
  171. data/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +31 -0
  172. data/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +10 -0
  173. data/frameworks/sproutcore/frameworks/desktop/english.lproj/scroller.css +26 -0
  174. data/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +141 -0
  175. data/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +19 -0
  176. data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +57 -0
  177. data/frameworks/sproutcore/frameworks/desktop/english.lproj/split.css +70 -0
  178. data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +8 -0
  179. data/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +14 -0
  180. data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +12 -0
  181. data/frameworks/sproutcore/frameworks/desktop/english.lproj/text_field.css +29 -0
  182. data/frameworks/sproutcore/frameworks/desktop/english.lproj/toolbar.css +6 -0
  183. data/frameworks/sproutcore/frameworks/desktop/mixins/border.js +53 -0
  184. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_group.js +22 -0
  185. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_item.js +22 -0
  186. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +226 -0
  187. data/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +247 -0
  188. data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +377 -0
  189. data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +504 -0
  190. data/frameworks/sproutcore/frameworks/desktop/panes/modal.js +68 -0
  191. data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +63 -0
  192. data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +184 -0
  193. data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +402 -0
  194. data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +46 -0
  195. data/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +39 -0
  196. data/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +81 -0
  197. data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +175 -0
  198. data/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +280 -0
  199. data/frameworks/sproutcore/frameworks/desktop/system/drag.js +721 -0
  200. data/frameworks/sproutcore/frameworks/desktop/system/key_bindings.js +40 -0
  201. data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +641 -0
  202. data/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +187 -0
  203. data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +43 -0
  204. data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/methods.js +10 -0
  205. data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +152 -0
  206. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +10 -0
  207. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +57 -0
  208. data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +10 -0
  209. data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +36 -0
  210. data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +10 -0
  211. data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +40 -0
  212. data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +10 -0
  213. data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +80 -0
  214. data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/methods.js +10 -0
  215. data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +38 -0
  216. data/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +45 -0
  217. data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +140 -0
  218. data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +145 -0
  219. data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +99 -0
  220. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +10 -0
  221. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +39 -0
  222. data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/methods.js +10 -0
  223. data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +64 -0
  224. data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +10 -0
  225. data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/ui.js +10 -0
  226. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +10 -0
  227. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +110 -0
  228. data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +255 -0
  229. data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/methods.js +10 -0
  230. data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +44 -0
  231. data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +128 -0
  232. data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +240 -0
  233. data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +113 -0
  234. data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +202 -0
  235. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +139 -0
  236. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +111 -0
  237. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +63 -0
  238. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/ui.js +70 -0
  239. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +94 -0
  240. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +206 -0
  241. data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +81 -0
  242. data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +85 -0
  243. data/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +37 -0
  244. data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/methods.js +10 -0
  245. data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/ui.js +10 -0
  246. data/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +50 -0
  247. data/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +52 -0
  248. data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +54 -0
  249. data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +88 -0
  250. data/frameworks/sproutcore/frameworks/desktop/tests/views/text_field/methods.js +76 -0
  251. data/frameworks/sproutcore/frameworks/desktop/tests/views/text_field/ui.js +198 -0
  252. data/frameworks/sproutcore/frameworks/desktop/tests/views/web/methods.js +10 -0
  253. data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +110 -0
  254. data/frameworks/sproutcore/frameworks/desktop/views/button.js +320 -0
  255. data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +98 -0
  256. data/frameworks/sproutcore/frameworks/desktop/views/collection.js +2141 -0
  257. data/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +44 -0
  258. data/frameworks/sproutcore/frameworks/desktop/views/form.js +595 -0
  259. data/frameworks/sproutcore/frameworks/desktop/views/grid.js +199 -0
  260. data/frameworks/sproutcore/frameworks/desktop/views/list.js +706 -0
  261. data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +523 -0
  262. data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +437 -0
  263. data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +62 -0
  264. data/frameworks/sproutcore/frameworks/desktop/views/progress.js +207 -0
  265. data/frameworks/sproutcore/frameworks/desktop/views/radio.js +332 -0
  266. data/frameworks/sproutcore/frameworks/desktop/views/scene.js +56 -0
  267. data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +648 -0
  268. data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +203 -0
  269. data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +509 -0
  270. data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +292 -0
  271. data/frameworks/sproutcore/frameworks/desktop/views/separator.js +37 -0
  272. data/frameworks/sproutcore/frameworks/desktop/views/slider.js +178 -0
  273. data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +1117 -0
  274. data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +169 -0
  275. data/frameworks/sproutcore/frameworks/desktop/views/split.js +651 -0
  276. data/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +55 -0
  277. data/frameworks/sproutcore/frameworks/desktop/views/tab.js +190 -0
  278. data/frameworks/sproutcore/frameworks/desktop/views/text_field.js +233 -0
  279. data/frameworks/sproutcore/frameworks/desktop/views/thumb.js +49 -0
  280. data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +49 -0
  281. data/frameworks/sproutcore/frameworks/desktop/views/web.js +86 -0
  282. data/frameworks/sproutcore/frameworks/foundation/TESTING +46 -0
  283. data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +490 -0
  284. data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +317 -0
  285. data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +421 -0
  286. data/frameworks/sproutcore/frameworks/foundation/core.js +111 -0
  287. data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +172 -0
  288. data/frameworks/sproutcore/frameworks/foundation/english.lproj/blank.gif +0 -0
  289. data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +53 -0
  290. data/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +55 -0
  291. data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +5 -0
  292. data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +8 -0
  293. data/frameworks/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-logo.png +0 -0
  294. data/frameworks/sproutcore/frameworks/foundation/english.lproj/static_layout.css +5 -0
  295. data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +40 -0
  296. data/frameworks/sproutcore/frameworks/foundation/ext/object.js +81 -0
  297. data/frameworks/sproutcore/frameworks/foundation/ext/run_loop.js +158 -0
  298. data/frameworks/sproutcore/frameworks/foundation/fixtures/file_exists.json +1 -0
  299. data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +291 -0
  300. data/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +88 -0
  301. data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +352 -0
  302. data/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +146 -0
  303. data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +156 -0
  304. data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +154 -0
  305. data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +101 -0
  306. data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +237 -0
  307. data/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +176 -0
  308. data/frameworks/sproutcore/frameworks/foundation/panes/main.js +47 -0
  309. data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +555 -0
  310. data/frameworks/sproutcore/frameworks/foundation/protocols/inline_editor_delegate.js +84 -0
  311. data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +244 -0
  312. data/frameworks/sproutcore/frameworks/foundation/system/browser.js +64 -0
  313. data/frameworks/sproutcore/frameworks/foundation/system/builder.js +210 -0
  314. data/frameworks/sproutcore/frameworks/foundation/system/core_query.js +2015 -0
  315. data/frameworks/sproutcore/frameworks/foundation/system/cursor.js +129 -0
  316. data/frameworks/sproutcore/frameworks/foundation/system/error.js +93 -0
  317. data/frameworks/sproutcore/frameworks/foundation/system/event.js +817 -0
  318. data/frameworks/sproutcore/frameworks/foundation/system/image_cache.js +433 -0
  319. data/frameworks/sproutcore/frameworks/foundation/system/json.js +440 -0
  320. data/frameworks/sproutcore/frameworks/foundation/system/locale.js +288 -0
  321. data/frameworks/sproutcore/frameworks/foundation/system/page.js +106 -0
  322. data/frameworks/sproutcore/frameworks/foundation/system/ready.js +189 -0
  323. data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +865 -0
  324. data/frameworks/sproutcore/frameworks/foundation/system/request.js +255 -0
  325. data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +368 -0
  326. data/frameworks/sproutcore/frameworks/foundation/system/routes.js +446 -0
  327. data/frameworks/sproutcore/frameworks/foundation/system/time.js +478 -0
  328. data/frameworks/sproutcore/frameworks/foundation/system/timer.js +549 -0
  329. data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +158 -0
  330. data/frameworks/sproutcore/frameworks/foundation/system/utils.js +330 -0
  331. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +118 -0
  332. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +268 -0
  333. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +433 -0
  334. data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/methods.js +10 -0
  335. data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/ui.js +113 -0
  336. data/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +113 -0
  337. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/content.js +195 -0
  338. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/displayProperties.js +89 -0
  339. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/content.js +168 -0
  340. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +89 -0
  341. data/frameworks/sproutcore/frameworks/foundation/tests/system/builder.js +42 -0
  342. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +1323 -0
  343. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_dimensions.js +387 -0
  344. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +405 -0
  345. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +49 -0
  346. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/within.js +66 -0
  347. data/frameworks/sproutcore/frameworks/foundation/tests/system/error.js +41 -0
  348. data/frameworks/sproutcore/frameworks/foundation/tests/system/json.js +14 -0
  349. data/frameworks/sproutcore/frameworks/foundation/tests/system/locale.js +128 -0
  350. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/begin.js +47 -0
  351. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/element.js +44 -0
  352. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/end.js +119 -0
  353. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +51 -0
  354. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +50 -0
  355. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +28 -0
  356. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +179 -0
  357. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +100 -0
  358. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/init.js +55 -0
  359. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/join.js +28 -0
  360. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/push_text.js +74 -0
  361. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/tag.js +45 -0
  362. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/update.js +205 -0
  363. data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +89 -0
  364. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeKeyPane.js +124 -0
  365. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeMainPane.js +68 -0
  366. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +97 -0
  367. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/targetForAction.js +238 -0
  368. data/frameworks/sproutcore/frameworks/foundation/tests/system/routes.js +33 -0
  369. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invalidate.js +38 -0
  370. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invokeLater.js +201 -0
  371. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/isPaused.js +71 -0
  372. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/performAction.js +67 -0
  373. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +170 -0
  374. data/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +27 -0
  375. data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/normalizeURL.js +18 -0
  376. data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/range.js +62 -0
  377. data/frameworks/sproutcore/frameworks/foundation/tests/validators/credit_card.js +35 -0
  378. data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +21 -0
  379. data/frameworks/sproutcore/frameworks/foundation/tests/validators/number.js +47 -0
  380. data/frameworks/sproutcore/frameworks/foundation/tests/validators/password.js +13 -0
  381. data/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +10 -0
  382. data/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +83 -0
  383. data/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +39 -0
  384. data/frameworks/sproutcore/frameworks/foundation/tests/views/main_pane.js +31 -0
  385. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +89 -0
  386. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/firstResponder.js +148 -0
  387. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/keyPane.js +133 -0
  388. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/sendEvent.js +165 -0
  389. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +132 -0
  390. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +246 -0
  391. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +87 -0
  392. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createLayer.js +97 -0
  393. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/destroyLayer.js +85 -0
  394. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +52 -0
  395. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/init.js +50 -0
  396. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/insertBefore.js +200 -0
  397. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +102 -0
  398. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layer.js +150 -0
  399. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutChildViews.js +162 -0
  400. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutDidChange.js +127 -0
  401. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +248 -0
  402. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/parentViewDidChange.js +67 -0
  403. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +166 -0
  404. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/removeChild.js +189 -0
  405. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/render.js +83 -0
  406. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/replaceChild.js +29 -0
  407. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +142 -0
  408. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayerLocation.js +194 -0
  409. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/viewDidResize.js +185 -0
  410. data/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +125 -0
  411. data/frameworks/sproutcore/frameworks/foundation/validators/date.js +52 -0
  412. data/frameworks/sproutcore/frameworks/foundation/validators/email.js +45 -0
  413. data/frameworks/sproutcore/frameworks/foundation/validators/not_empty.js +33 -0
  414. data/frameworks/sproutcore/frameworks/foundation/validators/number.js +82 -0
  415. data/frameworks/sproutcore/frameworks/foundation/validators/password.js +86 -0
  416. data/frameworks/sproutcore/frameworks/foundation/validators/validator.js +311 -0
  417. data/frameworks/sproutcore/frameworks/foundation/views/container.js +136 -0
  418. data/frameworks/sproutcore/frameworks/foundation/views/field.js +276 -0
  419. data/frameworks/sproutcore/frameworks/foundation/views/image.js +158 -0
  420. data/frameworks/sproutcore/frameworks/foundation/views/label.js +261 -0
  421. data/frameworks/sproutcore/frameworks/foundation/views/view.js +2160 -0
  422. data/frameworks/sproutcore/frameworks/mobile/english.lproj/core.css +12 -0
  423. data/frameworks/sproutcore/frameworks/mobile/lib/index.rhtml +126 -0
  424. data/frameworks/sproutcore/frameworks/mobile/system/root_responder.js +109 -0
  425. data/frameworks/sproutcore/frameworks/mobile/tests/views/button/ui.js +9 -0
  426. data/frameworks/sproutcore/frameworks/mobile/views/button.js +190 -0
  427. data/frameworks/sproutcore/frameworks/runtime/README +11 -0
  428. data/frameworks/sproutcore/frameworks/runtime/core.js +777 -0
  429. data/frameworks/sproutcore/frameworks/runtime/license.js +28 -0
  430. data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +403 -0
  431. data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +70 -0
  432. data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1193 -0
  433. data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1149 -0
  434. data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +135 -0
  435. data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +108 -0
  436. data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +128 -0
  437. data/frameworks/sproutcore/frameworks/runtime/protocols/sparse_array_delegate.js +131 -0
  438. data/frameworks/sproutcore/frameworks/runtime/system/binding.js +891 -0
  439. data/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +107 -0
  440. data/frameworks/sproutcore/frameworks/runtime/system/object.js +783 -0
  441. data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +99 -0
  442. data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +214 -0
  443. data/frameworks/sproutcore/frameworks/runtime/system/set.js +246 -0
  444. data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +286 -0
  445. data/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +56 -0
  446. data/frameworks/sproutcore/frameworks/runtime/tests/core/beget.js +23 -0
  447. data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +66 -0
  448. data/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +147 -0
  449. data/frameworks/sproutcore/frameworks/runtime/tests/core/inspect.js +27 -0
  450. data/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +25 -0
  451. data/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +38 -0
  452. data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +20 -0
  453. data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +30 -0
  454. data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +19 -0
  455. data/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +37 -0
  456. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +592 -0
  457. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +467 -0
  458. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +123 -0
  459. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/registerDependentKeys.js +79 -0
  460. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +80 -0
  461. data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +263 -0
  462. data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +190 -0
  463. data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +135 -0
  464. data/frameworks/sproutcore/frameworks/runtime/tests/system/object/bindings.js +339 -0
  465. data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +120 -0
  466. data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +313 -0
  467. data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +84 -0
  468. data/frameworks/sproutcore/frameworks/testing/core.js +13 -0
  469. data/frameworks/sproutcore/frameworks/testing/english.lproj/additions.css +8 -0
  470. data/frameworks/sproutcore/frameworks/testing/english.lproj/testsuite.css +131 -0
  471. data/frameworks/sproutcore/frameworks/testing/extras.js +43 -0
  472. data/frameworks/sproutcore/frameworks/testing/jquery.js +3559 -0
  473. data/frameworks/sproutcore/frameworks/testing/qunit.js +819 -0
  474. data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +25 -0
  475. data/frameworks/sproutcore/frameworks/testing/utils.js +55 -0
  476. data/frameworks/sproutcore/lib/index.rhtml +118 -0
  477. data/frameworks/sproutcore/license.js +28 -0
  478. data/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +69 -0
  479. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/button.css +41 -0
  480. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +8 -0
  481. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/backButton.png +0 -0
  482. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/blueButton.png +0 -0
  483. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/cancel.png +0 -0
  484. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/grayButton.png +0 -0
  485. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/leftButton.png +0 -0
  486. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrow.png +0 -0
  487. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrowSel.png +0 -0
  488. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listGroup.png +0 -0
  489. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/loading.gif +0 -0
  490. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/pinstripes.png +0 -0
  491. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/rightButton.png +0 -0
  492. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/selection.png +0 -0
  493. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/thumb.png +0 -0
  494. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggle.png +0 -0
  495. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggleOn.png +0 -0
  496. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolButton.png +0 -0
  497. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolbar.png +0 -0
  498. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/whiteButton.png +0 -0
  499. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/strings.js +15 -0
  500. data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/Data +0 -0
  501. data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
  502. data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
  503. data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/Data +0 -0
  504. data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg +0 -0
  505. data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg +0 -0
  506. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/Data +0 -0
  507. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
  508. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
  509. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/Data +0 -0
  510. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
  511. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
  512. data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +333 -0
  513. data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +90 -0
  514. data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +53 -0
  515. data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +47 -0
  516. data/frameworks/sproutcore/themes/standard_theme/english.lproj/disclosure.css +55 -0
  517. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-sprite.png +0 -0
  518. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-ysprite.png +0 -0
  519. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-toolbar-view.png +0 -0
  520. data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +37 -0
  521. data/frameworks/sproutcore/themes/standard_theme/english.lproj/pane.css +8 -0
  522. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-fat.jpg +0 -0
  523. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-thin.jpg +0 -0
  524. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-edge.png +0 -0
  525. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-left-corner.png +0 -0
  526. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-right-corner.png +0 -0
  527. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/left-edge.png +0 -0
  528. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/overlay.png +0 -0
  529. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/right-edge.png +0 -0
  530. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-edge.png +0 -0
  531. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-left-corner.png +0 -0
  532. data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-right-corner.png +0 -0
  533. data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +23 -0
  534. data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +113 -0
  535. data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +141 -0
  536. data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +62 -0
  537. data/frameworks/sproutcore/themes/standard_theme/english.lproj/split_view.css +27 -0
  538. data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +12 -0
  539. data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +13 -0
  540. data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -0
  541. data/lib/thor/.autotest +7 -0
  542. data/lib/thor/CHANGELOG.rdoc +52 -0
  543. data/lib/thor/LICENSE +20 -0
  544. data/lib/thor/README.markdown +76 -0
  545. data/lib/thor/Rakefile +6 -0
  546. data/lib/thor/Thorfile +45 -0
  547. data/lib/thor/bin/rake2thor +83 -0
  548. data/lib/thor/bin/thor +7 -0
  549. data/lib/thor/lib/thor/error.rb +3 -0
  550. data/lib/thor/lib/thor/options.rb +267 -0
  551. data/lib/thor/lib/thor/ordered_hash.rb +64 -0
  552. data/lib/thor/lib/thor/runner.rb +305 -0
  553. data/lib/thor/lib/thor/task.rb +83 -0
  554. data/lib/thor/lib/thor/task_hash.rb +22 -0
  555. data/lib/thor/lib/thor/tasks/package.rb +18 -0
  556. data/lib/thor/lib/thor/tasks.rb +77 -0
  557. data/lib/thor/lib/thor/util.rb +75 -0
  558. data/lib/thor/lib/thor.rb +170 -0
  559. data/lib/thor/script/destroy +14 -0
  560. data/lib/thor/script/generate +14 -0
  561. data/lib/thor/spec/fixtures/task.thor +10 -0
  562. data/lib/thor/spec/options_spec.rb +271 -0
  563. data/lib/thor/spec/ordered_hash_spec.rb +84 -0
  564. data/lib/thor/spec/spec.opts +1 -0
  565. data/lib/thor/spec/spec_helper.rb +30 -0
  566. data/lib/thor/spec/task_spec.rb +11 -0
  567. data/lib/thor/spec/tasks_spec.rb +28 -0
  568. data/lib/thor/spec/thor_runner_spec.rb +194 -0
  569. data/lib/thor/spec/thor_spec.rb +206 -0
  570. data/lib/thor/spec/util_spec.rb +99 -0
  571. data/lib/thor/task.thor +15 -0
  572. data/lib/thor/thor.gemspec +29 -0
  573. metadata +3 -4
  574. data/sproutcore.gemspec +0 -47
@@ -0,0 +1,113 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
4
+ // portions copyright @2009 Apple, Inc.
5
+ // License: Licened under MIT license (see license.js)
6
+ // ==========================================================================
7
+
8
+ /*global module test htmlbody ok equals same stop start */
9
+
10
+ (function() {
11
+ // var content = []
12
+ // for (var idx=0, len=20; idx<len; ++idx) {
13
+ // content.push(SC.Record.create({
14
+ // id: 'item_'+idx,
15
+ // title: 'Item ' + idx
16
+ // }))
17
+ // }
18
+ //
19
+ // var singleSelection = [content[0]];
20
+ // var multiSelectionContiguous = [content[0], content[1], content[2]];
21
+ // var multiSelectionDiscontiguous = [content[0], content[2], content[4]];
22
+ //
23
+ // var pane = SC.ControlTestPane.design({ height: 100 })
24
+ // .add("basic", SC.ListView, {
25
+ // content: content,
26
+ // contentValueKey: 'title'
27
+ // })
28
+ //
29
+ // .add("disabled", SC.ListView, {
30
+ // isEnabled: NO,
31
+ // content: content,
32
+ // contentValueKey: 'title'
33
+ // })
34
+ //
35
+ // .add("disabled - single selection", SC.ListView, {
36
+ // isEnabled: NO,
37
+ // content: content,
38
+ // contentValueKey: 'title',
39
+ // selection: singleSelection
40
+ // })
41
+ //
42
+ // .add("single selection", SC.ListView, {
43
+ // content: content,
44
+ // contentValueKey: 'title',
45
+ // selection: singleSelection
46
+ // })
47
+ //
48
+ // .add("multiple selection, contiguous", SC.ListView, {
49
+ // content: content,
50
+ // contentValueKey: 'title',
51
+ // selection: multiSelectionContiguous
52
+ // })
53
+ //
54
+ // .add("multiple selection, discontiguous", SC.ListView, {
55
+ // content: content,
56
+ // contentValueKey: 'title',
57
+ // selection: multiSelectionDiscontiguous
58
+ // })
59
+ //
60
+ // pane.show(); // add a test to show the test pane
61
+
62
+ // ..........................................................
63
+ // TEST PANE
64
+ //
65
+
66
+ module('SC.ControlTestPane UI');
67
+
68
+ test("showing/removing a pane", function() {
69
+ var pane = SC.ControlTestPane.design() ;
70
+ pane = pane.create() ;
71
+
72
+ ok(pane.$().hasClass('sc-control-test-pane'), 'should have class sc-control-test-pane');
73
+
74
+ ok(pane.get('isVisible'), 'control test pane should be visible after we create it');
75
+ ok(pane.get('isVisibleInWindow'), 'control tast pane should be visible in the window after we create it');
76
+
77
+ pane.remove() ;
78
+
79
+ ok(pane.get('isVisible'), 'control test pane still should be visible after we remove it');
80
+ ok(!pane.get('isVisibleInWindow'), 'control tast pane should NOT be visible in the window after we remove it');
81
+ });
82
+
83
+ test("adding named children to the pane", function() {
84
+ var pane = SC.ControlTestPane.design() ;
85
+ pane.add('first', SC.View) ;
86
+ pane.add('second', SC.View) ;
87
+ pane.add('third', SC.View) ;
88
+
89
+ equals(pane.prototype.childViews.length, 6, 'control test pane has correct number of children before create') ;
90
+ pane = pane.create() ;
91
+ equals(pane.getPath('childViews.length'), 6, 'control test pane has correct number of children after create') ;
92
+
93
+ var childViews = pane.get('childViews') ;
94
+ var firstLabel = childViews[0] ;
95
+ equals(firstLabel.$().text(), 'first:', 'first label should be correct') ;
96
+
97
+ var secondLabel = childViews[2] ;
98
+ equals(secondLabel.$().text(), 'second:', 'second label should be correct') ;
99
+
100
+ var thirdLabel = childViews[4] ;
101
+ equals(thirdLabel.$().text(), 'third:', 'third label should be correct') ;
102
+
103
+ var paneLayer = pane.get('layer') ;
104
+ for (var idx=0, len=6; idx<len; ++idx) {
105
+ var view = childViews[idx] ;
106
+ var layer = view.get('layer') ;
107
+ equals(layer.parentNode, paneLayer, 'control test pane childView has layer with correct parentNode');
108
+ }
109
+
110
+ pane.remove() ;
111
+ });
112
+
113
+ })();
@@ -0,0 +1,113 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Apple, Inc. and contributors.
4
+ // License: Licened under MIT license (see license.js)
5
+ // ==========================================================================
6
+
7
+ /*global module test equals context ok same htmlbody */
8
+
9
+ module("Create a pane with some custom views and adding it to the window");
10
+
11
+ htmlbody('<style>.sc-view { border: 1px red solid; z-index: -1; position: absolute; }</style>');
12
+
13
+ test("layer creation and management", function() {
14
+
15
+ // create custom view w/ render method
16
+ var MyView = SC.View.extend({
17
+ cv: 0,
18
+
19
+ displayProperties: 'cv'.w(),
20
+
21
+ render: function(context, firstTime) {
22
+ this.renderChildViews(context, YES); // always re-render...
23
+ context.begin()
24
+ .push('View %@'.fmt(this.get('cv')))
25
+ .end();
26
+ }
27
+ });
28
+
29
+ // create design
30
+ var pane = SC.Pane.design()
31
+ .layout({ bottom: 10, right: 20, top: 20, left: 20 })
32
+ .childView(MyView.design({ cv: 1 })
33
+ .classNames('view-1')
34
+ .layout({ top: 50 })
35
+ .childView(MyView.design({ cv: 2 })
36
+ .classNames('view-2')
37
+ .layout({ bottom: 10, right: 20, width: 100, height: 23 })));
38
+
39
+
40
+ // instantiate pane...
41
+ pane = pane.create();
42
+ var cv1 = pane.childViews[0], cv2 = cv1.childViews[0];
43
+
44
+ // pane should have nested child views.
45
+ equals(cv1.cv, 1, 'has childView 1');
46
+ equals(cv2.cv, 2, 'has childView 2');
47
+
48
+ // it should not have a layer yet (nor should children)
49
+ ok(!pane.get('layer'), 'pane has no layer');
50
+ ok(!cv1.get('layer'), 'cv1 has no layer');
51
+ ok(!cv2.get('layer'), 'cv2 has no layer');
52
+
53
+ // if we mark cv2 as needed an update, it should not do anything, even at
54
+ // end of the runloop.
55
+ // -- temporarily replace updateLayer()
56
+ var runCount = 0;
57
+ cv2.updateLayer = function() { runCount++; };
58
+ SC.RunLoop.begin();
59
+ cv2.set('displayNeedsUpdate', YES) ;
60
+ SC.RunLoop.end();
61
+
62
+ // updateLayer should NOT have run...
63
+ equals(runCount, 0, 'cv2.updateLayer did not run');
64
+
65
+ // restore original updateLayer
66
+ delete cv2.updateLayer ;
67
+
68
+ // all the views should have their isVisibleInWindow set to NO now
69
+ ok(!pane.get('isVisibleInWindow'), 'pane.isVisibleInWindow should be NO');
70
+ ok(!cv1.get('isVisibleInWindow'), 'cv1.isVisibleInWindow should be NO');
71
+ ok(!cv2.get('isVisibleInWindow'), 'cv2.isVisibleInWindow should be NO');
72
+ // -----
73
+ // OK, let's add this baby to the window
74
+ SC.RunLoop.begin();
75
+ pane.append();
76
+ SC.RunLoop.end();
77
+
78
+ // all the views should have their isVisibleInWindow set to YES now
79
+ ok(pane.get('isVisibleInWindow'), 'pane.isVisibleInWindow should be YES');
80
+ ok(cv1.get('isVisibleInWindow'), 'cv1.isVisibleInWindow should be YES');
81
+ ok(cv2.get('isVisibleInWindow'), 'cv2.isVisibleInWindow should be YES');
82
+
83
+ // pane should have layer...cv's should not have had to find their layers
84
+ // yet.
85
+ ok(pane.get('layer'), 'pane has layer');
86
+ ok(!cv1._view_pane, 'cv1 has not found its layer yet') ;
87
+ ok(!cv2._view_pane, 'cv2 has not found its layer yet') ;
88
+
89
+ // now let's make sure the pane layer has some of the things we expect...
90
+ var layer = pane.get('layer');
91
+ equals(layer.firstChild.id, cv1.get('layerId'), 'has cv1 elem');
92
+ equals(layer.firstChild.firstChild.id, cv2.get('layerId'), 'has cv2 elem');
93
+ layer = null;
94
+
95
+ // but if we get the layer for cv1 & cv2 they should find them...
96
+ ok(cv1.get('layer'), 'cv1 can find its layer');
97
+ ok(cv2.get('layer'), 'cv2 can find its layer');
98
+
99
+ // also, the pane should now belong to the main document body. it should
100
+ // have a parent.
101
+ equals(pane.get('layer').parentNode, document.body, 'panes layer is in document body');
102
+
103
+ // ok, now we're going to change the view number for cv2 and see if that
104
+ // updates the UI.
105
+ SC.RunLoop.begin();
106
+ cv2.set('cv', 'foo');
107
+ SC.RunLoop.end();
108
+
109
+ // the innerHTML for cv2 should now contain 'View foo'
110
+ layer = cv2.get('layer');
111
+ ok(layer.innerHTML.toString().match(/View foo/), 'does not have new label!');
112
+
113
+ });
@@ -0,0 +1,195 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Apple, Inc. and contributors.
4
+ // License: Licened under MIT license (see license.js)
5
+ // ==========================================================================
6
+
7
+ /*global module test equals context ok same */
8
+
9
+ // ..........................................................
10
+ // contentPropertyDidChange()
11
+ //
12
+ var view, content ;
13
+ module('SC.Button#contentPropertyDidChange', {
14
+ setup: function() {
15
+ content = SC.Object.create();
16
+ view = SC.View.create(SC.Control, SC.Button);
17
+ view.set('title', 'hello world');
18
+ },
19
+
20
+ teardown: function() {
21
+ content = null;
22
+ view.destroy();
23
+ }
24
+ });
25
+
26
+ test("invoked with key = * whenever content changes", function() {
27
+ view.contentPropertyDidChange = function(target, key) {
28
+ ok(target === content, 'should pass content object as target target=%@'.fmt(target));
29
+ equals(key, '*', 'should pass * as key');
30
+ };
31
+ view.set('content', content);
32
+ });
33
+
34
+ test("invoked with key = foo whenever a propery on content is changed", function() {
35
+ var isTesting = NO, curKey ;
36
+ view.contentPropertyDidChange = function(target, key) {
37
+ if (!isTesting) return ; //wait until testing should begin...
38
+ ok(target === content, 'should pass content object as target');
39
+ equals(key, curKey, 'should pass * as key');
40
+ };
41
+ view.set('content', content);
42
+
43
+ isTesting = YES ;
44
+
45
+ curKey= 'foo';
46
+ content.set('foo', 'foo');
47
+
48
+ curKey = 'bar';
49
+ content.set('bar', 'bar');
50
+ });
51
+
52
+ test("should no longer be invoked when a key is changed on a former content object", function() {
53
+ var isTesting = NO;
54
+ view.contentPropertyDidChange = function(target, key) {
55
+ if (!isTesting) return ; //wait until testing should begin...
56
+ ok(NO, 'should not invoke contentPropertyDidChange after content is removed');
57
+ };
58
+
59
+ view.set('content', content);
60
+ content.set('foo', 'foo');
61
+ view.set('content', null);
62
+
63
+ isTesting= YES ;
64
+ content.set('bar', 'bar');
65
+ });
66
+
67
+ test("should fire even on a content object set when the object is created", function() {
68
+ var callCount = 0;
69
+ var view = SC.View.create(SC.Control, {
70
+ contentPropertyDidChange: function() { callCount++; },
71
+ content: content
72
+ });
73
+
74
+ equals(callCount, 1, 'should call contentPropertyDidChange on init to do initial setup');
75
+
76
+ content.set('foo', 'foo');
77
+ equals(callCount, 2, 'should call contentPropertyDidChange when changing content.foo');
78
+ });
79
+
80
+
81
+ module('SC.Button#titleRendering', {
82
+ setup: function() {
83
+ content = SC.Object.create();
84
+ view = SC.View.create(SC.Control, SC.Button);
85
+ view.set('title', 'hello world');
86
+ },
87
+
88
+ teardown: function() {
89
+ content = null;
90
+ view.destroy();
91
+ }
92
+ });
93
+
94
+
95
+ test("should return the title localized or not", function() {
96
+
97
+ equals(view.displayTitle(), 'hello world', 'should return an empty string as the title is not localized');
98
+ });
99
+
100
+ test("should return the button view context with the title set", function() {
101
+ context = SC.RenderContext();
102
+ ok((view.renderTitle(context, true).length>0), 'title string were added to the context');
103
+ });
104
+
105
+
106
+
107
+
108
+ // ..........................................................
109
+ // updatePropertyFromContent()
110
+ //
111
+ module("SC.Button#updatePropertyFromContent()", {
112
+ setup: function() {
113
+ content = SC.Object.create({ foo: "foo", bar: "bar" });
114
+ view = SC.View.create(SC.Control, SC.Button, { content: content });
115
+ },
116
+ teardown: function() {
117
+ content = null ;
118
+ view.destroy();
119
+ }
120
+ }) ;
121
+
122
+ test("copies value of content[key] to this[prop] if changed key. Gets key from contentKey property", function() {
123
+ view.contentValueKey = 'foo'; // set key mapping.
124
+ view.updatePropertyFromContent('value', 'foo', 'contentValueKey');
125
+ equals(view.get('value'), 'foo', 'should copy foo from content.foo to value');
126
+ });
127
+
128
+ test("does nothing of changed key does not match contentKey value" ,function() {
129
+ view.value = "foo";
130
+ view.contentValueKey = "foo" ;
131
+ view.updatePropertyFromContent('value', 'bar', 'contentValueKey');
132
+ equals(view.get('value'), 'foo', 'should not have changed "value"');
133
+ });
134
+
135
+ test("if contentKey is not passed, assume contentPROPKey", function() {
136
+ view.contentValueKey = "foo";
137
+ view.updatePropertyFromContent("value", "foo");
138
+ equals(view.get('value'), 'foo', 'should have looked at foo since contentValueKey is set to foo');
139
+ });
140
+
141
+ test("if contentFooKey is not set on receiver, ask displayDelegate", function() {
142
+ view.displayDelegate = SC.Object.create({ contentValueKey: "foo" });
143
+ view.updatePropertyFromContent("value", "foo", "contentValueKey");
144
+ equals(view.get('value'), 'foo', 'should have looked at foo since contentValueKey is set to foo');
145
+ });
146
+
147
+ test("should be able to get value from a content object that is not SC.Object", function() {
148
+ view.content = { foo: "foo" };
149
+ view.contentValueKey = "foo";
150
+ view.updatePropertyFromContent("value", "foo", "contentValueKey");
151
+ equals(view.get('value'), 'foo', 'should have looked at foo since contentValueKey is set to foo');
152
+ });
153
+
154
+
155
+
156
+
157
+
158
+ // ..........................................................
159
+ // updateContentWithValueObserver()
160
+ //
161
+ module("SC.Button#updatePropertyFromContent()", {
162
+ setup: function() {
163
+ content = SC.Object.create({ foo: "foo", bar: "bar" });
164
+ view = SC.View.create(SC.Control, SC.Button, {
165
+ value: "bar",
166
+ content: content,
167
+ contentValueKey: "bar",
168
+ displayDelegate: SC.Object.create({ contentValueKey: "foo" })
169
+ });
170
+ },
171
+ teardown: function() {
172
+ content = null ;
173
+ view.destroy();
174
+ }
175
+ }) ;
176
+
177
+ test("if contentValueKey is set, changing value will be pushed to content", function() {
178
+ view.set('value', 'baz');
179
+ equals(content.get('bar'), 'baz', 'should copy from view.value to content');
180
+ });
181
+
182
+ test("if contentValueKey is undefined, asks display delegate instead", function() {
183
+ delete view.contentValueKey ;
184
+ view.set('value', 'baz');
185
+ equals(content.get('foo'), 'baz', 'should copy from view.value to content');
186
+ });
187
+
188
+ test("if contentValueKey is not set & displayDelegate not set, does nothing", function() {
189
+ delete view.contentValueKey;
190
+ delete view.displayDelegate;
191
+ view.set('value', 'baz');
192
+ equals(content.get('foo'), 'foo', 'should not change');
193
+ });
194
+
195
+
@@ -0,0 +1,89 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Apple, Inc. and contributors.
4
+ // License: Licened under MIT license (see license.js)
5
+ // ==========================================================================
6
+
7
+ /*global module test equals context ok same */
8
+
9
+ var view ;
10
+ module("SC.Button#displayProperties", {
11
+ setup: function() {
12
+ view = SC.View.create(SC.Control, SC.Button, {
13
+ isVisibleInWindow: YES
14
+ }).createLayer();
15
+ },
16
+
17
+ teardown: function() {
18
+ view.destroy();
19
+ }
20
+ });
21
+
22
+ test("setting isSelected to YES adds sel class name", function() {
23
+ SC.RunLoop.begin();
24
+ view.set('isSelected', YES);
25
+ SC.RunLoop.end();
26
+ ok(view.$().hasClass('sel'), 'should have css class sel');
27
+ });
28
+
29
+ test("setting isSelected to SC.MIXED_STATE add mixed class name, and removes sel class name", function() {
30
+ SC.RunLoop.begin();
31
+ view.set('isSelected', SC.MIXED_STATE);
32
+ SC.RunLoop.end();
33
+ ok(view.$().hasClass('mixed'), 'should have css class mixed');
34
+ ok(!view.$().hasClass('sel'), 'should NOT have css class sel');
35
+ });
36
+
37
+ test("setting isSelected to ON removes sel class name", function() {
38
+ SC.RunLoop.begin();
39
+ view.set('isSelected', YES);
40
+ SC.RunLoop.end();
41
+ ok(view.$().hasClass('sel'), 'precond - should have sel class');
42
+
43
+ SC.RunLoop.begin();
44
+ view.set('isSelected', NO);
45
+ SC.RunLoop.end();
46
+ ok(!view.$().hasClass('sel'), 'should no longer have sel class');
47
+ });
48
+
49
+ test("setting isEnabled to NO adds disabled class", function() {
50
+ SC.RunLoop.begin();
51
+ view.set('isEnabled', NO);
52
+ SC.RunLoop.end();
53
+ ok(view.$().hasClass('disabled'), 'should have disabled class');
54
+
55
+ SC.RunLoop.begin();
56
+ view.set('isEnabled', YES);
57
+ SC.RunLoop.end();
58
+ ok(!view.$().hasClass('disabled'), 'should remove disabled class');
59
+ });
60
+
61
+ test("should gain focus class if isFirstResponder", function() {
62
+ SC.RunLoop.begin();
63
+ view.set('isFirstResponder', YES);
64
+ SC.RunLoop.end();
65
+ ok(view.$().hasClass('focus'), 'should have focus class');
66
+
67
+ SC.RunLoop.begin();
68
+ view.set('isFirstResponder', NO);
69
+ SC.RunLoop.end();
70
+ ok(!view.$().hasClass('focus'), 'should remove focus class');
71
+ });
72
+
73
+ test("should gain active class if isActive", function() {
74
+ SC.RunLoop.begin();
75
+ view.set('isActive', YES);
76
+ SC.RunLoop.end();
77
+ ok(view.$().hasClass('active'), 'should have active class');
78
+
79
+ SC.RunLoop.begin();
80
+ view.set('isActive', NO);
81
+ SC.RunLoop.end();
82
+ ok(!view.$().hasClass('active'), 'should remove active class');
83
+ });
84
+
85
+ test("should get controlSize class on init", function() {
86
+ ok(view.$().hasClass(SC.REGULAR_CONTROL_SIZE), 'should have regular control size class');
87
+ });
88
+
89
+
@@ -0,0 +1,168 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Apple, Inc. and contributors.
4
+ // License: Licened under MIT license (see license.js)
5
+ // ==========================================================================
6
+
7
+ /*global module test equals context ok same */
8
+
9
+ // ..........................................................
10
+ // contentPropertyDidChange()
11
+ //
12
+ var view, content ;
13
+ module('SC.Control#contentPropertyDidChange', {
14
+ setup: function() {
15
+ content = SC.Object.create();
16
+ view = SC.View.create(SC.Control);
17
+ },
18
+
19
+ teardown: function() {
20
+ content = null;
21
+ view.destroy();
22
+ }
23
+ });
24
+
25
+ test("invoked with key = * whenever content changes", function() {
26
+ view.contentPropertyDidChange = function(target, key) {
27
+ ok(target === content, 'should pass content object as target target=%@'.fmt(target));
28
+ equals(key, '*', 'should pass * as key');
29
+ };
30
+ view.set('content', content);
31
+ });
32
+
33
+ test("invoked with key = foo whenever a propery on content is changed", function() {
34
+ var isTesting = NO, curKey ;
35
+ view.contentPropertyDidChange = function(target, key) {
36
+ if (!isTesting) return ; //wait until testing should begin...
37
+ ok(target === content, 'should pass content object as target');
38
+ equals(key, curKey, 'should pass * as key');
39
+ };
40
+ view.set('content', content);
41
+
42
+ isTesting = YES ;
43
+
44
+ curKey= 'foo';
45
+ content.set('foo', 'foo');
46
+
47
+ curKey = 'bar';
48
+ content.set('bar', 'bar');
49
+ });
50
+
51
+ test("should no longer be invoked when a key is changed on a former content object", function() {
52
+ var isTesting = NO;
53
+ view.contentPropertyDidChange = function(target, key) {
54
+ if (!isTesting) return ; //wait until testing should begin...
55
+ ok(NO, 'should not invoke contentPropertyDidChange after content is removed');
56
+ };
57
+
58
+ view.set('content', content);
59
+ content.set('foo', 'foo');
60
+ view.set('content', null);
61
+
62
+ isTesting= YES ;
63
+ content.set('bar', 'bar');
64
+ });
65
+
66
+ test("should fire even on a content object set when the object is created", function() {
67
+ var callCount = 0;
68
+ var view = SC.View.create(SC.Control, {
69
+ contentPropertyDidChange: function() { callCount++; },
70
+ content: content
71
+ });
72
+
73
+ equals(callCount, 1, 'should call contentPropertyDidChange on init to do initial setup');
74
+
75
+ content.set('foo', 'foo');
76
+ equals(callCount, 2, 'should call contentPropertyDidChange when changing content.foo');
77
+ });
78
+
79
+ // ..........................................................
80
+ // updatePropertyFromContent()
81
+ //
82
+ module("SC.Control#updatePropertyFromContent()", {
83
+ setup: function() {
84
+ content = SC.Object.create({ foo: "foo", bar: "bar" });
85
+ view = SC.View.create(SC.Control, { content: content });
86
+ },
87
+ teardown: function() {
88
+ content = null ;
89
+ view.destroy();
90
+ }
91
+ }) ;
92
+
93
+ test("copies value of content[key] to this[prop] if changed key. Gets key from contentKey property", function() {
94
+ view.contentValueKey = 'foo'; // set key mapping.
95
+ view.updatePropertyFromContent('value', 'foo', 'contentValueKey');
96
+ equals(view.get('value'), 'foo', 'should copy foo from content.foo to value');
97
+ });
98
+
99
+ test("does nothing of changed key does not match contentKey value" ,function() {
100
+ view.value = "foo";
101
+ view.contentValueKey = "foo" ;
102
+ view.updatePropertyFromContent('value', 'bar', 'contentValueKey');
103
+ equals(view.get('value'), 'foo', 'should not have changed "value"');
104
+ });
105
+
106
+ test("if contentKey is not passed, assume contentPROPKey", function() {
107
+ view.contentValueKey = "foo";
108
+ view.updatePropertyFromContent("value", "foo");
109
+ equals(view.get('value'), 'foo', 'should have looked at foo since contentValueKey is set to foo');
110
+ });
111
+
112
+ test("if contentFooKey is not set on receiver, ask displayDelegate", function() {
113
+ view.displayDelegate = SC.Object.create({ contentValueKey: "foo" });
114
+ view.updatePropertyFromContent("value", "foo", "contentValueKey");
115
+ equals(view.get('value'), 'foo', 'should have looked at foo since contentValueKey is set to foo');
116
+ });
117
+
118
+ test("should be able to get value from a content object that is not SC.Object", function() {
119
+ view.content = { foo: "foo" };
120
+ view.contentValueKey = "foo";
121
+ view.updatePropertyFromContent("value", "foo", "contentValueKey");
122
+ equals(view.get('value'), 'foo', 'should have looked at foo since contentValueKey is set to foo');
123
+ });
124
+
125
+ // ..........................................................
126
+ // updateContentWithValueObserver()
127
+ //
128
+ module("SC.Control#updatePropertyFromContent()", {
129
+ setup: function() {
130
+ content = SC.Object.create({ foo: "foo", bar: "bar" });
131
+ view = SC.View.create(SC.Control, {
132
+ value: "bar",
133
+ content: content,
134
+ contentValueKey: "bar",
135
+ displayDelegate: SC.Object.create({ contentValueKey: "foo" })
136
+ });
137
+ },
138
+ teardown: function() {
139
+ content = null ;
140
+ view.destroy();
141
+ }
142
+ }) ;
143
+
144
+ test("if contentValueKey is set, changing value will be pushed to content", function() {
145
+ view.set('value', 'baz');
146
+ equals(content.get('bar'), 'baz', 'should copy from view.value to content');
147
+ });
148
+
149
+ test("does nothing if content is null", function() {
150
+ view.set('content', null);
151
+ view.set('value', 'baz'); // should be no errors here...
152
+ equals(content.get('bar'), 'bar', 'should not change');
153
+ equals(content.get('foo'), 'foo', 'should not change');
154
+ });
155
+
156
+ test("if contentValueKey is undefined, asks display delegate instead", function() {
157
+ delete view.contentValueKey ;
158
+ view.set('value', 'baz');
159
+ equals(content.get('foo'), 'baz', 'should copy from view.value to content');
160
+ });
161
+
162
+ test("if contentValueKey is not set & displayDelegate not set, does nothing", function() {
163
+ delete view.contentValueKey;
164
+ delete view.displayDelegate;
165
+ view.set('value', 'baz');
166
+ equals(content.get('bar'), 'bar', 'should not change');
167
+ equals(content.get('foo'), 'foo', 'should not change');
168
+ });