sproutcore 0.9.23 → 1.0.1003

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 (1668) hide show
  1. data/Buildfile +125 -0
  2. data/History.txt +5 -569
  3. data/README.txt +99 -64
  4. data/Rakefile +236 -6
  5. data/Todo.txt +1 -0
  6. data/VERSION.yml +5 -0
  7. data/bin/sc-build +9 -210
  8. data/bin/sc-build-number +13 -0
  9. data/bin/sc-docs +14 -0
  10. data/bin/sc-gen +9 -23
  11. data/bin/sc-init +9 -34
  12. data/bin/sc-manifest +13 -0
  13. data/bin/sc-server +9 -82
  14. data/bin/sproutcore +10 -24
  15. data/buildtasks/build.rake +82 -0
  16. data/buildtasks/entry.rake +62 -0
  17. data/buildtasks/manifest.rake +565 -0
  18. data/buildtasks/render.rake +21 -0
  19. data/buildtasks/target.rake +61 -0
  20. data/design/Technical Notes.graffle/QuickLook/Preview.pdf +0 -0
  21. data/design/Technical Notes.graffle/QuickLook/Thumbnail.tiff +0 -0
  22. data/design/Technical Notes.graffle/data.plist +5534 -0
  23. data/design/Technical Notes.graffle/image8.png +0 -0
  24. data/doc_templates/jsdoc/publish.js +170 -0
  25. data/doc_templates/jsdoc/static/default.css +162 -0
  26. data/{jsdoc/templates/sproutcore → doc_templates/jsdoc}/static/header.html +0 -0
  27. data/doc_templates/jsdoc/static/index.html +19 -0
  28. data/doc_templates/sproutcore/publish.js +345 -0
  29. data/doc_templates/sproutcore/static/default.css +258 -0
  30. data/doc_templates/sproutcore/static/header.html +2 -0
  31. data/doc_templates/sproutcore/static/index.html +19 -0
  32. data/frameworks/sproutcore/Buildfile +88 -0
  33. data/frameworks/sproutcore/HISTORY +10 -10
  34. data/frameworks/sproutcore/README +8 -1
  35. data/frameworks/sproutcore/apps/docs/core.js +27 -0
  36. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
  37. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
  38. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +14378 -0
  39. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
  40. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image11.png +0 -0
  41. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image13.png +0 -0
  42. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
  43. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image8.png +0 -0
  44. data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -0
  45. data/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +9 -0
  46. data/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +22 -0
  47. data/frameworks/sproutcore/apps/docs/english.lproj/strings.js +15 -0
  48. data/frameworks/sproutcore/apps/docs/main.js +30 -0
  49. data/frameworks/sproutcore/apps/tests/controllers/detail.js +25 -0
  50. data/frameworks/sproutcore/apps/tests/controllers/source.js +29 -0
  51. data/frameworks/sproutcore/apps/tests/controllers/target.js +26 -0
  52. data/frameworks/sproutcore/apps/tests/controllers/targets.js +86 -0
  53. data/frameworks/sproutcore/apps/tests/controllers/tests.js +33 -0
  54. data/frameworks/sproutcore/apps/tests/core.js +133 -0
  55. data/frameworks/sproutcore/apps/tests/english.lproj/loading.rhtml +9 -0
  56. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +39 -0
  57. data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +232 -0
  58. data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +26 -0
  59. data/frameworks/sproutcore/apps/tests/main.js +28 -0
  60. data/frameworks/sproutcore/apps/tests/states/no_targets.js +26 -0
  61. data/frameworks/sproutcore/apps/tests/states/ready.js +56 -0
  62. data/frameworks/sproutcore/apps/tests/states/ready_detail.js +41 -0
  63. data/frameworks/sproutcore/apps/tests/states/ready_empty.js +48 -0
  64. data/frameworks/sproutcore/apps/tests/states/ready_list.js +41 -0
  65. data/frameworks/sproutcore/apps/tests/states/ready_loading.js +44 -0
  66. data/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +31 -0
  67. data/frameworks/sproutcore/apps/tests/states/start.js +39 -0
  68. data/frameworks/sproutcore/apps/tests/tests/controllers/detail.js +15 -0
  69. data/frameworks/sproutcore/apps/tests/tests/controllers/source.js +15 -0
  70. data/frameworks/sproutcore/apps/tests/tests/controllers/target.js +15 -0
  71. data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +15 -0
  72. data/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +15 -0
  73. data/frameworks/sproutcore/apps/tests/tests/models/target.js +15 -0
  74. data/frameworks/sproutcore/apps/tests/tests/models/test.js +15 -0
  75. data/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +15 -0
  76. data/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +26 -0
  77. data/frameworks/sproutcore/apps/welcome/controllers/targets.js +49 -0
  78. data/frameworks/sproutcore/apps/welcome/core.js +30 -0
  79. data/frameworks/sproutcore/apps/welcome/english.lproj/loading.rhtml +10 -0
  80. data/frameworks/sproutcore/apps/welcome/english.lproj/main_page.css +7 -0
  81. data/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +77 -0
  82. data/frameworks/sproutcore/apps/welcome/english.lproj/strings.js +15 -0
  83. data/frameworks/sproutcore/apps/welcome/main.js +19 -0
  84. data/frameworks/sproutcore/apps/welcome/tests/controllers/targets.js +15 -0
  85. data/frameworks/sproutcore/design/CollectionView State Charts.graffle +4848 -0
  86. data/frameworks/sproutcore/design/Design Charts.graffle +18232 -0
  87. data/frameworks/sproutcore/design/Record State Table.numbers +0 -0
  88. data/frameworks/sproutcore/design/SproutCore Datastore Design.graffle/QuickLook/Preview.pdf +0 -0
  89. data/frameworks/sproutcore/design/SproutCore Datastore Design.graffle/QuickLook/Thumbnail.tiff +0 -0
  90. data/frameworks/sproutcore/design/SproutCore Datastore Design.graffle/data.plist +19588 -0
  91. data/frameworks/sproutcore/design/SproutCore Datastore Design.graffle/image8.png +0 -0
  92. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Preview.pdf +0 -0
  93. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Thumbnail.tiff +0 -0
  94. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/data.plist +1452 -0
  95. data/frameworks/sproutcore/design/SproutCore Design Template.graffle/image8.png +0 -0
  96. data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Preview.pdf +0 -0
  97. data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Thumbnail.tiff +0 -0
  98. data/frameworks/sproutcore/design/TestRunner Design.graffle/data.plist +24187 -0
  99. data/frameworks/sproutcore/design/TestRunner Design.graffle/image10.png +0 -0
  100. data/frameworks/sproutcore/design/TestRunner Design.graffle/image11.png +0 -0
  101. data/frameworks/sproutcore/design/TestRunner Design.graffle/image13.png +0 -0
  102. data/frameworks/sproutcore/design/TestRunner Design.graffle/image15.png +0 -0
  103. data/frameworks/sproutcore/design/TestRunner Design.graffle/image16.png +0 -0
  104. data/frameworks/sproutcore/design/TestRunner Design.graffle/image17.png +0 -0
  105. data/frameworks/sproutcore/design/TestRunner Design.graffle/image18.png +0 -0
  106. data/frameworks/sproutcore/design/TestRunner Design.graffle/image19.png +0 -0
  107. data/frameworks/sproutcore/design/TestRunner Design.graffle/image22.tiff +0 -0
  108. data/frameworks/sproutcore/design/TestRunner Design.graffle/image23.png +0 -0
  109. data/frameworks/sproutcore/design/TestRunner Design.graffle/image24.png +0 -0
  110. data/frameworks/sproutcore/design/TestRunner Design.graffle/image25.png +0 -0
  111. data/frameworks/sproutcore/design/TestRunner Design.graffle/image30.png +0 -0
  112. data/frameworks/sproutcore/design/TestRunner Design.graffle/image31.png +0 -0
  113. data/frameworks/sproutcore/design/TestRunner Design.graffle/image8.png +0 -0
  114. data/frameworks/sproutcore/design/TestRunner Design.graffle/image9.png +0 -0
  115. data/frameworks/sproutcore/frameworks/core_tools/core.js +20 -0
  116. data/frameworks/sproutcore/frameworks/core_tools/data_source.js +99 -0
  117. data/frameworks/sproutcore/frameworks/core_tools/english.lproj/strings.js +15 -0
  118. data/frameworks/sproutcore/frameworks/core_tools/fixtures/target.js +87 -0
  119. data/frameworks/sproutcore/frameworks/core_tools/fixtures/test.js +44 -0
  120. data/frameworks/sproutcore/frameworks/core_tools/models/target.js +108 -0
  121. data/frameworks/sproutcore/frameworks/core_tools/models/test.js +48 -0
  122. data/frameworks/sproutcore/frameworks/datastore/core.js +8 -0
  123. data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +180 -0
  124. data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +340 -0
  125. data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +393 -0
  126. data/frameworks/sproutcore/frameworks/datastore/debug/json.js +71 -0
  127. data/frameworks/sproutcore/frameworks/datastore/debug/standard_setup.js +96 -0
  128. data/frameworks/sproutcore/frameworks/datastore/fixtures/author_fixtures.js +2503 -0
  129. data/frameworks/sproutcore/frameworks/datastore/fixtures/sample.js +17 -0
  130. data/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +100 -0
  131. data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +152 -0
  132. data/frameworks/sproutcore/frameworks/datastore/models/record.js +898 -0
  133. data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +462 -0
  134. data/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +158 -0
  135. data/frameworks/sproutcore/frameworks/datastore/system/many_array.js +411 -0
  136. data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +499 -0
  137. data/frameworks/sproutcore/frameworks/datastore/system/query.js +1488 -0
  138. data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +568 -0
  139. data/frameworks/sproutcore/frameworks/datastore/system/store.js +2407 -0
  140. data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +117 -0
  141. data/frameworks/sproutcore/frameworks/datastore/tests/integration/contact_model.js +131 -0
  142. data/frameworks/sproutcore/frameworks/datastore/tests/integration/cyclical_relationship.js +119 -0
  143. data/frameworks/sproutcore/frameworks/datastore/tests/integration/mail_model.js +91 -0
  144. data/frameworks/sproutcore/frameworks/datastore/tests/integration/test_runner_model.js +56 -0
  145. data/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +384 -0
  146. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +55 -0
  147. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +81 -0
  148. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +245 -0
  149. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/readAttribute.js +53 -0
  150. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +48 -0
  151. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/storeDidChangeProperties.js +169 -0
  152. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +51 -0
  153. data/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +97 -0
  154. data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +178 -0
  155. data/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +216 -0
  156. data/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +204 -0
  157. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +149 -0
  158. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +171 -0
  159. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +154 -0
  160. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +113 -0
  161. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +99 -0
  162. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +180 -0
  163. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +126 -0
  164. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +163 -0
  165. data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +166 -0
  166. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/builders.js +219 -0
  167. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +131 -0
  168. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/contains.js +131 -0
  169. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/containsRecordTypes.js +81 -0
  170. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/copy.js +30 -0
  171. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +185 -0
  172. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +92 -0
  173. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/expandedRecordTypes.js +64 -0
  174. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +202 -0
  175. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/queryWithScope.js +57 -0
  176. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +43 -0
  177. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +66 -0
  178. data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +67 -0
  179. data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +177 -0
  180. data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +134 -0
  181. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +54 -0
  182. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +133 -0
  183. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +211 -0
  184. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +136 -0
  185. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +72 -0
  186. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +78 -0
  187. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +254 -0
  188. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +106 -0
  189. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +530 -0
  190. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/init.js +21 -0
  191. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +61 -0
  192. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +74 -0
  193. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readEditableDataHash.js +74 -0
  194. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +73 -0
  195. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/removeDataHash.js +144 -0
  196. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +184 -0
  197. data/frameworks/sproutcore/frameworks/datastore/tests/system/store/writeDataHash.js +125 -0
  198. data/frameworks/sproutcore/frameworks/datejs/core.js +865 -0
  199. data/frameworks/sproutcore/frameworks/datejs/english.lproj/en-US.js +186 -0
  200. data/frameworks/sproutcore/frameworks/datejs/extras.js +332 -0
  201. data/frameworks/sproutcore/frameworks/datejs/license.js +25 -0
  202. data/frameworks/sproutcore/frameworks/datejs/parser.js +1116 -0
  203. data/frameworks/sproutcore/frameworks/datejs/spanish.lproj/es-CO.js +186 -0
  204. data/frameworks/sproutcore/frameworks/datejs/sugarpak.js +475 -0
  205. data/frameworks/sproutcore/frameworks/datejs/time.js +269 -0
  206. data/frameworks/sproutcore/frameworks/datejs/validators/datejs.js +34 -0
  207. data/frameworks/sproutcore/frameworks/debug/core.js +99 -0
  208. data/frameworks/sproutcore/frameworks/designer/coders/design.js +29 -0
  209. data/frameworks/sproutcore/frameworks/designer/coders/localization.js +27 -0
  210. data/frameworks/sproutcore/frameworks/designer/coders/object.js +347 -0
  211. data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +102 -0
  212. data/frameworks/sproutcore/frameworks/designer/css/css_rule.js +22 -0
  213. data/frameworks/sproutcore/frameworks/designer/css/css_style.js +29 -0
  214. data/frameworks/sproutcore/frameworks/designer/css/css_style_sheet.js +201 -0
  215. data/frameworks/sproutcore/frameworks/designer/ext/page.js +86 -0
  216. data/frameworks/sproutcore/frameworks/designer/ext/view.js +38 -0
  217. data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +17 -0
  218. data/frameworks/sproutcore/frameworks/designer/views/designer.js +569 -0
  219. data/frameworks/sproutcore/frameworks/designer/views/label.js +16 -0
  220. data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +11 -0
  221. data/frameworks/sproutcore/frameworks/designer/views/tab.js +16 -0
  222. data/frameworks/sproutcore/frameworks/desktop/core.js +6 -0
  223. data/frameworks/sproutcore/frameworks/desktop/debug/drag.js +41 -0
  224. data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +56 -0
  225. data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/a_sample_image.jpg +0 -0
  226. data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/apple-logo1.jpeg +0 -0
  227. data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/iframe.html +23 -0
  228. data/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +78 -0
  229. data/frameworks/sproutcore/frameworks/desktop/english.lproj/drag.css +6 -0
  230. data/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +943 -0
  231. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_222222.png +0 -0
  232. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_454545.png +0 -0
  233. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_888888.png +0 -0
  234. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_ffffff.png +0 -0
  235. data/frameworks/sproutcore/{english.lproj/images/shared-icons.png → frameworks/desktop/english.lproj/images/icons/shared.png} +0 -0
  236. data/{clients/sc_test_runner → frameworks/sproutcore/frameworks/desktop}/english.lproj/images/indicator.gif +0 -0
  237. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-x.png +0 -0
  238. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-y.png +0 -0
  239. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sc-theme-sprite.png +0 -0
  240. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/000000.png +0 -0
  241. data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/ffffff.png +0 -0
  242. data/frameworks/sproutcore/{english.lproj → frameworks/desktop/english.lproj}/images/sticky-note.png +0 -0
  243. data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +209 -0
  244. data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +113 -0
  245. data/frameworks/sproutcore/frameworks/desktop/english.lproj/modal.css +5 -0
  246. data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +95 -0
  247. data/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +39 -0
  248. data/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +31 -0
  249. data/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +10 -0
  250. data/frameworks/sproutcore/frameworks/desktop/english.lproj/scroller.css +26 -0
  251. data/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +141 -0
  252. data/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +19 -0
  253. data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +62 -0
  254. data/frameworks/sproutcore/frameworks/desktop/english.lproj/split.css +70 -0
  255. data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +9 -0
  256. data/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +14 -0
  257. data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +12 -0
  258. data/frameworks/sproutcore/frameworks/desktop/english.lproj/toolbar.css +6 -0
  259. data/frameworks/sproutcore/frameworks/desktop/mixins/border.js +53 -0
  260. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_group.js +22 -0
  261. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +61 -0
  262. data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +292 -0
  263. data/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +247 -0
  264. data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +408 -0
  265. data/frameworks/sproutcore/frameworks/desktop/panes/drop_down.js +665 -0
  266. data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +680 -0
  267. data/frameworks/sproutcore/frameworks/desktop/panes/modal.js +68 -0
  268. data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +63 -0
  269. data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +184 -0
  270. data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +403 -0
  271. data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +46 -0
  272. data/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +39 -0
  273. data/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +81 -0
  274. data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +175 -0
  275. data/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +290 -0
  276. data/frameworks/sproutcore/frameworks/desktop/system/drag.js +869 -0
  277. data/frameworks/sproutcore/frameworks/desktop/system/key_bindings.js +40 -0
  278. data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +647 -0
  279. data/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +187 -0
  280. data/frameworks/sproutcore/frameworks/desktop/tests/datetime_recordattribute.js +73 -0
  281. data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +43 -0
  282. data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/methods.js +10 -0
  283. data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +152 -0
  284. data/frameworks/sproutcore/frameworks/desktop/tests/panes/dropDown/methods.js +161 -0
  285. data/frameworks/sproutcore/frameworks/desktop/tests/panes/dropDown/ui.js +199 -0
  286. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +55 -0
  287. data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +59 -0
  288. data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +10 -0
  289. data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +35 -0
  290. data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +10 -0
  291. data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +40 -0
  292. data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +10 -0
  293. data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +84 -0
  294. data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/methods.js +10 -0
  295. data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +38 -0
  296. data/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +45 -0
  297. data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +163 -0
  298. data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +144 -0
  299. data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +99 -0
  300. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +249 -0
  301. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +82 -0
  302. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +199 -0
  303. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/displayProperties.js +31 -0
  304. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +288 -0
  305. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +65 -0
  306. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +88 -0
  307. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +174 -0
  308. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +121 -0
  309. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +177 -0
  310. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +240 -0
  311. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +191 -0
  312. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +197 -0
  313. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +141 -0
  314. data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +182 -0
  315. data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/methods.js +10 -0
  316. data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +64 -0
  317. data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +10 -0
  318. data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/ui.js +10 -0
  319. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/render.js +92 -0
  320. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +183 -0
  321. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +133 -0
  322. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +131 -0
  323. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +56 -0
  324. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +167 -0
  325. data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +127 -0
  326. data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +284 -0
  327. data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/methods.js +10 -0
  328. data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +44 -0
  329. data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +128 -0
  330. data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +240 -0
  331. data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +113 -0
  332. data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +200 -0
  333. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +142 -0
  334. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +169 -0
  335. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +72 -0
  336. data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/ui.js +71 -0
  337. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +95 -0
  338. data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +222 -0
  339. data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +132 -0
  340. data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +110 -0
  341. data/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +37 -0
  342. data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/methods.js +10 -0
  343. data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/ui.js +10 -0
  344. data/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +60 -0
  345. data/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +52 -0
  346. data/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +231 -0
  347. data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +54 -0
  348. data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +88 -0
  349. data/frameworks/sproutcore/frameworks/desktop/tests/views/web/methods.js +10 -0
  350. data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +110 -0
  351. data/frameworks/sproutcore/frameworks/desktop/views/button.js +375 -0
  352. data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +126 -0
  353. data/frameworks/sproutcore/frameworks/desktop/views/collection.js +2775 -0
  354. data/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +60 -0
  355. data/frameworks/sproutcore/frameworks/desktop/views/form.js +594 -0
  356. data/frameworks/sproutcore/frameworks/desktop/views/grid.js +201 -0
  357. data/frameworks/sproutcore/frameworks/desktop/views/list.js +549 -0
  358. data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +657 -0
  359. data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +608 -0
  360. data/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +20 -0
  361. data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +68 -0
  362. data/frameworks/sproutcore/frameworks/desktop/views/progress.js +233 -0
  363. data/frameworks/sproutcore/frameworks/desktop/views/radio.js +357 -0
  364. data/frameworks/sproutcore/frameworks/desktop/views/scene.js +204 -0
  365. data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +689 -0
  366. data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +227 -0
  367. data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +587 -0
  368. data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +311 -0
  369. data/frameworks/sproutcore/frameworks/desktop/views/separator.js +37 -0
  370. data/frameworks/sproutcore/frameworks/desktop/views/slider.js +261 -0
  371. data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +47 -0
  372. data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +169 -0
  373. data/frameworks/sproutcore/frameworks/desktop/views/split.js +684 -0
  374. data/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +55 -0
  375. data/frameworks/sproutcore/frameworks/desktop/views/stacked.js +101 -0
  376. data/frameworks/sproutcore/frameworks/desktop/views/tab.js +191 -0
  377. data/frameworks/sproutcore/frameworks/desktop/views/thumb.js +49 -0
  378. data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +49 -0
  379. data/frameworks/sproutcore/frameworks/desktop/views/web.js +87 -0
  380. data/frameworks/sproutcore/frameworks/foundation/TESTING +46 -0
  381. data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +504 -0
  382. data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +44 -0
  383. data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +322 -0
  384. data/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +105 -0
  385. data/frameworks/sproutcore/frameworks/foundation/core.js +144 -0
  386. data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +194 -0
  387. data/frameworks/sproutcore/{english.lproj → frameworks/foundation/english.lproj}/blank.gif +0 -0
  388. data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +81 -0
  389. data/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +33 -0
  390. data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +438 -0
  391. data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +9 -0
  392. data/frameworks/sproutcore/{english.lproj → frameworks/foundation/english.lproj}/images/sproutcore-logo.png +0 -0
  393. data/{clients/sc_test_runner/english.lproj/controls.css → frameworks/sproutcore/frameworks/foundation/english.lproj/inline_editor.css} +0 -0
  394. data/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +31 -0
  395. data/frameworks/sproutcore/frameworks/foundation/english.lproj/static_layout.css +5 -0
  396. data/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +15 -0
  397. data/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +133 -0
  398. data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +51 -0
  399. data/frameworks/sproutcore/frameworks/foundation/ext/object.js +83 -0
  400. data/frameworks/sproutcore/frameworks/foundation/ext/run_loop.js +161 -0
  401. data/frameworks/sproutcore/frameworks/foundation/fixtures/file_exists.json +1 -0
  402. data/frameworks/sproutcore/frameworks/foundation/license.js +19 -0
  403. data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +355 -0
  404. data/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +179 -0
  405. data/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +91 -0
  406. data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +386 -0
  407. data/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +150 -0
  408. data/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +491 -0
  409. data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +233 -0
  410. data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +148 -0
  411. data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +334 -0
  412. data/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +160 -0
  413. data/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +189 -0
  414. data/frameworks/sproutcore/frameworks/foundation/panes/main.js +51 -0
  415. data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +661 -0
  416. data/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +887 -0
  417. data/frameworks/sproutcore/frameworks/foundation/protocols/inline_editor_delegate.js +84 -0
  418. data/frameworks/sproutcore/frameworks/foundation/system/application.js +36 -0
  419. data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +502 -0
  420. data/frameworks/sproutcore/frameworks/foundation/system/browser.js +64 -0
  421. data/frameworks/sproutcore/frameworks/foundation/system/builder.js +210 -0
  422. data/frameworks/sproutcore/frameworks/foundation/system/bundle.js +267 -0
  423. data/frameworks/sproutcore/frameworks/foundation/system/core_query.js +2028 -0
  424. data/frameworks/sproutcore/frameworks/foundation/system/cursor.js +129 -0
  425. data/frameworks/sproutcore/frameworks/foundation/system/datetime.js +915 -0
  426. data/frameworks/sproutcore/frameworks/foundation/system/event.js +849 -0
  427. data/frameworks/sproutcore/frameworks/foundation/system/image_cache.js +432 -0
  428. data/frameworks/sproutcore/frameworks/foundation/system/json.js +440 -0
  429. data/frameworks/sproutcore/frameworks/foundation/system/locale.js +288 -0
  430. data/frameworks/sproutcore/frameworks/foundation/system/page.js +106 -0
  431. data/frameworks/sproutcore/frameworks/foundation/system/ready.js +195 -0
  432. data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +905 -0
  433. data/frameworks/sproutcore/frameworks/foundation/system/request.js +386 -0
  434. data/frameworks/sproutcore/frameworks/foundation/system/responder.js +120 -0
  435. data/frameworks/sproutcore/frameworks/foundation/system/responder_context.js +243 -0
  436. data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +391 -0
  437. data/frameworks/sproutcore/frameworks/foundation/system/routes.js +525 -0
  438. data/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +103 -0
  439. data/frameworks/sproutcore/frameworks/foundation/system/time.js +478 -0
  440. data/frameworks/sproutcore/frameworks/foundation/system/timer.js +549 -0
  441. data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +233 -0
  442. data/frameworks/sproutcore/frameworks/foundation/system/utils.js +482 -0
  443. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +182 -0
  444. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +193 -0
  445. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +64 -0
  446. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/single_case.js +136 -0
  447. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/empty_case.js +82 -0
  448. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/multiple_case.js +111 -0
  449. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_case.js +193 -0
  450. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_enumerable_case.js +179 -0
  451. data/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +108 -0
  452. data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/methods.js +10 -0
  453. data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/ui.js +113 -0
  454. data/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +113 -0
  455. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/content.js +195 -0
  456. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/displayProperties.js +89 -0
  457. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +56 -0
  458. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/content.js +168 -0
  459. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +89 -0
  460. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +128 -0
  461. data/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +17 -0
  462. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +325 -0
  463. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +718 -0
  464. data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +484 -0
  465. data/frameworks/sproutcore/frameworks/foundation/tests/system/builder.js +42 -0
  466. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +1323 -0
  467. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_dimensions.js +387 -0
  468. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +405 -0
  469. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +49 -0
  470. data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/within.js +66 -0
  471. data/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +252 -0
  472. data/frameworks/sproutcore/frameworks/foundation/tests/system/json.js +14 -0
  473. data/frameworks/sproutcore/frameworks/foundation/tests/system/locale.js +128 -0
  474. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/begin.js +47 -0
  475. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/element.js +44 -0
  476. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/end.js +119 -0
  477. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +51 -0
  478. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +50 -0
  479. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +28 -0
  480. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +179 -0
  481. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +100 -0
  482. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/init.js +55 -0
  483. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/join.js +28 -0
  484. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/push_text.js +74 -0
  485. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/tag.js +45 -0
  486. data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/update.js +205 -0
  487. data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +127 -0
  488. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeKeyPane.js +124 -0
  489. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeMainPane.js +68 -0
  490. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +101 -0
  491. data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/targetForAction.js +238 -0
  492. data/frameworks/sproutcore/frameworks/foundation/tests/system/routes.js +33 -0
  493. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invalidate.js +38 -0
  494. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invokeLater.js +201 -0
  495. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/isPaused.js +71 -0
  496. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/performAction.js +67 -0
  497. data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +170 -0
  498. data/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +24 -0
  499. data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/normalizeURL.js +18 -0
  500. data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/range.js +62 -0
  501. data/frameworks/sproutcore/frameworks/foundation/tests/validators/credit_card.js +35 -0
  502. data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +23 -0
  503. data/frameworks/sproutcore/frameworks/foundation/tests/validators/number.js +47 -0
  504. data/frameworks/sproutcore/frameworks/foundation/tests/validators/password.js +13 -0
  505. data/frameworks/sproutcore/frameworks/foundation/tests/validators/validator.js +20 -0
  506. data/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +10 -0
  507. data/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +83 -0
  508. data/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +52 -0
  509. data/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +148 -0
  510. data/frameworks/sproutcore/frameworks/foundation/tests/views/main_pane.js +31 -0
  511. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +113 -0
  512. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/firstResponder.js +148 -0
  513. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/keyPane.js +133 -0
  514. data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/sendEvent.js +165 -0
  515. data/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +76 -0
  516. data/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +446 -0
  517. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +133 -0
  518. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +246 -0
  519. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +122 -0
  520. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createLayer.js +97 -0
  521. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/destroyLayer.js +85 -0
  522. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +52 -0
  523. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/init.js +50 -0
  524. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/insertBefore.js +200 -0
  525. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisible.js +51 -0
  526. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +116 -0
  527. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layer.js +150 -0
  528. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutChildViews.js +162 -0
  529. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutDidChange.js +127 -0
  530. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +328 -0
  531. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/parentViewDidChange.js +67 -0
  532. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +166 -0
  533. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/removeChild.js +189 -0
  534. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/render.js +83 -0
  535. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/replaceChild.js +29 -0
  536. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +146 -0
  537. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayerLocation.js +194 -0
  538. data/frameworks/sproutcore/frameworks/foundation/tests/views/view/viewDidResize.js +223 -0
  539. data/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +125 -0
  540. data/frameworks/sproutcore/frameworks/foundation/validators/date.js +52 -0
  541. data/frameworks/sproutcore/frameworks/foundation/validators/email.js +45 -0
  542. data/frameworks/sproutcore/frameworks/foundation/validators/not_empty.js +33 -0
  543. data/frameworks/sproutcore/frameworks/foundation/validators/number.js +82 -0
  544. data/frameworks/sproutcore/frameworks/foundation/validators/password.js +86 -0
  545. data/frameworks/sproutcore/frameworks/foundation/validators/validator.js +314 -0
  546. data/frameworks/sproutcore/frameworks/foundation/views/container.js +136 -0
  547. data/frameworks/sproutcore/frameworks/foundation/views/field.js +347 -0
  548. data/frameworks/sproutcore/frameworks/foundation/views/image.js +178 -0
  549. data/frameworks/sproutcore/frameworks/foundation/views/label.js +285 -0
  550. data/frameworks/sproutcore/frameworks/foundation/views/text_field.js +662 -0
  551. data/frameworks/sproutcore/frameworks/foundation/views/view.js +2521 -0
  552. data/frameworks/sproutcore/frameworks/mini/license.js +28 -0
  553. data/frameworks/sproutcore/frameworks/mobile/english.lproj/core.css +12 -0
  554. data/frameworks/sproutcore/frameworks/mobile/lib/index.rhtml +126 -0
  555. data/frameworks/sproutcore/frameworks/mobile/system/root_responder.js +109 -0
  556. data/frameworks/sproutcore/frameworks/mobile/tests/views/button/ui.js +9 -0
  557. data/frameworks/sproutcore/frameworks/mobile/views/button.js +190 -0
  558. data/frameworks/sproutcore/frameworks/runtime/README +12 -0
  559. data/frameworks/sproutcore/frameworks/runtime/core.js +950 -0
  560. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +238 -0
  561. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +33 -0
  562. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +121 -0
  563. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +34 -0
  564. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +50 -0
  565. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +46 -0
  566. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +371 -0
  567. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +100 -0
  568. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +49 -0
  569. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +94 -0
  570. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +50 -0
  571. data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +47 -0
  572. data/frameworks/sproutcore/frameworks/runtime/license.js +28 -0
  573. data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +613 -0
  574. data/frameworks/sproutcore/frameworks/runtime/mixins/comparable.js +45 -0
  575. data/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +64 -0
  576. data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +110 -0
  577. data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1238 -0
  578. data/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +110 -0
  579. data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1315 -0
  580. data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +141 -0
  581. data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +173 -0
  582. data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +172 -0
  583. data/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +40 -0
  584. data/frameworks/sproutcore/frameworks/runtime/protocols/sparse_array_delegate.js +131 -0
  585. data/frameworks/sproutcore/frameworks/runtime/system/binding.js +943 -0
  586. data/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +106 -0
  587. data/frameworks/sproutcore/frameworks/runtime/system/error.js +157 -0
  588. data/frameworks/sproutcore/frameworks/runtime/system/index_set.js +1193 -0
  589. data/frameworks/sproutcore/frameworks/runtime/system/object.js +834 -0
  590. data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +271 -0
  591. data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +245 -0
  592. data/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +669 -0
  593. data/frameworks/sproutcore/frameworks/runtime/system/set.js +425 -0
  594. data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +379 -0
  595. data/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +56 -0
  596. data/frameworks/sproutcore/frameworks/runtime/tests/core/beget.js +23 -0
  597. data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +84 -0
  598. data/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +44 -0
  599. data/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +16 -0
  600. data/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +147 -0
  601. data/frameworks/sproutcore/frameworks/runtime/tests/core/inspect.js +27 -0
  602. data/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +25 -0
  603. data/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +38 -0
  604. data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +20 -0
  605. data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +30 -0
  606. data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +19 -0
  607. data/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +37 -0
  608. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +57 -0
  609. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/comparable.js +44 -0
  610. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +611 -0
  611. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +587 -0
  612. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +132 -0
  613. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/registerDependentKeys.js +79 -0
  614. data/frameworks/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +80 -0
  615. data/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +55 -0
  616. data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +265 -0
  617. data/frameworks/sproutcore/frameworks/runtime/tests/system/error.js +52 -0
  618. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +195 -0
  619. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/addEach.js +49 -0
  620. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +43 -0
  621. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +74 -0
  622. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +42 -0
  623. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +38 -0
  624. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +38 -0
  625. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +74 -0
  626. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +40 -0
  627. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +40 -0
  628. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +36 -0
  629. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +189 -0
  630. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/removeEach.js +49 -0
  631. data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +89 -0
  632. data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +148 -0
  633. data/frameworks/sproutcore/frameworks/runtime/tests/system/object/bindings.js +339 -0
  634. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +59 -0
  635. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +75 -0
  636. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +117 -0
  637. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +110 -0
  638. data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +65 -0
  639. data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +120 -0
  640. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/add.js +92 -0
  641. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +17 -0
  642. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +85 -0
  643. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/isEqual.js +60 -0
  644. data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +87 -0
  645. data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +292 -0
  646. data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +175 -0
  647. data/frameworks/sproutcore/frameworks/testing/core.js +196 -0
  648. data/frameworks/sproutcore/frameworks/testing/english.lproj/additions.css +8 -0
  649. data/frameworks/sproutcore/frameworks/testing/english.lproj/runner.css +128 -0
  650. data/frameworks/sproutcore/frameworks/testing/english.lproj/testsuite.css +131 -0
  651. data/frameworks/sproutcore/frameworks/testing/extras.js +17 -0
  652. data/frameworks/sproutcore/frameworks/testing/jquery.js +3559 -0
  653. data/frameworks/sproutcore/frameworks/testing/qunit.js +827 -0
  654. data/frameworks/sproutcore/frameworks/testing/system/dump.js +205 -0
  655. data/frameworks/sproutcore/frameworks/testing/system/equiv.js +201 -0
  656. data/frameworks/sproutcore/frameworks/testing/system/plan.js +695 -0
  657. data/frameworks/sproutcore/frameworks/testing/system/runner.js +209 -0
  658. data/frameworks/sproutcore/frameworks/testing/system/suite.js +228 -0
  659. data/frameworks/sproutcore/frameworks/testing/utils.js +62 -0
  660. data/frameworks/sproutcore/lib/index.rhtml +81 -33
  661. data/frameworks/sproutcore/license.js +28 -28
  662. data/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +69 -0
  663. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/button.css +41 -0
  664. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +8 -0
  665. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/backButton.png +0 -0
  666. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/blueButton.png +0 -0
  667. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/cancel.png +0 -0
  668. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/grayButton.png +0 -0
  669. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/leftButton.png +0 -0
  670. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrow.png +0 -0
  671. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrowSel.png +0 -0
  672. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listGroup.png +0 -0
  673. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/loading.gif +0 -0
  674. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/pinstripes.png +0 -0
  675. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/rightButton.png +0 -0
  676. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/selection.png +0 -0
  677. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/thumb.png +0 -0
  678. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggle.png +0 -0
  679. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggleOn.png +0 -0
  680. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolButton.png +0 -0
  681. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolbar.png +0 -0
  682. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/whiteButton.png +0 -0
  683. data/frameworks/sproutcore/themes/iphone_theme/english.lproj/strings.js +15 -0
  684. data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/Data +0 -0
  685. data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
  686. data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
  687. data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/Data +0 -0
  688. data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg +0 -0
  689. data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg +0 -0
  690. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/10.png +0 -0
  691. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/100.png +0 -0
  692. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/102.png +0 -0
  693. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/110.png +0 -0
  694. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/120.png +0 -0
  695. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/127.png +0 -0
  696. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/18.png +0 -0
  697. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/19.png +0 -0
  698. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/2.png +0 -0
  699. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/24.png +0 -0
  700. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/26.png +0 -0
  701. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/27.png +0 -0
  702. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/28.png +0 -0
  703. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/29.png +0 -0
  704. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/30.png +0 -0
  705. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/31.png +0 -0
  706. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/33.png +0 -0
  707. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/37.png +0 -0
  708. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/41.png +0 -0
  709. data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/99.png +0 -0
  710. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/10.png +0 -0
  711. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/100.png +0 -0
  712. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/102.png +0 -0
  713. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/110.png +0 -0
  714. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/120.png +0 -0
  715. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/127.png +0 -0
  716. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/18.png +0 -0
  717. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/19.png +0 -0
  718. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/2.png +0 -0
  719. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/24.png +0 -0
  720. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/26.png +0 -0
  721. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/27.png +0 -0
  722. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/28.png +0 -0
  723. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/29.png +0 -0
  724. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/30.png +0 -0
  725. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/31.png +0 -0
  726. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/33.png +0 -0
  727. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/37.png +0 -0
  728. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/41.png +0 -0
  729. data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/99.png +0 -0
  730. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/10.png +0 -0
  731. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/100.png +0 -0
  732. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/102.png +0 -0
  733. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/110.png +0 -0
  734. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/120.png +0 -0
  735. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/127.png +0 -0
  736. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/18.png +0 -0
  737. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/19.png +0 -0
  738. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/2.png +0 -0
  739. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/24.png +0 -0
  740. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/26.png +0 -0
  741. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/27.png +0 -0
  742. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/28.png +0 -0
  743. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/29.png +0 -0
  744. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/30.png +0 -0
  745. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/31.png +0 -0
  746. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/33.png +0 -0
  747. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/37.png +0 -0
  748. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/41.png +0 -0
  749. data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/99.png +0 -0
  750. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/10.png +0 -0
  751. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/18.png +0 -0
  752. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/19.png +0 -0
  753. data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/2.png +0 -0
  754. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/Data +0 -0
  755. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
  756. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
  757. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/Data +0 -0
  758. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
  759. data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
  760. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x-2.psd +0 -0
  761. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x.psd +0 -0
  762. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-sprite.psd +0 -0
  763. data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-ysprite.psd +0 -0
  764. data/frameworks/sproutcore/themes/standard_theme/Source/shared-icons.psd +0 -0
  765. data/frameworks/sproutcore/themes/standard_theme/Source/sproutcore-logo.psd +0 -0
  766. data/frameworks/sproutcore/themes/standard_theme/Source/sticky-note.psd +0 -0
  767. data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +327 -0
  768. data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +93 -0
  769. data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +126 -0
  770. data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +76 -0
  771. data/frameworks/sproutcore/themes/standard_theme/english.lproj/disclosure.css +57 -0
  772. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -0
  773. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-sprite.png +0 -0
  774. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/images/sc-theme-ysprite.png +0 -0
  775. data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-toolbar-view.png +0 -0
  776. data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +11 -0
  777. data/frameworks/sproutcore/themes/standard_theme/english.lproj/list_item.css +30 -0
  778. data/frameworks/sproutcore/themes/standard_theme/english.lproj/menu_item_view.css +3 -0
  779. data/frameworks/sproutcore/themes/standard_theme/english.lproj/pane.css +8 -0
  780. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/panels/background-fat.jpg +0 -0
  781. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/panels/background-thin.jpg +0 -0
  782. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/panels/bottom-edge.png +0 -0
  783. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/panels/bottom-left-corner.png +0 -0
  784. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/panels/bottom-right-corner.png +0 -0
  785. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/panels/left-edge.png +0 -0
  786. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/panels/overlay.png +0 -0
  787. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/panels/right-edge.png +0 -0
  788. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/panels/top-edge.png +0 -0
  789. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/panels/top-left-corner.png +0 -0
  790. data/frameworks/sproutcore/{english.lproj → themes/standard_theme/english.lproj}/panels/top-right-corner.png +0 -0
  791. data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +26 -0
  792. data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +149 -0
  793. data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +279 -0
  794. data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +94 -0
  795. data/frameworks/sproutcore/themes/standard_theme/english.lproj/split_view.css +27 -0
  796. data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +19 -0
  797. data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +20 -0
  798. data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +7 -0
  799. data/gen/Buildfile +16 -0
  800. data/gen/app/Buildfile +36 -0
  801. data/gen/app/README +1 -0
  802. data/gen/app/USAGE +13 -0
  803. data/gen/app/templates/apps/@target_name@/core.js +27 -0
  804. data/gen/app/templates/apps/@target_name@/main.js +30 -0
  805. data/gen/app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
  806. data/gen/app/templates/apps/@target_name@/resources/main_page.js +24 -0
  807. data/gen/controller/Buildfile +18 -0
  808. data/gen/controller/README +1 -0
  809. data/gen/controller/USAGE +13 -0
  810. data/gen/controller/templates/controllers/@filename@.js +18 -0
  811. data/gen/controller/templates/tests/controllers/@filename@.js +15 -0
  812. data/gen/design/Buildfile +23 -0
  813. data/gen/design/README +1 -0
  814. data/gen/design/USAGE +10 -0
  815. data/gen/design/templates/resources/@filename@.js +16 -0
  816. data/gen/framework/Buildfile +36 -0
  817. data/gen/framework/README +1 -0
  818. data/gen/framework/USAGE +13 -0
  819. data/gen/framework/templates/frameworks/@target_name@/core.js +21 -0
  820. data/gen/framework/templates/frameworks/@target_name@/english.lproj/strings.js +15 -0
  821. data/gen/language/Buildfile +26 -0
  822. data/gen/language/README +1 -0
  823. data/gen/language/USAGE +13 -0
  824. data/gen/language/templates/@filename@/strings.js +14 -0
  825. data/gen/model/Buildfile +16 -0
  826. data/gen/model/README +1 -0
  827. data/gen/model/USAGE +15 -0
  828. data/gen/model/templates/fixtures/@filename@.js +35 -0
  829. data/gen/model/templates/models/@filename@.js +19 -0
  830. data/gen/model/templates/tests/models/@filename@.js +15 -0
  831. data/gen/page/Buildfile +36 -0
  832. data/gen/page/README +1 -0
  833. data/gen/page/USAGE +15 -0
  834. data/gen/page/templates/pages/@target_name@/Buildfile +16 -0
  835. data/gen/page/templates/pages/@target_name@/core.js +22 -0
  836. data/gen/page/templates/pages/@target_name@/en.lproj/strings.js +14 -0
  837. data/gen/page/templates/pages/@target_name@/resources/body.css +1 -0
  838. data/gen/page/templates/pages/@target_name@/resources/body.rhtml +7 -0
  839. data/gen/project/Buildfile +45 -0
  840. data/gen/project/INIT +3 -0
  841. data/gen/project/README +1 -0
  842. data/gen/project/USAGE +2 -0
  843. data/gen/project/templates/@filename@/Buildfile +7 -0
  844. data/gen/project/templates/@filename@/README +7 -0
  845. data/gen/test/Buildfile +25 -0
  846. data/gen/test/README +1 -0
  847. data/gen/test/USAGE +12 -0
  848. data/gen/test/templates/tests/@filename@.js +15 -0
  849. data/gen/theme/Buildfile +36 -0
  850. data/gen/theme/README +1 -0
  851. data/gen/theme/USAGE +13 -0
  852. data/gen/theme/templates/themes/@target_name@/resources/theme_styles.css +11 -0
  853. data/gen/view/Buildfile +18 -0
  854. data/gen/view/README +1 -0
  855. data/gen/view/USAGE +13 -0
  856. data/gen/view/templates/tests/views/@filename@.js +15 -0
  857. data/gen/view/templates/views/@filename@.js +18 -0
  858. data/lib/sproutcore/builders/base.rb +91 -0
  859. data/lib/sproutcore/builders/bundle.rb +63 -0
  860. data/lib/sproutcore/builders/combine.rb +37 -0
  861. data/lib/sproutcore/builders/html.rb +205 -0
  862. data/lib/sproutcore/builders/javascript.rb +62 -0
  863. data/lib/sproutcore/builders/minify.rb +133 -0
  864. data/lib/sproutcore/builders/sass.rb +55 -0
  865. data/lib/sproutcore/builders/strings.rb +44 -0
  866. data/lib/sproutcore/builders/stylesheet.rb +40 -0
  867. data/lib/sproutcore/builders/test.rb +59 -0
  868. data/lib/sproutcore/builders/test_index.rb +26 -0
  869. data/lib/sproutcore/buildfile/build_task.rb +33 -0
  870. data/lib/sproutcore/buildfile/buildfile_dsl.rb +162 -0
  871. data/lib/sproutcore/buildfile/cloneable.rb +34 -0
  872. data/lib/sproutcore/buildfile/early_time.rb +30 -0
  873. data/lib/sproutcore/buildfile/invocation_chain.rb +64 -0
  874. data/lib/sproutcore/buildfile/namespace.rb +33 -0
  875. data/lib/sproutcore/buildfile/string_ext.rb +198 -0
  876. data/lib/sproutcore/buildfile/task.rb +304 -0
  877. data/lib/sproutcore/buildfile/task_arguments.rb +86 -0
  878. data/lib/sproutcore/buildfile/task_manager.rb +193 -0
  879. data/lib/sproutcore/buildfile.rb +484 -0
  880. data/lib/sproutcore/deprecated/view_helper.rb +662 -0
  881. data/lib/sproutcore/helpers/capture_helper.rb +9 -1
  882. data/lib/sproutcore/helpers/cssmin.rb +202 -0
  883. data/lib/sproutcore/helpers/dom_id_helper.rb +8 -1
  884. data/lib/sproutcore/helpers/entry_sorter.rb +139 -0
  885. data/lib/sproutcore/helpers/packed_optimizer.rb +102 -0
  886. data/lib/sproutcore/helpers/static_helper.rb +223 -41
  887. data/lib/sproutcore/helpers/tag_helper.rb +73 -1
  888. data/lib/sproutcore/helpers/text_helper.rb +24 -57
  889. data/lib/sproutcore/models/generator.rb +493 -0
  890. data/lib/sproutcore/models/hash_struct.rb +109 -0
  891. data/lib/sproutcore/models/manifest.rb +376 -0
  892. data/lib/sproutcore/models/manifest_entry.rb +252 -0
  893. data/lib/sproutcore/models/project.rb +267 -0
  894. data/lib/sproutcore/models/target.rb +664 -0
  895. data/lib/sproutcore/rack/builder.rb +331 -0
  896. data/lib/sproutcore/rack/dev.rb +51 -0
  897. data/lib/sproutcore/rack/docs.rb +24 -0
  898. data/lib/sproutcore/rack/filesystem.rb +265 -0
  899. data/lib/sproutcore/rack/proxy.rb +100 -0
  900. data/lib/sproutcore/rack/service.rb +155 -0
  901. data/lib/sproutcore/rack/test_runner.rb +24 -0
  902. data/lib/sproutcore/render_engines/erubis.rb +55 -0
  903. data/lib/sproutcore/render_engines/haml.rb +39 -0
  904. data/lib/sproutcore/tools/build.rb +80 -0
  905. data/lib/sproutcore/tools/build_number.rb +23 -0
  906. data/lib/sproutcore/tools/docs.rb +53 -0
  907. data/lib/sproutcore/tools/gen.rb +99 -0
  908. data/lib/sproutcore/tools/init.rb +40 -0
  909. data/lib/sproutcore/tools/manifest.rb +85 -0
  910. data/lib/sproutcore/tools/server.rb +48 -0
  911. data/lib/sproutcore/tools.rb +341 -0
  912. data/lib/sproutcore.rb +141 -18
  913. data/lib/thor/CHANGELOG.rdoc +52 -0
  914. data/lib/thor/LICENSE +20 -0
  915. data/lib/thor/README.markdown +76 -0
  916. data/lib/thor/Rakefile +6 -0
  917. data/lib/thor/Thorfile +45 -0
  918. data/lib/thor/bin/rake2thor +83 -0
  919. data/lib/thor/bin/thor +7 -0
  920. data/lib/thor/lib/thor/error.rb +3 -0
  921. data/lib/thor/lib/thor/options.rb +267 -0
  922. data/lib/thor/lib/thor/ordered_hash.rb +64 -0
  923. data/lib/thor/lib/thor/runner.rb +305 -0
  924. data/lib/thor/lib/thor/task.rb +83 -0
  925. data/lib/thor/lib/thor/task_hash.rb +22 -0
  926. data/lib/thor/lib/thor/tasks/package.rb +18 -0
  927. data/lib/thor/lib/thor/tasks.rb +77 -0
  928. data/lib/thor/lib/thor/util.rb +75 -0
  929. data/lib/thor/lib/thor.rb +170 -0
  930. data/lib/thor/script/destroy +14 -0
  931. data/lib/thor/script/generate +14 -0
  932. data/lib/thor/spec/fixtures/task.thor +10 -0
  933. data/lib/thor/spec/options_spec.rb +271 -0
  934. data/lib/thor/spec/ordered_hash_spec.rb +84 -0
  935. data/lib/thor/spec/spec.opts +1 -0
  936. data/lib/thor/spec/spec_helper.rb +30 -0
  937. data/lib/thor/spec/task_spec.rb +11 -0
  938. data/lib/thor/spec/tasks_spec.rb +28 -0
  939. data/lib/thor/spec/thor_runner_spec.rb +194 -0
  940. data/lib/thor/spec/thor_spec.rb +206 -0
  941. data/lib/thor/spec/util_spec.rb +99 -0
  942. data/lib/thor/task.thor +15 -0
  943. data/lib/thor/thor.gemspec +29 -0
  944. data/spec/buildtasks/build/copy_spec.rb +60 -0
  945. data/spec/buildtasks/build/spec_helper.rb +36 -0
  946. data/spec/buildtasks/manifest/catalog_spec.rb +48 -0
  947. data/spec/buildtasks/manifest/hide_buildfiles_spec.rb +126 -0
  948. data/spec/buildtasks/manifest/localize_spec.rb +97 -0
  949. data/spec/buildtasks/manifest/prepare_build_tasks/bundle_spec.rb +254 -0
  950. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +246 -0
  951. data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +87 -0
  952. data/spec/buildtasks/manifest/prepare_build_tasks/html_spec.rb +175 -0
  953. data/spec/buildtasks/manifest/prepare_build_tasks/javascript_spec.rb +65 -0
  954. data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +70 -0
  955. data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +152 -0
  956. data/spec/buildtasks/manifest/prepare_build_tasks/sass_spec.rb +98 -0
  957. data/spec/buildtasks/manifest/prepare_build_tasks/strings_spec.rb +64 -0
  958. data/spec/buildtasks/manifest/prepare_build_tasks/tests_spec.rb +163 -0
  959. data/spec/buildtasks/manifest/prepare_spec.rb +43 -0
  960. data/spec/buildtasks/manifest/spec_helper.rb +35 -0
  961. data/spec/buildtasks/target_spec.rb +270 -0
  962. data/spec/fixtures/builder_tests/Buildfile +20 -0
  963. data/spec/fixtures/builder_tests/apps/bundle_test/bundle.js +1 -0
  964. data/spec/fixtures/builder_tests/apps/combine_test/a.js +1 -0
  965. data/spec/fixtures/builder_tests/apps/combine_test/b.js +1 -0
  966. data/spec/fixtures/builder_tests/apps/combine_test/c.js +1 -0
  967. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +1 -0
  968. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +1 -0
  969. data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +1 -0
  970. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +2 -0
  971. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +1 -0
  972. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
  973. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
  974. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +1 -0
  975. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +4 -0
  976. data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
  977. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
  978. data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +4 -0
  979. data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +1 -0
  980. data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
  981. data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +15 -0
  982. data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +4 -0
  983. data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +7 -0
  984. data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +3 -0
  985. data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +8 -0
  986. data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +9 -0
  987. data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +12 -0
  988. data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +1 -0
  989. data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +3 -0
  990. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +1 -0
  991. data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +1 -0
  992. data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +4 -0
  993. data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
  994. data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
  995. data/spec/fixtures/builder_tests/frameworks/dynamic_req_target_1/dynamic_req_js_1.js +0 -0
  996. data/spec/fixtures/builder_tests/frameworks/dynamic_req_target_1/english.lproj/dynamic_req_style_1.css +0 -0
  997. data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
  998. data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
  999. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
  1000. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +4 -0
  1001. data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +1 -0
  1002. data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
  1003. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
  1004. data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +1 -0
  1005. data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +1 -0
  1006. data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
  1007. data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
  1008. data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +1 -0
  1009. data/spec/fixtures/buildfiles/basic/Buildfile +16 -0
  1010. data/spec/fixtures/buildfiles/basic/task_module.rake +6 -0
  1011. data/spec/fixtures/buildfiles/installed/Buildfile +7 -0
  1012. data/spec/fixtures/buildfiles/installed/Buildfile2 +5 -0
  1013. data/spec/fixtures/buildfiles/project_test/Buildfile +4 -0
  1014. data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +2 -0
  1015. data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
  1016. data/spec/fixtures/entry_for_project/Buildfile +1 -0
  1017. data/spec/fixtures/entry_for_project/apps/test_app/entry.txt +0 -0
  1018. data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
  1019. data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
  1020. data/spec/fixtures/find_targets/custom/Buildfile +8 -0
  1021. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
  1022. data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
  1023. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
  1024. data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
  1025. data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +5 -0
  1026. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
  1027. data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
  1028. data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
  1029. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
  1030. data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
  1031. data/spec/fixtures/find_targets/nested/Buildfile +8 -0
  1032. data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +1 -0
  1033. data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
  1034. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
  1035. data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
  1036. data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
  1037. data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
  1038. data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
  1039. data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
  1040. data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
  1041. data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
  1042. data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
  1043. data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
  1044. data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
  1045. data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
  1046. data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
  1047. data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
  1048. data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
  1049. data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
  1050. data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
  1051. data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
  1052. data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
  1053. data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
  1054. data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
  1055. data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
  1056. data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
  1057. data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
  1058. data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
  1059. data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
  1060. data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
  1061. data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
  1062. data/spec/fixtures/ordered_entries/apps/no_requires/1.js +1 -0
  1063. data/spec/fixtures/ordered_entries/apps/no_requires/B.js +1 -0
  1064. data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +1 -0
  1065. data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +1 -0
  1066. data/spec/fixtures/ordered_entries/apps/no_requires/a.js +1 -0
  1067. data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +1 -0
  1068. data/spec/fixtures/ordered_entries/apps/no_requires/c.js +1 -0
  1069. data/spec/fixtures/ordered_entries/apps/no_requires/core.js +1 -0
  1070. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
  1071. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
  1072. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
  1073. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
  1074. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
  1075. data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
  1076. data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +1 -0
  1077. data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +1 -0
  1078. data/spec/fixtures/ordered_entries/apps/with_requires/a.js +2 -0
  1079. data/spec/fixtures/ordered_entries/apps/with_requires/b.js +3 -0
  1080. data/spec/fixtures/ordered_entries/apps/with_requires/c.js +2 -0
  1081. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +2 -0
  1082. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +2 -0
  1083. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +2 -0
  1084. data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +1 -0
  1085. data/spec/fixtures/real_world/Buildfile +12 -0
  1086. data/spec/fixtures/real_world/apps/account/README +1 -0
  1087. data/spec/fixtures/real_world/apps/calendar/README +1 -0
  1088. data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +1 -0
  1089. data/spec/fixtures/real_world/apps/files/README +1 -0
  1090. data/spec/fixtures/real_world/apps/mail/README +1 -0
  1091. data/spec/fixtures/real_world/apps/mobile_photos/README +1 -0
  1092. data/spec/fixtures/real_world/apps/photos/README +1 -0
  1093. data/spec/fixtures/real_world/apps/uploader/README +1 -0
  1094. data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
  1095. data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
  1096. data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
  1097. data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +26 -0
  1098. data/spec/fixtures/real_world/frameworks/sproutcore/README +1 -0
  1099. data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
  1100. data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
  1101. data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
  1102. data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
  1103. data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
  1104. data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
  1105. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
  1106. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +4 -0
  1107. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +1 -0
  1108. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
  1109. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
  1110. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +1 -0
  1111. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
  1112. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
  1113. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +4 -0
  1114. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +1 -0
  1115. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +1 -0
  1116. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
  1117. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +6 -0
  1118. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +3 -0
  1119. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +1 -0
  1120. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
  1121. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +1 -0
  1122. data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
  1123. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
  1124. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
  1125. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
  1126. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
  1127. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
  1128. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
  1129. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
  1130. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
  1131. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
  1132. data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
  1133. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
  1134. data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +1 -0
  1135. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
  1136. data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
  1137. data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +4 -0
  1138. data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +1 -0
  1139. data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +1 -0
  1140. data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
  1141. data/spec/fixtures/real_world/frameworks/sproutcore/resources/boo.png +0 -0
  1142. data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +6 -0
  1143. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
  1144. data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
  1145. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
  1146. data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +1 -0
  1147. data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
  1148. data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +1 -0
  1149. data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
  1150. data/spec/fixtures/recursive_project/Buildfile +8 -0
  1151. data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
  1152. data/spec/lib/builders/bundle_spec.rb +294 -0
  1153. data/spec/lib/builders/combine_spec.rb +67 -0
  1154. data/spec/lib/builders/html_spec.rb +579 -0
  1155. data/spec/lib/builders/javascript_spec.rb +81 -0
  1156. data/spec/lib/builders/sass_spec.rb +43 -0
  1157. data/spec/lib/builders/spec_helper.rb +30 -0
  1158. data/spec/lib/builders/strings_spec.rb +52 -0
  1159. data/spec/lib/builders/stylesheet_spec.rb +63 -0
  1160. data/spec/lib/builders/test_index_spec.rb +44 -0
  1161. data/spec/lib/builders/test_spec.rb +136 -0
  1162. data/spec/lib/buildfile/config_for_spec.rb +81 -0
  1163. data/spec/lib/buildfile/define_spec.rb +59 -0
  1164. data/spec/lib/buildfile/dup_spec.rb +65 -0
  1165. data/spec/lib/buildfile/invoke_spec.rb +130 -0
  1166. data/spec/lib/buildfile/load_spec.rb +49 -0
  1167. data/spec/lib/buildfile/task/dup_spec.rb +55 -0
  1168. data/spec/lib/buildfile/task_defined_spec.rb +17 -0
  1169. data/spec/lib/buildfile_commands/build_task_spec.rb +19 -0
  1170. data/spec/lib/buildfile_commands/config_spec.rb +97 -0
  1171. data/spec/lib/buildfile_commands/import_spec.rb +17 -0
  1172. data/spec/lib/buildfile_commands/namespace_spec.rb +18 -0
  1173. data/spec/lib/buildfile_commands/proxies_spec.rb +38 -0
  1174. data/spec/lib/buildfile_commands/replace_task_spec.rb +29 -0
  1175. data/spec/lib/buildfile_commands/task_spec.rb +36 -0
  1176. data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +26 -0
  1177. data/spec/lib/models/hash_struct/deep_clone_spec.rb +27 -0
  1178. data/spec/lib/models/hash_struct/has_options_spec.rb +32 -0
  1179. data/spec/lib/models/hash_struct/hash_spec.rb +64 -0
  1180. data/spec/lib/models/hash_struct/merge_spec.rb +26 -0
  1181. data/spec/lib/models/hash_struct/method_missing.rb +41 -0
  1182. data/spec/lib/models/manifest/add_entry_spec.rb +36 -0
  1183. data/spec/lib/models/manifest/add_transform_spec.rb +91 -0
  1184. data/spec/lib/models/manifest/build_spec.rb +78 -0
  1185. data/spec/lib/models/manifest/entry_for_spec.rb +94 -0
  1186. data/spec/lib/models/manifest/find_entry.rb +97 -0
  1187. data/spec/lib/models/manifest/prepare_spec.rb +62 -0
  1188. data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +31 -0
  1189. data/spec/lib/models/manifest_entry/prepare_spec.rb +54 -0
  1190. data/spec/lib/models/project/add_target_spec.rb +44 -0
  1191. data/spec/lib/models/project/buildfile_spec.rb +35 -0
  1192. data/spec/lib/models/project/find_targets_for_spec.rb +78 -0
  1193. data/spec/lib/models/project/load_nearest_project_spec.rb +23 -0
  1194. data/spec/lib/models/project/target_for_spec.rb +33 -0
  1195. data/spec/lib/models/project/targets_spec.rb +62 -0
  1196. data/spec/lib/models/target/compute_build_number_spec.rb +125 -0
  1197. data/spec/lib/models/target/config_spec.rb +30 -0
  1198. data/spec/lib/models/target/expand_required_targets_spec.rb +48 -0
  1199. data/spec/lib/models/target/installed_languages_spec.rb +47 -0
  1200. data/spec/lib/models/target/lproj_for_spec.rb +38 -0
  1201. data/spec/lib/models/target/manifest_for_spec.rb +42 -0
  1202. data/spec/lib/models/target/parent_target_spec.rb +21 -0
  1203. data/spec/lib/models/target/prepare_spec.rb +53 -0
  1204. data/spec/lib/models/target/required_targets_spec.rb +119 -0
  1205. data/spec/lib/models/target/target_for_spec.rb +56 -0
  1206. data/spec/lib/tools/build_number_spec.rb +28 -0
  1207. data/spec/lib/tools/gen_spec.rb +207 -0
  1208. data/spec/lib/tools/tools_spec.rb +78 -0
  1209. data/spec/spec.opts +3 -0
  1210. data/spec/spec_helper.rb +137 -6
  1211. data/sproutcore-abbot.gemspec +1582 -0
  1212. data/vendor/github_gem_lint.rb +22 -0
  1213. data/{jsdoc → vendor/jsdoc}/README.txt +0 -0
  1214. data/vendor/jsdoc/app/frame/Chain.js +102 -0
  1215. data/vendor/jsdoc/app/frame/Dumper.js +144 -0
  1216. data/vendor/jsdoc/app/frame/Hash.js +47 -0
  1217. data/vendor/jsdoc/app/frame/Link.js +142 -0
  1218. data/vendor/jsdoc/app/frame/Namespace.js +10 -0
  1219. data/vendor/jsdoc/app/frame/Opt.js +134 -0
  1220. data/vendor/jsdoc/app/frame/Reflection.js +26 -0
  1221. data/vendor/jsdoc/app/frame/String.js +93 -0
  1222. data/vendor/jsdoc/app/frame/Testrun.js +129 -0
  1223. data/vendor/jsdoc/app/frame.js +33 -0
  1224. data/vendor/jsdoc/app/handlers/FOODOC.js +26 -0
  1225. data/{jsdoc → vendor/jsdoc}/app/handlers/XMLDOC/DomReader.js +0 -0
  1226. data/{jsdoc → vendor/jsdoc}/app/handlers/XMLDOC/XMLDoc.js +0 -0
  1227. data/{jsdoc → vendor/jsdoc}/app/handlers/XMLDOC/XMLParse.js +0 -0
  1228. data/vendor/jsdoc/app/handlers/XMLDOC.js +26 -0
  1229. data/vendor/jsdoc/app/lib/JSDOC/DocComment.js +200 -0
  1230. data/vendor/jsdoc/app/lib/JSDOC/DocTag.js +294 -0
  1231. data/vendor/jsdoc/app/lib/JSDOC/JsDoc.js +162 -0
  1232. data/vendor/jsdoc/app/lib/JSDOC/JsPlate.js +100 -0
  1233. data/vendor/jsdoc/app/lib/JSDOC/Lang.js +144 -0
  1234. data/vendor/jsdoc/app/lib/JSDOC/Parser.js +109 -0
  1235. data/vendor/jsdoc/app/lib/JSDOC/PluginManager.js +33 -0
  1236. data/vendor/jsdoc/app/lib/JSDOC/Symbol.js +681 -0
  1237. data/vendor/jsdoc/app/lib/JSDOC/SymbolSet.js +226 -0
  1238. data/vendor/jsdoc/app/lib/JSDOC/TextStream.js +41 -0
  1239. data/vendor/jsdoc/app/lib/JSDOC/Token.js +18 -0
  1240. data/vendor/jsdoc/app/lib/JSDOC/TokenReader.js +332 -0
  1241. data/vendor/jsdoc/app/lib/JSDOC/TokenStream.js +133 -0
  1242. data/vendor/jsdoc/app/lib/JSDOC/Util.js +32 -0
  1243. data/vendor/jsdoc/app/lib/JSDOC/Walker.js +453 -0
  1244. data/vendor/jsdoc/app/lib/JSDOC.js +98 -0
  1245. data/vendor/jsdoc/app/main.js +74 -0
  1246. data/vendor/jsdoc/app/plugins/commentSrcJson.js +19 -0
  1247. data/vendor/jsdoc/app/plugins/frameworkPrototype.js +16 -0
  1248. data/vendor/jsdoc/app/plugins/functionCall.js +10 -0
  1249. data/vendor/jsdoc/app/plugins/publishSrcHilite.js +62 -0
  1250. data/{jsdoc → vendor/jsdoc}/app/plugins/sproutcoreTags.js +0 -0
  1251. data/vendor/jsdoc/app/plugins/symbolLink.js +9 -0
  1252. data/vendor/jsdoc/app/plugins/tagParamConfig.js +31 -0
  1253. data/vendor/jsdoc/app/plugins/tagSynonyms.js +43 -0
  1254. data/vendor/jsdoc/app/run.js +346 -0
  1255. data/vendor/jsdoc/app/t/TestDoc.js +144 -0
  1256. data/{jsdoc → vendor/jsdoc/app}/t/runner.js +0 -0
  1257. data/{jsdoc → vendor/jsdoc/app}/test/addon.js +0 -0
  1258. data/{jsdoc → vendor/jsdoc/app}/test/anon_inner.js +0 -0
  1259. data/vendor/jsdoc/app/test/augments.js +31 -0
  1260. data/vendor/jsdoc/app/test/augments2.js +26 -0
  1261. data/vendor/jsdoc/app/test/borrows.js +41 -0
  1262. data/vendor/jsdoc/app/test/borrows2.js +23 -0
  1263. data/{jsdoc → vendor/jsdoc/app}/test/config.js +0 -0
  1264. data/vendor/jsdoc/app/test/constructs.js +18 -0
  1265. data/{jsdoc → vendor/jsdoc/app}/test/encoding.js +0 -0
  1266. data/{jsdoc → vendor/jsdoc/app}/test/encoding_other.js +0 -0
  1267. data/vendor/jsdoc/app/test/functions_anon.js +39 -0
  1268. data/vendor/jsdoc/app/test/functions_nested.js +33 -0
  1269. data/vendor/jsdoc/app/test/global.js +13 -0
  1270. data/vendor/jsdoc/app/test/globals.js +25 -0
  1271. data/vendor/jsdoc/app/test/ignore.js +10 -0
  1272. data/{jsdoc → vendor/jsdoc/app}/test/inner.js +0 -0
  1273. data/vendor/jsdoc/app/test/jsdoc_test.js +477 -0
  1274. data/vendor/jsdoc/app/test/lend.js +33 -0
  1275. data/vendor/jsdoc/app/test/memberof.js +20 -0
  1276. data/vendor/jsdoc/app/test/memberof_constructor.js +15 -0
  1277. data/vendor/jsdoc/app/test/name.js +19 -0
  1278. data/vendor/jsdoc/app/test/namespace_nested.js +23 -0
  1279. data/{jsdoc → vendor/jsdoc/app}/test/nocode.js +0 -0
  1280. data/vendor/jsdoc/app/test/oblit_anon.js +20 -0
  1281. data/vendor/jsdoc/app/test/overview.js +20 -0
  1282. data/vendor/jsdoc/app/test/param_inline.js +37 -0
  1283. data/{jsdoc → vendor/jsdoc/app}/test/params_optional.js +0 -0
  1284. data/vendor/jsdoc/app/test/prototype.js +17 -0
  1285. data/{jsdoc → vendor/jsdoc/app}/test/prototype_nested.js +0 -0
  1286. data/vendor/jsdoc/app/test/prototype_oblit.js +13 -0
  1287. data/vendor/jsdoc/app/test/prototype_oblit_constructor.js +24 -0
  1288. data/vendor/jsdoc/app/test/public.js +10 -0
  1289. data/{jsdoc → vendor/jsdoc/app}/test/shared.js +0 -0
  1290. data/{jsdoc → vendor/jsdoc/app}/test/shared2.js +0 -0
  1291. data/vendor/jsdoc/app/test/shortcuts.js +22 -0
  1292. data/vendor/jsdoc/app/test/static_this.js +13 -0
  1293. data/vendor/jsdoc/app/test/synonyms.js +23 -0
  1294. data/{jsdoc → vendor/jsdoc/app}/test/tosource.js +0 -0
  1295. data/vendor/jsdoc/app/test/variable_redefine.js +14 -0
  1296. data/vendor/jsdoc/app/test.js +304 -0
  1297. data/{jsdoc → vendor/jsdoc}/changes.txt +0 -0
  1298. data/{jsdoc → vendor/jsdoc}/conf/sample.conf +0 -0
  1299. data/{jsdoc → vendor/jsdoc}/java/build.xml +0 -0
  1300. data/{jsdoc → vendor/jsdoc}/java/build_1.4.xml +0 -0
  1301. data/{jsdoc → vendor/jsdoc}/java/classes/js.jar +0 -0
  1302. data/{jsdoc → vendor/jsdoc}/java/src/JsDebugRun.java +0 -0
  1303. data/{jsdoc → vendor/jsdoc}/java/src/JsRun.java +0 -0
  1304. data/{jsdoc → vendor/jsdoc}/jsdebug.jar +0 -0
  1305. data/{jsdoc → vendor/jsdoc}/jsrun.jar +0 -0
  1306. data/{jsdoc → vendor/jsdoc}/t/TestDoc.js +0 -0
  1307. data/vendor/jsdoc/t/runner.js +13 -0
  1308. data/vendor/jsdoc/test/addon.js +24 -0
  1309. data/vendor/jsdoc/test/anon_inner.js +14 -0
  1310. data/{jsdoc → vendor/jsdoc}/test/augments.js +0 -0
  1311. data/{jsdoc → vendor/jsdoc}/test/augments2.js +0 -0
  1312. data/{jsdoc → vendor/jsdoc}/test/borrows.js +0 -0
  1313. data/{jsdoc → vendor/jsdoc}/test/borrows2.js +0 -0
  1314. data/vendor/jsdoc/test/config.js +22 -0
  1315. data/{jsdoc → vendor/jsdoc}/test/constructs.js +0 -0
  1316. data/vendor/jsdoc/test/encoding.js +10 -0
  1317. data/vendor/jsdoc/test/encoding_other.js +12 -0
  1318. data/{jsdoc → vendor/jsdoc}/test/functions_anon.js +0 -0
  1319. data/{jsdoc → vendor/jsdoc}/test/functions_nested.js +0 -0
  1320. data/{jsdoc → vendor/jsdoc}/test/global.js +0 -0
  1321. data/{jsdoc → vendor/jsdoc}/test/globals.js +0 -0
  1322. data/{jsdoc → vendor/jsdoc}/test/ignore.js +0 -0
  1323. data/vendor/jsdoc/test/inner.js +16 -0
  1324. data/{jsdoc → vendor/jsdoc}/test/jsdoc_test.js +0 -0
  1325. data/{jsdoc → vendor/jsdoc}/test/lend.js +0 -0
  1326. data/{jsdoc → vendor/jsdoc}/test/memberof.js +0 -0
  1327. data/{jsdoc → vendor/jsdoc}/test/memberof_constructor.js +0 -0
  1328. data/{jsdoc → vendor/jsdoc}/test/name.js +0 -0
  1329. data/{jsdoc → vendor/jsdoc}/test/namespace_nested.js +0 -0
  1330. data/vendor/jsdoc/test/nocode.js +13 -0
  1331. data/{jsdoc → vendor/jsdoc}/test/oblit_anon.js +0 -0
  1332. data/{jsdoc → vendor/jsdoc}/test/overview.js +0 -0
  1333. data/{jsdoc → vendor/jsdoc}/test/param_inline.js +0 -0
  1334. data/vendor/jsdoc/test/params_optional.js +8 -0
  1335. data/{jsdoc → vendor/jsdoc}/test/prototype.js +0 -0
  1336. data/vendor/jsdoc/test/prototype_nested.js +9 -0
  1337. data/{jsdoc → vendor/jsdoc}/test/prototype_oblit.js +0 -0
  1338. data/{jsdoc → vendor/jsdoc}/test/prototype_oblit_constructor.js +0 -0
  1339. data/{jsdoc → vendor/jsdoc}/test/public.js +0 -0
  1340. data/vendor/jsdoc/test/shared.js +42 -0
  1341. data/vendor/jsdoc/test/shared2.js +2 -0
  1342. data/{jsdoc → vendor/jsdoc}/test/shortcuts.js +0 -0
  1343. data/{jsdoc → vendor/jsdoc}/test/static_this.js +0 -0
  1344. data/{jsdoc → vendor/jsdoc}/test/synonyms.js +0 -0
  1345. data/vendor/jsdoc/test/tosource.js +23 -0
  1346. data/{jsdoc → vendor/jsdoc}/test/variable_redefine.js +0 -0
  1347. data/{jsdoc → vendor/jsdoc}/test.js +0 -0
  1348. data/{yui_compressor → vendor/yui-compressor}/yuicompressor-2.4.2.jar +0 -0
  1349. metadata +1537 -431
  1350. data/License.txt +0 -20
  1351. data/Manifest.txt +0 -415
  1352. data/app_generators/sproutcore/USAGE +0 -4
  1353. data/app_generators/sproutcore/sproutcore_generator.rb +0 -68
  1354. data/app_generators/sproutcore/templates/README +0 -80
  1355. data/app_generators/sproutcore/templates/sc-config +0 -93
  1356. data/bin/sc-ide +0 -278
  1357. data/bin/sc-install +0 -101
  1358. data/bin/sc-remove +0 -99
  1359. data/bin/sc-update +0 -99
  1360. data/clients/sc_docs/HISTORY +0 -3
  1361. data/clients/sc_docs/README +0 -6
  1362. data/clients/sc_docs/controllers/docs.js +0 -150
  1363. data/clients/sc_docs/core.js +0 -19
  1364. data/clients/sc_docs/english.lproj/body.css +0 -112
  1365. data/clients/sc_docs/english.lproj/body.rhtml +0 -58
  1366. data/clients/sc_docs/english.lproj/no_docs.rhtml +0 -8
  1367. data/clients/sc_docs/english.lproj/strings.js +0 -14
  1368. data/clients/sc_docs/english.lproj/tabs.rhtml +0 -16
  1369. data/clients/sc_docs/fixtures/doc.js +0 -11
  1370. data/clients/sc_docs/main.js +0 -26
  1371. data/clients/sc_docs/models/doc.js +0 -15
  1372. data/clients/sc_docs/tests/controllers/docs.rhtml +0 -20
  1373. data/clients/sc_docs/tests/models/doc.rhtml +0 -20
  1374. data/clients/sc_docs/tests/views/doc_frame.rhtml +0 -20
  1375. data/clients/sc_docs/tests/views/doc_label_view.rhtml +0 -20
  1376. data/clients/sc_docs/views/doc_frame.js +0 -33
  1377. data/clients/sc_docs/views/doc_label.js +0 -20
  1378. data/clients/sc_test_runner/HISTORY +0 -3
  1379. data/clients/sc_test_runner/README +0 -4
  1380. data/clients/sc_test_runner/controllers/runner.js +0 -203
  1381. data/clients/sc_test_runner/core.js +0 -19
  1382. data/clients/sc_test_runner/english.lproj/body.css +0 -91
  1383. data/clients/sc_test_runner/english.lproj/body.rhtml +0 -76
  1384. data/clients/sc_test_runner/english.lproj/icons/small/next.png +0 -0
  1385. data/clients/sc_test_runner/english.lproj/icons/small/reset.png +0 -0
  1386. data/clients/sc_test_runner/english.lproj/images/gradients.png +0 -0
  1387. data/clients/sc_test_runner/english.lproj/images/toolbar.png +0 -0
  1388. data/clients/sc_test_runner/english.lproj/no_tests.rhtml +0 -5
  1389. data/clients/sc_test_runner/english.lproj/strings.js +0 -14
  1390. data/clients/sc_test_runner/fixtures/test.js +0 -12
  1391. data/clients/sc_test_runner/main.js +0 -21
  1392. data/clients/sc_test_runner/models/test.js +0 -27
  1393. data/clients/sc_test_runner/views/runner_frame.js +0 -74
  1394. data/clients/sc_test_runner/views/test_label.js +0 -20
  1395. data/config/hoe.rb +0 -72
  1396. data/config/requirements.rb +0 -17
  1397. data/frameworks/prototype/HISTORY +0 -3
  1398. data/frameworks/prototype/README +0 -2
  1399. data/frameworks/prototype/prototype.js +0 -4223
  1400. data/frameworks/sproutcore/controllers/array.js +0 -409
  1401. data/frameworks/sproutcore/controllers/collection.js +0 -203
  1402. data/frameworks/sproutcore/controllers/controller.js +0 -323
  1403. data/frameworks/sproutcore/controllers/object.js +0 -401
  1404. data/frameworks/sproutcore/core.js +0 -636
  1405. data/frameworks/sproutcore/debug/trace.js +0 -81
  1406. data/frameworks/sproutcore/debug/unittest.js +0 -626
  1407. data/frameworks/sproutcore/drag/drag.js +0 -788
  1408. data/frameworks/sproutcore/drag/drag_data_source.js +0 -40
  1409. data/frameworks/sproutcore/drag/drag_source.js +0 -75
  1410. data/frameworks/sproutcore/drag/drop_target.js +0 -160
  1411. data/frameworks/sproutcore/english.lproj/buttons.css +0 -694
  1412. data/frameworks/sproutcore/english.lproj/core.css +0 -145
  1413. data/frameworks/sproutcore/english.lproj/detect-browser +0 -44
  1414. data/frameworks/sproutcore/english.lproj/icons.css +0 -227
  1415. data/frameworks/sproutcore/english.lproj/images/indicator.gif +0 -0
  1416. data/frameworks/sproutcore/english.lproj/images/sc-theme-sprite.png +0 -0
  1417. data/frameworks/sproutcore/english.lproj/menu.css +0 -122
  1418. data/frameworks/sproutcore/english.lproj/panes.css +0 -136
  1419. data/frameworks/sproutcore/english.lproj/picker.css +0 -22
  1420. data/frameworks/sproutcore/english.lproj/splitview.css +0 -83
  1421. data/frameworks/sproutcore/english.lproj/strings.js +0 -20
  1422. data/frameworks/sproutcore/english.lproj/tab.css +0 -23
  1423. data/frameworks/sproutcore/english.lproj/tests.css +0 -67
  1424. data/frameworks/sproutcore/english.lproj/theme.css +0 -502
  1425. data/frameworks/sproutcore/foundation/animator.js +0 -679
  1426. data/frameworks/sproutcore/foundation/application.js +0 -228
  1427. data/frameworks/sproutcore/foundation/benchmark.js +0 -244
  1428. data/frameworks/sproutcore/foundation/binding.js +0 -385
  1429. data/frameworks/sproutcore/foundation/date.js +0 -357
  1430. data/frameworks/sproutcore/foundation/enumerator.js +0 -105
  1431. data/frameworks/sproutcore/foundation/error.js +0 -84
  1432. data/frameworks/sproutcore/foundation/input_manager.js +0 -165
  1433. data/frameworks/sproutcore/foundation/json.js +0 -296
  1434. data/frameworks/sproutcore/foundation/mock.js +0 -42
  1435. data/frameworks/sproutcore/foundation/node_descriptor.js +0 -71
  1436. data/frameworks/sproutcore/foundation/object.js +0 -875
  1437. data/frameworks/sproutcore/foundation/page.js +0 -67
  1438. data/frameworks/sproutcore/foundation/path_module.js +0 -431
  1439. data/frameworks/sproutcore/foundation/responder.js +0 -313
  1440. data/frameworks/sproutcore/foundation/routes.js +0 -375
  1441. data/frameworks/sproutcore/foundation/run_loop.js +0 -322
  1442. data/frameworks/sproutcore/foundation/set.js +0 -222
  1443. data/frameworks/sproutcore/foundation/string.js +0 -319
  1444. data/frameworks/sproutcore/foundation/timer.js +0 -405
  1445. data/frameworks/sproutcore/foundation/undo_manager.js +0 -186
  1446. data/frameworks/sproutcore/foundation/utils.js +0 -320
  1447. data/frameworks/sproutcore/globals/panels.js +0 -182
  1448. data/frameworks/sproutcore/globals/popups.js +0 -61
  1449. data/frameworks/sproutcore/globals/window.js +0 -498
  1450. data/frameworks/sproutcore/lib/button_views.rb +0 -330
  1451. data/frameworks/sproutcore/lib/collection_view.rb +0 -83
  1452. data/frameworks/sproutcore/lib/core_views.rb +0 -326
  1453. data/frameworks/sproutcore/lib/form_views.rb +0 -253
  1454. data/frameworks/sproutcore/lib/menu_views.rb +0 -93
  1455. data/frameworks/sproutcore/mixins/array.js +0 -265
  1456. data/frameworks/sproutcore/mixins/collection_view_delegate.js +0 -201
  1457. data/frameworks/sproutcore/mixins/control.js +0 -265
  1458. data/frameworks/sproutcore/mixins/delegate_support.js +0 -66
  1459. data/frameworks/sproutcore/mixins/editable.js +0 -144
  1460. data/frameworks/sproutcore/mixins/enumerable.js +0 -1002
  1461. data/frameworks/sproutcore/mixins/inline_editor_delegate.js +0 -82
  1462. data/frameworks/sproutcore/mixins/observable.js +0 -1060
  1463. data/frameworks/sproutcore/mixins/scrollable.js +0 -246
  1464. data/frameworks/sproutcore/mixins/selection_support.js +0 -160
  1465. data/frameworks/sproutcore/mixins/validatable.js +0 -152
  1466. data/frameworks/sproutcore/models/collection.js +0 -421
  1467. data/frameworks/sproutcore/models/record.js +0 -811
  1468. data/frameworks/sproutcore/models/store.js +0 -352
  1469. data/frameworks/sproutcore/panes/dialog.js +0 -16
  1470. data/frameworks/sproutcore/panes/manager.js +0 -164
  1471. data/frameworks/sproutcore/panes/menu.js +0 -45
  1472. data/frameworks/sproutcore/panes/overlay.js +0 -235
  1473. data/frameworks/sproutcore/panes/pane.js +0 -117
  1474. data/frameworks/sproutcore/panes/panel.js +0 -19
  1475. data/frameworks/sproutcore/panes/picker.js +0 -46
  1476. data/frameworks/sproutcore/server/rails_server.js +0 -79
  1477. data/frameworks/sproutcore/server/rest_server.js +0 -177
  1478. data/frameworks/sproutcore/server/server.js +0 -629
  1479. data/frameworks/sproutcore/tests/controllers/array.rhtml +0 -126
  1480. data/frameworks/sproutcore/tests/controllers/controller.rhtml +0 -273
  1481. data/frameworks/sproutcore/tests/controllers/object.rhtml +0 -353
  1482. data/frameworks/sproutcore/tests/core/guidFor.rhtml +0 -114
  1483. data/frameworks/sproutcore/tests/foundation/application.rhtml +0 -125
  1484. data/frameworks/sproutcore/tests/foundation/array.rhtml +0 -220
  1485. data/frameworks/sproutcore/tests/foundation/object.rhtml +0 -69
  1486. data/frameworks/sproutcore/tests/foundation/set.rhtml +0 -254
  1487. data/frameworks/sproutcore/tests/foundation/timer/invalidate.rhtml +0 -33
  1488. data/frameworks/sproutcore/tests/foundation/timer/invokeLater.rhtml +0 -145
  1489. data/frameworks/sproutcore/tests/foundation/timer/isPaused.rhtml +0 -70
  1490. data/frameworks/sproutcore/tests/foundation/timer/schedule.rhtml +0 -145
  1491. data/frameworks/sproutcore/tests/globals/window.rhtml +0 -45
  1492. data/frameworks/sproutcore/tests/mixins/enumerable.rhtml +0 -421
  1493. data/frameworks/sproutcore/tests/mixins/observable.rhtml +0 -127
  1494. data/frameworks/sproutcore/tests/models/collection.rhtml +0 -160
  1495. data/frameworks/sproutcore/tests/models/model.rhtml +0 -373
  1496. data/frameworks/sproutcore/tests/panes/pane.rhtml +0 -88
  1497. data/frameworks/sproutcore/tests/views/checkbox.rhtml +0 -21
  1498. data/frameworks/sproutcore/tests/views/collection/base.rhtml +0 -211
  1499. data/frameworks/sproutcore/tests/views/collection/incremental_rendering.rhtml +0 -260
  1500. data/frameworks/sproutcore/tests/views/collection/source_list_rendering.rhtml +0 -232
  1501. data/frameworks/sproutcore/tests/views/image_cell.rhtml +0 -19
  1502. data/frameworks/sproutcore/tests/views/label_item.rhtml +0 -19
  1503. data/frameworks/sproutcore/tests/views/list.rhtml +0 -20
  1504. data/frameworks/sproutcore/tests/views/list_item.rhtml +0 -20
  1505. data/frameworks/sproutcore/tests/views/popup_button.rhtml +0 -116
  1506. data/frameworks/sproutcore/tests/views/slider.rhtml +0 -20
  1507. data/frameworks/sproutcore/tests/views/text_cell.rhtml +0 -19
  1508. data/frameworks/sproutcore/tests/views/text_field.rhtml +0 -37
  1509. data/frameworks/sproutcore/tests/views/view/clippingFrame.rhtml +0 -401
  1510. data/frameworks/sproutcore/tests/views/view/frame.rhtml +0 -357
  1511. data/frameworks/sproutcore/tests/views/view/innerFrame.rhtml +0 -366
  1512. data/frameworks/sproutcore/tests/views/view/isVisibleInWindow.rhtml +0 -148
  1513. data/frameworks/sproutcore/tests/views/view/scrollFrame.rhtml +0 -467
  1514. data/frameworks/sproutcore/validators/credit_card.js +0 -112
  1515. data/frameworks/sproutcore/validators/date.js +0 -50
  1516. data/frameworks/sproutcore/validators/email.js +0 -47
  1517. data/frameworks/sproutcore/validators/not_empty.js +0 -34
  1518. data/frameworks/sproutcore/validators/number.js +0 -69
  1519. data/frameworks/sproutcore/validators/password.js +0 -89
  1520. data/frameworks/sproutcore/validators/validator.js +0 -314
  1521. data/frameworks/sproutcore/views/button/button.js +0 -478
  1522. data/frameworks/sproutcore/views/button/checkbox.js +0 -29
  1523. data/frameworks/sproutcore/views/button/disclosure.js +0 -42
  1524. data/frameworks/sproutcore/views/button/radio.js +0 -29
  1525. data/frameworks/sproutcore/views/collection/collection.js +0 -2764
  1526. data/frameworks/sproutcore/views/collection/grid.js +0 -251
  1527. data/frameworks/sproutcore/views/collection/image_cell.js +0 -125
  1528. data/frameworks/sproutcore/views/collection/list.js +0 -162
  1529. data/frameworks/sproutcore/views/collection/source_list.js +0 -458
  1530. data/frameworks/sproutcore/views/collection/table.js +0 -118
  1531. data/frameworks/sproutcore/views/container.js +0 -67
  1532. data/frameworks/sproutcore/views/error_explanation.js +0 -58
  1533. data/frameworks/sproutcore/views/field/checkbox_field.js +0 -40
  1534. data/frameworks/sproutcore/views/field/field.js +0 -218
  1535. data/frameworks/sproutcore/views/field/radio_field.js +0 -122
  1536. data/frameworks/sproutcore/views/field/select_field.js +0 -307
  1537. data/frameworks/sproutcore/views/field/text_field.js +0 -251
  1538. data/frameworks/sproutcore/views/field/textarea_field.js +0 -32
  1539. data/frameworks/sproutcore/views/filter_button.js +0 -29
  1540. data/frameworks/sproutcore/views/form.js +0 -597
  1541. data/frameworks/sproutcore/views/image.js +0 -255
  1542. data/frameworks/sproutcore/views/inline_text_field.js +0 -427
  1543. data/frameworks/sproutcore/views/label.js +0 -243
  1544. data/frameworks/sproutcore/views/list_item.js +0 -516
  1545. data/frameworks/sproutcore/views/menu_item.js +0 -97
  1546. data/frameworks/sproutcore/views/pagination.js +0 -62
  1547. data/frameworks/sproutcore/views/popup_button.js +0 -90
  1548. data/frameworks/sproutcore/views/popup_menu.js +0 -139
  1549. data/frameworks/sproutcore/views/progress.js +0 -125
  1550. data/frameworks/sproutcore/views/radio_group.js +0 -48
  1551. data/frameworks/sproutcore/views/scroll.js +0 -74
  1552. data/frameworks/sproutcore/views/segmented.js +0 -105
  1553. data/frameworks/sproutcore/views/slider.js +0 -134
  1554. data/frameworks/sproutcore/views/source_list_group.js +0 -130
  1555. data/frameworks/sproutcore/views/spinner.js +0 -11
  1556. data/frameworks/sproutcore/views/split.js +0 -312
  1557. data/frameworks/sproutcore/views/split_divider.js +0 -112
  1558. data/frameworks/sproutcore/views/tab.js +0 -128
  1559. data/frameworks/sproutcore/views/toolbar.js +0 -29
  1560. data/frameworks/sproutcore/views/view.js +0 -2301
  1561. data/jsdoc/app/frame/Chain.js +0 -102
  1562. data/jsdoc/app/frame/Dumper.js +0 -144
  1563. data/jsdoc/app/frame/Hash.js +0 -47
  1564. data/jsdoc/app/frame/Link.js +0 -142
  1565. data/jsdoc/app/frame/Namespace.js +0 -10
  1566. data/jsdoc/app/frame/Opt.js +0 -134
  1567. data/jsdoc/app/frame/Reflection.js +0 -26
  1568. data/jsdoc/app/frame/String.js +0 -93
  1569. data/jsdoc/app/frame/Testrun.js +0 -129
  1570. data/jsdoc/app/frame.js +0 -33
  1571. data/jsdoc/app/handlers/FOODOC.js +0 -26
  1572. data/jsdoc/app/handlers/XMLDOC.js +0 -26
  1573. data/jsdoc/app/lib/JSDOC/DocComment.js +0 -200
  1574. data/jsdoc/app/lib/JSDOC/DocTag.js +0 -294
  1575. data/jsdoc/app/lib/JSDOC/JsDoc.js +0 -180
  1576. data/jsdoc/app/lib/JSDOC/JsPlate.js +0 -100
  1577. data/jsdoc/app/lib/JSDOC/Lang.js +0 -144
  1578. data/jsdoc/app/lib/JSDOC/Parser.js +0 -109
  1579. data/jsdoc/app/lib/JSDOC/PluginManager.js +0 -33
  1580. data/jsdoc/app/lib/JSDOC/Symbol.js +0 -600
  1581. data/jsdoc/app/lib/JSDOC/SymbolSet.js +0 -220
  1582. data/jsdoc/app/lib/JSDOC/TextStream.js +0 -41
  1583. data/jsdoc/app/lib/JSDOC/Token.js +0 -18
  1584. data/jsdoc/app/lib/JSDOC/TokenReader.js +0 -323
  1585. data/jsdoc/app/lib/JSDOC/TokenStream.js +0 -133
  1586. data/jsdoc/app/lib/JSDOC/Util.js +0 -32
  1587. data/jsdoc/app/lib/JSDOC/Walker.js +0 -416
  1588. data/jsdoc/app/lib/JSDOC.js +0 -97
  1589. data/jsdoc/app/main.js +0 -74
  1590. data/jsdoc/app/plugins/commentSrcJson.js +0 -19
  1591. data/jsdoc/app/plugins/frameworkPrototype.js +0 -16
  1592. data/jsdoc/app/plugins/functionCall.js +0 -10
  1593. data/jsdoc/app/plugins/publishSrcHilite.js +0 -62
  1594. data/jsdoc/app/plugins/symbolLink.js +0 -9
  1595. data/jsdoc/app/plugins/tagParamConfig.js +0 -31
  1596. data/jsdoc/app/plugins/tagSynonyms.js +0 -43
  1597. data/jsdoc/app/run.js +0 -346
  1598. data/jsdoc/templates/sproutcore/allclasses.tmpl +0 -17
  1599. data/jsdoc/templates/sproutcore/allfiles.tmpl +0 -56
  1600. data/jsdoc/templates/sproutcore/class.tmpl +0 -423
  1601. data/jsdoc/templates/sproutcore/index.tmpl +0 -55
  1602. data/jsdoc/templates/sproutcore/publish.js +0 -333
  1603. data/jsdoc/templates/sproutcore/static/default.css +0 -191
  1604. data/jsdoc/templates/sproutcore/static/index.html +0 -19
  1605. data/jsdoc/templates/sproutcore/symbol.tmpl +0 -35
  1606. data/lib/sproutcore/build_tools/html_builder.rb +0 -163
  1607. data/lib/sproutcore/build_tools/resource_builder.rb +0 -256
  1608. data/lib/sproutcore/build_tools/test_template.rhtml +0 -12
  1609. data/lib/sproutcore/build_tools.rb +0 -44
  1610. data/lib/sproutcore/bundle.rb +0 -802
  1611. data/lib/sproutcore/bundle_installer.rb +0 -270
  1612. data/lib/sproutcore/bundle_manifest.rb +0 -574
  1613. data/lib/sproutcore/cssmin.rb +0 -195
  1614. data/lib/sproutcore/generator_helper.rb +0 -185
  1615. data/lib/sproutcore/helpers.rb +0 -3
  1616. data/lib/sproutcore/jsdoc.rb +0 -45
  1617. data/lib/sproutcore/jsmin.rb +0 -247
  1618. data/lib/sproutcore/library.rb +0 -479
  1619. data/lib/sproutcore/merb/bundle_controller.rb +0 -297
  1620. data/lib/sproutcore/merb/router.rb +0 -50
  1621. data/lib/sproutcore/merb.rb +0 -22
  1622. data/lib/sproutcore/renderers/erubis.rb +0 -43
  1623. data/lib/sproutcore/renderers/haml.rb +0 -28
  1624. data/lib/sproutcore/renderers/sass.rb +0 -42
  1625. data/lib/sproutcore/version.rb +0 -9
  1626. data/lib/sproutcore/view_helpers.rb +0 -656
  1627. data/sc-config +0 -16
  1628. data/sc_generators/client/README +0 -3
  1629. data/sc_generators/client/USAGE +0 -11
  1630. data/sc_generators/client/client_generator.rb +0 -45
  1631. data/sc_generators/client/templates/core.js +0 -16
  1632. data/sc_generators/client/templates/english.lproj/body.css +0 -147
  1633. data/sc_generators/client/templates/english.lproj/body.rhtml +0 -18
  1634. data/sc_generators/client/templates/english.lproj/strings.js +0 -13
  1635. data/sc_generators/client/templates/main.js +0 -35
  1636. data/sc_generators/controller/USAGE +0 -15
  1637. data/sc_generators/controller/controller_generator.rb +0 -51
  1638. data/sc_generators/controller/templates/controller.js +0 -21
  1639. data/sc_generators/controller/templates/test.rhtml +0 -22
  1640. data/sc_generators/framework/README +0 -6
  1641. data/sc_generators/framework/USAGE +0 -11
  1642. data/sc_generators/framework/framework_generator.rb +0 -53
  1643. data/sc_generators/framework/templates/core.js +0 -20
  1644. data/sc_generators/framework/templates/english.lproj/strings.js +0 -13
  1645. data/sc_generators/language/USAGE +0 -13
  1646. data/sc_generators/language/language_generator.rb +0 -47
  1647. data/sc_generators/language/templates/strings.js +0 -13
  1648. data/sc_generators/model/USAGE +0 -23
  1649. data/sc_generators/model/model_generator.rb +0 -55
  1650. data/sc_generators/model/templates/fixture.js +0 -43
  1651. data/sc_generators/model/templates/model.js +0 -20
  1652. data/sc_generators/model/templates/test.rhtml +0 -21
  1653. data/sc_generators/test/USAGE +0 -15
  1654. data/sc_generators/test/templates/test.rhtml +0 -21
  1655. data/sc_generators/test/test_generator.rb +0 -47
  1656. data/sc_generators/view/USAGE +0 -15
  1657. data/sc_generators/view/templates/test.rhtml +0 -21
  1658. data/sc_generators/view/templates/view.js +0 -20
  1659. data/sc_generators/view/view_generator.rb +0 -51
  1660. data/script/destroy +0 -14
  1661. data/script/generate +0 -14
  1662. data/script/txt2html +0 -74
  1663. data/setup.rb +0 -1585
  1664. data/spec/sproutcore_spec.rb +0 -11
  1665. data/tasks/deployment.rake +0 -47
  1666. data/tasks/environment.rake +0 -7
  1667. data/tasks/rspec.rake +0 -21
  1668. data/tasks/website.rake +0 -17
