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,651 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
4
+ // Portions ©2008-2009 Apple, Inc. All rights reserved.
5
+ // License: Licened under MIT license (see license.js)
6
+ // ==========================================================================
7
+
8
+ sc_require('views/split_divider');
9
+
10
+ SC.RESIZE_BOTH = 'resize-both' ;
11
+ SC.RESIZE_TOP_LEFT = 'resize-top-left' ;
12
+ SC.RESIZE_BOTTOM_RIGHT = 'resize-bottom-right' ;
13
+
14
+ /**
15
+ @class
16
+
17
+ A split view is used to show views that the user can resize or collapse.
18
+ To use a split view you need to set a topLeftView, a bottomRightView and,
19
+ optionally, a splitDividerView. You can also set various other properties
20
+ to control the minimum and maximum thickness allowed for the flexible views.
21
+
22
+ h2. Example
23
+
24
+ {{{
25
+ SC.SplitView.design({
26
+
27
+ // the left view...
28
+ topLeftView: SC.View.design({
29
+ // view contents
30
+ }),
31
+
32
+ // the right view
33
+ bottomRightView: SC.View.design({
34
+ // view contents
35
+ })
36
+
37
+ })
38
+ }}}
39
+
40
+ When the user clicks and drags on a split divider view, it will
41
+ automatically resize the views immediately before and after the split
42
+ divider view. You can constrain the resizing allowed by the split view
43
+ either by setting a minThickness and maxThickness property on the views
44
+ themselves or by implementing the method splitViewConstrainThickness on
45
+ a delegate object.
46
+
47
+ In addition to resizing views, users can also collapse views by double
48
+ clicking on a split divider view. When a view is collapsed, it's isVisible
49
+ property is set to NO and its space it removed from the view. Double
50
+ clicking on a divider again will restore a collapsed view. A user can also
51
+ start to drag the divider to show the collapsed view.
52
+
53
+ You can programmatically control collapsing behavior using various properties
54
+ on either the split view or its child views, and/or by implementing the
55
+ method splitViewCanCollapse on a delegate object.
56
+
57
+ Finally, SplitViews can layout their child views either horizontally or
58
+ vertically. To choose the direction of layout set the layoutDirection
59
+ property on the view (or the :direction option with the view helper).
60
+ This property should be set when the view is created. Changing it
61
+ dynamically will have an unknown effect.
62
+
63
+ @property {Boolean} layoutDirection Either SC.HORIZONTAL or SC.VERTICAL.
64
+ Defaults to SC.HORIZONTAL. Use the :direction option with the split_view
65
+ viewhelper.
66
+
67
+ @property {Boolean} canCollapseViews Set to NO when you don't want any of
68
+ the child views to collapse. Defaults to YES. Use the :can_collapse_views
69
+ option with the split_view viewhelper.
70
+
71
+ In addition, the top/left and bottom/right child views can have these
72
+ properties:
73
+
74
+ @extends SC.View
75
+ @since SproutCore 1.0
76
+
77
+ @author Charles Jolley
78
+ @author Lawrence Pit
79
+ @author Erich Ocean
80
+ */
81
+ SC.SplitView = SC.View.extend(
82
+ /** @scope SC.SplitView.prototype */ {
83
+
84
+ classNames: ['sc-split-view'],
85
+
86
+ childLayoutProperties: 'layoutDirection dividerThickness autoresizeBehavior'.w(),
87
+
88
+ displayProperties: ['layoutDirection'],
89
+
90
+ /**
91
+ delegate for controlling split view behavior.
92
+ */
93
+ delegate: null,
94
+
95
+ /**
96
+ Direction of layout. Must be SC.LAYOUT_HORIZONTAL or SC.LAYOUT_VERTICAL.
97
+
98
+ @property {String}
99
+ */
100
+ layoutDirection: SC.LAYOUT_HORIZONTAL,
101
+
102
+ /**
103
+ Set to NO to disable collapsing for all views.
104
+ */
105
+ canCollapseViews: YES,
106
+
107
+ /*
108
+ Configure which view(s) you want to autoresize when this split view's
109
+ layout changes. Possible options are:
110
+
111
+ | SC.RESIZE_BOTTOM_RIGHT | (default) resizes bottomRightView |
112
+ | SC.RESIZE_TOP_LEFT | resized topLeftView |
113
+
114
+ */
115
+ autoresizeBehavior: SC.RESIZE_BOTTOM_RIGHT,
116
+
117
+ /**
118
+ Specifies how much space the fixed view should use when the view is setup.
119
+ A number less than one will be treated as a percentage, while a number
120
+ greater than one will be treated as a pixel width.
121
+
122
+ @property {Number}
123
+ */
124
+ topLeftDefaultThickness: 0.5,
125
+
126
+ /**
127
+ Yes, we're a split view.
128
+ */
129
+ isSplitView: YES,
130
+
131
+ // add default views
132
+ topLeftView: SC.View,
133
+ dividerView: SC.SplitDividerView,
134
+ bottomRightView: SC.View,
135
+
136
+ /**
137
+ @property {SC.Cursor} the cursor thumb view should use for themselves
138
+ */
139
+ thumbViewCursor: null,
140
+
141
+ /**
142
+ Used by split divider to decide if the view can be collapsed.
143
+ */
144
+ canCollapseView: function(view) {
145
+ // console.log('%@.canCollapseView(%@)'.fmt(this, view));
146
+ return this.invokeDelegateMethod(this.delegate, 'splitViewCanCollapse', this, view) ;
147
+ },
148
+
149
+ /**
150
+ Returns the thickness for a given view.
151
+
152
+ @param {SC.View} view the view to get.
153
+ @returns the view with the width.
154
+ */
155
+ thicknessForView: function(view) {
156
+ // console.log('%@.thicknessForView(%@)'.fmt(this, view));
157
+ var direction = this.get('layoutDirection') ;
158
+ var ret = view.get('frame') ;
159
+ return (direction === SC.LAYOUT_HORIZONTAL) ? ret.width : ret.height ;
160
+ },
161
+
162
+ createChildViews: function() {
163
+ // console.log('%@.createChildViews()'.fmt(this));
164
+ var childViews = [] ;
165
+ var viewAry = ['topLeftView', 'dividerView', 'bottomRightView'] ;
166
+ var view, idx, len ;
167
+
168
+ for (idx=0, len=viewAry.length; idx<len; ++idx) {
169
+ if (view = this.get(viewAry[idx])) {
170
+ view = this[viewAry[idx]] = this.createChildView(view, {
171
+ layoutView: this,
172
+ rootElementPath: [idx]
173
+ }) ;
174
+ childViews.push(view) ;
175
+ }
176
+ }
177
+
178
+ this.set('childViews', childViews) ;
179
+ return this ;
180
+ },
181
+
182
+ /**
183
+ Layout the views.
184
+
185
+ This method needs to be called anytime you change the view thicknesses
186
+ to make sure they are arranged properly. This will set up the views so
187
+ that they can resize appropriately.
188
+ */
189
+ updateChildLayout: function() {
190
+ // console.log('%@.updateChildLayout()'.fmt(this));
191
+ var topLeftView = this.get('topLeftView') ;
192
+ var bottomRightView = this.get('bottomRightView') ;
193
+ var dividerView = this.get('dividerView') ;
194
+ var direction = this.get('layoutDirection') ;
195
+ var topLeftThickness = this._desiredTopLeftThickness ;
196
+ var dividerThickness = this.get('dividerThickness') || 7 ;
197
+ var splitViewThickness = (direction == SC.LAYOUT_HORIZONTAL) ? this.get('frame').width : this.get('frame').height ;
198
+ var bottomRightThickness = splitViewThickness - dividerThickness - topLeftThickness ;
199
+ var autoresizeBehavior = this.get('autoresizeBehavior') ;
200
+ var layout ;
201
+ var isCollapsed ;
202
+
203
+ // console.log('topLeftThickness == %@'.fmt(topLeftThickness));
204
+ // console.log('dividerThickness == %@'.fmt(dividerThickness));
205
+ // console.log('splitViewThickness == %@'.fmt(splitViewThickness));
206
+ // console.log('bottomRightThickness == %@'.fmt(bottomRightThickness));
207
+
208
+ // top/left view
209
+ isCollapsed = topLeftView.get('isCollapsed') || NO ;
210
+ topLeftView.setIfChanged('isVisible', !isCollapsed) ;
211
+ layout = SC.clone(topLeftView.get('layout'));
212
+ if (direction == SC.LAYOUT_HORIZONTAL) {
213
+ layout.top = 0 ;
214
+ layout.left = 0 ;
215
+ layout.bottom = 0 ;
216
+ switch (autoresizeBehavior) {
217
+ case SC.RESIZE_BOTH:
218
+ throw "SC.RESIZE_BOTH is currently unsupported.";
219
+ case SC.RESIZE_TOP_LEFT:
220
+ layout.right = bottomRightThickness + dividerThickness ;
221
+ delete layout.width ;
222
+ break ;
223
+ case SC.RESIZE_BOTTOM_RIGHT:
224
+ delete layout.right ;
225
+ layout.width = topLeftThickness ;
226
+ break ;
227
+ }
228
+ } else {
229
+ layout.top = 0;
230
+ layout.left = 0 ;
231
+ layout.right = 0 ;
232
+ switch (autoresizeBehavior) {
233
+ case SC.RESIZE_BOTH:
234
+ throw "SC.RESIZE_BOTH is currently unsupported.";
235
+ case SC.RESIZE_TOP_LEFT:
236
+ layout.bottom = bottomRightThickness + dividerThickness ;
237
+ delete layout.height ;
238
+ break ;
239
+ case SC.RESIZE_BOTTOM_RIGHT:
240
+ delete layout.bottom ;
241
+ layout.height = topLeftThickness ;
242
+ break ;
243
+ }
244
+ }
245
+ // console.log('topLeftView layout %@'.fmt(SC.inspect(layout)));
246
+ // console.log(topLeftView);
247
+ topLeftView.set('layout', layout);
248
+
249
+ // split divider view
250
+ if (dividerView) {
251
+ layout = SC.clone(dividerView.get('layout'));
252
+ if (direction == SC.LAYOUT_HORIZONTAL) {
253
+ layout.width = dividerThickness;
254
+ delete layout.height ;
255
+ layout.top = 0 ;
256
+ layout.bottom = 0 ;
257
+ switch (autoresizeBehavior) {
258
+ case SC.RESIZE_BOTH:
259
+ throw "SC.RESIZE_BOTH is currently unsupported.";
260
+ // delete layout.left ;
261
+ // delete layout.right ;
262
+ // layout.centerX = topLeftThickness + (dividerThickness / 2) ;
263
+ // delete layout.centerY ;
264
+ //break ;
265
+ case SC.RESIZE_TOP_LEFT:
266
+ delete layout.left ;
267
+ layout.right = bottomRightThickness ;
268
+ delete layout.centerX ;
269
+ delete layout.centerY ;
270
+ break ;
271
+ case SC.RESIZE_BOTTOM_RIGHT:
272
+ layout.left = topLeftThickness ;
273
+ delete layout.right ;
274
+ delete layout.centerX ;
275
+ delete layout.centerY ;
276
+ break ;
277
+ }
278
+ } else {
279
+ // console.log('setting vertical divider layout');
280
+ // console.log('autoresizeBehavior is %@'.fmt(autoresizeBehavior));
281
+ delete layout.width ;
282
+ layout.height = dividerThickness ;
283
+ layout.left = 0 ;
284
+ layout.right = 0 ;
285
+ switch (autoresizeBehavior) {
286
+ case SC.RESIZE_BOTH:
287
+ throw "SC.RESIZE_BOTH is currently unsupported.";
288
+ // delete layout.top ;
289
+ // delete layout.bottom ;
290
+ // delete layout.centerX ;
291
+ // layout.centerY = topLeftThickness + (dividerThickness / 2) ;
292
+ //break ;
293
+ case SC.RESIZE_TOP_LEFT:
294
+ delete layout.top ;
295
+ layout.bottom = bottomRightThickness ;
296
+ delete layout.centerX ;
297
+ delete layout.centerY ;
298
+ break ;
299
+ case SC.RESIZE_BOTTOM_RIGHT:
300
+ layout.top = topLeftThickness ;
301
+ delete layout.bottom ;
302
+ delete layout.centerX ;
303
+ delete layout.centerY ;
304
+ break ;
305
+ }
306
+ }
307
+ // console.log('dividerView layout %@'.fmt(SC.inspect(layout)));
308
+ // console.log(dividerView);
309
+ dividerView.set('layout', layout);
310
+ }
311
+
312
+ // bottom/right view
313
+ isCollapsed = bottomRightView.get('isCollapsed') || NO ;
314
+ bottomRightView.setIfChanged('isVisible', !isCollapsed) ;
315
+ layout = SC.clone(bottomRightView.get('layout'));
316
+ if (direction == SC.LAYOUT_HORIZONTAL) {
317
+ layout.top = 0 ;
318
+ layout.bottom = 0 ;
319
+ layout.right = 0 ;
320
+ switch (autoresizeBehavior) {
321
+ case SC.RESIZE_BOTH:
322
+ throw "SC.RESIZE_BOTH is currently unsupported.";
323
+ //break ;
324
+ case SC.RESIZE_BOTTOM_RIGHT:
325
+ layout.left = topLeftThickness + dividerThickness ;
326
+ delete layout.width ;
327
+ break ;
328
+ case SC.RESIZE_TOP_LEFT:
329
+ delete layout.left ;
330
+ layout.width = bottomRightThickness ;
331
+ break ;
332
+ }
333
+ } else {
334
+ layout.left = 0 ;
335
+ layout.right = 0 ;
336
+ layout.bottom = 0 ;
337
+ switch (autoresizeBehavior) {
338
+ case SC.RESIZE_BOTH:
339
+ throw "SC.RESIZE_BOTH is currently unsupported.";
340
+ //break ;
341
+ case SC.RESIZE_BOTTOM_RIGHT:
342
+ layout.top = topLeftThickness + dividerThickness ;
343
+ delete layout.height ;
344
+ break ;
345
+ case SC.RESIZE_TOP_LEFT:
346
+ delete layout.top ;
347
+ layout.height = bottomRightThickness ;
348
+ break ;
349
+ }
350
+ }
351
+ // console.log('bottomRightView layout %@'.fmt(SC.inspect(layout)));
352
+ // console.log(bottomRightView);
353
+ bottomRightView.set('layout', layout);
354
+
355
+ // topLeftView.updateDisplayLayout();
356
+ // dividerView.updateDisplayLayout();
357
+ // bottomRightView.updateDisplayLayout();
358
+ },
359
+
360
+ /** @private */
361
+ renderLayout: function(context, firstTime) {
362
+ // console.log('%@.renderLayout(%@, %@)'.fmt(this, context, firstTime));
363
+ // console.log('%@.frame = %@'.fmt(this, SC.inspect(this.get('frame'))));
364
+ if (firstTime) {
365
+ if (!this.get('thumbViewCursor')) {
366
+ this.set('thumbViewCursor', SC.Cursor.create()) ;
367
+ }
368
+
369
+ var direction = this.get('layoutDirection') ;
370
+ var splitViewThickness = (direction == SC.LAYOUT_HORIZONTAL) ? this.get('frame').width : this.get('frame').height ;
371
+
372
+ // if topLeftDefaultThickness is < 1, treat as a percentage, otherwise
373
+ // treat as actual number.
374
+ var desired = this.get('topLeftDefaultThickness');
375
+ if (SC.none(desired) || (desired > 0 && desired < 1)) {
376
+ this._desiredTopLeftThickness = Math.floor(splitViewThickness * (desired || 0.5)) ;
377
+ } else this._desiredTopLeftThickness = desired ;
378
+
379
+ // make sure we don't exceed our min and max values, and that collapse
380
+ // settings are respected
381
+ // cached values are required by _updateTopLeftThickness() below...
382
+ this._topLeftView = this.get('topLeftView') ;
383
+ this._bottomRightView = this.get('bottomRightView') ;
384
+ this._topLeftViewThickness = this.thicknessForView(this.get('topLeftView'));
385
+ this._bottomRightThickness = this.thicknessForView(this.get('bottomRightView'));
386
+ this._dividerThickness = this.get('dividerThickness') ;
387
+ this._layoutDirection = this.get('layoutDirection') ;
388
+
389
+ // this handles min-max settings and collapse parameters
390
+ this._updateTopLeftThickness(0) ;
391
+
392
+ // update the cursor used by thumb views
393
+ this._setCursorStyle() ;
394
+
395
+ // actually set layout for our child views
396
+ this.updateChildLayout() ;
397
+ }
398
+ sc_super() ;
399
+ },
400
+
401
+ /** @private */
402
+ render: function(context, firstTime) {
403
+ // console.log('%@.render(%@, %@)'.fmt(this, context, firstTime));
404
+ // console.log('%@.frame = %@'.fmt(this, SC.inspect(this.get('frame'))));
405
+ sc_super() ;
406
+
407
+ if (this._inLiveResize) this._setCursorStyle() ;
408
+
409
+ if (firstTime) {
410
+ var dir = this.get('layoutDirection') ;
411
+ if (dir===SC.LAYOUT_HORIZONTAL) context.addClass('sc-horizontal') ;
412
+ else context.addClass('sc-vertical') ;
413
+ }
414
+ },
415
+
416
+ // layoutDidChangeFor: function(childView) {
417
+ // // console.log('%@.layoutChildViews(%@)'.fmt(this, childView));
418
+ // sc_super() ;
419
+ // },
420
+ //
421
+ // layoutChildViews: function() {
422
+ // // console.log('%@.layoutChildViews()'.fmt(this));
423
+ // sc_super() ;
424
+ // },
425
+
426
+ /**
427
+ Update the split view's layout based on mouse movement.
428
+
429
+ Call this method in the mouseDown: method of your thumb view. The split view
430
+ will begin tracking the mouse and will update its own layout to reflect the movement
431
+ of the mouse. As a result, the position of your thumb view will also be updated.
432
+
433
+ @returns {Boolean}
434
+ */
435
+ mouseDownInThumbView: function(evt, thumbView) {
436
+ // console.log('%@.mouseDownInThumbView(%@, %@)'.fmt(this, evt, thumbView));
437
+ // console.log(evt.originalEvent);
438
+ var responder = this.getPath('pane.rootResponder') ;
439
+ if (!responder) return NO ; // nothing to do
440
+
441
+ // we're not the source view of the mouseDown:, so we need to capture events manually to receive them
442
+ responder.dragDidStart(this) ;
443
+
444
+ // cache for later
445
+ this._mouseDownX = evt.pageX ;
446
+ this._mouseDownY = evt.pageY ;
447
+ this._thumbView = thumbView ;
448
+ this._topLeftView = this.get('topLeftView') ;
449
+ this._bottomRightView = this.get('bottomRightView') ;
450
+ this._topLeftViewThickness = this.thicknessForView(this.get('topLeftView'));
451
+ this._bottomRightThickness = this.thicknessForView(this.get('bottomRightView'));
452
+ this._dividerThickness = this.get('dividerThickness') ;
453
+ this._layoutDirection = this.get('layoutDirection') ;
454
+
455
+ this.beginLiveResize() ;
456
+ this._inLiveResize = YES ;
457
+
458
+ return YES ;
459
+ },
460
+
461
+ mouseDragged: function(evt) {
462
+ // console.log('%@.mouseDragged(%@)'.fmt(this, evt));
463
+ // console.log(evt.originalEvent);
464
+ var offset = (this._layoutDirection == SC.LAYOUT_HORIZONTAL) ? evt.pageX - this._mouseDownX : evt.pageY - this._mouseDownY ;
465
+ this._updateTopLeftThickness(offset) ;
466
+ return YES;
467
+ },
468
+
469
+ mouseUp: function(evt) {
470
+ // console.log('%@.mouseUp(%@, %@)'.fmt(this, evt));
471
+ // console.log(evt.originalEvent);
472
+ this._thumbView = null ; // avoid memory leaks
473
+ this._inLiveResize = NO ;
474
+ this.endLiveResize() ;
475
+ return YES ;
476
+ },
477
+
478
+ doubleClickInThumbView: function(evt, thumbView) {
479
+ // console.log('%@.mouseDragged(%@, %@)'.fmt(this, evt, thumbView));
480
+ // console.log(evt.originalEvent);
481
+ var view = this._topLeftView ;
482
+ var isCollapsed = view.get('isCollapsed') || NO ;
483
+ if (!isCollapsed && !this.canCollapseView(view)) {
484
+ view = this._bottomRightView ;
485
+ isCollapsed = view.get('isCollapsed') || NO ;
486
+ if (!isCollapsed && !this.canCollapseView(view)) return NO;
487
+ }
488
+
489
+ if (!isCollapsed) {
490
+ // remember thickness in it's uncollapsed state
491
+ this._uncollapsedThickness = this.getThicknessForView(view) ;
492
+ // and collapse
493
+ // this.setThicknessForView(view, 0) ;
494
+ if (view === this._topLeftView) {
495
+ this._topLeftViewThickness = 0 ;
496
+ } else {
497
+ this._bottomRightViewThickness = 0 ;
498
+ }
499
+
500
+ // if however the splitview decided not to collapse, clear:
501
+ if (!view.get("isCollapsed")) {
502
+ this._uncollapsedThickness = null;
503
+ }
504
+ } else {
505
+ // uncollapse to the last thickness in it's uncollapsed state
506
+ if (view === this._topLeftView) {
507
+ this._topLeftViewThickness = this._uncollapsedThickness ;
508
+ } else {
509
+ this._bottomRightViewThickness = this._uncollapsedThickness ;
510
+ }
511
+ view._uncollapsedThickness = null ;
512
+ }
513
+ this._setCursorStyle() ;
514
+ return true ;
515
+ },
516
+
517
+ /** @private */
518
+ _updateTopLeftThickness: function(offset) {
519
+ // console.log('%@._updateTopLeftThickness(%@)'.fmt(this, offset));
520
+ // console.log('%@.frame = %@'.fmt(this, SC.inspect(this.get('frame'))));
521
+ var topLeftView = this._topLeftView ;
522
+ var bottomRightView = this._bottomRightView ;
523
+ var topLeftViewThickness = this.thicknessForView(topLeftView); // the current thickness, not the original thickness
524
+ var bottomRightViewThickness = this.thicknessForView(bottomRightView);
525
+
526
+ var minAvailable = this._dividerThickness ;
527
+ var maxAvailable = 0;
528
+ if (!topLeftView.get("isCollapsed")) maxAvailable += topLeftViewThickness ;
529
+ if (!bottomRightView.get("isCollapsed")) maxAvailable += bottomRightViewThickness ;
530
+
531
+ var proposedThickness = this._topLeftViewThickness + offset;
532
+ var direction = this._layoutDirection ;
533
+ var bottomRightCanCollapse = this.canCollapseView(bottomRightView);
534
+
535
+ var thickness = proposedThickness;
536
+
537
+ // constrain to thickness set on top/left
538
+ var max = this.get('topLeftMaxThickness') ;
539
+ var min = this.get('topLeftMinThickness') ;
540
+
541
+ if (!SC.none(max)) thickness = Math.min(max, thickness) ;
542
+ if (!SC.none(min)) thickness = Math.max(min, thickness) ;
543
+
544
+ // constrain to thickness set on bottom/right
545
+ max = this.get('bottomRightMaxThickness') ;
546
+ min = this.get('bottomRightMinThickness') ;
547
+ var bottomRightThickness = maxAvailable - thickness ;
548
+ if (!SC.none(max)) bottomRightThickness = Math.min(max, bottomRightThickness) ;
549
+ if (!SC.none(min)) bottomRightThickness = Math.max(min, bottomRightThickness) ;
550
+ thickness = maxAvailable - bottomRightThickness ;
551
+
552
+ // constrain to thickness determined by delegate.
553
+ thickness = this.invokeDelegateMethod(this.delegate, 'splitViewConstrainThickness', this, topLeftView, thickness) ;
554
+
555
+ // cannot be more than what's available
556
+ thickness = Math.min(thickness, maxAvailable) ;
557
+
558
+ // cannot be less than zero
559
+ thickness = Math.max(0, thickness) ;
560
+
561
+ var tlCollapseAtThickness = topLeftView.get('collapseAtThickness') ;
562
+ if (!tlCollapseAtThickness) tlCollapseAtThickness = 0 ;
563
+ var brCollapseAtThickness = bottomRightView.get('collapseAtThickness') ;
564
+ brCollapseAtThickness = SC.none(brCollapseAtThickness) ? maxAvailable : (maxAvailable - brCollapseAtThickness);
565
+
566
+ if ((proposedThickness <= tlCollapseAtThickness) && this.canCollapseView(topLeftView)) {
567
+ // want to collapse top/left, check if this doesn't violate the max thickness of bottom/right
568
+ max = bottomRightView.get('maxThickness');
569
+ if (!max || (minAvailable + maxAvailable) <= max) {
570
+ // collapse top/left view, even if it has a minThickness
571
+ thickness = 0 ;
572
+ }
573
+ } else if (proposedThickness >= brCollapseAtThickness && this.canCollapseView(bottomRightView)) {
574
+ // want to collapse bottom/right, check if this doesn't violate the max thickness of top/left
575
+ max = topLeftView.get('maxThickness');
576
+ if (!max || (minAvailable + maxAvailable) <= max) {
577
+ // collapse bottom/right view, even if it has a minThickness
578
+ thickness = maxAvailable;
579
+ }
580
+ }
581
+
582
+ // now apply constrained value
583
+ if (thickness != this.thicknessForView(topLeftView)) {
584
+ this._desiredTopLeftThickness = thickness ;
585
+
586
+ // un-collapse if needed.
587
+ topLeftView.set('isCollapsed', thickness === 0) ;
588
+ bottomRightView.set('isCollapsed', thickness >= maxAvailable) ;
589
+
590
+ // this.set('displayNeedsUpdate', YES);
591
+ // this.adjustLayout();
592
+ this.updateChildLayout(); // updates child layouts
593
+ this.displayDidChange(); // updates cursor
594
+ }
595
+ },
596
+
597
+ /** @private */
598
+ _setCursorStyle: function() {
599
+ // console.log('%@._setCursorStyle()'.fmt(this));
600
+ var topLeftView = this._topLeftView ;
601
+ var bottomRightView = this._bottomRightView ;
602
+ var thumbViewCursor = this.get('thumbViewCursor') ;
603
+
604
+ // updates the cursor of the thumb view that called mouseDownInThumbView() to reflect the status of the drag
605
+ var tlThickness = this.thicknessForView(topLeftView) ;
606
+ var brThickness = this.thicknessForView(bottomRightView) ;
607
+ if (topLeftView.get('isCollapsed') || tlThickness == this.get("topLeftMinThickness") || brThickness == this.get("bottomRightMaxThickness")) {
608
+ thumbViewCursor.set('cursorStyle', this._layoutDirection == SC.LAYOUT_HORIZONTAL ? "e-resize" : "s-resize") ;
609
+ } else if (bottomRightView.get('isCollapsed') || tlThickness == this.get("topLeftMaxThickness") || brThickness == this.get("bottomRightMinThickness")) {
610
+ thumbViewCursor.set('cursorStyle', this._layoutDirection == SC.LAYOUT_HORIZONTAL ? "w-resize" : "n-resize") ;
611
+ } else {
612
+ thumbViewCursor.set('cursorStyle', this._layoutDirection == SC.LAYOUT_HORIZONTAL ? "ew-resize" : "ns-resize") ;
613
+ }
614
+ },
615
+
616
+ /**
617
+ (DELEGATE) Control whether a view can be collapsed.
618
+
619
+ The default implemention returns NO if the split view property
620
+ canCollapseViews is set to NO or when the given view has
621
+ property canCollapse set to NO, otherwise it returns YES.
622
+
623
+ @param {SC.SplitView} splitView the split view
624
+ @param {SC.View} view the view we want to collapse.
625
+ @returns {Boolean} YES to allow collapse.
626
+ */
627
+ splitViewCanCollapse: function(splitView, view) {
628
+ // console.log('%@.splitViewCanCollapse(%@, %@)'.fmt(this, splitView, view));
629
+ if (splitView.get('canCollapseViews') === NO) return NO ;
630
+ if (view.get('canCollapse') === NO) return NO ;
631
+ return YES ;
632
+ },
633
+
634
+ /**
635
+ (DELEGATE) Constrain a views allowed thickness.
636
+
637
+ The default implementation allows any thickness. The view will
638
+ automatically constrain the view to not allow views to overflow the
639
+ visible area.
640
+
641
+ @param {SC.SplitView} splitView the split view
642
+ @param {SC.View} view the view in question
643
+ @param {Number} proposedThickness the proposed thickness.
644
+ @returns the allowed thickness
645
+ */
646
+ splitViewConstrainThickness: function(splitView, view, proposedThickness) {
647
+ // console.log('%@.splitViewConstrainThickness(%@, %@, %@)'.fmt(this, splitView, view, proposedThickness));
648
+ return proposedThickness;
649
+ }
650
+
651
+ });