sproutit-sproutcore 1.0.0.20090407205609 → 1.0.0.20090408130025

Sign up to get free protection for your applications and to get access to all the features.
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,783 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore Costello - Property Observing Library
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
+ require('core') ;
9
+ require('mixins/observable') ;
10
+ require('mixins/array') ;
11
+
12
+ /*globals $$sel */
13
+
14
+ SC.BENCHMARK_OBJECTS = NO;
15
+
16
+ // ..........................................................
17
+ // PRIVATE HELPER METHODS
18
+ //
19
+ // Private helper methods. These are not kept as part of the class
20
+ // definition because SC.Object is copied frequently and we want to keep the
21
+ // number of class methods to a minimum.
22
+
23
+ /** @private
24
+ Augments a base object by copying the properties from the extended hash.
25
+ In addition to simply copying properties, this method also performs a
26
+ number of optimizations that can make init'ing a new object much faster
27
+ including:
28
+
29
+ - concating concatenatedProperties
30
+ - prepping a list of bindings, observers, and dependent keys
31
+ - caching local observers so they don't need to be manually constructed.
32
+
33
+ @param {Hash} base hash
34
+ @param {Hash} extension
35
+ @returns {Hash} base hash
36
+ */
37
+ SC._object_extend = function _object_extend(base, ext) {
38
+ if (!ext) return base; // nothing to do
39
+
40
+ // set _kvo_cloned for later use
41
+ base._kvo_cloned = null;
42
+
43
+ // get some common vars
44
+ var key, idx, len, cur, cprops = base.concatenatedProperties, K = SC.K ;
45
+ var p1,p2;
46
+
47
+ // first, save any concat props. use old or new array or concat
48
+ idx = (cprops) ? cprops.length : 0 ;
49
+ var concats = (idx>0) ? {} : null;
50
+ while(--idx>=0) {
51
+ key = cprops[idx]; p1 = base[key]; p2 = ext[key];
52
+
53
+ if (p1) {
54
+ if (!(p1 instanceof Array)) p1 = SC.$A(p1);
55
+ concats[key] = (p2) ? p1.concat(p2) : p2 ;
56
+ } else {
57
+ if (!(p2 instanceof Array)) p2 = SC.$A(p2);
58
+ concats[key] = p2 ;
59
+ }
60
+ }
61
+
62
+ // setup arrays for bindings, observers, and properties. Normally, just
63
+ // save the arrays from the base. If these need to be changed during
64
+ // processing, then they will be cloned first.
65
+ var bindings = base._bindings, clonedBindings = NO;
66
+ var observers = base._observers, clonedObservers = NO;
67
+ var properties = base._properties, clonedProperties = NO;
68
+ var paths, pathLoc, local ;
69
+
70
+ // outlets are treated a little differently because you can manually
71
+ // name outlets in the passed in hash. If this is the case, then clone
72
+ // the array first.
73
+ var outlets = base.outlets, clonedOutlets = NO ;
74
+ if (ext.outlets) {
75
+ outlets = (outlets || SC.EMPTY_ARRAY).concat(ext.outlets);
76
+ clonedOutlets = YES ;
77
+ }
78
+
79
+ // now copy properties, add superclass to func.
80
+ for(key in ext) {
81
+
82
+ if (key === '_kvo_cloned') continue; // do not copy
83
+
84
+ // avoid copying builtin methods
85
+ if (!ext.hasOwnProperty(key)) continue ;
86
+
87
+ // get the value. use concats if defined
88
+ var value = (concats.hasOwnProperty(key) ? concats[key] : null) || ext[key] ;
89
+
90
+ // Possibly add to a bindings.
91
+ if (key.slice(-7) === "Binding") {
92
+ if (!clonedBindings) {
93
+ bindings = (bindings || SC.EMPTY_ARRAY).slice() ;
94
+ clonedBindings = YES ;
95
+ }
96
+
97
+ if (bindings === null) bindings = (base._bindings || SC.EMPTY_ARRAY).slice();
98
+ bindings[bindings.length] = key ;
99
+
100
+ // Also add observers, outlets, and properties for functions...
101
+ } else if (value && (value instanceof Function)) {
102
+
103
+ // add super to funcs. Be sure not to set the base of a func to
104
+ // itself to avoid infinite loops.
105
+ if (!value.superclass && (value !== (cur=base[key]))) {
106
+ value.superclass = value.base = cur || K;
107
+ }
108
+
109
+ // handle regular observers
110
+ if (value.propertyPaths) {
111
+ if (!clonedObservers) {
112
+ observers = (observers || SC.EMPTY_ARRAY).slice() ;
113
+ clonedObservers = YES ;
114
+ }
115
+ observers[observers.length] = key ;
116
+
117
+ // handle local properties
118
+ } else if (paths = value.localPropertyPaths) {
119
+ pathLoc = paths.length;
120
+ while(--pathLoc >= 0) {
121
+ local = base._kvo_for(SC.keyFor('_kvo_local', paths[pathLoc]), SC.Set);
122
+ local.add(key);
123
+ base._kvo_for('_kvo_observed_keys', SC.Set).add(paths[pathLoc]) ;
124
+ }
125
+
126
+ // handle computed properties
127
+ } else if (value.dependentKeys) {
128
+ if (!clonedProperties) {
129
+ properties = (properties || SC.EMPTY_ARRAY).slice() ;
130
+ clonedProperties = YES ;
131
+ }
132
+ properties[properties.length] = key ;
133
+
134
+ // handle outlets
135
+ } else if (value.autoconfiguredOutlet) {
136
+ if (!clonedOutlets) {
137
+ outlets = (outlets || SC.EMPTY_ARRAY).slice();
138
+ clonedOutlets = YES ;
139
+ }
140
+ outlets[outlets.length] = key ;
141
+ }
142
+ }
143
+
144
+ // copy property
145
+ base[key] = value ;
146
+ }
147
+
148
+ // copy bindings, observers, and properties
149
+ base._bindings = bindings || [];
150
+ base._observers = observers || [] ;
151
+ base._properties = properties || [] ;
152
+ base.outlets = outlets || [];
153
+
154
+ // toString is usually skipped. Don't do that!
155
+ if (ext.hasOwnProperty('toString')) base.toString = ext.toString;
156
+
157
+ return base ;
158
+ } ;
159
+
160
+ /** @class
161
+
162
+ Root object for the SproutCore framework. SC.Object is the root class for
163
+ most classes defined by SproutCore. It builds on top of the native object
164
+ support provided by JavaScript to provide support for class-like
165
+ inheritance, automatic bindings, properties observers, and more.
166
+
167
+ Most of the classes you define in your application should inherit from
168
+ SC.Object or one of its subclasses. If you are writing objects of your
169
+ own, you should read this documentation to learn some of the details of
170
+ how SC.Object's behave and how they differ from other frameworks.
171
+
172
+ h2. About SproutCore Classes
173
+
174
+ JavaScript is not a class-based language. Instead it uses a type of
175
+ inheritence inspired by self called "prototypical" inheritance.
176
+ ...
177
+
178
+ h2. Using SproutCore objects with other JavaScript object.
179
+
180
+ You can create a SproutCore object just like any other object...
181
+ obj = new SC.Object() ;
182
+
183
+ @extends SC.Observable
184
+ @author Charles Jolley
185
+ @constructor
186
+ @since SproutCore 1.0
187
+ */
188
+ SC.Object = function(props) { return this._object_init(props); };
189
+
190
+ SC.mixin(SC.Object, /** @scope SC.Object @static */ {
191
+
192
+ /**
193
+ Adds the passed properties to the object's class definition. You can
194
+ pass as many hashes as you want, including Mixins, and they will be
195
+ added in the order they are passed.
196
+
197
+ This is a shorthand for calling SC.mixin(MyClass, props...);
198
+
199
+ @params {Hash} props the properties you want to add.
200
+ @returns {Object} receiver
201
+ */
202
+ mixin: function(props) {
203
+ var len = arguments.length, loc ;
204
+ for(loc =0;loc<len;loc++) SC.mixin(this, arguments[loc]);
205
+ return this ;
206
+ },
207
+
208
+ // ..........................................
209
+ // CREATING CLASSES AND INSTANCES
210
+ //
211
+
212
+ /**
213
+ Points to the superclass for this class. You can use this to trace a
214
+ class hierarchy.
215
+ */
216
+ superclass: null,
217
+
218
+ /**
219
+ Creates a new subclass of the receiver, adding any passed properties to
220
+ the instance definition of the new class. You should use this method
221
+ when you plan to create several objects based on a class with similar
222
+ properties.
223
+
224
+ h2. Init
225
+
226
+ If you define an init() method, it will be called when you create
227
+ instances of your new class. Since SproutCore uses the init() method to
228
+ do important setup, you must be sure to always call sc_super() somewhere
229
+ in your init() to allow the normal setup to proceed.
230
+
231
+ @params {Hash} props the methods of properties you want to add
232
+ @returns {Class} A new object class
233
+ */
234
+ extend: function(props) {
235
+ var bench = SC.BENCHMARK_OBJECTS ;
236
+ if (bench) SC.Benchmark.start('SC.Object.extend') ;
237
+
238
+ // build a new constructor and copy class methods. Do this before
239
+ // adding any other properties so they are not overwritten by the copy.
240
+ var prop, ret = function(props) { return this._object_init(props); } ;
241
+ for(prop in this) {
242
+ if (!this.hasOwnProperty(prop)) continue ;
243
+ ret[prop] = this[prop];
244
+ }
245
+
246
+ // manually copy toString() because some JS engines do not enumerate it
247
+ if (this.hasOwnProperty('toString')) ret.toString = this.toString;
248
+
249
+ // now setup superclass, guid
250
+ ret.superclass = this ;
251
+ SC.generateGuid(ret); // setup guid
252
+
253
+ // setup new prototype and add properties to it
254
+ var base = (ret.prototype = SC.beget(this.prototype));
255
+ var idx, len = arguments.length;
256
+ for(idx=0;idx<len;idx++) SC._object_extend(base, arguments[idx]) ;
257
+ base.constructor = ret; // save constructor
258
+
259
+ if (bench) SC.Benchmark.end('SC.Object.extend') ;
260
+ return ret ;
261
+ },
262
+
263
+ /**
264
+ Creates a new instance of the class.
265
+
266
+ Unlike most frameworks, you do not pass paramters into the init funciton
267
+ for an object. Instead, you pass a hash of additonal properties you
268
+ want to have assigned to the object when it is first created. This is
269
+ functionally like creating a anonymous subclass of the receiver and then
270
+ instantiating it, but more efficient.
271
+
272
+ You can use create() like you would a normal constructor in a
273
+ class-based system, or you can use it to create highly customized
274
+ singleton objects such as controllers or app-level objects. This is
275
+ often more efficient than creating subclasses and than instantiating
276
+ them.
277
+
278
+ You can pass any hash of properties to this method, including mixins.
279
+
280
+ @param {Hash} props optional hash of method or properties to add to the instance.
281
+ @returns {SC.Object} new instance of the receiver class.
282
+ */
283
+ create: function(props) { var C=this; return new C(arguments); },
284
+
285
+ /**
286
+ Walk like a duck. You can use this to quickly test classes.
287
+ */
288
+ isClass: YES,
289
+
290
+ /** @private */
291
+ toString: function() { return SC._object_className(this); },
292
+
293
+ // ..........................................
294
+ // PROPERTY SUPPORT METHODS
295
+ //
296
+
297
+ /**
298
+ Returns YES if the receiver is a subclass of the named class. If the
299
+ receiver is the class passed, this will return NO since the class is not
300
+ a subclass of itself. See also kindOf().
301
+
302
+ h2. Example
303
+
304
+ {{{
305
+ ClassA = SC.Object.extend();
306
+ ClassB = ClassA.extend();
307
+
308
+ ClassB.subclassOf(ClassA) => YES
309
+ ClassA.subclassOf(ClassA) => NO
310
+ }}}
311
+
312
+ @param {Class} scClass class to compare
313
+ @returns {Boolean}
314
+ */
315
+ subclassOf: function(scClass) {
316
+ if (this === scClass) return NO ;
317
+ var t = this ;
318
+ while(t = t.superclass) if (t === scClass) return YES ;
319
+ return NO ;
320
+ },
321
+
322
+ /**
323
+ Returns YES if the passed object is a subclass of the receiver. This is
324
+ the inverse of subclassOf() which you call on the class you want to test.
325
+
326
+ @param {Class} scClass class to compare
327
+ @returns {Boolean}
328
+ */
329
+ hasSubclass: function(scClass) {
330
+ return (scClass && scClass.subclassOf) ? scClass.subclassOf(this) : NO;
331
+ },
332
+
333
+ /**
334
+ Returns YES if the receiver is the passed class or is a subclass of the
335
+ passed class. Unlike subclassOf(), this method will return YES if you
336
+ pass the receiver itself, since class is a kind of itself. See also
337
+ subclassOf().
338
+
339
+ h2. Example
340
+
341
+ {{{
342
+ ClassA = SC.Object.extend();
343
+ ClassB = ClassA.extend();
344
+
345
+ ClassB.kindOf(ClassA) => YES
346
+ ClassA.kindOf(ClassA) => YES
347
+ }}}
348
+
349
+ @param {Class} scClass class to compare
350
+ @returns {Boolean}
351
+ */
352
+ kindOf: function(scClass) {
353
+ return (this === scClass) || this.subclassOf(scClass) ;
354
+ }
355
+
356
+ }) ;
357
+
358
+ // ..........................................
359
+ // DEFAULT OBJECT INSTANCE
360
+ //
361
+ SC.Object.prototype = {
362
+
363
+ /** @private
364
+ This is the first method invoked on a new instance. It will first apply
365
+ any added properties to the new instance and then calls the real init()
366
+ method.
367
+
368
+ @param {Array} extensions an array-like object with hashes to apply.
369
+ @returns {Object} receiver
370
+ */
371
+ _object_init: function(extensions) {
372
+ // apply any new properties
373
+ var idx, len = (extensions) ? extensions.length : 0;
374
+ for(idx=0;idx<len;idx++) SC._object_extend(this, extensions[idx]) ;
375
+ SC.generateGuid(this) ; // add guid
376
+ this.init() ; // call real init
377
+
378
+ // Call 'initMixin' methods to automatically setup modules.
379
+ var inits = this.initMixin; len = (inits) ? inits.length : 0 ;
380
+ for(idx=0;idx < len; idx++) inits[idx].call(this);
381
+
382
+ return this ; // done!
383
+ },
384
+
385
+ /**
386
+ You can call this method on an object to mixin one or more hashes of
387
+ properties on the receiver object. In addition to simply copying
388
+ properties, this method will also prepare the properties for use in
389
+ bindings, computed properties, etc.
390
+
391
+ If you plan to use this method, you should call it before you call
392
+ the inherited init method from SC.Object or else your instance may not
393
+ function properly.
394
+
395
+ h2. Example
396
+
397
+ {{{
398
+ // dynamically apply a mixin specified in an object property
399
+ var MyClass = SC.Object.extend({
400
+ extraMixin: null,
401
+
402
+ init: function() {
403
+ this.mixin(this.extraMixin);
404
+ sc_super();
405
+ }
406
+ });
407
+
408
+ var ExampleMixin = { foo: "bar" };
409
+
410
+ var instance = MyClass.create({ extraMixin: ExampleMixin }) ;
411
+
412
+ instance.get('foo') => "bar"
413
+ }}}
414
+
415
+ @param {Hash} ext a hash to copy. Only one.
416
+ @returns {Object} receiver
417
+ */
418
+ mixin: function() {
419
+ var idx, len = arguments.length;
420
+ for(idx=0;idx<len;idx++) SC.mixin(this, arguments[idx]) ;
421
+
422
+ // call initMixin
423
+ for(idx=0;idx<len;idx++) {
424
+ var init = arguments[idx].initMixin ;
425
+ if (init) init.call(this) ;
426
+ }
427
+ return this ;
428
+ },
429
+
430
+ /**
431
+ This method is invoked automatically whenever a new object is
432
+ instantiated. You can override this method as you like to setup your
433
+ new object.
434
+
435
+ Within your object, be sure to call sc_super() to ensure that the
436
+ built-in init method is also called or your observers and computed
437
+ properties may not be configured.
438
+
439
+ Although the default init() method returns the receiver, the return
440
+ value is ignored.
441
+
442
+ @returns {Object} reciever
443
+ */
444
+ init: function() {
445
+ this.initObservable();
446
+ return this ;
447
+ },
448
+
449
+ /**
450
+ Set to NO once this object has been destroyed.
451
+ */
452
+ isDestroyed: NO,
453
+
454
+ /**
455
+ Call this method when you are finished with an object to teardown its
456
+ contents. Because JavaScript is garbage collected, you do not usually
457
+ need to call this method. However, you may choose to do so for certain
458
+ objects, especially views, in order to let them reclaim memory they
459
+ consume immediately.
460
+
461
+ If you would like to perform additional cleanup when an object is
462
+ finished, you may override this method. Be sure to call sc_super().
463
+
464
+ @returns {SC.Object} receiver
465
+ */
466
+ destroy: function() {
467
+ if (this.get('isDestroyed')) return this; // nothing to do
468
+ this.set('isDestroyed', YES);
469
+
470
+ // destroy any mixins
471
+ var idx, inits = this.destroyMixin, len = (inits) ? inits.length : 0 ;
472
+ for(idx=0;idx < len; idx++) inits[idx].call(this);
473
+
474
+ return this ;
475
+ },
476
+
477
+ /**
478
+ Walk like a duck. Always YES since this is an object and not a class.
479
+ */
480
+ isObject: true,
481
+
482
+ /**
483
+ Returns YES if the named value is an executable function.
484
+
485
+ @param methodName {String} the property name to check
486
+ @returns {Boolean}
487
+ */
488
+ respondsTo: function( methodName ) {
489
+ return !!(SC.typeOf(this[methodName]) === SC.T_FUNCTION);
490
+ },
491
+
492
+ /**
493
+ Attemps to invoked the named method, passing the included two arguments.
494
+ Returns NO if the method is either not implemented or if the handler
495
+ returns NO (indicating that it did not handle the event). This method
496
+ is invoked to deliver actions from menu items and to deliver events.
497
+ You can override this method to provide additional handling if you
498
+ prefer.
499
+
500
+ @param {String} methodName
501
+ @param {Object} arg1
502
+ @param {Object} arg2
503
+ @returns {Boolean} YES if handled, NO if not handled
504
+ */
505
+ tryToPerform: function(methodName, arg1, arg2) {
506
+ return this.respondsTo(methodName) && (this[methodName](arg1, arg2) !== NO);
507
+ },
508
+
509
+ /**
510
+ EXPERIMENTAL: You can use this to invoke a superclass implementation in
511
+ any method. This does not work in Safari 2 or earlier. If you need to
512
+ target these methods, you should use one of the alternatives below:
513
+
514
+ - *With Build Tools:* sc_super();
515
+ - *Without Build Tools:* arguments.callee.base.apply(this, arguments);
516
+
517
+ h2. Example
518
+
519
+ All of the following methods will call the superclass implementation of
520
+ your method:
521
+
522
+ {{{
523
+ SC.Object.create({
524
+
525
+ // DOES NOT WORK IN SAFARI 2 OR EARLIER
526
+ method1: function() {
527
+ this.superclass();
528
+ },
529
+
530
+ // REQUIRES SC-BUILD TOOLS
531
+ method2: function() {
532
+ sc_super();
533
+ },
534
+
535
+ // WORKS ANYTIME
536
+ method3: function() {
537
+ arguments.callee.base.apply(this, arguments);
538
+ }
539
+ });
540
+ }}}
541
+
542
+ @params args {*args} any arguments you want to pass along.
543
+ @returns {Object} return value from super
544
+ */
545
+ superclass: function(args) {
546
+ var caller = arguments.callee.caller;
547
+ if (!caller) throw "superclass cannot determine the caller method" ;
548
+ return caller.superclass ? caller.superclass.apply(this, arguments) : null;
549
+ },
550
+
551
+ /**
552
+ returns YES if the receiver is an instance of the named class. See also
553
+ kindOf().
554
+
555
+ h2. Example
556
+
557
+ {{{
558
+ var ClassA = SC.Object.extend();
559
+ var ClassB = SC.Object.extend();
560
+
561
+ var instA = ClassA.create();
562
+ var instB = ClassB.create();
563
+
564
+ instA.instanceOf(ClassA) => YES
565
+ instB.instanceOf(ClassA) => NO
566
+ }}}
567
+
568
+ @param {Class} scClass the class
569
+ @returns {Boolean}
570
+ */
571
+ instanceOf: function(scClass) {
572
+ return this.constructor === scClass ;
573
+ },
574
+
575
+ /**
576
+ Returns true if the receiver is an instance of the named class or any
577
+ subclass of the named class. See also instanceOf().
578
+
579
+ h2. Example
580
+
581
+ {{{
582
+ var ClassA = SC.Object.extend();
583
+ var ClassB = SC.Object.extend();
584
+
585
+ var instA = ClassA.create();
586
+ var instB = ClassB.create();
587
+
588
+ instA.kindOf(ClassA) => YES
589
+ instB.kindOf(ClassA) => YES
590
+ }}}
591
+
592
+ @param scClass {Class} the class
593
+ @returns {Boolean}
594
+ */
595
+ kindOf: function(scClass) { return this.constructor.kindOf(scClass); },
596
+
597
+ /** @private */
598
+ toString: function() {
599
+ if (!this._object_toString) {
600
+ this._object_toString = "%@:%@".fmt(SC._object_className(this.constructor), SC.guidFor(this));
601
+ }
602
+ return this._object_toString ;
603
+ },
604
+
605
+ /**
606
+ Activates any outlet connections in object and syncs any bindings. This
607
+ method is called automatically for view classes but may be used for any
608
+ object.
609
+
610
+ @returns {void}
611
+ */
612
+ awake: function(key) {
613
+ this.outlets.forEach(function(key) { this.get(key); },this) ;
614
+ this.bindings.invoke('sync');
615
+ },
616
+
617
+ /**
618
+ Invokes the passed method or method name one time during the runloop. You
619
+ can use this method to schedule methods that need to execute but may be
620
+ too expensive to execute more than once, such as methods that update the
621
+ DOM.
622
+
623
+ @param {Funciton|String} method method or method name
624
+ @returns {SC.Object} receiver
625
+ */
626
+ invokeOnce: function(method) {
627
+ SC.RunLoop.currentRunLoop.invokeOnce(this, method) ;
628
+ return this ;
629
+ },
630
+
631
+ /**
632
+ Invokes the passed method once at the beginning of the next runloop,
633
+ before any other methods (including events) are processed. This is useful
634
+ for situations where you know you need to update something, but due to
635
+ the way the run loop works, you can't actually do the update until the
636
+ run loop has completed.
637
+
638
+ A simple example is setting the selection on a collection controller to a
639
+ newly created object. Because the collection controller won't have its
640
+ content collection updated until later in the run loop, setting the
641
+ selection immediately will have no affect. In this situation, you could do
642
+ this instead:
643
+
644
+ {{{
645
+ // Creates a new MyRecord object and sets the selection of the
646
+ // myRecord collection controller to the new object.
647
+ createObjectAction: function(sender, evt) {
648
+ // create a new record and add it to the store
649
+ var obj = MyRecord.newRecord() ;
650
+
651
+ // update the collection controller's selection
652
+ MyApp.myRecordCollectionController.invokeNext( function() {
653
+ this.set('selection', [obj]) ;
654
+ });
655
+ }
656
+ }}}
657
+
658
+ You can call invokeNext as many times as you like and the method will
659
+ only be invoked once.
660
+
661
+ @param {Funciton|String} method method or method name
662
+ @returns {SC.Object} receiver
663
+ */
664
+ invokeNext: function(method) {
665
+ SC.RunLoop.currentRunLoop.invokeNext(this, method) ;
666
+ return this ;
667
+ },
668
+
669
+ /**
670
+ The properties named in this array will be concatenated in subclasses
671
+ instead of replaced. This allows you to name special properties that
672
+ should contain any values you specify plus values specified by parents.
673
+
674
+ It is used by SproutCore and is available for your use, though you
675
+ should limit the number of properties you include in this list as it
676
+ adds a slight overhead to new class and instance creation.
677
+
678
+ @property
679
+ */
680
+ concatenatedProperties: ['concatenatedProperties', 'initMixin', 'destroyMixin']
681
+
682
+ } ;
683
+
684
+ // bootstrap the constructor for SC.Object.
685
+ SC.Object.prototype.constructor = SC.Object;
686
+
687
+ // Add observable to mixin
688
+ SC.mixin(SC.Object.prototype, SC.Observable) ;
689
+
690
+ // ..........................................................
691
+ // CLASS NAME SUPPORT
692
+ //
693
+
694
+ /** @private
695
+ This is a way of performing brute-force introspection. This searches
696
+ through all the top-level properties looking for classes. When it finds
697
+ one, it saves the class path name.
698
+ */
699
+ function findClassNames() {
700
+
701
+ if (SC._object_foundObjectClassNames) return ;
702
+ SC._object_foundObjectClassNames = true ;
703
+
704
+ var seen = [] ;
705
+ var searchObject = function(root, object, levels) {
706
+ levels-- ;
707
+
708
+ // not the fastest, but safe
709
+ if (seen.indexOf(object) >= 0) return ;
710
+ seen.push(object) ;
711
+
712
+ for(var key in object) {
713
+ if (key == '__scope__') continue ;
714
+ if (key == 'superclass') continue ;
715
+ if (!key.match(/^[A-Z0-9]/)) continue ;
716
+
717
+ var path = (root) ? [root,key].join('.') : key ;
718
+ var value = object[key] ;
719
+
720
+
721
+ switch(SC.typeOf(value)) {
722
+ case SC.T_CLASS:
723
+ if (!value._object_className) value._object_className = path;
724
+ if (levels>=0) searchObject(path, value, levels) ;
725
+ break ;
726
+
727
+ case SC.T_OBJECT:
728
+ if (levels>=0) searchObject(path, value, levels) ;
729
+ break ;
730
+
731
+ case SC.T_HASH:
732
+ if (((root) || (path==='SC')) && (levels>=0)) searchObject(path, value, levels) ;
733
+ break ;
734
+
735
+ default:
736
+ break;
737
+ }
738
+ }
739
+ } ;
740
+
741
+ searchObject(null, window, 2) ;
742
+
743
+ // Internet Explorer doesn's loop over global variables...
744
+ /*if ( SC.browser.isIE ) {
745
+ searchObject('SC', SC, 2) ; // get names for the SC classes
746
+
747
+ // get names for the model classes, including nested namespaces (untested)
748
+ for ( var i = 0; i < SC.Server.servers.length; i++ ) {
749
+ var server = SC.Server.servers[i];
750
+ if (server.prefix) {
751
+ for (var prefixLoc = 0; prefixLoc < server.prefix.length; prefixLoc++) {
752
+ var prefixParts = server.prefix[prefixLoc].split('.');
753
+ var namespace = window;
754
+ var namespaceName;
755
+ for (var prefixPartsLoc = 0; prefixPartsLoc < prefixParts.length; prefixPartsLoc++) {
756
+ namespace = namespace[prefixParts[prefixPartsLoc]] ;
757
+ namespaceName = prefixParts[prefixPartsLoc];
758
+ }
759
+ searchObject(namespaceName, namespace, 2) ;
760
+ }
761
+ }
762
+ }
763
+ }*/
764
+ }
765
+
766
+ /** @private
767
+ Returns the name of this class. If the name is not known, triggers
768
+ a search. This can be expensive the first time it is called.
769
+
770
+ This method is used to allow classes to determine their own name.
771
+ */
772
+ SC._object_className = function(obj) {
773
+ if (!SC.isReady) return ''; // class names are not available until ready
774
+ if (!obj._object_className) findClassNames() ;
775
+ if (obj._object_className) return obj._object_className ;
776
+
777
+ // if no direct classname was found, walk up class chain looking for a
778
+ // match.
779
+ var ret = obj ;
780
+ while(ret && !ret._object_className) ret = ret.superclass;
781
+ return (ret && ret._object_className) ? ret._object_className : 'Anonymous';
782
+ } ;
783
+