@@ -1,2301 +0,0 @@
1
- // ========================================================================
2
- // SproutCore
3
- // copyright 2006-2008 Sprout Systems, Inc.
4
- // ========================================================================
5
-
6
- require('foundation/object') ;
7
- require('foundation/responder') ;
8
- require('foundation/node_descriptor') ;
9
- require('foundation/binding');
10
- require('foundation/path_module');
11
-
12
- require('mixins/delegate_support') ;
13
-
14
- SC.BENCHMARK_OUTLETS = NO ;
15
- SC.BENCHMARK_CONFIGURE_OUTLETS = NO ;
16
-
17
- /**
18
- @class
19
-
20
- A view is the root class you use to manage the web page DOM in your
21
- application. You can use views to render visible content on your page,
22
- provide animations, and to capture and respond to events.
23
-
24
- You can use SC.View directly to manage DOM elements or you can extend one
25
- of the many subclasses provided by SproutCore. This documentation describes
26
- the general concepts you need to understand when working with views, though
27
- most often you will want to work with one of the subclasses instead.
28
-
29
- h2. Working with DOM Elements
30
-
31
- h2. Handling Events
32
-
33
- @extends SC.Responder
34
- @extends SC.PathModule
35
- @extends SC.DelegateSupport
36
- @since SproutCore 1.0
37
- */
38
- SC.View = SC.Responder.extend(SC.PathModule, SC.DelegateSupport,
39
- /** @scope SC.View.prototype */ {
40
-
41
- // ..........................................
42
- // VIEW API
43
- //
44
- // The methods in this section are used to manage actual views. You can
45
- // basically interact with child elements in two ways. One using an API
46
- // similar to the DOM API. Alternatively, you can treat the view like an
47
- // array and use standard iterators.
48
- //
49
-
50
- /**
51
- Insert the view into the the receiver's childNodes array.
52
-
53
- The view will be added to the childNodes array before the beforeView. If
54
- beforeView is null, then the view will be added to the end of the array.
55
- This will also add the view's rootElement DOM node to the receivers
56
- containerElement DOM node as a child.
57
-
58
- If the specified view already belongs to another parent, it will be
59
- removed from that view first.
60
-
61
- @param view {SC.View} the view to insert as a child node.
62
- @param beforeView {SC.View} view to insert before, or null to insert at
63
- end
64
- @returns {SC.View} the receiver
65
- */
66
- insertBefore: function(view, beforeView) {
67
- this._insertBefore(view,beforeView,true);
68
- },
69
-
70
- /** @private */
71
- _insertBefore: function(view, beforeView, updateDom) {
72
- // verify that beforeView is a child.
73
- if (beforeView) {
74
- if (beforeView.parentNode != this) throw "insertBefore() beforeView must belong to the receiver" ;
75
- if (beforeView == view) throw "insertBefore() views cannot be the same";
76
- }
77
-
78
- if (view.parentNode) view.removeFromParent() ;
79
- this.willAddChild(this, beforeView) ;
80
- view.willAddToParent(this, beforeView) ;
81
-
82
- // patch in the view.
83
- if (beforeView) {
84
- view.set('previousSibling', beforeView.previousSibling) ;
85
- view.set('nextSibling', beforeView) ;
86
- beforeView.set('previousSibling', view) ;
87
- } else {
88
- view.set('previousSibling', this.lastChild) ;
89
- view.set('nextSibling', null) ;
90
- this.set('lastChild', view) ;
91
- }
92
-
93
- if (view.previousSibling) view.previousSibling.set('nextSibling',view);
94
- if (view.previousSibling == null) this.set('firstChild',view) ;
95
- view.set('parentNode', this) ;
96
-
97
- // Update DOM. -- ANIMATE
98
- // Note that this code is not called when outlets are first configured.
99
- // The assumption is that the created view already belongs to the
100
- // document somwhere.
101
- if (updateDom) {
102
- var beforeElement = (beforeView) ? beforeView.rootElement : null;
103
-
104
- (this.containerElement || this.rootElement).insertBefore(view.rootElement,beforeElement);
105
-
106
- // regenerate the childNodes array.
107
- this._rebuildChildNodes();
108
- }
109
-
110
- // update cached states.
111
- view._updateIsVisibleInWindow() ;
112
- view._flushInternalCaches() ;
113
- view._invalidateClippingFrame() ;
114
-
115
- // call notices.
116
- view.didAddToParent(this, beforeView) ;
117
- this.didAddChild(view, beforeView) ;
118
- try{
119
- return this ;
120
- }finally{
121
- if(beforeElement)
122
- beforeElement=null;
123
- }
124
- },
125
-
126
- /**
127
- Remove the view from the receiver's childNodes array.
128
-
129
- This will also remove the view's DOM element from the recievers DOM.
130
-
131
- @param view {SC.View} the view to remove
132
- @returns {SC.View} the receiver
133
- */
134
- removeChild: function(view) {
135
- if (!view) return ;
136
- if (view.parentNode != this) throw "removeChild: view must belong to parent";
137
-
138
- view.willRemoveFromParent() ;
139
- this.willRemoveChild(view) ;
140
-
141
- // unpatch.
142
- if (view.previousSibling) {
143
- view.previousSibling.set('nextSibling', view.nextSibling);
144
- } else this.set('firstChild', view.nextSibling) ;
145
-
146
- if (view.nextSibling) {
147
- view.nextSibling.set('previousSibling', view.previousSibling) ;
148
- } else this.set('lastChild', view.previousSibling) ;
149
-
150
- // Update DOM -- ANIMATE
151
- var el = (this.containerElement || this.rootElement);
152
- if (el && (view.rootElement.parentNode == el) && (el != document)) {
153
- el.removeChild(view.rootElement);
154
- }
155
-
156
- // regenerate the childNodes array.
157
- this._rebuildChildNodes();
158
-
159
- view.set('nextSibling', null);
160
- view.set('previousSibling', null);
161
- view.set('parentNode', null) ;
162
-
163
- // update parent state.
164
- view._updateIsVisibleInWindow() ;
165
- view._flushInternalCaches();
166
- view._invalidateClippingFrame() ;
167
-
168
- view.didRemoveFromParent(this) ;
169
- this.didRemoveChild(view);
170
- try{
171
- return this;
172
- }finally{
173
- el=null;
174
- }
175
- },
176
-
177
- /**
178
- Replace the oldView with the specified view in the receivers childNodes
179
- array. This will also replace the DOM node of the oldView with the DOM
180
- node of the new view in the receivers DOM.
181
-
182
- If the specified view already belongs to another parent, it will be
183
- removed from that view first.
184
-
185
- @param view {SC.View} the view to insert in the DOM
186
- @param view {SC.View} the view to remove from the DOM.
187
- @returns {SC.View} the receiver
188
- */
189
- replaceChild: function(view, oldView) {
190
- this.insertBefore(view,oldView) ; this.removeChild(oldView) ;
191
- return this;
192
- },
193
-
194
- /**
195
- Removes the receiver from its parentNode. If the receiver does not belong
196
- to a parentNode, this method does nothing.
197
-
198
- @returns {null}
199
- */
200
- removeFromParent: function() {
201
- if (this.parentNode) this.parentNode.removeChild(this) ;
202
- return null ;
203
- },
204
-
205
- /**
206
- Works just like removeFromParent but also removes the view from internal
207
- caches and sets the rootElement to null so that the view and its DOM can
208
- be garbage collected.
209
-
210
- SproutCore includes special gaurds that ensure views and their related
211
- DOM elements will be garbage collected whenever your web page unloads.
212
- However, if you create and destroy views frequently while your application
213
- is running, you should call this method when views are no longer needed
214
- to ensure they will be garbage collected even while your application is
215
- still running.
216
-
217
- @returns {null}
218
- */
219
- destroy: function() {
220
- this.removeFromParent() ;
221
- delete SC.View._view[SC.guidFor(this)];
222
- return null ;
223
- },
224
-
225
- /**
226
- Appends the specified view to the end of the receivers childNodes array.
227
- This is equivalent to calling insertBefore(view, null);
228
-
229
- @param view {SC.View} the view to insert
230
- @returns {SC.View} the receiver
231
- */
232
- appendChild: function(view) {
233
- this.insertBefore(view,null) ;
234
- return this ;
235
- },
236
-
237
- /**
238
- The array of views that are direct children of the receiver view. The DOM
239
- elements managed by the views are also directl children of the
240
- containerElement for the receiver.
241
-
242
- @field
243
- @type Array
244
- */
245
- childNodes: [],
246
-
247
- /**
248
- The first child view in the childNodes array. If the view does not have
249
- any children, this property will be null.
250
-
251
- @field
252
- @type SC.View
253
- */
254
- firstChild: null,
255
-
256
- /**
257
- The last child view in the childNodes array. If the view does not have any children,
258
- this property will be null.
259
-
260
- @field
261
- @type SC.View
262
- */
263
- lastChild: null,
264
-
265
- /**
266
- The next sibling view in the childNodes array of the receivers parentNode.
267
- If the receiver is the last view in the array or if the receiver does not
268
- belong to a parent view this property will be null.
269
-
270
- @field
271
- @type SC.View
272
- */
273
- nextSibling: null,
274
-
275
- /**
276
- The previous sibling view in the childNodes array of the receivers
277
- parentNode. If the receiver is the first view in the array or if the
278
- receiver does not belong to a parent view this property will be null.
279
-
280
- @field
281
- @type SC.View
282
- */
283
- previousSibling: null,
284
-
285
- /**
286
- The parent view this view belongs to. If the receiver does not belong to a parent view
287
- then this property is null.
288
-
289
- @field
290
- @type SC.View
291
- */
292
- parentNode: null,
293
-
294
-
295
- /**
296
- The pane this view belongs to. The pane is the root of the responder
297
- chain that this view belongs to. Typically a view's pane will be the
298
- SC.window object. However, if you have added the view to a dialog, panel,
299
- popup or other pane, this property will point to that pane instead.
300
-
301
- If the view does not belong to a parentNode or if the view is not
302
- onscreen, this property will be null.
303
-
304
- @field
305
- @type SC.View
306
- */
307
- pane: function()
308
- {
309
- var view = this;
310
- while(view = view.get('parentNode'))
311
- {
312
- if (view.get('isPane') ) break;
313
- }
314
- return view;
315
- }.property(),
316
-
317
-
318
- /**
319
- Removes all child views from the receiver.
320
-
321
- @returns {void}
322
- */
323
- clear: function() {
324
- while(this.firstChild) this.removeChild(this.firstChild) ;
325
- },
326
-
327
- /**
328
- This method is called on the view just before it is added to a new parent
329
- view.
330
-
331
- You can override this method to do any setup you need on your view or to
332
- reset any cached values that are impacted by being added to a view. The
333
- default implementation does nothing.
334
-
335
- @param parent {SC.View} the new parent
336
- @paran beforeView {SC.View} the view in the parent's childNodes array that
337
- will follow this view once it is added. If the view is being added to
338
- the end of the array, this will be null.
339
- @returns {void}
340
- */
341
- willAddToParent: function(parent, beforeView) {},
342
-
343
- /**
344
- This method is called on the view just after it is added to a new parent
345
- view.
346
-
347
- You can override this method to do any setup you need on your view or to
348
- reset any cached values that are impacted by being added to a view. The
349
- default implementation does nothing.
350
-
351
- @param parent {SC.View} the new parent
352
- @paran beforeView {SC.View} the view in the parent's childNodes array that
353
- will follow this view once it is added. If the view is being added to
354
- the end of the array, this will be null.
355
- @returns {void}
356
- */
357
- didAddToParent: function(parent, beforeView) {},
358
-
359
- /**
360
- This method is called on the view just before it is removed from a parent
361
- view.
362
-
363
- You can override this method to clear out any values that depend on the
364
- view belonging to the current parentNode. The default implementation does
365
- nothing.
366
-
367
- @returns {void}
368
- */
369
- willRemoveFromParent: function() {},
370
-
371
- /**
372
- This method is called on the view just after it is removed from a parent
373
- view.
374
-
375
- You can override this method to clear out any values that depend on the
376
- view belonging to the current parentNode. The default implementation does
377
- nothing.
378
-
379
- @param oldParent {SC.View} the old parent view
380
- @returns {void}
381
- */
382
- didRemoveFromParent: function(oldParent) {},
383
-
384
- /**
385
- This method is called just before a new child view is added to the
386
- receiver's childNodes array. You can use this to prepare for any layout
387
- or other cleanup you might need to do.
388
-
389
- The default implementation does nothing.
390
-
391
- @param child {SC.View} the view to be added
392
- @param beforeView {SC.View} and existing child view that will follow the
393
- child view in the array once it is added. If adding to the end of the
394
- array, this param will be null.
395
- @returns {void}
396
- */
397
- willAddChild: function(child, beforeView) {},
398
-
399
- /**
400
- This method is called just after a new child view is added to the
401
- receiver's childNodes array. You can use this to prepare for any layout
402
- or other cleanup you might need to do.
403
-
404
- The default implementation does nothing.
405
-
406
- @param child {SC.View} the view that was added
407
- @param beforeView {SC.View} and existing child view that will follow the
408
- child view in the array once it is added. If adding to the end of the
409
- array, this param will be null.
410
- @returns {void}
411
- */
412
- didAddChild: function(child, beforeView) {},
413
-
414
- /**
415
- This method is called just before a child view is removed from the
416
- receiver's childNodes array. You can use this to prepare for any layout
417
- or other cleanup you might need to do.
418
-
419
- The default implementation does nothing.
420
-
421
- @param child {SC.View} the view to be removed
422
- @returns {void}
423
- */
424
- willRemoveChild: function(child) {},
425
-
426
- /**
427
- This method is called just after a child view is removed from the
428
- receiver's childNodes array. You can use this to prepare for any layout
429
- or other cleanup you might need to do.
430
-
431
- The default implementation does nothing.
432
-
433
- @param child {SC.View} the view that was removed
434
- @returns {void}
435
- */
436
- didRemoveChild: function(child) {},
437
-
438
-
439
- nextKeyView: null,
440
- previousKeyView: null,
441
-
442
- nextValidKeyView: function()
443
- {
444
- var view = this;
445
- while (view = view.get('nextKeyView'))
446
- {
447
- if (view.get('isVisible') && view.get('acceptsFirstResponder')) {
448
- return view;
449
- }
450
- }
451
- return null;
452
- },
453
-
454
- previousValidKeyView: function()
455
- {
456
- var view = this;
457
- while (view = view.get('previousKeyView'))
458
- {
459
- if (view.get('isVisible') && view.get('acceptsFirstResponder')) {
460
- return view;
461
- }
462
- }
463
- return null;
464
- },
465
-
466
- /** @private
467
- Invoked whenever the child hierarchy changes and any internally cached
468
- values might need to be recalculated.
469
- */
470
- _flushInternalCaches: function() {
471
- // only flush cache for parent if this item was cached since the top level
472
- // cached can only be populated if this one is populated also...
473
- if ((this._needsClippingFrame != null) || (this._needsFrameChanges != null)) {
474
- this._needsClippingFrame = this._needsFrameChanges = null ;
475
- if (this.parentNode) this.parentNode._flushInternalCaches() ;
476
- }
477
- },
478
-
479
- // ..........................................
480
- // SC.Responder implementation
481
- //
482
-
483
- nextResponder: function()
484
- {
485
- return this.parentNode;
486
- }.property('parentNode'),
487
-
488
- // recursively travels down the view hierarchy looking for a view that returns true to performKeyEquivalent
489
- performKeyEquivalent: function(keystring, evt)
490
- {
491
- var child = this.get('firstChild');
492
- while (child)
493
- {
494
- if (child.performKeyEquivalent(keystring, evt)) return true;
495
- child = child.get('nextSibling');
496
- }
497
- return false;
498
- },
499
-
500
- // ..........................................
501
- // ELEMENT API
502
- //
503
-
504
- /**
505
- An array of currently applied classNames.
506
-
507
- @field
508
- @type {Array}
509
- @param value {Array} Array of class names to apply to the element
510
- */
511
- classNames: function(key, value) {
512
- if (value !== undefined) {
513
- value = Array.from(value) ;
514
- if (this.rootElement) this.rootElement.className = value.join(' ') ;
515
- this._classNames = value.slice() ;
516
- }
517
-
518
- if (!this._classNames) {
519
- var classNames = this.rootElement.className;
520
- this._classNames = (classNames && classNames.length > 0) ? classNames.split(' ') : [] ;
521
- }
522
- return this._classNames ;
523
- }.property(),
524
-
525
- /**
526
- Detects the presence of the class name on the root element.
527
-
528
- @param className {String} the class name
529
- @returns {Boolean} YES if class name is currently applied, NO otherwise
530
- */
531
- hasClassName: function(className) {
532
- return (this._classNames || this.get('classNames')).indexOf(className) >= 0 ;
533
- },
534
-
535
- /**
536
- Adds the class name to the element.
537
-
538
- @param className {String} the class name to add.
539
- @returns {String} the class name
540
- */
541
- addClassName: function(className) {
542
- if (this.hasClassName(className)) return ; // nothing to do
543
-
544
- var classNames = this._classNames || this.get('classNames') ;
545
- classNames.push(className) ;
546
- this.set('classNames', classNames) ;
547
- return className ;
548
- },
549
-
550
- /**
551
- Removes the specified class name from the element.
552
-
553
- @param className {String} the class name to remove
554
- @returns {String} the class name
555
- */
556
- removeClassName: function(className) {
557
- if (!this.hasClassName(className)) return ; // nothing to do
558
-
559
- var classNames = this._classNames || this.get('classNames') ;
560
- classNames = this._classNames = classNames.without(className) ;
561
- this.set('classNames', classNames) ;
562
- return className ;
563
- },
564
-
565
- /**
566
- Adds or removes the class name according to flag.
567
-
568
- This is a simple way to add or remove a class from the root element.
569
-
570
- @param className {String} the class name
571
- @param flag {Boolean} YES to add class name, NO to remove it.
572
- @returns {String} The class Name.
573
- */
574
- setClassName: function(className, flag) {
575
- return (!!flag) ? this.addClassName(className) : this.removeClassName(className);
576
- },
577
-
578
- /**
579
- Toggles the presence of the class name.
580
-
581
- If the specified CSS class is applied, it will be removed. If it is not
582
- present, it will be added. Note that if this changes the potential
583
- layout of the view, you must wrap calls to this in viewFrameDidChange()
584
- and viewFrameWillChange().
585
-
586
- @param className {String} the class name
587
- @returns {Boolean} YES if classname is now applied
588
- */
589
- toggleClassName: function(className) {
590
- return this.setClassName(className, !this.hasClassName(className)) ;
591
- },
592
-
593
- /**
594
- Retrieves the current value of the named CSS style.
595
-
596
- This method is designed to work cross platform and uses the current
597
- computed style, which is the combination of all applied CSS class names
598
- and inline styles.
599
-
600
- @param style {String} the style key.
601
- @returns {Object} the style value or null if not-applied/auto
602
- */
603
- getStyle: function(style) {
604
- var element = this.rootElement ;
605
- if (!this._computedStyle) {
606
- this._computedStyle = document.defaultView.getComputedStyle(element, null) ;
607
- }
608
-
609
- //if (style == 'float') style = 'cssFloat' ;
610
- style = (style === 'float') ? 'cssFloat' : style.camelize() ;
611
- var value = element.style[style];
612
- if (!value) {
613
- value = this._computedStyle ? this._computedStyle[style] : null ;
614
- }
615
-
616
- if (style === 'opacity') {
617
- value = value ? parseFloat(value) : 1.0;
618
- }
619
- if (value === 'auto') value = null ;
620
-
621
- return value ;
622
- },
623
-
624
-
625
- /**
626
- Sets the passed hash of CSS styles and values on the element. You should
627
- pass your properties pre-camelized.
628
-
629
- @param styles {Hash} hash of keys and values
630
- @param camelized {Boolean} optional bool set to NO if you did not camelize.
631
- @returns {Boolean} YES if set succeeded.
632
- */
633
- setStyle: function(styles, camelized) {
634
- return Element.setStyle(this.rootElement, styles, camelized) ;
635
- },
636
-
637
- /**
638
- Updates the HTML of an element.
639
-
640
- This method takes care of nasties like processing scripts and inserting
641
- HTML into a table. It is also somewhat slow. If you control the HTML
642
- being inserted and you are not working with table elements, you should use
643
- the innerHTML property instead. If you are setting content generated by
644
- users, this method can insert the content safely.
645
-
646
- @param html {String} the html to insert.
647
- */
648
- update: function(html) {
649
- Element.update((this.containerElement || this.rootElement),html) ;
650
- this.propertyDidChange('innerHTML') ;
651
- },
652
-
653
- /**
654
- Retrieves the value for an attribute on the DOM element
655
-
656
- @param attrName {String} the attribute name
657
- @returns {String} attribute value
658
- */
659
- getAttribute: function(attrName) {
660
- return Element.readAttribute(this.rootElement,attrName) ;
661
- },
662
-
663
- /**
664
- Sets an attribute on the root DOM element.
665
-
666
- @param attrName {String} the attribute name
667
- @param value {String} the new attribute value
668
- @returns {String} the set attribute name
669
- */
670
- setAttribute: function(attrName, value) {
671
- this.rootElement.setAttribute(attrName, value) ;
672
- },
673
-
674
- /**
675
- Returns true if the named attributes is defined on the views root element.
676
-
677
- @param attrName {String} the attribute name
678
- @returns {Boolean} YES if attribute is present.
679
- */
680
- hasAttribute: function(attrName) {
681
- return Element.hasAttribute(this.rootElement, attrName) ;
682
- },
683
-
684
- // ..........................................
685
- // STYLE API
686
- //
687
- // These properties can be used to directly manipulate various CSS
688
- // styles on the view. These properties are required for animation
689
- // support. Values are typically assumed to be in px.
690
-
691
- /**
692
- SC.View's unknown property is used to implement a large class of
693
- properties beginning with the the world "style". You can get or set
694
- any of these properties to edit individual CSS style properties.
695
- */
696
- unknownProperty: function(key, value) {
697
- if (key && key.match && key.match(/^style/)) {
698
- key = key.slice(5,key.length).replace(/^./, function(x) {
699
- return x.toLowerCase();
700
- });
701
-
702
- var ret = null ;
703
-
704
- // handle dimensional properties
705
- if (key.match(/height$|width$|top$|bottom$|left$|right$/i)) {
706
- if (value !== undefined) {
707
- this.viewFrameWillChange() ;
708
- var props = {} ;
709
- props[key] = (value) ? value + 'px' : 'auto' ;
710
- this.setStyle(props) ;
711
- this.viewFrameDidChange() ;
712
- }
713
- ret = this.getStyle(key) ;
714
- ret = (ret === 'auto') ? null : Math.round(parseFloat(ret)) ;
715
-
716
- // all other properties just pass through (and do not change frame)
717
- } else {
718
- if (value !== undefined) {
719
- var props = {} ;
720
- props[key] = value ;
721
- this.setStyle(props) ;
722
- }
723
- ret = this.getStyle(key) ;
724
- }
725
- return ret;
726
-
727
- } else return arguments.callee.base.call(this, key, value) ;
728
- },
729
-
730
- // ..........................................
731
- // DOM API
732
- //
733
- // The methods in this section give you some low-level control over how the
734
- // view interacts with the DOM. You do not normally need to work with this.
735
-
736
- /**
737
- This is the DOM element actually managed by this view. This will be set
738
- by the view when it is created. You should rarely need to access this
739
- property directly. When you do access it, you should only do so from
740
- within methods you write on your SC.View subclasses, never from outside
741
- the view.
742
-
743
- Unlike most properties, you do not need to use get()/set() to access this
744
- property. It is not currently safe to edit this property once the view
745
- has been createde.
746
-
747
- @field
748
- @type {Element}
749
- */
750
- rootElement: null,
751
-
752
- /**
753
- Normally when you add child views to your view, their DOM elements will
754
- be set as direct children of the root element. However you can
755
- choose instead to designate an alertnative child node using this
756
- property. Set this to a selector string to begin with. The first time
757
- it is accessed, the view will convert it to an actual element. It is not
758
- currently safe to edit this property once the view has been created.
759
-
760
- Like rootElement, you should only access this property from within
761
- methods you write on an SC.View subclass, never from outside the view.
762
- Unlike most properties, it is not necessary to use get()/set().
763
-
764
- @field
765
- @type {Element}
766
- */
767
- containerElement: null,
768
-
769
- // ..........................................
770
- // VIEW LAYOUT
771
- //
772
- // The following methods can be used to implement automatic resizing.
773
- // The frame and bounds provides a simple way for you to compute the
774
- // location and size of your views. You can then use the automatic
775
- // resizing.
776
-
777
- /**
778
- Returns true if the view or any of its contained views implement the
779
- clippingFrameDidChange method.
780
-
781
- If this property returns false, then notifications about changes to the
782
- clippingFrame will probably not be called on the receiver. Normally if
783
- you do not need to worry about this property since implementing the
784
- clippingFrameDidChange() method will change its value and cause your
785
- method to be invoked.
786
-
787
- This property is automatically updated whenever you add or remove a child
788
- view.
789
- */
790
- needsClippingFrame: function() {
791
- if (this._needsClippingFrame == null) {
792
- var ret = this.clippingFrameDidChange != SC.View.prototype.clippingFrameDidChange;
793
- var view = this.get('firstChild') ;
794
- while(!ret && view) {
795
- ret = view.get('needsClippingFrame') ;
796
- view = view.get('nextSibling') ;
797
- }
798
- this._needsClippingFrame = ret ;
799
- }
800
- return this._needsClippingFrame ;
801
- }.property(),
802
-
803
- /**
804
- Returns true if the view or any of its contained views implements any
805
- resize methods.
806
-
807
- If this property returns false, changes to your frame view may not be
808
- relayed to child methods. This may mean that your various frame
809
- properties could become stale unless you call refreshFrames() first.
810
-
811
- If you want you make sure your frames are up to date, see hasManualLayout.
812
-
813
- This property is automatically updated whenever you add or remove a child
814
- view. It returns true if you implement any of the resize methods or if
815
- hasManualLayout is true.
816
- */
817
- needsFrameChanges: function() {
818
- if (this._needsFrameChanges == null) {
819
- var ret = this.get('needsClippingFrame') || this.get('hasManualLayout') ;
820
- var view = this.get('firstChild') ;
821
- while(!ret && view) {
822
- ret = view.get('needsFrameChanges') ;
823
- view = view.get('nextSibling') ;
824
- }
825
- this._needsFrameChanges = ret ;
826
- }
827
- return this._needsFrameChanges ;
828
- }.property(),
829
-
830
-
831
- /**
832
- Returns true if the receiver manages the layout for itself or its
833
- children.
834
-
835
- Normally this property returns true automatically if you implement
836
- resizeChildrenWithOldSize() or resizeWithOldParentSize() or
837
- clippingFrameDidChange().
838
-
839
- If you do not implement these methods but need to make sure your frame is
840
- always up-to-date anyway, set this property to true.
841
- */
842
- hasManualLayout: function() {
843
- return (this.resizeChildrenWithOldSize != SC.View.prototype.resizeChildrenWithOldSize) ||
844
- (this.resizeWithOldParentSize != SC.View.prototype.resizeWithOldParentSize) ||
845
- (this.clippingFrameDidChange != SC.View.prototype.clippingFrameDidChange) ;
846
- }.property(),
847
-
848
- /**
849
- Convert a point _from_ the offset parent of the passed view to the current
850
- view.
851
-
852
- This is a useful utility for converting points in the coordinate system of
853
- another view to the coordinate system of the receiver. Pass null for
854
- targetView to convert a point from a window offset. This is the inverse
855
- of convertFrameToView().
856
-
857
- Note that if your view is not visible on the screen, this may not work.
858
-
859
- @param {Point} f The point or frame to convert
860
- @param {SC.View} targetView The view to convert from. Pass null to convert from window coordinates.
861
-
862
- @returns {Point} The converted point or frame
863
- */
864
- convertFrameFromView: function(f, targetView) {
865
-
866
- // first, convert to root level offset.
867
- var thisOffset = SC.viewportOffset(this.get('offsetParent')) ;
868
- var thatOffset = (targetView) ? SC.viewportOffset(targetView.get('offsetParent')) : SC.ZERO_POINT;
869
-
870
- // now get adjustment.
871
- var adjustX = thatOffset.x - thisOffset.x ;
872
- var adjustY = thatOffset.y - thisOffset.y ;
873
- return { x: (f.x + adjustX), y: (f.y + adjustY), width: f.width, height: f.height };
874
- },
875
-
876
- /**
877
- Convert a point _to_ the offset parent of the passed view from the current
878
- view.
879
-
880
- This is a useful utility for converting points in the coordinate system of
881
- the receiver to the coordinate system of another view. Pass null for
882
- targetView to convert a point to a window offset. This is the inverse of
883
- convertFrameFromView().
884
-
885
- Note that if your view is not visible on the screen, this may not work.
886
-
887
- @param {Point} f The point or frame to convert
888
- @param {SC.View} targetView The view to convert to. Pass null to convert to window coordinates.
889
-
890
- @returns {Point} The converted point or frame
891
- */
892
- convertFrameToView: function(f, sourceView) {
893
- // first, convert to root level offset.
894
- var thisOffset = SC.viewportOffset(this.get('offsetParent')) ;
895
- var thatOffset = (sourceView) ? SC.viewportOffset(sourceView.get('offsetParent')) : SC.ZERO_POINT ;
896
-
897
- // now get adjustment.
898
- var adjustX = thisOffset.x - thatOffset.x ;
899
- var adjustY = thisOffset.y - thatOffset.y ;
900
- return { x: (f.x + adjustX), y: (f.y + adjustY), width: f.width, height: f.height };
901
- },
902
-
903
- /**
904
- This property returns a DOM ELEMENT that is the offset parent for
905
- this view's frame coordinates. Depending on your CSS, this parent
906
- may or may not match with the parent view.
907
-
908
- @example
909
- offsetView = $view(this.get('offsetParent')) ;
910
-
911
- @field
912
- @type {Element}
913
- */
914
- offsetParent: function() {
915
-
916
- // handle simple cases.
917
- var el = this.rootElement ;
918
- if (!el || el === document.body) return el;
919
- if (el.offsetParent) return el.offsetParent ;
920
-
921
- // in some cases, we can't find the offset parent so we walk up the
922
- // chain until an element is found with a position other than
923
- // 'static'
924
- //
925
- // Note that IE places DOM elements not in the main body inside of a
926
- // document-fragment root. We need to treat document-fragments (i.e.
927
- // nodeType === 11) as null values
928
- var ret = null ;
929
- while(!ret && (el = el.parentNode) && (el.nodeType !== 11) && (el !== document.body)) {
930
- if (Element.getStyle(el, 'position') !== 'static') ret = el;
931
- }
932
- if (!ret && (el === document.body)) ret = el ;
933
- return ret ;
934
- }.property(),
935
-
936
- /**
937
- The inner bounds for the content shown inside of this frame. Reflects
938
- scroll position and other properties.
939
-
940
- The inner frame returns the actual available frame for child elements,
941
- less any borders or scroll bars.
942
-
943
- This value can change when:
944
- - the receiver's frame changes
945
- - the receiver's child views change, adding or removing scrollbars
946
- - You can the CSS or applied style that effects the borders or scrollbar visibility
947
- */
948
- innerFrame: function(key, value) {
949
-
950
- var f ;
951
- if (this._innerFrame == null) {
952
-
953
- // get the base frame
954
- // The _collectInnerFrame function is set at the bottom of this file
955
- // based on the browser type.
956
- var el = this.rootElement ;
957
- f = this._collectFrame(SC.View._collectInnerFrame) ;
958
-
959
- // bizarely for FireFox if your offsetParent has a border, then it can
960
- // impact the offset
961
- if (SC.Platform.Firefox) {
962
- var parent = el.offsetParent ;
963
- var overflow = (parent) ? Element.getStyle(parent, 'overflow') : 'visible' ;
964
- if (overflow && overflow !== 'visible') {
965
- var left = parseInt(Element.getStyle(parent, 'borderLeftWidth'),0) || 0 ;
966
- var top = parseInt(Element.getStyle(parent, 'borderTopWidth'),0) || 0 ;
967
- f.x += left; f.y += top ;
968
- }
969
- }
970
-
971
- // fix the x & y with the clientTop/clientLeft
972
- var clientLeft, clientTop ;
973
-
974
- if (SC.Platform.IE) {
975
- if (!el.width) {
976
- clientLeft = parseInt(this.getStyle('border-left-width'),0) || 0 ;
977
- } else clientLeft = el.clientLeft ;
978
-
979
- if (!el.height) {
980
- clientTop = parseInt(this.getStyle('border-top-width'),0) || 0 ;
981
- } else clientTop = el.clientTop ;
982
-
983
- f.x += clientLeft; f.y += clientTop;
984
- }
985
- else {
986
- if (el.clientLeft == null) {
987
- clientLeft = parseInt(this.getStyle('border-left-width'),0) || 0 ;
988
- } else clientLeft = el.clientLeft ;
989
-
990
- if (el.clientTop == null) {
991
- clientTop = parseInt(this.getStyle('border-top-width'),0) || 0 ;
992
- } else clientTop = el.clientTop ;
993
-
994
- f.x += clientLeft; f.y += clientTop;
995
- }
996
-
997
- // cache this frame if using manual layout mode
998
- this._innerFrame = SC.cloneRect(f);
999
- } else f = SC.cloneRect(this._innerFrame) ;
1000
- // console.log('returning x:%@ y:%@ w:%@ h:%@'.fmt(f.x, f.y, f.width, f.height));
1001
- return f ;
1002
- }.property('frame'),
1003
-
1004
- /**
1005
- The outside bounds of your view, offset top/left from its offsetParent
1006
-
1007
- The frame rect is the area actually occupied by a view including any
1008
- borders or padding, but excluding margins.
1009
-
1010
- The frame is calculated and cached the first time you get it. Afer that,
1011
- the frame cache should automatically update when you make changes that
1012
- will effect the view frames unless you change the frame indirectly, such
1013
- as through changing CSS classes or by-passing the view to edit the DOM.
1014
-
1015
- If you make a change like this, be sure to wrap the code that makes this
1016
- change with calls to viewFrameWillChange() and viewFrameDidChange() on the
1017
- highest-level view that will be impacted by the change. Calling this
1018
- method will automatically update child frames as well.
1019
-
1020
- When you set the frame property, it will update the left, top, height,
1021
- and width CSS attributes on the element. Since the height and width in
1022
- the frame rect includes borders and padding, the view will automatically
1023
- adjust the height and width CSS it sets to account for this.
1024
-
1025
- If you would prefer to edit the CSS attributes for the frame directly
1026
- instead, you can do so by using the styleTop, styleLeft, styleRight,
1027
- styleBottom, styleWidth, and styleHeight properties on the view. These
1028
- properties will update the CSS attributes and call viewFrameDidChange()/
1029
- viewFrameWillChange().
1030
-
1031
- @field
1032
- */
1033
- frame: function(key, value) {
1034
-
1035
- // if value was passed, set the values in the style
1036
- // now update the frame if needed. Only actually change the style for
1037
- // those parts of the frame that were passed in.
1038
- if (value !== undefined) {
1039
-
1040
- this.viewFrameWillChange() ;
1041
-
1042
- var f= value ;
1043
- var style = {} ;
1044
- var didResize = false ;
1045
-
1046
- // collect required info
1047
- // reposition X
1048
- if (value.x !== undefined) {
1049
- style.left = Math.floor(f.x) + 'px' ;
1050
- style.right = 'auto';
1051
- }
1052
-
1053
- // reposition Y
1054
- if (value.y !== undefined) {
1055
- style.top = Math.floor(f.y) + 'px' ;
1056
- style.bottom = 'auto';
1057
- }
1058
-
1059
- // Resize width
1060
- if (value.width !== undefined) {
1061
- didResize = true ;
1062
- var padding = 0 ;
1063
- var idx = SC.View.WIDTH_PADDING_STYLES.length;
1064
- while(--idx >= 0) {
1065
- padding += parseInt(this.getStyle(SC.View.WIDTH_PADDING_STYLES[idx]), 0) || 0;
1066
- }
1067
- var width = Math.floor(f.width) - padding ;
1068
- if (!isNaN(width)) style.width = width.toString() + 'px' ;
1069
- }
1070
-
1071
- // Resize Height
1072
- if (value.height !== undefined) {
1073
- didResize = true ;
1074
- var padding = 0 ;
1075
- var idx = SC.View.HEIGHT_PADDING_STYLES.length;
1076
- while(--idx >= 0) {
1077
- padding += parseInt(this.getStyle(SC.View.HEIGHT_PADDING_STYLES[idx]), 0) || 0;
1078
- }
1079
- var height = Math.floor(f.height) - padding ;
1080
- if(!isNaN(height)) style.height = height.toString() + 'px' ;
1081
- }
1082
-
1083
- // now apply style change and clear the cached frame
1084
- this.setStyle(style) ;
1085
-
1086
- // notify for a resize only.
1087
- this.viewFrameDidChange() ;
1088
- }
1089
-
1090
- // build frame. We can use a cached version but only
1091
- // if layoutMode == SC.MANUAL_MODE
1092
- var f;
1093
- if (this._frame == null) {
1094
- var el = this.rootElement ;
1095
- f = this._collectFrame(function() {
1096
- return {
1097
- x: el.offsetLeft,
1098
- y: el.offsetTop,
1099
- width: el.offsetWidth,
1100
- height: el.offsetHeight
1101
- };
1102
- }) ;
1103
-
1104
- // bizarely for FireFox if your offsetParent has a border, then it can
1105
- // impact the offset
1106
- if (SC.Platform.Firefox) {
1107
- var parent = el.offsetParent ;
1108
- var overflow = (parent) ? Element.getStyle(parent, 'overflow') : 'visible' ;
1109
- if (overflow && overflow !== 'visible') {
1110
- var left = parseInt(Element.getStyle(parent, 'borderLeftWidth'),0) || 0 ;
1111
- var top = parseInt(Element.getStyle(parent, 'borderTopWidth'),0) || 0 ;
1112
- f.x += left; f.y += top ;
1113
- }
1114
- }
1115
-
1116
- // cache this frame if using manual layout mode
1117
- this._frame = SC.cloneRect(f);
1118
- } else f = SC.cloneRect(this._frame) ;
1119
-
1120
- // finally return the frame.
1121
- return f ;
1122
- }.property(),
1123
-
1124
- /**
1125
- The current frame size.
1126
-
1127
- This property will actually return the same value as the frame property,
1128
- however setting this property will set only the frame size and ignore any
1129
- origin you might pass.
1130
-
1131
- @field
1132
- */
1133
- size: function(key, value) {
1134
- if (value !== undefined) {
1135
- this.set('frame',{ width: value.width, height: value.height }) ;
1136
- }
1137
- return this.get('frame') ;
1138
- }.property('frame'),
1139
-
1140
- /**
1141
- The current frame origin.
1142
-
1143
- This property will actually return the same value as the frame property,
1144
- however setting this property will set only the frame origin and ignore
1145
- any size you might pass.
1146
-
1147
- @field
1148
- */
1149
- origin: function(key, value) {
1150
- if (value !== undefined) {
1151
- this.set('frame',{ x: value.x, y: value.y }) ;
1152
- }
1153
- return this.get('frame') ;
1154
- }.property('frame'),
1155
-
1156
- /**
1157
- Call this method before you make a change that will impact the frame of
1158
- the view such as changing the border thickness or adding/removing a CSS
1159
- style.
1160
-
1161
- Once you finish making your changes, be sure to call viewFrameDidChange()
1162
- as well. This will deliver any relevant resizing and other notifications.
1163
- It is safe to nest multiple calls to this method.
1164
-
1165
- This method is called automatically anytime you set the frame.
1166
-
1167
- @returns {void}
1168
- */
1169
- viewFrameWillChange: function() {
1170
- if (this._frameChangeLevel++ <= 0) {
1171
- this._frameChangeLevel = 1 ;
1172
-
1173
- // save frame information if view has manual layout.
1174
- if (this.get('needsFrameChanges')) {
1175
- this._cachedFrames = this.getEach('innerFrame', 'clippingFrame', 'frame') ;
1176
- } else this._cachedFrames = null ;
1177
- this.beginPropertyChanges(); // suspend change notifications
1178
- }
1179
- },
1180
-
1181
- /**
1182
- Call this method just after you finish making changes that will impace the
1183
- frame of the view such as changing the border thickness or adding/removing
1184
- a CSS style.
1185
-
1186
- It is safe to next multiple calls to this method. This method is called
1187
- automatically anytime you set the frame.
1188
-
1189
- @returns {void}
1190
- */
1191
- viewFrameDidChange: function(force) {
1192
-
1193
- // clear the frame caches
1194
- this.recacheFrames() ;
1195
-
1196
- // if this is a top-level call then also deliver notifications as needed.
1197
- if (--this._frameChangeLevel <= 0) {
1198
- this._frameChangeLevel = 0 ;
1199
- if (this._cachedFrames) {
1200
- var newFrames = this.getEach('innerFrame', 'clippingFrame') ;
1201
-
1202
- // notify if clippingFrame has changed and clippingFrameDidChange is
1203
- // implemented.
1204
- var nf = newFrames[1]; var of = this._cachedFrames[1] ;
1205
- if (force || (nf.width != of.width) || (nf.height != of.height)) {
1206
- this._invalidateClippingFrame() ;
1207
- }
1208
-
1209
- // notify children if the size of the innerFrame has changed.
1210
- var nf = newFrames[0]; var of = this._cachedFrames[0] ;
1211
- if (force || (nf.width != of.width) || (nf.height != of.height)) {
1212
- this.resizeChildrenWithOldSize(this._cachedFrames.last()) ;
1213
- }
1214
-
1215
- // clear parent scrollFrame if needed
1216
- var parent = this.parentNode ;
1217
- while (parent && parent != SC.window) {
1218
- if (parent._scrollFrame) parent._scrollFrame = null ;
1219
- parent = parent.parentNode ;
1220
- }
1221
-
1222
- this.notifyPropertyChange('frame') ; // trigger notifications.
1223
- }
1224
-
1225
- // allow notifications again
1226
- this.endPropertyChanges() ;
1227
- }
1228
- },
1229
-
1230
-
1231
- /**
1232
- Clears any cached frames so the next get will recompute them.
1233
-
1234
- This method does not notify any observers of changes to the frames. It
1235
- should only be used when you need to make sure your frame info is up to
1236
- date but you do not expect anything to have happened that frame observers
1237
- would be interested in.
1238
- */
1239
- recacheFrames: function() {
1240
- this._innerFrame = this._frame = this._clippingFrame = this._scrollFrame = null ;
1241
- },
1242
-
1243
- /**
1244
- Set to true if you expect this view to have scrollable content.
1245
-
1246
- Normally views do not monitor their onscroll event. If you set this
1247
- property to true, however, the view will observe its onscroll event and
1248
- update its scrollFrame and clippedFrame.
1249
-
1250
- This will also register the view as a scrollable area that can be
1251
- auto-scrolled during a drag/drop event.
1252
- */
1253
- isScrollable: false,
1254
-
1255
- /**
1256
- The frame used to control scrolling of content.
1257
-
1258
- x,y => offset from the innerFrame root.
1259
- width,height => total size of the frame
1260
-
1261
- If the frame does not have scrollable content, then the size will be equal
1262
- to the innerFrame size.
1263
-
1264
- This frame changes when:
1265
- - the receiver's innerFrame changes
1266
- - the scroll location is changed programatically
1267
- - the size of child views changes
1268
- - the user scrolls the view
1269
-
1270
- @field
1271
- */
1272
- scrollFrame: function(key, value) {
1273
-
1274
- // if value was passed, update the scroll x,y only.
1275
- if (value != undefined) {
1276
- var el = this.rootElement ;
1277
- if (value.x != null) el.scrollLeft = 0-value.x ;
1278
- if (value.y != null) el.scrollTop = 0-value.y ;
1279
- this._scrollFrame = null ;
1280
- this._invalidateClippingFrame() ;
1281
- }
1282
-
1283
- // build frame. We can use a cached version but only
1284
- var f;
1285
- if (this._scrollFrame == null) {
1286
- var el = this.rootElement ;
1287
- var func;
1288
- if (SC.isIE()) {
1289
- func = function() {
1290
- var borderTopWidth = 0;
1291
- var borderBottomWidth = 0;
1292
- var borderLeftWidth = 0;
1293
- var borderRightWidth = 0;
1294
-
1295
- var overflow = el.currentStyle.overflow;
1296
- if ( overflow != 'hidden' && overflow != 'auto' ) {
1297
- borderTopWidth = parseInt(el.currentStyle.borderTopWidth, 0) || 0 ;
1298
- borderBottomWidth = parseInt(el.currentStyle.borderBottomWidth, 0) || 0 ;
1299
- borderLeftWidth = parseInt(el.currentStyle.borderLeftWidth, 0) || 0 ;
1300
- borderRightWidth = parseInt(el.currentStyle.borderRightWidth, 0) || 0 ;
1301
- }
1302
- return {
1303
- x: 0 - el.scrollLeft,
1304
- y: 0 - el.scrollTop,
1305
- width: el.scrollWidth + borderLeftWidth + borderRightWidth,
1306
- height: Math.max(el.scrollHeight, el.clientHeight) + borderTopWidth + borderBottomWidth
1307
- };
1308
- };
1309
- }
1310
- else {
1311
- func = function() {
1312
- return {
1313
- x: 0 - el.scrollLeft,
1314
- y: 0 - el.scrollTop,
1315
- width: el.scrollWidth,
1316
- height: el.scrollHeight
1317
- };
1318
- };
1319
- }
1320
- f = this._collectFrame(func);
1321
-
1322
- // cache this frame if using manual layout mode
1323
- this._scrollFrame = SC.cloneRect(f);
1324
- } else f = SC.cloneRect(this._scrollFrame) ;
1325
-
1326
- // finally return the frame.
1327
- return f ;
1328
- }.property('frame'),
1329
-
1330
- /**
1331
- The visible portion of the view.
1332
-
1333
- Returns the subset of the receivers frame that is actually visible on
1334
- screen. This frame is automatically updated whenever one of the following
1335
- changes:
1336
-
1337
- - A parent view is resized
1338
- - A parent view's scrollFrame changes.
1339
- - The receiver is moved or resized
1340
- - The receiver or a parent view is added to or removed from the window.
1341
-
1342
- @field
1343
- */
1344
- clippingFrame: function() {
1345
- var f ;
1346
- if (this._clippingFrame == null) {
1347
-
1348
- //if (this instanceof SC.SplitView) debugger ;
1349
-
1350
- // my clipping frame is usually my frame
1351
- f = this.get('frame') ;
1352
-
1353
- // scope to my parents clipping frame.
1354
- if (this.parentNode) {
1355
-
1356
- // use only the visible portion of the parent's innerFrame.
1357
- var parent = this.parentNode ;
1358
- var prect = SC.intersectRects(parent.get('clippingFrame'), parent.get('innerFrame'));
1359
-
1360
- // convert the local view's coordinates
1361
- prect = this.convertFrameFromView(prect, parent) ;
1362
-
1363
- // if parent is scrollable, then adjust by scroll frame also.
1364
- if (this.parentNode.get('isScrollable')) {
1365
- var scrollFrame = this.get('scrollFrame') ;
1366
- prect.x -= scrollFrame.x ;
1367
- prect.y -= scrollFrame.y ;
1368
- }
1369
-
1370
- // blend with current frame
1371
- f = SC.intersectRects(f, prect) ;
1372
- } else {
1373
- f.width = f.height = 0 ;
1374
- }
1375
-
1376
- this._clippingFrame = SC.cloneRect(f) ;
1377
-
1378
- } else f = SC.cloneRect(this._clippingFrame) ;
1379
- return f ;
1380
- }.property('frame', 'scrollFrame'),
1381
-
1382
- /**
1383
- Called whenever the receivers clippingFrame has changed. You can override
1384
- this method to perform partial rendering or other clippingFrame-dependent
1385
- actions.
1386
-
1387
- The default implementation does nothing (and may not even be called do to
1388
- optimizations). Note that this is the preferred way to respond to changes
1389
- in the clippingFrame of using an observer since this method is gauranteed
1390
- to happen in the correct order. You can use observers and bindings as
1391
- well if you wish to handle anything that need not be handled
1392
- synchronously.
1393
- */
1394
- clippingFrameDidChange: function() {
1395
-
1396
- },
1397
-
1398
- /**
1399
- Called whenever the view's innerFrame size changes. You can override this
1400
- method to perform your own layout of your child views.
1401
-
1402
- If you do not override this method, the view will assume you are using
1403
- CSS to layout your child views. As an optimization the view may not
1404
- always call this method if it determines that you have not overridden it.
1405
-
1406
- This default version simply calls resizeWithOldParentSize() on all of its
1407
- children.
1408
-
1409
- @param oldSize {Size} The old frame size of the view.
1410
- @returns {void}
1411
- */
1412
- resizeChildrenWithOldSize: function(oldSize) {
1413
- var child = this.get('firstChild') ;
1414
- while(child) {
1415
- child.resizeWithOldParentSize(oldSize) ;
1416
- child = child.get('nextSibling') ;
1417
- }
1418
- },
1419
-
1420
- /**
1421
- Called whenever the parent's innerFrame size has changed. You can
1422
- override this method to change how your view responds to this change.
1423
-
1424
- If you do not override this method, the view will assume you are using CSS
1425
- to control your layout and it will simply relay the change information to
1426
- your child views. As an optmization, the view may not always call this
1427
- method if it determines that you have not overridden it.
1428
-
1429
- @param oldSize {Size} The old frame size of the parent view.
1430
- */
1431
- resizeWithOldParentSize: function(oldSize) {
1432
- this.viewFrameWillChange() ;
1433
- this.viewFrameDidChange(YES) ;
1434
- },
1435
-
1436
- /** @private
1437
- Handler for the onscroll event. Hooked in on init if isScrollable is
1438
- true. Notify children that their clipping frame has changed.
1439
- */
1440
- _onscroll: function() {
1441
- this._scrollFrame = null ;
1442
- this.notifyPropertyChange('scrollFrame') ;
1443
- SC.Benchmark.start('%@.onscroll'.fmt(this)) ;
1444
- this._invalidateClippingFrame() ;
1445
- SC.Benchmark.end('%@.onscroll'.fmt(this)) ;
1446
- },
1447
-
1448
- _frameChangeLevel: 0,
1449
-
1450
- /** @private
1451
- Used internally to collect client offset and location info. If the
1452
- element is not in the main window or hidden, it will be added temporarily
1453
- and then the passed function will be called.
1454
- */
1455
- _collectFrame: function(func) {
1456
- var el = this.rootElement ;
1457
-
1458
- // if not visible in window, move parent node into window and get
1459
- // dim and offset. If the element has no parentNode, then just move
1460
- // the element in.
1461
- var isVisibleInWindow = this.get('isVisibleInWindow') ;
1462
- if (!isVisibleInWindow) {
1463
- var pn = el.parentNode || el ;
1464
- if (pn === SC.window.rootElement) pn = el ;
1465
-
1466
- var pnParent = pn.parentNode ; // cache former parent node
1467
- var pnSib = pn.nextSibling ; // cache next sibling
1468
- SC.window.rootElement.insertBefore(pn, null) ;
1469
- }
1470
-
1471
- // if view is not displayed, temporarily display it also
1472
- var display = this.getStyle('display') ;
1473
- var isHidden = !(display != 'none' && display != null) ;
1474
-
1475
- // All *Width and *Height properties give 0 on elements with display none,
1476
- // so enable the element temporarily
1477
- if (isHidden) {
1478
- var els = this.rootElement.style;
1479
- var originalVisibility = els.visibility;
1480
- var originalPosition = els.position;
1481
- var originalDisplay = els.display;
1482
- els.visibility = 'hidden';
1483
- els.position = 'absolute';
1484
- els.display = 'block';
1485
- }
1486
-
1487
- var ret = func.call(this) ;
1488
-
1489
- if (isHidden) {
1490
- els.display = originalDisplay;
1491
- els.position = originalPosition;
1492
- els.visibility = originalVisibility;
1493
- }
1494
-
1495
- if (!isVisibleInWindow) {
1496
- if (pnParent) {
1497
- pnParent.insertBefore(pn, pnSib) ;
1498
- } else {
1499
- if(pn.parentNode)
1500
- SC.window.rootElement.removeChild(pn) ;
1501
- }
1502
- }
1503
-
1504
- return ret;
1505
- },
1506
-
1507
- /** @private
1508
- Called whenever some aspect of the receiver's frames have changed that
1509
- probably has invalidated the child views clippingFrames. Events that cause
1510
- this include:
1511
-
1512
- - change to the innerFrame size
1513
- - change to the scrollFrame
1514
- - change to the clippingFrame
1515
-
1516
- For performance reasons, this only passes onto children if they or a decendent
1517
- implements the clippingFrameDidChange method.
1518
- */
1519
- _invalidateChildrenClippingFrames: function() {
1520
- var view = this.get('firstChild') ;
1521
- while(view) {
1522
- view._invalidateClippingFrame() ;
1523
- view = view.get('nextSibling') ;
1524
- }
1525
- },
1526
-
1527
- /** @private
1528
- Called by a parentNode whenever the clippingFrame needs to be recalculated.
1529
- */
1530
- _invalidateClippingFrame: function() {
1531
- if (this.get('needsClippingFrame')) {
1532
- this._clippingFrame = null ;
1533
- this.clippingFrameDidChange() ;
1534
- this.notifyPropertyChange('clippingFrame') ;
1535
- this._invalidateChildrenClippingFrames() ;
1536
- }
1537
- },
1538
-
1539
- // ..........................................
1540
- // PROPERTIES
1541
- //
1542
-
1543
- /**
1544
- Used to show or hide the view.
1545
-
1546
- If this property is set to NO, then the DOM element will be hidden using
1547
- display:none. You will often want to bind this property to some setting
1548
- in your application to make various parts of your app visible as needed.
1549
-
1550
- If you have animation enabled, then changing this property will actually
1551
- trigger the animation to bring the view in or out.
1552
-
1553
- The default binding format is SC.Binding.Bool
1554
-
1555
- @field
1556
- @type {Boolean}
1557
- */
1558
- isVisible: true,
1559
-
1560
- /** @private */
1561
- isVisibleBindingDefault: SC.Binding.Bool,
1562
-
1563
- /**
1564
- (Read Only) The current display visibility of the view.
1565
-
1566
- Usually, this property will mirror the current state of the isVisible
1567
- property. However, if your view animates its visibility in and out, then
1568
- this will not become false until the animation completes.
1569
-
1570
- @type {Boolean}
1571
- */
1572
- displayIsVisible: true,
1573
-
1574
- /**
1575
- true when the view is actually visible in the DOM window.
1576
-
1577
- This property is set to true only when the view is (a) in the main DOM
1578
- hierarchy and (b) all parent nodes are visible and (c) the receiver node
1579
- is visible.
1580
-
1581
- @type {Boolean}
1582
- @field
1583
- */
1584
- isVisibleInWindow: NO,
1585
-
1586
- /**
1587
- If true, the tooltip will be localized. Also used by some subclasses.
1588
-
1589
- @type {Boolean}
1590
- @field
1591
- */
1592
- localize: false,
1593
-
1594
- /**
1595
- Applied to the title attribute of the rootElement DOM if set.
1596
-
1597
- If localize is true, then the toolTip will be localized first.
1598
-
1599
- @type {String}
1600
- @field
1601
- */
1602
- toolTip: '',
1603
-
1604
-
1605
- /**
1606
- The HTML you want to use when creating a new element.
1607
-
1608
- You can specify the HTML as a string of text, using the NodeDescriptor, or
1609
- by pointing directly to an element.
1610
-
1611
- Note that as an optimization, SC.View will actually convert the value of
1612
- this property to an actual DOM structure the first time you create a view
1613
- and then clone the DOM structure for future views.
1614
-
1615
- This means that in general you should only set the value of emptyElement
1616
- when you create a view subclass. Changing this property value at other
1617
- times will often have no effect.
1618
-
1619
- @field
1620
- @type {String}
1621
- */
1622
- emptyElement: "<div></div>",
1623
-
1624
- /**
1625
- If true, view will display in a lightbox when you show it.
1626
-
1627
- @field
1628
- @type {Boolean}
1629
- */
1630
- isPanel: false,
1631
-
1632
- /**
1633
- If true, the view should be modal when shown as a panel.
1634
-
1635
- @field
1636
- @type {Boolean}
1637
- */
1638
- isModal: true,
1639
-
1640
- /**
1641
- Enable visible animation by default.
1642
- */
1643
- isAnimationEnabled: true,
1644
-
1645
- /**
1646
- General support for animation. Just call this method and it will build
1647
- and play an animation starting from the current state. The second param
1648
- is optional. It should either be a hash of animator options or an
1649
- animator object returned by a previous call to transitionTo().
1650
-
1651
- */
1652
- transitionTo: function(target,animator,opts) {
1653
- var animatorOptions = opts || {} ;
1654
-
1655
- // Create or reset the animator.
1656
- if (animator && !animator._isAnimator) {
1657
- var finalStyle = animator ;
1658
- if (!this.get("isAnimationEnabled")) {
1659
- animatorOptions = Object.clone(animatorOptions) ;
1660
- animatorOptions.duration = 1;
1661
- }
1662
- if (animatorOptions.duration) {
1663
- animatorOptions.duration = parseInt(animatorOptions.duration,0) ;
1664
- }
1665
-
1666
- animator = Animator.apply(this.rootElement, finalStyle, animatorOptions);
1667
- animator._isAnimator = true ;
1668
- }
1669
-
1670
- // trigger animation
1671
- if (animator) {
1672
- animator.jumpTo(animator.state) ;
1673
- animator.seekTo(target) ;
1674
- }
1675
- return animator ;
1676
- },
1677
-
1678
- /**
1679
- The contents of the view as HTML. You can use this property to both
1680
- retrieve the content and to change it. Use this property instead of
1681
- manually changing the content of your view as this property works around
1682
- certain cross-browser bugs.
1683
-
1684
- @field
1685
- */
1686
- innerHTML: function(key, value) {
1687
- if (value !== undefined) {
1688
-
1689
- // Clear the text node.
1690
- this._textNode = null ;
1691
-
1692
- // Safari2 has a bad habit of sometimes not actually changing its
1693
- // innerHTML. This will make sure the innerHTML get's changed properly.
1694
- if (SC.isSafari() && !SC.isSafari3()) {
1695
- var el = (this.containerElement || this.rootElement) ; var reps = 0 ;
1696
- var f = function() {
1697
- el.innerHTML = '' ; el.innerHTML = value ;
1698
- if ((reps++ < 5) && (value.length>0) && (el.innerHTML == '')) {
1699
- f.invokeLater() ;
1700
- }
1701
- };
1702
- f();
1703
- } else (this.containerElement || this.rootElement).innerHTML = value;
1704
- } else value = (this.containerElement || this.rootElement).innerHTML ;
1705
- return value ;
1706
- }.property(),
1707
-
1708
- /**
1709
- The contents of the view as plain text. You can use this property to
1710
- both retrieve the content and to change it. Use this property instead of
1711
- the innerHTML property when you want to set plain text only as this
1712
- property is much faster.
1713
-
1714
- @field
1715
- */
1716
- innerText: function(key, value) {
1717
- if (value !== undefined) {
1718
- if (value == null) value = '' ;
1719
-
1720
- // add a textNode if necessary
1721
- if (this._textNode == null) {
1722
- this._textNode = document.createTextNode(value) ;
1723
- var el = this.rootElement || this.containerElement ;
1724
- while(el.firstChild) el.removeChild(el.firstChild) ;
1725
- el.appendChild(this._textNode) ;
1726
- } else this._textNode.data = value ;
1727
- }
1728
-
1729
- return (this._textNode) ? this._textNode.data : this.innerHTML().unescapeHTML() ;
1730
-
1731
- }.property(),
1732
-
1733
-
1734
- // ..........................................
1735
- // SUPPORT METHODS
1736
- //
1737
- init: function() {
1738
- arguments.callee.base.call(this) ;
1739
-
1740
- // configure them outlets.
1741
- if (SC.BENCHMARK_CONFIGURE_OUTLETS) SC.Benchmark.start('SC.View.configureOutlets') ;
1742
- this.configureOutlets() ;
1743
- if (SC.BENCHMARK_CONFIGURE_OUTLETS) SC.Benchmark.end('SC.View.configureOutlets') ;
1744
-
1745
- var toolTip = this.get('toolTip') ;
1746
- if(toolTip && (toolTip != '')) this._updateToolTipObserver();
1747
-
1748
- // if container element is a string, convert it to an actual DOM element.
1749
- if (this.containerElement && ($type(this.containerElement) === T_STRING)) {
1750
- this.containerElement = this.$sel(this.containerElement);
1751
- }
1752
-
1753
- // register as a drop target and scrollable.
1754
- if (this.get('isDropTarget')) SC.Drag.addDropTarget(this) ;
1755
- if (this.get('isScrollable')) SC.Drag.addScrollableView(this) ;
1756
-
1757
- // add scrollable handler
1758
- if (this.isScrollable) this.rootElement.onscroll = SC.View._onscroll ;
1759
-
1760
- // setup isVisibleInWindow ;
1761
- this.isVisibleInWindow = (this.parentNode) ? this.parentNode.get('isVisibleInWindow') : NO;
1762
- },
1763
-
1764
- // this method looks through your outlets array and will try to
1765
- // reconfigure any missing ones.
1766
- configureOutlets: function() {
1767
-
1768
- if (!this.outlets || (this.outlets.length <= 0)) return ;
1769
-
1770
- // lookup outlets as selector paths or execute the function if there
1771
- // is one.
1772
- this.beginPropertyChanges(); // bundle changes
1773
- for(var oloc=0;oloc < this.outlets.length;oloc++) {
1774
- var view = this.outlet(this.outlets[oloc]) ;
1775
- }
1776
- this.endPropertyChanges() ;
1777
- },
1778
-
1779
- // ..........................................
1780
- // VISIBILITY METHODS
1781
- //
1782
-
1783
- // Calling this method will show the view. Don't call this method
1784
- // directly but instead set the isVisible property to true. You can
1785
- // override this method to provide your own show capabilities.
1786
- show: function() {
1787
- Element.show(this.rootElement) ;
1788
- this.removeClassName('hidden') ;
1789
- this.set('displayIsVisible',true) ;
1790
- },
1791
-
1792
- // This is the primitive method for hiding a view. It will be called when
1793
- // isVisible is set to false after an animation runs or immediate if no
1794
- // animation is defined.
1795
- hide: function() {
1796
- Element.hide(this.rootElement) ;
1797
- this.addClassName('hidden') ;
1798
- this.set('displayIsVisible', false) ;
1799
- },
1800
-
1801
- // ..........................................
1802
- // DEPRECATED. DO NOT USE
1803
- //
1804
-
1805
- // deprecated. Included only for compatibility.
1806
- animateVisible: function(key, value) {
1807
- if (value !== undefined) return this.set('isAnimationEnabled',value) ;
1808
- return this.get('isAnimationEnabled');
1809
- }.property('isAnimationEnabled'),
1810
-
1811
-
1812
- // ..........................................
1813
- // PRIVATE METHODS
1814
- //
1815
-
1816
- // this will set the rootElement, cleaning up any old element.
1817
- _attachRootElement: function(el) {
1818
- if (this.rootElement) this.rootElement._configured = null ;
1819
- this.rootElement = el ;
1820
- el._configured = this._guid ;
1821
- },
1822
-
1823
- // This method is called internally after you add or remove a child view.
1824
- // It will rebuild the childNodes array to reflect all children.
1825
- _rebuildChildNodes: function() {
1826
- var ret = [] ; var view = this.firstChild;
1827
- while(view) { ret.push(view); view = view.nextSibling; }
1828
- this.set('childNodes', ret) ;
1829
- },
1830
-
1831
- _toolTipObserver: function() {
1832
- var toolTip = this.get('toolTip') ;
1833
- if (this.get('localize')) toolTip = toolTip.loc() ;
1834
- this.rootElement.title = toolTip ;
1835
- }.observes("toolTip"),
1836
-
1837
- _isVisibleObserver: function() {
1838
- var flag = this.get('isVisible') ;
1839
- if ((this._isVisible === undefined) || (flag != this._isVisible)) {
1840
- this._isVisible = flag ;
1841
- if (flag) {
1842
- this._show() ;
1843
- } else this._hide() ;
1844
-
1845
- // update parent state.
1846
- this._updateIsVisibleInWindow() ;
1847
- }
1848
- }.observes('isVisible'),
1849
-
1850
- _updateIsVisibleInWindow: function(parentNodeState) {
1851
- if (parentNodeState === undefined) {
1852
- var parentNode = this.get('parentNode') ;
1853
- parentNodeState = (parentNode) ? parentNode.get('isVisibleInWindow') : false ;
1854
- }
1855
-
1856
- var visible = parentNodeState && this.get('isVisible') ;
1857
-
1858
- // if state changes, update and notify children.
1859
- if (visible != this.get('isVisibleInWindow')) {
1860
- this.set('isVisibleInWindow', visible) ;
1861
- this.recacheFrames() ;
1862
- var child = this.get('firstChild') ;
1863
- while(child) {
1864
- child._updateIsVisibleInWindow(visible) ;
1865
- child = child.get('nextSibling') ;
1866
- }
1867
- }
1868
- },
1869
-
1870
- // Calling this method will show the view. Don't call this method
1871
- // directly but instead set the isVisible property to true. You can
1872
- // override this method to provide your own show capabilities.
1873
- _show: function(anchorView, triggerEvent) {
1874
- // compatibility
1875
- if (this.showView) return this.showView() ;
1876
-
1877
- // if this is a type of pane, call the pane manager.
1878
- var paneType = this.get('paneType') ;
1879
- if (this.get('isPanel')) paneType = SC.PANEL_PANE; // compatibility
1880
- if (paneType) {
1881
- if (anchorView === undefined) anchorView = null ;
1882
- if (triggerEvent === undefined) triggerEvent = null ;
1883
- SC.PaneManager.manager().showPaneView(this, paneType, anchorView, triggerEvent) ;
1884
- this.set('displayIsVisible', true) ;
1885
-
1886
- // if an animation is defined and animations are configured, use that.
1887
- // the displayIsVisible property will be set to true when the animation
1888
- // completes.
1889
- } else if (this.visibleAnimation && this.get('isAnimationEnabled')) {
1890
- this._transitionVisibleTo(1.0) ;
1891
-
1892
- // at this point the animation has been reset to the beginng. Run the
1893
- // core show() method immediately so the animation will be visible.
1894
- this.show() ;
1895
-
1896
- // otherwise, just change over visible settings.
1897
- } else {
1898
- this._visibleAnimator = null ;
1899
- this.show() ;
1900
- }
1901
-
1902
- return this ;
1903
- },
1904
-
1905
- _hide: function() {
1906
- // compatibility
1907
- if (this.hideView) return this.hideView() ;
1908
-
1909
- // if this is a type of pane, call the pane manager.
1910
- var isPane = (!!this.get('paneType')) || this.get('isPanel') ;
1911
- if (isPane) {
1912
- SC.PaneManager.manager().hidePaneView(this) ;
1913
- this.set('displayIsVisible', false) ;
1914
-
1915
- // if an animation is defined and animations are configured, use that.
1916
- // the displayIsVisible property will be set to false when the animation
1917
- // completes.
1918
- } else if (this.visibleAnimation && this.get('isAnimationEnabled')) {
1919
- this._transitionVisibleTo(0.0) ;
1920
-
1921
- // otherwise, just change over visible settings.
1922
- } else {
1923
- this._visibleAnimator = null;
1924
- this.hide();
1925
- }
1926
-
1927
- return this ;
1928
- },
1929
-
1930
-
1931
- _transitionVisibleTo: function(target) {
1932
- var a ;
1933
-
1934
- // if an animator already exists, just transition to the new state.
1935
- if (this._visibleAnimator) {
1936
- this.transitionTo(target,this._visibleAnimator);
1937
-
1938
- // otherwise, build the animator from the options passed. Patch in our
1939
- // own onComplete handler.
1940
- } else {
1941
- var opts = this.visibleAnimation ;
1942
- var style = [opts.hidden,opts.visible] ;
1943
- opts.onComplete =
1944
- this._animateVisibleDidComplete.bind(this,opts.onComplete) ;
1945
- this._visibleAnimator = this.transitionTo(target,style,opts);
1946
- }
1947
- },
1948
-
1949
- // This is called when the animation completes. Finish cleaning up the
1950
- // visibility section.
1951
- _animateVisibleDidComplete: function(chainFunc) {
1952
- if (!this.get('isVisible')) this.hide() ;
1953
- if (chainFunc) chainFunc(this) ;
1954
- },
1955
-
1956
- _firstResponderObserver: function(target, key, value) {
1957
- this.setClassName('focus',value) ;
1958
- }.observes('isFirstResponder'),
1959
-
1960
- _dropTargetObserver: function() {
1961
- if (this.get('isDropTarget')) {
1962
- SC.Drag.addDropTarget(this) ;
1963
- } else SC.Drag.removeDropTarget(this) ;
1964
- }.observes('isDropTarget'),
1965
-
1966
- // .............................................
1967
- // SPECIAL TYPES OF VIEWS
1968
- //
1969
-
1970
- // This will show the pane as a popup or picker (depending on the paneType
1971
- // you have set.) This works just like setting isVisible to true, except
1972
- // that it also passes the anchorView and triggerEvent you pass in.
1973
- popup: function(anchorView, triggerEvent) {
1974
-
1975
- // this will bypass the normal observer machinery, calling the private
1976
- // _show method ourselves. To avoid triggering _show twice, we patch up
1977
- // the internal _isVisible property.
1978
- this._isVisible = true ;
1979
- this._show(anchorView, triggerEvent) ;
1980
- this.set('isVisible', true);
1981
- },
1982
-
1983
- // This can be used to manually add observers to the rootElement for the
1984
- // methods in the passed map. You generally don't want to do this since we
1985
- // handle event propgation through the responder chain.
1986
- configureObserverMethods: function(methodMap) {
1987
- for(var name in methodMap) {
1988
- if (!methodMap.hasOwnProperty(name)) continue ;
1989
- if (this[name]) {
1990
- var method = this[name].bindAsEventListener(this);
1991
- Event.observe(this.rootElement,methodMap[name],method) ;
1992
- }
1993
- }
1994
- }//,
1995
-
1996
- // toString: function() {
1997
- // var el = this.rootElement ;
1998
- // var tagName = (!!el.tagName) ? el.tagName.toLowerCase() : 'document' ;
1999
- //
2000
- // var className = el.className ;
2001
- // className = (className && className.length>0) ? 'class=%@'.fmt(className) : null;
2002
- //
2003
- // var idName = el.id ;
2004
- // idName = (idName && idName.length>0) ? 'id=%@'.fmt(idName) : null;
2005
- //
2006
- // return "%@:%@<%@>".fmt(this._type, this._guid, [tagName,idName, className].compact().join(' ')) ;
2007
- // }
2008
-
2009
- }) ;
2010
-
2011
- // Class Methods
2012
- SC.View.mixin({
2013
-
2014
- // this is the global registry of views. It's used to map elements back
2015
- // to the views that own them.
2016
- _view: {},
2017
-
2018
- findViewForElement: function(el) {
2019
- var guid = el._configured ;
2020
- return (guid) ? SC.View._view[guid] : null ;
2021
- },
2022
-
2023
- // ..........................................
2024
- // SETUP
2025
- //
2026
- // This works much like create except that it works on the passed in
2027
- // element instead of trying to find something new. If you pass null for
2028
- // the first parameter, then a new element will be created with the html
2029
- // you set in content.
2030
- viewFor: function(el,config) {
2031
- if (el) el = $(el) ;
2032
-
2033
- var r = SC.idt.active ; var vStart ;
2034
- if (r) SC.idt.v_count++;
2035
-
2036
- if (r) vStart = new Date().getTime() ;
2037
-
2038
- // find or build the element.
2039
- if (!el) {
2040
- var emptyElement = this.prototype._cachedEmptyElement || this.prototype.emptyElement;
2041
-
2042
- // if the emptyElement is a string not starting with '<', treat it like
2043
- // an id and find it in the doc. If an element is found, cache it for
2044
- // future use.
2045
- var isString = typeof(emptyElement) == 'string' ;
2046
- if (isString && (emptyElement.slice(0,1) != '<')) {
2047
- var el = $sel(emptyElement) ;
2048
- if (el) {
2049
- this.prototype.emptyElement = emptyElement = el ;
2050
- isString = false ;
2051
- }
2052
- }
2053
-
2054
- // if still a string, then use it to create HTML. Save the generated
2055
- // element so that we can avoid doing this over again.
2056
- if (isString) {
2057
- SC._ViewCreator.innerHTML = emptyElement ;
2058
- el = $(SC._ViewCreator.firstChild) ;
2059
- SC.NodeCache.appendChild(el) ;
2060
- this.prototype._cachedEmptyElement = el.cloneNode(true) ;
2061
-
2062
- } else if (typeof(emptyElement) == "object") {
2063
- if (emptyElement.tagName) {
2064
- el = emptyElement.cloneNode(true) ;
2065
- } else el = SC.NodeDescriptor.create(emptyElement) ;
2066
- }
2067
- }
2068
- if (r) SC.idt.vc_t += (new Date().getTime()) - vStart ;
2069
-
2070
- // configure only once.
2071
- if (el && el._configured) return SC.View.findViewForElement(el);
2072
-
2073
- // Now that we have found an element, instantiate the view.
2074
- var args = SC.$A(arguments) ; args[0] = { rootElement: el } ;
2075
- if (r) vStart = new Date().getTime();
2076
- var ret = new this(args,this) ; // create instance.
2077
- if (r) SC.idt.v_t += (new Date().getTime()) - vStart;
2078
- el._configured = ret._guid ;
2079
-
2080
- // return the view.
2081
- SC.View._view[ret._guid] = ret ;
2082
- return ret ;
2083
- },
2084
-
2085
- // create in the view work is like viewFor but with 'null' for el
2086
- create: function(configs) {
2087
- var args = SC.$A(arguments) ;
2088
- args.unshift(null) ;
2089
- return this.viewFor.apply(this,args) ;
2090
- },
2091
-
2092
- // extend works just like a normal extend except that we need to delete the cached empty
2093
- // element.
2094
- extend: function(configs) {
2095
- var ret = SC.Object.extend.apply(this, arguments) ;
2096
- ret.prototype._cachedEmptyElement = null ;
2097
- return ret ;
2098
- },
2099
-
2100
- /**
2101
- Defines a view as an outlet. This will return an function that
2102
- can be executed at a later time to actually create itself as an outlet.
2103
- */
2104
- outletFor: function(path) {
2105
- var viewClass = this ; // save the view class
2106
- var func = function() {
2107
- if (SC.BENCHMARK_OUTLETS) SC.Benchmark.start("OUTLET(%@)".format(path)) ;
2108
-
2109
- // if no path was passed, then create the view from scratch
2110
- if (path == null) {
2111
- var ret = viewClass.viewFor(null) ;
2112
-
2113
- // otherwise, try to find the HTML element identified by the path.
2114
- // If the element cannot be found in the caller (the owner view), then
2115
- // search the entire document.
2116
- } else {
2117
- var ret = (this.$$sel) ? this.$$sel(path) : $$sel(path) ;
2118
-
2119
- // if some HTML has been found, then loop through and create views for each
2120
- // one. Be sure to setup the proper parent view.
2121
- if (ret) {
2122
- var owner = this ; var views = [] ;
2123
- for(var loc=0;loc<ret.length;loc++) {
2124
-
2125
- // create the new view instance
2126
- var view = viewClass.viewFor(ret[loc], { owner: owner }) ;
2127
-
2128
- // if successful, then we need to determine the new parentNode.
2129
- // then walk up the DOM tree to find the first parent element
2130
- // managed by a view (including this).
2131
- //
2132
- // If a matching view is not found, but the view IS in a DOM
2133
- // somewhere then make the view a child of either SC.page or
2134
- // SC.window.
2135
- //
2136
- // Add the view to the list of child views also.
2137
- //
2138
- if (view && view.rootElement && view.rootElement.parentNode) {
2139
- var node = view.rootElement.parentNode;
2140
- var parentView = null ;
2141
-
2142
- // go up the chain. stop when we find a parent view, or the rootElement
2143
- // for SC.page.
2144
- while(node && !parentView) {
2145
- switch(node) {
2146
- case this.rootElement:
2147
- parentView = this;
2148
- break ;
2149
- case SC.page.rootElement:
2150
- parentView = SC.page ;
2151
- break;
2152
- case SC.window.rootElement:
2153
- parentView = SC.window ;
2154
- break;
2155
- default:
2156
- node = node.parentNode ;
2157
- }
2158
- }
2159
-
2160
- // if a parentView was found, then add to parentView.
2161
- if (parentView) {
2162
- parentView._insertBefore(view,null,false) ;
2163
- parentView._rebuildChildNodes() ; // this is not done with _insertBefore.
2164
- view._updateIsVisibleInWindow();
2165
- }
2166
-
2167
- // view is not in a DOM. nothing to do.
2168
- }
2169
-
2170
- // add to return array
2171
- views[views.length] = view ;
2172
-
2173
- }
2174
- ret = views ;
2175
- ret = (ret.length == 0) ? null : ((ret.length == 1) ? ret[0] : ret);
2176
- }
2177
-
2178
- }
2179
-
2180
- if (SC.BENCHMARK_OUTLETS) SC.Benchmark.end("OUTLET(%@)".format(path)) ;
2181
- return ret ;
2182
- } ;
2183
- func.isOutlet = true ;
2184
- return func ;
2185
- },
2186
-
2187
- automaticOutletFor: function() {
2188
- var ret = this.outletFor.apply(this, arguments) ;
2189
- ret.autoconfiguredOutlet = YES ;
2190
- return ret ;
2191
- }
2192
-
2193
- }) ;
2194
-
2195
- // IE Specfic Overrides
2196
- if (SC.Platform.IE) {
2197
- SC.View.prototype.getStyle = function(style) {
2198
- var element = this.rootElement ;
2199
-
2200
- // collect value
2201
- style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
2202
- var value = element.style[style];
2203
- if (!value && element.currentStyle) value = element.currentStyle[style];
2204
-
2205
- // handle opacity
2206
- if (style === 'opacity') {
2207
- if (value = (this.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) {
2208
- if (value[1]) value = parseFloat(value[1]) / 100;
2209
- }
2210
- value = 1.0;
2211
- }
2212
-
2213
- // handle auto
2214
- if (value === 'auto') {
2215
- switch(style) {
2216
- case 'width':
2217
- if (this.getStyle('display') === 'none') {
2218
- value = null ;
2219
- } else if (element.currentStyle) {
2220
- var paddingLeft = parseInt(element.currentStyle.paddingLeft,0)||0;
2221
- var paddingRight = parseInt(element.currentStyle.paddingRight,0)||0;
2222
- var borderLeftWidth = parseInt(element.currentStyle.borderLeftWidth, 0) || 0 ;
2223
- var borderRightWidth = parseInt(element.currentStyle.borderRightWidth, 0) || 0 ;
2224
- value = (element.offsetWidth - paddingLeft - paddingRight - borderLeftWidth - borderRightWidth) + 'px' ;
2225
- }
2226
- break ;
2227
- case 'height':
2228
- if (this.getStyle('display') === 'none') {
2229
- value = null ;
2230
- } else if (element.currentStyle) {
2231
- var paddingTop = parseInt(element.currentStyle.paddingTop,0)||0;
2232
- var paddingBottom = parseInt(element.currentStyle.paddingBottom,0)||0;
2233
- var borderTopWidth = parseInt(element.currentStyle.borderTopWidth, 0) || 0 ;
2234
- var borderBottomWidth = parseInt(element.currentStyle.borderBottomWidth, 0) || 0 ;
2235
- value = (element.offsetHeight - paddingTop - paddingBottom - borderTopWidth - borderBottomWidth) + 'px' ;
2236
- }
2237
-
2238
- break ;
2239
- default:
2240
- value = null ;
2241
- }
2242
- }
2243
-
2244
- return value;
2245
- };
2246
-
2247
- // Called from innerFrame to actually collect the values for the innerFrame.
2248
- // Normally the value we want for the width/height is stored in clientWidth/
2249
- // height but in IE this is only good if the element hasLayout. In this
2250
- // case always use the scrollWidth/Height.
2251
- SC.View._collectInnerFrame = function() {
2252
- var el = this.rootElement ;
2253
- var hasLayout = (el.currentStyle) ? el.currentStyle.hasLayout : false ;
2254
- var borderTopWidth = parseInt(el.currentStyle.borderTopWidth, 0) || 0 ;
2255
- var borderBottomWidth = parseInt(el.currentStyle.borderBottomWidth, 0) || 0 ;
2256
- var scrollHeight = el.offsetHeight - borderTopWidth - borderBottomWidth ;
2257
- if (el.clientWidth > el.scrollWidth) scrollHeight - 15 ;
2258
-
2259
- return {
2260
- x: el.offsetLeft,
2261
- y: el.offsetTop,
2262
- width: (hasLayout) ? Math.min(el.scrollWidth, el.clientWidth) : el.scrollWidth,
2263
- height: (hasLayout) ? Math.min(scrollHeight, el.clientHeight) : scrollHeight
2264
- };
2265
- } ;
2266
-
2267
- } else {
2268
-
2269
- // Called from innerFrame to actually collect the values for the innerFrame.
2270
- // This method should return the smaller of the scrollWidth/height (which
2271
- // will be set if the element is scrollable), or the clientWdith/height
2272
- // (which is set if the element is not scrollable).
2273
- SC.View._collectInnerFrame = function() {
2274
- var el = this.rootElement ;
2275
- return {
2276
- x: el.offsetLeft,
2277
- y: el.offsetTop,
2278
- width: Math.min(el.scrollWidth, el.clientWidth),
2279
- height: Math.min(el.scrollHeight, el.clientHeight)
2280
- };
2281
- } ;
2282
- }
2283
-
2284
-
2285
- // this handler goes through the guid to avoid any potential memory leaks
2286
- SC.View._onscroll = function(evt) { $view(this)._onscroll(evt); } ;
2287
-
2288
- SC.View.WIDTH_PADDING_STYLES = ['paddingLeft', 'paddingRight', 'borderLeftWidth', 'borderRightWidth'];
2289
-
2290
- SC.View.HEIGHT_PADDING_STYLES = ['paddingTop', 'paddingBottom', 'borderTopWidth', 'borderBottomWidth'];
2291
-
2292
- SC.View.SCROLL_WIDTH_PADDING_STYLES = ['borderLeftWidth', 'borderRightWidth'];
2293
- SC.View.SCROLL_HEIGHT_PADDING_STYLES = ['borderTopWidth', 'borderBottomWidth'];
2294
-
2295
- SC.View.elementFor = SC.View.viewFor ; // Old Sprout Compatibility.
2296
-
2297
- // This div is used to create nodes. It should normally remain empty.
2298
- SC._ViewCreator = document.createElement('div') ;
2299
-
2300
- // This div can be used to hold elements you don't want on the page right now.
2301
- SC.NodeCache = document.createElement('div') ;