Package not found. Please check the package name and try again.

sproutcore 1.4.5-java → 1.5.0-java

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 (1916) hide show
  1. data/.rspec +1 -0
  2. data/CHANGELOG +126 -0
  3. data/README.txt +25 -0
  4. data/VERSION.yml +2 -2
  5. data/bin/sc-build +1 -1
  6. data/bin/sc-build-number +1 -1
  7. data/bin/sc-docs +1 -1
  8. data/bin/sc-gen +1 -1
  9. data/bin/sc-init +1 -1
  10. data/bin/sc-manifest +1 -1
  11. data/bin/sc-server +1 -1
  12. data/bin/sproutcore +1 -1
  13. data/lib/Buildfile +14 -5
  14. data/lib/buildtasks/build.rake +33 -17
  15. data/lib/buildtasks/manifest.rake +381 -103
  16. data/lib/buildtasks/target.rake +1 -0
  17. data/lib/doc_templates/sproutcore/index.tmpl +18 -4
  18. data/lib/doc_templates/sproutcore/publish.js +1 -1
  19. data/lib/frameworks/sproutcore/Buildfile +36 -33
  20. data/lib/frameworks/sproutcore/CHANGELOG.md +414 -0
  21. data/lib/frameworks/sproutcore/README.md +1 -0
  22. data/lib/frameworks/sproutcore/apps/test_controls/Buildfile +0 -0
  23. data/lib/frameworks/sproutcore/apps/test_controls/controllers/alert.js +39 -0
  24. data/lib/frameworks/sproutcore/apps/test_controls/controllers/buttons.js +21 -0
  25. data/lib/frameworks/sproutcore/apps/test_controls/controllers/categories.js +125 -0
  26. data/lib/frameworks/sproutcore/apps/test_controls/controllers/category.js +36 -0
  27. data/lib/frameworks/sproutcore/apps/test_controls/controllers/split.js +74 -0
  28. data/lib/frameworks/sproutcore/apps/test_controls/core.js +29 -0
  29. data/lib/frameworks/sproutcore/apps/test_controls/main.js +14 -0
  30. data/lib/frameworks/sproutcore/apps/test_controls/resources/buttons_page.js +158 -0
  31. data/lib/frameworks/sproutcore/apps/test_controls/resources/checkboxes_page.js +53 -0
  32. data/lib/frameworks/sproutcore/apps/test_controls/resources/flow_layout_page.js +85 -0
  33. data/lib/frameworks/sproutcore/apps/test_controls/resources/list_page.js +40 -0
  34. data/lib/frameworks/sproutcore/apps/test_controls/resources/loading.rhtml +9 -0
  35. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.css +60 -0
  36. data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +151 -0
  37. data/lib/frameworks/sproutcore/apps/test_controls/resources/panels_page.js +62 -0
  38. data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +33 -0
  39. data/lib/frameworks/sproutcore/apps/test_controls/resources/radio_page.js +55 -0
  40. data/lib/frameworks/sproutcore/apps/test_controls/resources/scroll_page.js +77 -0
  41. data/lib/frameworks/sproutcore/apps/test_controls/resources/segmented_page.js +99 -0
  42. data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +61 -0
  43. data/lib/frameworks/sproutcore/apps/test_controls/resources/sliders_page.js +54 -0
  44. data/lib/frameworks/sproutcore/apps/test_controls/resources/split_page.js +141 -0
  45. data/lib/frameworks/sproutcore/apps/test_controls/resources/strings.js +50 -0
  46. data/lib/frameworks/sproutcore/apps/test_controls/resources/tab_page.js +53 -0
  47. data/lib/frameworks/sproutcore/apps/test_controls/resources/text_field_page.js +65 -0
  48. data/lib/frameworks/sproutcore/apps/test_controls/theme.js +34 -0
  49. data/lib/frameworks/sproutcore/apps/tests/controllers/detail.js +1 -1
  50. data/lib/frameworks/sproutcore/apps/tests/controllers/source.js +1 -1
  51. data/lib/frameworks/sproutcore/apps/tests/controllers/target.js +1 -1
  52. data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
  53. data/lib/frameworks/sproutcore/apps/tests/controllers/tests.js +1 -1
  54. data/lib/frameworks/sproutcore/apps/tests/core.js +1 -1
  55. data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +6 -6
  56. data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +1 -1
  57. data/lib/frameworks/sproutcore/apps/tests/main.js +1 -1
  58. data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
  59. data/lib/frameworks/sproutcore/apps/tests/states/ready.js +1 -1
  60. data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
  61. data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
  62. data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
  63. data/lib/frameworks/sproutcore/apps/tests/states/ready_loading.js +1 -1
  64. data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
  65. data/lib/frameworks/sproutcore/apps/tests/states/start.js +1 -1
  66. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/detail.js +1 -1
  67. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/source.js +1 -1
  68. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/target.js +1 -1
  69. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +1 -1
  70. data/lib/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +1 -1
  71. data/lib/frameworks/sproutcore/apps/tests/tests/models/target.js +1 -1
  72. data/lib/frameworks/sproutcore/apps/tests/tests/models/test.js +1 -1
  73. data/lib/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +1 -1
  74. data/lib/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +1 -1
  75. data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +10 -4
  76. data/lib/frameworks/sproutcore/apps/welcome/core.js +1 -1
  77. data/lib/frameworks/sproutcore/apps/{greenhouse → welcome}/english.lproj/images/main-bg.png +0 -0
  78. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.css +24 -6
  79. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +37 -47
  80. data/lib/frameworks/sproutcore/apps/welcome/english.lproj/strings.js +1 -1
  81. data/lib/frameworks/sproutcore/apps/welcome/main.js +1 -1
  82. data/lib/frameworks/sproutcore/apps/welcome/tests/controllers/targets.js +1 -1
  83. data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_DatastoreDesign.graffle}/QuickLook/Preview.pdf +0 -0
  84. data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_DatastoreDesign.graffle}/QuickLook/Thumbnail.tiff +0 -0
  85. data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_DatastoreDesign.graffle}/data.plist +0 -0
  86. data/lib/frameworks/sproutcore/{apps/docs/design/Doc Viewer.graffle → design/Sproutcore_DatastoreDesign.graffle}/image8.png +0 -0
  87. data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → Sproutcore_Design_Template.graffle}/QuickLook/Preview.pdf +0 -0
  88. data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → Sproutcore_Design_Template.graffle}/QuickLook/Thumbnail.tiff +0 -0
  89. data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → Sproutcore_Design_Template.graffle}/data.plist +0 -0
  90. data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_Design_Template.graffle}/image8.png +0 -0
  91. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/QuickLook/Preview.pdf +0 -0
  92. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/QuickLook/Thumbnail.tiff +0 -0
  93. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/data.plist +0 -0
  94. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image10.png +0 -0
  95. data/lib/frameworks/sproutcore/{apps/docs/design/Doc Viewer.graffle → design/TestRunner_Design.graffle}/image11.png +0 -0
  96. data/lib/frameworks/sproutcore/{apps/docs/design/Doc Viewer.graffle → design/TestRunner_Design.graffle}/image13.png +0 -0
  97. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image15.png +0 -0
  98. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image16.png +0 -0
  99. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image17.png +0 -0
  100. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image18.png +0 -0
  101. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image19.png +0 -0
  102. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image22.tiff +0 -0
  103. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image23.png +0 -0
  104. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image24.png +0 -0
  105. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image25.png +0 -0
  106. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image30.png +0 -0
  107. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image31.png +0 -0
  108. data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → TestRunner_Design.graffle}/image8.png +0 -0
  109. data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image9.png +0 -0
  110. data/lib/frameworks/sproutcore/frameworks/ajax/fixtures/file_exists.json +1 -0
  111. data/lib/frameworks/sproutcore/frameworks/ajax/fixtures/malformed.json +11 -0
  112. data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +611 -0
  113. data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +550 -0
  114. data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +276 -0
  115. data/lib/frameworks/sproutcore/frameworks/animation/core.js +57 -45
  116. data/lib/frameworks/sproutcore/frameworks/animation/tests/core.js +10 -5
  117. data/lib/frameworks/sproutcore/frameworks/bootstrap/core.js +1 -1
  118. data/lib/frameworks/sproutcore/frameworks/bootstrap/setup_body_class_names.js +1 -1
  119. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/bench.js +14 -0
  120. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +219 -23
  121. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +16 -15
  122. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +187 -0
  123. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +540 -0
  124. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +44 -0
  125. data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +342 -0
  126. data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +189 -0
  127. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/function.js +39 -0
  128. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars.js +73 -0
  129. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/bind.js +293 -0
  130. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +55 -0
  131. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/localization.js +5 -0
  132. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/view.js +96 -0
  133. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +81 -0
  134. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +163 -0
  135. data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +60 -0
  136. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +110 -0
  137. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +268 -0
  138. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +249 -0
  139. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/checkbox_support.js +28 -0
  140. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +55 -0
  141. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +74 -0
  142. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +95 -0
  143. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +50 -0
  144. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +33 -0
  145. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +670 -0
  146. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +31 -0
  147. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +17 -0
  148. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/observable_protocol.js +40 -0
  149. data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +131 -0
  150. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/core.css +378 -0
  151. data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/view.css +57 -0
  152. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/application.js +33 -0
  153. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/bindable_span.js +164 -0
  154. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +36 -0
  155. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +202 -0
  156. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/core_query.js +141 -0
  157. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +131 -0
  158. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
  159. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +210 -0
  160. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +991 -0
  161. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +289 -0
  162. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/page.js +106 -0
  163. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +419 -0
  164. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +103 -0
  165. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +1063 -0
  166. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +124 -0
  167. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +2174 -0
  168. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/selection_set.js +693 -0
  169. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +397 -0
  170. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +165 -0
  171. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +316 -0
  172. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +548 -0
  173. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +155 -0
  174. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils/rect.js +104 -0
  175. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +301 -0
  176. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/enum_case.js +206 -0
  177. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/null_case.js +64 -0
  178. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/selection_support.js +344 -0
  179. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/single_case.js +136 -0
  180. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/empty_case.js +82 -0
  181. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/multiple_case.js +111 -0
  182. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/single_case.js +193 -0
  183. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/single_enumerable_case.js +265 -0
  184. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/responder_context.js +76 -0
  185. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +78 -0
  186. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/checkbox_support.js +38 -0
  187. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/text_field_support.js +79 -0
  188. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +20 -0
  189. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/builder.js +49 -0
  190. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/core_query/within.js +71 -0
  191. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +140 -0
  192. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/ready/done.js +40 -0
  193. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/begin.js +47 -0
  194. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/element.js +44 -0
  195. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +124 -0
  196. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/get.js +51 -0
  197. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_attr.js +50 -0
  198. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_basic.js +28 -0
  199. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +177 -0
  200. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +109 -0
  201. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/init.js +55 -0
  202. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/join.js +28 -0
  203. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/push_text.js +74 -0
  204. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/tag.js +46 -0
  205. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +219 -0
  206. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeKeyPane.js +124 -0
  207. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeMainPane.js +68 -0
  208. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeMenuPane.js +48 -0
  209. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/root_responder.js +108 -0
  210. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/targetForAction.js +288 -0
  211. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/add.js +92 -0
  212. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/copy.js +17 -0
  213. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/indexSetForSource.js +98 -0
  214. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/isEqual.js +60 -0
  215. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +111 -0
  216. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +201 -0
  217. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/theme.js +78 -0
  218. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/invalidate.js +44 -0
  219. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/invokeLater.js +209 -0
  220. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/isPaused.js +77 -0
  221. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/performAction.js +75 -0
  222. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/schedule.js +176 -0
  223. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/normalizeURL.js +24 -0
  224. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +284 -0
  225. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/rect.js +105 -0
  226. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +49 -0
  227. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +224 -0
  228. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +26 -0
  229. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/firstResponder.js +148 -0
  230. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/keyPane.js +133 -0
  231. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/layout.js +31 -0
  232. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/sendEvent.js +206 -0
  233. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +201 -0
  234. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/core.js +160 -0
  235. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +919 -0
  236. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +382 -0
  237. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build.js +85 -0
  238. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +89 -0
  239. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +117 -0
  240. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +248 -0
  241. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertLayouts.js +153 -0
  242. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +132 -0
  243. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createLayer.js +97 -0
  244. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/destroyLayer.js +83 -0
  245. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +83 -0
  246. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/findLayerInParentLayer.js +50 -0
  247. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/init.js +50 -0
  248. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +217 -0
  249. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisible.js +85 -0
  250. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisibleInWindow.js +122 -0
  251. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +28 -0
  252. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layer.js +146 -0
  253. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js +162 -0
  254. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +180 -0
  255. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +745 -0
  256. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/parentViewDidChange.js +67 -0
  257. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/prepareContext.js +203 -0
  258. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/removeChild.js +189 -0
  259. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +203 -0
  260. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render_delegate_support.js +163 -0
  261. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/replaceChild.js +29 -0
  262. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +28 -0
  263. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/theme.js +45 -0
  264. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayer.js +148 -0
  265. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayerLocation.js +213 -0
  266. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view.js +64 -0
  267. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/viewDidResize.js +202 -0
  268. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template.js +131 -0
  269. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +242 -0
  270. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +1524 -0
  271. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +181 -0
  272. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/base.js +3 -0
  273. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +48 -0
  274. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +57 -0
  275. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +223 -0
  276. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +1115 -0
  277. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +624 -0
  278. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +401 -0
  279. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +400 -0
  280. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/touch.js +67 -0
  281. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +118 -0
  282. data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +1 -1
  283. data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +1 -1
  284. data/lib/frameworks/sproutcore/frameworks/core_tools/english.lproj/strings.js +1 -1
  285. data/lib/frameworks/sproutcore/frameworks/core_tools/fixtures/target.js +1 -1
  286. data/lib/frameworks/sproutcore/frameworks/core_tools/fixtures/test.js +1 -1
  287. data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +1 -1
  288. data/lib/frameworks/sproutcore/frameworks/core_tools/models/test.js +1 -1
  289. data/lib/frameworks/sproutcore/frameworks/datastore/core.js +1 -1
  290. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +17 -21
  291. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +322 -132
  292. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +5 -5
  293. data/lib/frameworks/sproutcore/frameworks/datastore/debug/json.js +1 -1
  294. data/lib/frameworks/sproutcore/frameworks/datastore/debug/standard_setup.js +1 -1
  295. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +44 -61
  296. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +16 -100
  297. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +17 -24
  298. data/lib/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +8 -8
  299. data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +20 -21
  300. data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +457 -216
  301. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +204 -94
  302. data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +17 -19
  303. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +150 -115
  304. data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +148 -110
  305. data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +51 -26
  306. data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +160 -158
  307. data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +298 -204
  308. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +419 -233
  309. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/cascade.js +1 -1
  310. data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +7 -2
  311. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/contact_model.js +1 -1
  312. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/cyclical_relationship.js +2 -2
  313. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/mail_model.js +1 -1
  314. data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/test_runner_model.js +1 -1
  315. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/datetime_recordattribute.js +1 -1
  316. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
  317. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +180 -0
  318. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +56 -18
  319. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +36 -10
  320. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +11 -11
  321. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +8 -8
  322. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +1 -1
  323. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
  324. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/error_methods.js +1 -1
  325. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +26 -4
  326. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/readAttribute.js +1 -1
  327. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +2 -2
  328. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/storeDidChangeProperties.js +1 -1
  329. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +1 -1
  330. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +1 -1
  331. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
  332. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +1 -1
  333. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +1 -1
  334. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +1 -1
  335. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +5 -3
  336. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +5 -1
  337. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/core_methods.js +1 -1
  338. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +1 -1
  339. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +5 -2
  340. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
  341. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +1 -1
  342. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +1 -1
  343. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +1 -1
  344. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/builders.js +22 -22
  345. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +1 -1
  346. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/contains.js +1 -1
  347. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/containsRecordTypes.js +1 -1
  348. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/copy.js +1 -1
  349. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +1 -1
  350. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +39 -14
  351. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/expandedRecordTypes.js +1 -1
  352. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +14 -6
  353. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/queryWithScope.js +1 -1
  354. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +5 -1
  355. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +5 -1
  356. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +5 -1
  357. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
  358. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/error_methods.js +1 -1
  359. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +89 -53
  360. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
  361. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +5 -1
  362. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +11 -1
  363. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +1 -1
  364. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +6 -2
  365. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +1 -1
  366. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +1 -1
  367. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +6 -2
  368. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/error_methods.js +1 -1
  369. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +1 -1
  370. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/init.js +1 -1
  371. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/loadRecord.js +64 -0
  372. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/loadRecords.js +100 -0
  373. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +1 -1
  374. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
  375. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readEditableDataHash.js +1 -1
  376. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +39 -36
  377. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/removeDataHash.js +1 -1
  378. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +17 -1
  379. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/unloadRecord.js +55 -0
  380. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/unloadRecords.js +85 -32
  381. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/writeDataHash.js +1 -1
  382. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +1103 -0
  383. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +390 -0
  384. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +14 -0
  385. data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +91 -0
  386. data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
  387. data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +10 -11
  388. data/lib/frameworks/sproutcore/frameworks/desktop/core.js +19 -3
  389. data/lib/frameworks/sproutcore/frameworks/desktop/debug/drag.js +8 -7
  390. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +0 -1
  391. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +0 -27
  392. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +27 -3
  393. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +1 -9
  394. data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +72 -74
  395. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +49 -27
  396. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +63 -46
  397. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_group.js +6 -3
  398. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +53 -17
  399. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +84 -79
  400. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/navigation_builder.js +138 -0
  401. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +38 -24
  402. data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +396 -218
  403. data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +92 -123
  404. data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +23 -18
  405. data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +39 -17
  406. data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +66 -53
  407. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +364 -121
  408. data/lib/frameworks/sproutcore/frameworks/desktop/panes/select_button.js +209 -108
  409. data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +40 -17
  410. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +16 -12
  411. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +25 -27
  412. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +36 -24
  413. data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +7 -5
  414. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +112 -0
  415. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +98 -0
  416. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +25 -0
  417. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +59 -0
  418. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/helpers/slicing.js +35 -0
  419. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +51 -0
  420. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/master_detail.js +29 -0
  421. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/menu.js +60 -0
  422. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +28 -0
  423. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +44 -0
  424. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +21 -0
  425. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +100 -0
  426. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +84 -0
  427. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +116 -0
  428. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +58 -0
  429. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +80 -0
  430. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +81 -0
  431. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/source_list.js +8 -0
  432. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/toolbar.js +18 -0
  433. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +17 -0
  434. data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/workspace.js +18 -0
  435. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +197 -103
  436. data/lib/frameworks/sproutcore/frameworks/desktop/system/key_bindings.js +7 -5
  437. data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +74 -37
  438. data/lib/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +26 -5
  439. data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +16 -6
  440. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/methods.js +1 -1
  441. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +190 -22
  442. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +2 -1
  443. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +69 -9
  444. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +1 -1
  445. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +2 -2
  446. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/pane_page.js +4 -3
  447. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +1 -1
  448. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +30 -1
  449. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +91 -3
  450. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +9 -3
  451. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/methods.js +1 -1
  452. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/ui.js +11 -3
  453. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/methods.js +1 -1
  454. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +4 -2
  455. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +189 -0
  456. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/displayProperties.js +89 -0
  457. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/keyEquivalents.js +57 -0
  458. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +46 -4
  459. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +91 -18
  460. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +16 -32
  461. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +29 -3
  462. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +1 -1
  463. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +1 -1
  464. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +1 -1
  465. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/displayProperties.js +1 -1
  466. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +1 -1
  467. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +1 -1
  468. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +1 -1
  469. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +27 -5
  470. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +1 -1
  471. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
  472. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +1 -1
  473. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +1 -1
  474. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +1 -1
  475. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +1 -1
  476. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +16 -10
  477. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +1 -1
  478. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +2 -2
  479. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/methods.js +1 -1
  480. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +40 -2
  481. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +1 -1
  482. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/ui.js +1 -1
  483. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/image_button/ui.js +52 -0
  484. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/render.js +1 -1
  485. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +1 -1
  486. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +1 -1
  487. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +1 -1
  488. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_alternatingrows.js +1 -1
  489. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +1 -1
  490. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +1 -1
  491. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +5 -1
  492. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +129 -21
  493. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/methods.js +1 -1
  494. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +1 -1
  495. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +1 -1
  496. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +174 -43
  497. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +1 -1
  498. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +93 -8
  499. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +50 -0
  500. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +1 -1
  501. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +14 -2
  502. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +29 -1
  503. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +26 -83
  504. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +292 -61
  505. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/methods.js +1 -1
  506. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +11 -3
  507. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +32 -1
  508. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +78 -8
  509. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +11 -4
  510. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/methods.js +1 -1
  511. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/ui.js +1 -1
  512. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +1 -1
  513. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +11 -4
  514. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +16 -9
  515. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/static_content.js +1 -1
  516. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +1 -1
  517. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +33 -29
  518. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/method.js +33 -0
  519. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +29 -0
  520. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/web/methods.js +1 -1
  521. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +1 -1
  522. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/well/ui.js +1 -1
  523. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +550 -231
  524. data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +63 -55
  525. data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +286 -187
  526. data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +77 -53
  527. data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +39 -31
  528. data/lib/frameworks/sproutcore/frameworks/desktop/views/file.js +148 -0
  529. data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +43 -7
  530. data/lib/frameworks/sproutcore/frameworks/desktop/views/image_button.js +82 -0
  531. data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +58 -36
  532. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +668 -509
  533. data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +313 -0
  534. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +93 -54
  535. data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +152 -38
  536. data/lib/frameworks/sproutcore/frameworks/desktop/views/navigation.js +261 -0
  537. data/lib/frameworks/sproutcore/frameworks/desktop/views/navigation_bar.js +191 -0
  538. data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +35 -30
  539. data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +131 -122
  540. data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +208 -208
  541. data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +24 -17
  542. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +332 -135
  543. data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +184 -73
  544. data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +193 -0
  545. data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +829 -426
  546. data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +377 -143
  547. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +96 -37
  548. data/lib/frameworks/sproutcore/frameworks/desktop/views/separator.js +26 -10
  549. data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +52 -39
  550. data/lib/frameworks/sproutcore/frameworks/desktop/views/source_list.js +19 -5
  551. data/lib/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +15 -8
  552. data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +387 -271
  553. data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +10 -9
  554. data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +15 -4
  555. data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +18 -4
  556. data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +114 -12
  557. data/lib/frameworks/sproutcore/frameworks/desktop/views/thumb.js +14 -2
  558. data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +103 -14
  559. data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +36 -20
  560. data/lib/frameworks/sproutcore/frameworks/desktop/views/well.js +27 -31
  561. data/lib/frameworks/sproutcore/frameworks/desktop/views/workspace.js +285 -0
  562. data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
  563. data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +6 -0
  564. data/lib/frameworks/sproutcore/frameworks/experimental/README.md +23 -0
  565. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/README +18 -0
  566. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/TODO +56 -0
  567. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/beautify.js +0 -0
  568. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/design.js +0 -0
  569. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/file.js +35 -0
  570. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/files.js +0 -0
  571. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/layout.js +0 -0
  572. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +194 -0
  573. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/page.js +0 -0
  574. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/property.js +0 -0
  575. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/property_editor.js +0 -0
  576. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/target.js +0 -0
  577. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/targets.js +0 -0
  578. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/view_configs.js +0 -0
  579. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/core.js +65 -0
  580. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/core_file.js +124 -0
  581. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/data_source.js +250 -0
  582. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/app_page.js +399 -0
  583. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/app-selector.css +107 -0
  584. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/button.css +314 -0
  585. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/dock.css +90 -0
  586. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/general.css +51 -0
  587. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/main-page.css +93 -0
  588. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/menu.css +49 -0
  589. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/modal.css +41 -0
  590. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/picker.css +195 -0
  591. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/search.css +0 -0
  592. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/text-field.css +0 -0
  593. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/dialogs.js +303 -0
  594. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500.eot +0 -0
  595. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500.otf +0 -0
  596. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500.woff +0 -0
  597. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500_italic.eot +0 -0
  598. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500_italic.otf +0 -0
  599. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500_italic.woff +0 -0
  600. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/app-selector/choose-app.png +0 -0
  601. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/app-selector/list-item-sel.png +0 -0
  602. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-l.png +0 -0
  603. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-m.png +0 -0
  604. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-r.png +0 -0
  605. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-l.png +0 -0
  606. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-m.png +0 -0
  607. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-r.png +0 -0
  608. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/active-l.png +0 -0
  609. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/active-r.png +0 -0
  610. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-l.png +0 -0
  611. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-r.png +0 -0
  612. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/regular-l.png +0 -0
  613. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/regular-r.png +0 -0
  614. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-l.png +0 -0
  615. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-r.png +0 -0
  616. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-l.png +0 -0
  617. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-r.png +0 -0
  618. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-l.png +0 -0
  619. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-r.png +0 -0
  620. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/active-l.png +0 -0
  621. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/active-m.png +0 -0
  622. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/active-r.png +0 -0
  623. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-l.png +0 -0
  624. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-r.png +0 -0
  625. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-l.png +0 -0
  626. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-r.png +0 -0
  627. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-l.png +0 -0
  628. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-r.png +0 -0
  629. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-l.png +0 -0
  630. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-r.png +0 -0
  631. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/disabled-l.png +0 -0
  632. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/disabled-m.png +0 -0
  633. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/disabled-r.png +0 -0
  634. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/regular-l.png +0 -0
  635. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/regular-m.png +0 -0
  636. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/regular-r.png +0 -0
  637. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-l.png +0 -0
  638. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-m.png +0 -0
  639. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-r.png +0 -0
  640. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-l.png +0 -0
  641. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-m.png +0 -0
  642. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-r.png +0 -0
  643. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-l.png +0 -0
  644. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-m.png +0 -0
  645. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-r.png +0 -0
  646. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/active-m.png +0 -0
  647. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/disabled-m.png +0 -0
  648. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/regular-m.png +0 -0
  649. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/sel-active-m.png +0 -0
  650. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/sel-disabled-m.png +0 -0
  651. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/sel-m.png +0 -0
  652. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/active-l.png +0 -0
  653. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/active-r.png +0 -0
  654. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/disabled-l.png +0 -0
  655. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/disabled-r.png +0 -0
  656. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/regular-l.png +0 -0
  657. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/regular-r.png +0 -0
  658. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-active-l.png +0 -0
  659. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-active-r.png +0 -0
  660. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-l.png +0 -0
  661. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-r.png +0 -0
  662. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-l.png +0 -0
  663. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-r.png +0 -0
  664. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/actions-active.png +0 -0
  665. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/actions.png +0 -0
  666. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/inspector-active.png +0 -0
  667. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/inspector.png +0 -0
  668. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/library-active.png +0 -0
  669. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/library.png +0 -0
  670. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/projects-active.png +0 -0
  671. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/projects.png +0 -0
  672. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/run-active.png +0 -0
  673. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/run.png +0 -0
  674. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/save-active.png +0 -0
  675. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/save.png +0 -0
  676. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/logos/greenhouse-l.png +0 -0
  677. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/logos/greenhouse-s.png +0 -0
  678. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/logos/sproutcore.png +0 -0
  679. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/apps/greenhouse}/english.lproj/images/main-bg.png +0 -0
  680. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/bottom-left.png +0 -0
  681. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/bottom-right.png +0 -0
  682. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/bottom.png +0 -0
  683. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/close-active.png +0 -0
  684. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/close.png +0 -0
  685. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/left.png +0 -0
  686. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-bottom.png +0 -0
  687. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-left.png +0 -0
  688. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-right.png +0 -0
  689. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-top.png +0 -0
  690. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/right.png +0 -0
  691. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/search-active.png +0 -0
  692. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/search.png +0 -0
  693. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/top-left.png +0 -0
  694. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/top-right.png +0 -0
  695. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/top.png +0 -0
  696. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/toolbar-bg.png +0 -0
  697. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/inspectors.js +365 -0
  698. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/loading.rhtml +0 -0
  699. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/main_page.js +0 -0
  700. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/strings.js +93 -0
  701. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/fixtures/file.js +0 -0
  702. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/main.js +28 -0
  703. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/mixins/drop_down.js +0 -0
  704. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/models/design.js +26 -0
  705. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/models/dir.js +93 -0
  706. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/models/file.js +51 -0
  707. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/models/target.js +0 -0
  708. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/models/view_config.js +0 -0
  709. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/resources/test_page.js +0 -0
  710. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/inspector.js +152 -0
  711. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/library.js +142 -0
  712. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/main.js +283 -0
  713. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/modals.js +299 -0
  714. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +235 -0
  715. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/design.js +0 -0
  716. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/designs.js +0 -0
  717. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/file.js +0 -0
  718. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/files.js +0 -0
  719. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/models/file.js +0 -0
  720. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/models/view_config.js +0 -0
  721. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/tests/views/list_item.js +16 -0
  722. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/tests/views/plist_item.js +20 -0
  723. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/theme.js +25 -0
  724. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/anchor.js +0 -0
  725. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/application_list_item.js +0 -0
  726. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/event_blocker.js +0 -0
  727. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/label_designer.js +0 -0
  728. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/list_item.js +0 -0
  729. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +178 -0
  730. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/simple_button.js +0 -0
  731. data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/tear_off_picker.js +56 -0
  732. data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/web.js +0 -0
  733. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/coders/design.js +22 -0
  734. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/coders/object.js +349 -0
  735. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/controllers.js +23 -0
  736. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/design.js +43 -0
  737. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/designs.js +139 -0
  738. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +172 -0
  739. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_files.js +28 -0
  740. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/core.js +28 -0
  741. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_rule.js +22 -0
  742. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style.js +29 -0
  743. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +201 -0
  744. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/button.js +23 -0
  745. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/label.js +18 -0
  746. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +298 -0
  747. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/tab.js +20 -0
  748. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/text_field.js +17 -0
  749. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +1269 -0
  750. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/css/designer.css +0 -0
  751. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/english.lproj/design_page.js +55 -0
  752. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/high_light.css +0 -0
  753. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/controller.png +0 -0
  754. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-bg.png +0 -0
  755. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-bg.png +0 -0
  756. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-divider.png +0 -0
  757. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-sel-bg.png +0 -0
  758. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-sel-divider.png +0 -0
  759. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/english.lproj/images/main-bg.png +0 -0
  760. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/page.png +0 -0
  761. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/pane.png +0 -0
  762. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/view.png +0 -0
  763. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/selection_handles.css +0 -0
  764. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/ext/binding.js +39 -0
  765. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/ext/object.js +28 -0
  766. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/ext/page.js +60 -0
  767. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/ext/view.js +29 -0
  768. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/button.js +13 -0
  769. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +227 -0
  770. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/tests/coders/page.js +54 -0
  771. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/tests/designers/view_designer.js +47 -0
  772. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +144 -0
  773. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +219 -0
  774. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/views/high_light.js +0 -0
  775. data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/views/page_item_view.js +0 -0
  776. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/selection_handles.js +78 -0
  777. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/README.md +11 -0
  778. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +215 -0
  779. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +67 -0
  780. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +46 -0
  781. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +112 -0
  782. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/many.js +79 -0
  783. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +76 -0
  784. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/single.js +67 -0
  785. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +229 -0
  786. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +236 -0
  787. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split.js +18 -0
  788. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split_divider.js +26 -0
  789. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +100 -0
  790. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/dividers.js +243 -0
  791. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +294 -0
  792. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_child.js +135 -0
  793. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +160 -0
  794. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +929 -0
  795. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split_divider.js +40 -0
  796. data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +26 -0
  797. data/lib/frameworks/sproutcore/frameworks/forms/english.lproj/default_styles.css +5 -0
  798. data/lib/frameworks/sproutcore/frameworks/forms/english.lproj/strings.js +15 -0
  799. data/lib/frameworks/sproutcore/frameworks/forms/mixins/edit_mode.js +48 -0
  800. data/lib/frameworks/sproutcore/frameworks/forms/mixins/emptiness.js +94 -0
  801. data/lib/frameworks/sproutcore/frameworks/forms/render_delegates/form.js +21 -0
  802. data/lib/frameworks/sproutcore/frameworks/forms/render_delegates/form_row.js +20 -0
  803. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form.js +17 -0
  804. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_checkbox_field.js +17 -0
  805. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_field.js +17 -0
  806. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_label.js +17 -0
  807. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_radio_field.js +17 -0
  808. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_row.js +17 -0
  809. data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_text_field.js +17 -0
  810. data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +286 -0
  811. data/lib/frameworks/sproutcore/frameworks/forms/views/form_row.js +187 -0
  812. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +52 -43
  813. data/lib/frameworks/sproutcore/frameworks/foundation/core.js +15 -142
  814. data/lib/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +29 -21
  815. data/lib/frameworks/sproutcore/frameworks/foundation/delegates/inline_text_field.js +90 -0
  816. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/benchmark.css +146 -0
  817. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +4 -16
  818. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/checkbox_view.css +5 -0
  819. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/images/favicon.ico +0 -0
  820. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/images/sproutcore.png +0 -0
  821. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +5 -0
  822. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/radio_view.css +7 -0
  823. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +4 -6
  824. data/lib/frameworks/sproutcore/frameworks/foundation/ext/string.js +89 -0
  825. data/lib/frameworks/sproutcore/frameworks/foundation/gestures/pinch.js +119 -0
  826. data/lib/frameworks/sproutcore/frameworks/foundation/gestures/swipe.js +234 -0
  827. data/lib/frameworks/sproutcore/frameworks/foundation/gestures/tap.js +157 -0
  828. data/lib/frameworks/sproutcore/frameworks/foundation/license.js +24 -26
  829. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_mixin.js +41 -0
  830. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +355 -0
  831. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +4 -350
  832. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +10 -8
  833. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +8 -9
  834. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +227 -0
  835. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/control.js +105 -200
  836. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +16 -15
  837. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +745 -0
  838. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +214 -0
  839. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +254 -0
  840. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +188 -0
  841. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor_delegate.js +195 -0
  842. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +194 -0
  843. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +20 -21
  844. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +57 -53
  845. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +18 -9
  846. data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +214 -203
  847. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +110 -0
  848. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/container.js +18 -0
  849. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +174 -0
  850. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +99 -0
  851. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +119 -0
  852. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +386 -0
  853. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +404 -191
  854. data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +65 -0
  855. data/lib/frameworks/sproutcore/frameworks/foundation/system/cookie.js +176 -0
  856. data/lib/frameworks/sproutcore/frameworks/foundation/system/core_query.js +20 -2006
  857. data/lib/frameworks/sproutcore/frameworks/foundation/system/exception_handler.js +9 -3
  858. data/lib/frameworks/sproutcore/frameworks/foundation/system/gesture.js +363 -0
  859. data/lib/frameworks/sproutcore/frameworks/foundation/system/image_queue.js +433 -0
  860. data/lib/frameworks/sproutcore/frameworks/foundation/system/math.js +1 -1
  861. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +591 -0
  862. data/lib/frameworks/sproutcore/frameworks/foundation/system/routes.js +123 -24
  863. data/lib/frameworks/sproutcore/frameworks/foundation/system/string.js +422 -0
  864. data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +19 -16
  865. data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
  866. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +91 -96
  867. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/colors.js +87 -0
  868. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +157 -0
  869. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/range.js +71 -0
  870. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +254 -0
  871. data/lib/frameworks/sproutcore/frameworks/foundation/tasks/preload_bundle.js +5 -5
  872. data/lib/frameworks/sproutcore/frameworks/foundation/tasks/task.js +1 -1
  873. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +1 -1
  874. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/selection_support.js +1 -1
  875. data/lib/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/methods.js +1 -1
  876. data/lib/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/ui.js +1 -1
  877. data/lib/frameworks/sproutcore/frameworks/foundation/tests/delegates/inline_text_field/inline_text_field.js +150 -0
  878. data/lib/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +9 -4
  879. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_display.js +6 -0
  880. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +168 -0
  881. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +1 -1
  882. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +44 -0
  883. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +194 -0
  884. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +150 -0
  885. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +151 -0
  886. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +114 -0
  887. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +151 -0
  888. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +152 -0
  889. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/api.js +1 -1
  890. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +13 -22
  891. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +64 -0
  892. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +8 -1
  893. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/validatable/ui.js +1 -1
  894. data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +59 -59
  895. data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +114 -114
  896. data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +74 -74
  897. data/lib/frameworks/sproutcore/frameworks/foundation/tests/render_delegates/render_delegate.js +78 -0
  898. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/cookie.js +182 -0
  899. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +19 -3
  900. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/math.js +1 -1
  901. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/routes.js +30 -20
  902. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/string.js +34 -0
  903. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/task_queue.js +8 -2
  904. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +6 -0
  905. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +241 -0
  906. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/range.js +6 -0
  907. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/credit_card.js +6 -0
  908. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +11 -13
  909. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/not_empty.js +1 -1
  910. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/number.js +6 -0
  911. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/password.js +6 -0
  912. data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/validator.js +6 -0
  913. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +10 -2
  914. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +76 -11
  915. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +499 -46
  916. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +32 -7
  917. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +1 -1
  918. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/nextValidKeyView.js +110 -0
  919. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +87 -3
  920. data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +2 -2
  921. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +39 -12
  922. data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +2 -2
  923. data/lib/frameworks/sproutcore/frameworks/foundation/validators/email.js +2 -2
  924. data/lib/frameworks/sproutcore/frameworks/foundation/validators/not_empty.js +6 -10
  925. data/lib/frameworks/sproutcore/frameworks/foundation/validators/number.js +3 -2
  926. data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +2 -2
  927. data/lib/frameworks/sproutcore/frameworks/foundation/validators/positive_integer.js +3 -2
  928. data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +5 -3
  929. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +16 -14
  930. data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +23 -6
  931. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +307 -105
  932. data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +654 -0
  933. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +81 -195
  934. data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +287 -116
  935. data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1435 -0
  936. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +390 -0
  937. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +210 -0
  938. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +12 -0
  939. data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +7179 -0
  940. data/lib/frameworks/sproutcore/frameworks/jquery/tests/set_class.js +40 -0
  941. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +10 -8
  942. data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +4 -6
  943. data/lib/frameworks/sproutcore/frameworks/media/views/media_slider.js +1 -1
  944. data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +3 -3
  945. data/lib/frameworks/sproutcore/frameworks/media/views/simple_controls.js +4 -5
  946. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +7 -7
  947. data/lib/frameworks/sproutcore/frameworks/mini/license.js +30 -28
  948. data/lib/frameworks/sproutcore/frameworks/qunit/README.md +24 -0
  949. data/lib/frameworks/sproutcore/frameworks/qunit/package.json +21 -0
  950. data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.css +215 -0
  951. data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +1442 -0
  952. data/lib/frameworks/sproutcore/frameworks/qunit/test/headless.html +24 -0
  953. data/lib/frameworks/sproutcore/frameworks/qunit/test/index.html +18 -0
  954. data/lib/frameworks/sproutcore/frameworks/qunit/test/logs.html +17 -0
  955. data/lib/frameworks/sproutcore/frameworks/qunit/test/logs.js +150 -0
  956. data/lib/frameworks/sproutcore/frameworks/qunit/test/same.js +1421 -0
  957. data/lib/frameworks/sproutcore/frameworks/qunit/test/test.js +314 -0
  958. data/lib/frameworks/sproutcore/frameworks/runtime/core.js +232 -537
  959. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array.js +14 -0
  960. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +163 -4
  961. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +1 -1
  962. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +1 -1
  963. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +1 -1
  964. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +1 -1
  965. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +1 -1
  966. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +74 -74
  967. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +1 -1
  968. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +1 -1
  969. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +1 -1
  970. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +1 -1
  971. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +1 -1
  972. data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +92 -0
  973. data/lib/frameworks/sproutcore/frameworks/runtime/ext/date.js +15 -0
  974. data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +189 -0
  975. data/lib/frameworks/sproutcore/frameworks/runtime/ext/string.js +31 -0
  976. data/lib/frameworks/sproutcore/frameworks/runtime/license.js +29 -28
  977. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +577 -317
  978. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/comparable.js +16 -13
  979. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +25 -18
  980. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +351 -308
  981. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +51 -52
  982. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1149 -1001
  983. data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +85 -45
  984. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +61 -55
  985. data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +51 -107
  986. data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +195 -0
  987. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +361 -348
  988. data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +24 -24
  989. data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +45 -40
  990. data/lib/frameworks/sproutcore/frameworks/runtime/system/function.js +76 -0
  991. data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +275 -265
  992. data/lib/frameworks/sproutcore/frameworks/runtime/system/json.js +515 -0
  993. data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +1337 -204
  994. data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +312 -259
  995. data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +89 -87
  996. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +119 -106
  997. data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +107 -101
  998. data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +60 -0
  999. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +23 -47
  1000. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/beget.js +6 -0
  1001. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +1 -1
  1002. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +1 -1
  1003. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +5 -0
  1004. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +59 -126
  1005. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/inspect.js +6 -0
  1006. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +21 -19
  1007. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +71 -33
  1008. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +6 -0
  1009. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +21 -1
  1010. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +6 -0
  1011. data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +6 -0
  1012. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +39 -15
  1013. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/comparable.js +1 -1
  1014. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable/enumerable.js +623 -0
  1015. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable/enumerable_observers.js +81 -0
  1016. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +44 -0
  1017. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +286 -98
  1018. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observersForKey.js +36 -0
  1019. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +7 -1
  1020. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/registerDependentKeys.js +78 -2
  1021. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +7 -1
  1022. data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +1 -1
  1023. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +87 -8
  1024. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/error.js +6 -0
  1025. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +1 -1
  1026. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/addEach.js +1 -1
  1027. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +1 -1
  1028. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +1 -1
  1029. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +1 -1
  1030. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +1 -1
  1031. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +1 -1
  1032. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +1 -1
  1033. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +1 -1
  1034. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +1 -1
  1035. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +1 -1
  1036. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +1 -1
  1037. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/removeEach.js +1 -1
  1038. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +1 -1
  1039. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/json.js +21 -0
  1040. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +180 -92
  1041. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +6 -0
  1042. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/bindings.js +11 -0
  1043. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/concatenated_properties.js +77 -0
  1044. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +196 -0
  1045. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/observer_set.js +56 -0
  1046. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +12 -12
  1047. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +1 -1
  1048. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +1 -1
  1049. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +1 -1
  1050. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +1 -1
  1051. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +6 -0
  1052. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +77 -45
  1053. data/lib/frameworks/sproutcore/frameworks/statechart/core.js +4 -10
  1054. data/lib/frameworks/sproutcore/frameworks/statechart/debug/monitor.js +155 -0
  1055. data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +1241 -97
  1056. data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +1617 -0
  1057. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/advanced/respond_to_event.js +401 -0
  1058. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/advanced/without_concurrent_states.js +306 -0
  1059. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +183 -0
  1060. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/without_concurrent_states.js +122 -0
  1061. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/pane.js +89 -0
  1062. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +109 -0
  1063. data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/root_responder.js +74 -0
  1064. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/initial_substate.js +67 -0
  1065. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/is_current_state.js +60 -0
  1066. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/namespacing.js +248 -0
  1067. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/plugin/mixin.js +68 -0
  1068. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/plugin/nesting.js +95 -0
  1069. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/state_observes.js +235 -0
  1070. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/async/core.js +94 -0
  1071. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/async/with_concurrent_states.js +123 -0
  1072. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/async/without_concurrent_states.js +191 -0
  1073. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/initial_substate/core.js +48 -0
  1074. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/initial_substate/without_concurrent_states.js +218 -0
  1075. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/with_concurrent_states.js +88 -0
  1076. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +191 -0
  1077. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/core.js +200 -0
  1078. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/advanced.js +239 -0
  1079. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/basic.js +131 -0
  1080. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/intermediate.js +120 -0
  1081. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/context.js +144 -0
  1082. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +281 -0
  1083. data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/transient/without_concurrent_states.js +162 -0
  1084. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/create/assigned_root_state.js +76 -0
  1085. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/create/unassigned_root_state.js +162 -0
  1086. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/destroy.js +73 -0
  1087. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/invoke_state_method.js +241 -0
  1088. data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/owner.js +236 -0
  1089. data/lib/frameworks/sproutcore/frameworks/table/mixins/table_delegate.js +1 -1
  1090. data/lib/frameworks/sproutcore/frameworks/table/system/table_column.js +1 -1
  1091. data/lib/frameworks/sproutcore/frameworks/table/views/table.js +6 -5
  1092. data/lib/frameworks/sproutcore/frameworks/table/views/table_cell.js +3 -2
  1093. data/lib/frameworks/sproutcore/frameworks/table/views/table_head.js +2 -2
  1094. data/lib/frameworks/sproutcore/frameworks/table/views/table_header.js +6 -4
  1095. data/lib/frameworks/sproutcore/frameworks/table/views/table_row.js +2 -2
  1096. data/lib/frameworks/sproutcore/frameworks/testing/core.js +4 -1
  1097. data/lib/frameworks/sproutcore/frameworks/testing/extras.js +1 -1
  1098. data/lib/frameworks/sproutcore/frameworks/testing/system/dump.js +1 -1
  1099. data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
  1100. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +32 -19
  1101. data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +13 -3
  1102. data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +1 -1
  1103. data/lib/frameworks/sproutcore/frameworks/testing/utils.js +1 -1
  1104. data/lib/frameworks/sproutcore/lib/index.rhtml +54 -9
  1105. data/lib/frameworks/sproutcore/license.js +32 -30
  1106. data/lib/frameworks/sproutcore/themes/ace/designs/dark.png +0 -0
  1107. data/lib/frameworks/sproutcore/themes/ace/designs/dark.psd +0 -0
  1108. data/lib/frameworks/sproutcore/themes/ace/designs/light.png +0 -0
  1109. data/lib/frameworks/sproutcore/themes/ace/designs/light.psd +0 -0
  1110. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/active_button.psd +0 -0
  1111. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/normal_button.psd +0 -0
  1112. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_active_button.psd +0 -0
  1113. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_button.psd +0 -0
  1114. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button.psd +0 -0
  1115. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_capsule.psd +0 -0
  1116. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_pointer.psd +0 -0
  1117. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button.psd +0 -0
  1118. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_capsule.psd +0 -0
  1119. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_pointer.psd +0 -0
  1120. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button.psd +0 -0
  1121. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_capsule.psd +0 -0
  1122. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_pointer.psd +0 -0
  1123. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button.psd +0 -0
  1124. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_capsule.psd +0 -0
  1125. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_pointer.psd +0 -0
  1126. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button.psd +0 -0
  1127. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button_pointer.psd +0 -0
  1128. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button.psd +0 -0
  1129. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button_pointer.psd +0 -0
  1130. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button.psd +0 -0
  1131. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button_pointer.psd +0 -0
  1132. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button.psd +0 -0
  1133. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button_pointer.psd +0 -0
  1134. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/active_button.psd +0 -0
  1135. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/normal_button.psd +0 -0
  1136. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_active_button.psd +0 -0
  1137. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_button.psd +0 -0
  1138. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button.psd +0 -0
  1139. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_capsule.psd +0 -0
  1140. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_pointer.psd +0 -0
  1141. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button.psd +0 -0
  1142. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_capsule.psd +0 -0
  1143. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_pointer.psd +0 -0
  1144. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button.psd +0 -0
  1145. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_capsule.psd +0 -0
  1146. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_pointer.psd +0 -0
  1147. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button.psd +0 -0
  1148. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_capsule.psd +0 -0
  1149. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_pointer.psd +0 -0
  1150. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button.psd +0 -0
  1151. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button_pointer.psd +0 -0
  1152. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button.psd +0 -0
  1153. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button_pointer.psd +0 -0
  1154. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button.psd +0 -0
  1155. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button_pointer.psd +0 -0
  1156. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button.psd +0 -0
  1157. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button_pointer.psd +0 -0
  1158. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/popup/active_select.psd +0 -0
  1159. data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/popup/normal_select.psd +0 -0
  1160. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked.psd +0 -0
  1161. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked_active.psd +0 -0
  1162. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed.psd +0 -0
  1163. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed_active.psd +0 -0
  1164. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked.psd +0 -0
  1165. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked_active.psd +0 -0
  1166. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked.psd +0 -0
  1167. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked_active.psd +0 -0
  1168. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed.psd +0 -0
  1169. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed_active.psd +0 -0
  1170. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked.psd +0 -0
  1171. data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked_active.psd +0 -0
  1172. data/lib/frameworks/sproutcore/themes/ace/designs/psds/collection/source-list/selection.psd +0 -0
  1173. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed.psd +0 -0
  1174. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed_active.psd +0 -0
  1175. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open.psd +0 -0
  1176. data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open_active.psd +0 -0
  1177. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/checkmark.psd +0 -0
  1178. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/checkmark_active.psd +0 -0
  1179. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/down.psd +0 -0
  1180. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu.psd +0 -0
  1181. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu_item.psd +0 -0
  1182. data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/up.psd +0 -0
  1183. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/panel.psd +0 -0
  1184. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/pointers.psd +0 -0
  1185. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover.psd +0 -0
  1186. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_empty.psd +0 -0
  1187. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_notoolbar.psd +0 -0
  1188. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers.psd +0 -0
  1189. data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers_notoolbar.psd +0 -0
  1190. data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_content.psd +0 -0
  1191. data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_indeterminate_content.psd +0 -0
  1192. data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_track.psd +0 -0
  1193. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_active.psd +0 -0
  1194. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_mixed.psd +0 -0
  1195. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_mixed_active.psd +0 -0
  1196. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_selected.psd +0 -0
  1197. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_selected_active.psd +0 -0
  1198. data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_unselected.psd +0 -0
  1199. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/thumb.psd +0 -0
  1200. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows.psd +0 -0
  1201. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows_active.psd +0 -0
  1202. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/thumb.psd +0 -0
  1203. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows.psd +0 -0
  1204. data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows_active.psd +0 -0
  1205. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_active.psd +0 -0
  1206. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_normal.psd +0 -0
  1207. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected.psd +0 -0
  1208. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected_active.psd +0 -0
  1209. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_active.psd +0 -0
  1210. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_normal.psd +0 -0
  1211. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected.psd +0 -0
  1212. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected_active.psd +0 -0
  1213. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_active.psd +0 -0
  1214. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_normal.psd +0 -0
  1215. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected.psd +0 -0
  1216. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected_active.psd +0 -0
  1217. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_active.psd +0 -0
  1218. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_normal.psd +0 -0
  1219. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected.psd +0 -0
  1220. data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected_active.psd +0 -0
  1221. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob.psd +0 -0
  1222. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob_active.psd +0 -0
  1223. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob.psd +0 -0
  1224. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob_active.psd +0 -0
  1225. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob.psd +0 -0
  1226. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob_active.psd +0 -0
  1227. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/track.psd +0 -0
  1228. data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/track.psd +0 -0
  1229. data/lib/frameworks/sproutcore/themes/ace/designs/psds/toolbar/toolbar.psd +0 -0
  1230. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch.psd +0 -0
  1231. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_handle.png +0 -0
  1232. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_handle.psd +0 -0
  1233. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_off.png +0 -0
  1234. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_off.psd +0 -0
  1235. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_on.png +0 -0
  1236. data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_on.psd +0 -0
  1237. data/lib/frameworks/sproutcore/themes/ace/resources/body.css +13 -0
  1238. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/active_button.png +0 -0
  1239. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +33 -0
  1240. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/normal_button.png +0 -0
  1241. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/selected_active_button.png +0 -0
  1242. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/selected_button.png +0 -0
  1243. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/active_button.png +0 -0
  1244. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/active_button_capsule.png +0 -0
  1245. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/active_button_pointer.png +0 -0
  1246. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +102 -0
  1247. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/normal_button.png +0 -0
  1248. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/normal_button_capsule.png +0 -0
  1249. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/normal_button_pointer.png +0 -0
  1250. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button.png +0 -0
  1251. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button_capsule.png +0 -0
  1252. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button_pointer.png +0 -0
  1253. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_button.png +0 -0
  1254. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_button_capsule.png +0 -0
  1255. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_button_pointer.png +0 -0
  1256. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/active_button.png +0 -0
  1257. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/active_button_pointer.png +0 -0
  1258. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +78 -0
  1259. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/normal_button.png +0 -0
  1260. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/normal_button_pointer.png +0 -0
  1261. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_active_button.png +0 -0
  1262. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_active_button_pointer.png +0 -0
  1263. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_button.png +0 -0
  1264. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_button_pointer.png +0 -0
  1265. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/active_button.png +0 -0
  1266. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +39 -0
  1267. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/normal_button.png +0 -0
  1268. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_active_button.png +0 -0
  1269. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_button.png +0 -0
  1270. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/button.css +41 -0
  1271. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/active_button.png +0 -0
  1272. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/active_button_capsule.png +0 -0
  1273. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/active_button_pointer.png +0 -0
  1274. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +93 -0
  1275. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/normal_button.png +0 -0
  1276. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/normal_button_capsule.png +0 -0
  1277. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/normal_button_pointer.png +0 -0
  1278. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button.png +0 -0
  1279. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button_capsule.png +0 -0
  1280. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button_pointer.png +0 -0
  1281. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_button.png +0 -0
  1282. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_button_capsule.png +0 -0
  1283. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_button_pointer.png +0 -0
  1284. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/active_button.png +0 -0
  1285. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/active_button_pointer.png +0 -0
  1286. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +72 -0
  1287. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/normal_button.png +0 -0
  1288. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/normal_button_pointer.png +0 -0
  1289. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_active_button.png +0 -0
  1290. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_active_button_pointer.png +0 -0
  1291. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_button.png +0 -0
  1292. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_button_pointer.png +0 -0
  1293. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/button.css +17 -0
  1294. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/button.js +5 -0
  1295. data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/active_select.png +0 -0
  1296. data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/normal_select.png +0 -0
  1297. data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/select.css +21 -0
  1298. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox.css +40 -0
  1299. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked.png +0 -0
  1300. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked_active.png +0 -0
  1301. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed.png +0 -0
  1302. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed_active.png +0 -0
  1303. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked.png +0 -0
  1304. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked_active.png +0 -0
  1305. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox.css +40 -0
  1306. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked.png +0 -0
  1307. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked_active.png +0 -0
  1308. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed.png +0 -0
  1309. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed_active.png +0 -0
  1310. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked.png +0 -0
  1311. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked_active.png +0 -0
  1312. data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/checkbox.css +7 -0
  1313. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +4 -0
  1314. data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +17 -0
  1315. data/lib/frameworks/sproutcore/themes/ace/resources/collection/source-list/selection.png +0 -0
  1316. data/lib/frameworks/sproutcore/themes/ace/resources/collection/source-list/source-list.js +3 -0
  1317. data/lib/frameworks/sproutcore/themes/ace/resources/collection/source-list/source_list_view.css +36 -0
  1318. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +24 -0
  1319. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_closed.png +0 -0
  1320. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_closed_active.png +0 -0
  1321. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_open.png +0 -0
  1322. data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_open_active.png +0 -0
  1323. data/lib/frameworks/sproutcore/themes/ace/resources/imagebutton/ace/imagebutton.css +11 -0
  1324. data/lib/frameworks/sproutcore/themes/ace/resources/loading.css +50 -0
  1325. data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +27 -0
  1326. data/lib/frameworks/sproutcore/themes/ace/resources/menu/checkmark.png +0 -0
  1327. data/lib/frameworks/sproutcore/themes/ace/resources/menu/checkmark_active.png +0 -0
  1328. data/lib/frameworks/sproutcore/themes/ace/resources/menu/down.png +0 -0
  1329. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +79 -0
  1330. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.png +0 -0
  1331. data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu_item.png +0 -0
  1332. data/lib/frameworks/sproutcore/themes/ace/resources/menu/up.png +0 -0
  1333. data/lib/frameworks/sproutcore/themes/ace/resources/pane/pane.css +3 -0
  1334. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.css +13 -0
  1335. data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.png +0 -0
  1336. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel.png +0 -0
  1337. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.css +41 -0
  1338. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.js +0 -0
  1339. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers.png +0 -0
  1340. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/picker.js +32 -0
  1341. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +111 -0
  1342. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.js +12 -0
  1343. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.png +0 -0
  1344. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_empty.png +0 -0
  1345. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_notoolbar.png +0 -0
  1346. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_pointers.png +0 -0
  1347. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_pointers_notoolbar.png +0 -0
  1348. data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/workspace.js +28 -0
  1349. data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress.css +27 -0
  1350. data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress_view_content.png +0 -0
  1351. data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress_view_track.png +0 -0
  1352. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio.css +57 -0
  1353. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_active.png +0 -0
  1354. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_mixed.png +0 -0
  1355. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_mixed_active.png +0 -0
  1356. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_selected.png +0 -0
  1357. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_selected_active.png +0 -0
  1358. data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_unselected.png +0 -0
  1359. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal.css +78 -0
  1360. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal_touch.css +91 -0
  1361. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/thumb.png +0 -0
  1362. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/track_and_arrows.png +0 -0
  1363. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/track_and_arrows_active.png +0 -0
  1364. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/thumb.png +0 -0
  1365. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/track_and_arrows.png +0 -0
  1366. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/track_and_arrows_active.png +0 -0
  1367. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical.css +80 -0
  1368. data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical_touch.css +92 -0
  1369. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +91 -0
  1370. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_active.png +0 -0
  1371. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_normal.png +0 -0
  1372. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_selected.png +0 -0
  1373. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_selected_active.png +0 -0
  1374. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +91 -0
  1375. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_active.png +0 -0
  1376. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_normal.png +0 -0
  1377. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_selected.png +0 -0
  1378. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_selected_active.png +0 -0
  1379. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +91 -0
  1380. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_active.png +0 -0
  1381. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_normal.png +0 -0
  1382. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_selected.png +0 -0
  1383. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_selected_active.png +0 -0
  1384. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +95 -0
  1385. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_active.png +0 -0
  1386. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_normal.png +0 -0
  1387. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_selected.png +0 -0
  1388. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_selected_active.png +0 -0
  1389. data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +83 -0
  1390. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob.png +0 -0
  1391. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob_active.png +0 -0
  1392. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/slider.css +27 -0
  1393. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob.png +0 -0
  1394. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob_active.png +0 -0
  1395. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/slider.css +27 -0
  1396. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob.png +0 -0
  1397. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob_active.png +0 -0
  1398. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/slider.css +27 -0
  1399. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/track.png +0 -0
  1400. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +8 -0
  1401. data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/track.png +0 -0
  1402. data/lib/frameworks/sproutcore/themes/ace/resources/split/split.css +31 -0
  1403. data/lib/frameworks/sproutcore/themes/ace/resources/tab/tab.css +3 -0
  1404. data/lib/frameworks/sproutcore/themes/ace/resources/toolbar/toolbar.css +8 -0
  1405. data/lib/frameworks/sproutcore/themes/ace/resources/toolbar/toolbar.png +0 -0
  1406. data/lib/frameworks/sproutcore/themes/ace/resources/well/well.css +7 -0
  1407. data/lib/frameworks/sproutcore/themes/ace/theme.js +30 -0
  1408. data/lib/frameworks/sproutcore/themes/empty_theme/theme.js +16 -0
  1409. data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/strings.js +1 -1
  1410. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/Panel.drawit/Data +0 -0
  1411. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
  1412. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
  1413. data/lib/frameworks/sproutcore/themes/standard_theme/Source/SproutCore Theme Buttons.psd b/data/lib/frameworks/sproutcore/themes/legacy_theme/Source/SproutCore Theme → Buttons.psd +0 -0
  1414. data/lib/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/Data b/data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView → Pattern.drawit/Data +0 -0
  1415. data/lib/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg b/data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView → Pattern.drawit/QuickLook/Preview.jpg +0 -0
  1416. data/lib/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg b/data/lib/frameworks/sproutcore/themes/legacy_theme/Source/ToolbarView → Pattern.drawit/QuickLook/Thumbnail.jpg +0 -0
  1417. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/10.png +0 -0
  1418. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/100.png +0 -0
  1419. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/102.png +0 -0
  1420. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/110.png +0 -0
  1421. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/120.png +0 -0
  1422. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/127.png +0 -0
  1423. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/18.png +0 -0
  1424. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/19.png +0 -0
  1425. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/2.png +0 -0
  1426. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/24.png +0 -0
  1427. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/26.png +0 -0
  1428. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/27.png +0 -0
  1429. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/28.png +0 -0
  1430. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/29.png +0 -0
  1431. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/30.png +0 -0
  1432. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/31.png +0 -0
  1433. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/33.png +0 -0
  1434. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/37.png +0 -0
  1435. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/41.png +0 -0
  1436. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/99.png +0 -0
  1437. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/10.png +0 -0
  1438. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/100.png +0 -0
  1439. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/102.png +0 -0
  1440. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/110.png +0 -0
  1441. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/120.png +0 -0
  1442. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/127.png +0 -0
  1443. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/18.png +0 -0
  1444. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/19.png +0 -0
  1445. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/2.png +0 -0
  1446. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/24.png +0 -0
  1447. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/26.png +0 -0
  1448. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/27.png +0 -0
  1449. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/28.png +0 -0
  1450. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/29.png +0 -0
  1451. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/30.png +0 -0
  1452. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/31.png +0 -0
  1453. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/33.png +0 -0
  1454. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/37.png +0 -0
  1455. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/41.png +0 -0
  1456. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/99.png +0 -0
  1457. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/10.png +0 -0
  1458. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/100.png +0 -0
  1459. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/102.png +0 -0
  1460. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/110.png +0 -0
  1461. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/120.png +0 -0
  1462. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/127.png +0 -0
  1463. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/18.png +0 -0
  1464. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/19.png +0 -0
  1465. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/2.png +0 -0
  1466. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/24.png +0 -0
  1467. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/26.png +0 -0
  1468. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/27.png +0 -0
  1469. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/28.png +0 -0
  1470. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/29.png +0 -0
  1471. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/30.png +0 -0
  1472. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/31.png +0 -0
  1473. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/33.png +0 -0
  1474. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/37.png +0 -0
  1475. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/41.png +0 -0
  1476. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/99.png +0 -0
  1477. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/10.png +0 -0
  1478. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/18.png +0 -0
  1479. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/19.png +0 -0
  1480. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/2.png +0 -0
  1481. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-x.drawit/Data +0 -0
  1482. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
  1483. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
  1484. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-y.drawit/Data +0 -0
  1485. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
  1486. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
  1487. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-repeat-x-2.psd +0 -0
  1488. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-repeat-x.psd +0 -0
  1489. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-sprite.psd +0 -0
  1490. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-ysprite.psd +0 -0
  1491. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/shared-icons.psd +0 -0
  1492. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sproutcore-logo.psd +0 -0
  1493. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sticky-note.psd +0 -0
  1494. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/button.css +0 -0
  1495. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/checkbox.css +0 -0
  1496. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/collection.css +0 -0
  1497. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/core.css +0 -0
  1498. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/disclosure.css +0 -0
  1499. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_222222.png +0 -0
  1500. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_454545.png +0 -0
  1501. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_888888.png +0 -0
  1502. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_ffffff.png +0 -0
  1503. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/panels/sprite-x.png +0 -0
  1504. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/panels/sprite-y.png +0 -0
  1505. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-scroller-repeat-x.png +0 -0
  1506. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-scroller-repeat-y.png +0 -0
  1507. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-scroller-sprite.png +0 -0
  1508. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-theme-repeat-x.png +0 -0
  1509. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-theme-ysprite.png +0 -0
  1510. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-toolbar-view.png +0 -0
  1511. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/label.css +0 -0
  1512. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/list_item.css +0 -0
  1513. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/menu.css +0 -0
  1514. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/menu_item_view.css +0 -0
  1515. data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/pane.css +18 -0
  1516. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/panel.css +0 -0
  1517. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/picker.css +0 -0
  1518. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/progress.css +0 -0
  1519. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/radio.css +0 -0
  1520. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/scroller.css +0 -0
  1521. data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/segmented.css +270 -0
  1522. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/slider.css +0 -0
  1523. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/split_view.css +0 -0
  1524. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/tab.css +0 -0
  1525. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/table.css +0 -0
  1526. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/text_field.css +0 -0
  1527. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/toolbar.css +0 -0
  1528. data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/well.css +0 -0
  1529. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +89 -0
  1530. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/panel.js +28 -0
  1531. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +194 -0
  1532. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +67 -0
  1533. data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/well.js +27 -0
  1534. data/lib/frameworks/sproutcore/themes/legacy_theme/theme.js +13 -0
  1535. data/lib/gen/app/templates/apps/@target_name@/Buildfile +14 -0
  1536. data/lib/gen/app/templates/apps/@target_name@/theme.js +27 -0
  1537. data/lib/gen/html_app/Buildfile +36 -0
  1538. data/lib/gen/html_app/README +1 -0
  1539. data/lib/gen/html_app/USAGE +15 -0
  1540. data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +14 -0
  1541. data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
  1542. data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +4 -0
  1543. data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +1 -0
  1544. data/lib/gen/html_project/Buildfile +45 -0
  1545. data/lib/gen/html_project/INIT +3 -0
  1546. data/lib/gen/html_project/README +1 -0
  1547. data/lib/gen/html_project/USAGE +2 -0
  1548. data/lib/gen/html_project/templates/@filename@/Buildfile +8 -0
  1549. data/lib/gen/html_project/templates/@filename@/README +7 -0
  1550. data/lib/gen/project/templates/@filename@/Buildfile +7 -2
  1551. data/lib/gen/theme/templates/themes/@target_name@/Buildfile +3 -0
  1552. data/lib/gen/theme/templates/themes/@target_name@/theme.js +23 -0
  1553. data/lib/sproutcore.rb +11 -2
  1554. data/lib/sproutcore/builders.rb +4 -2
  1555. data/lib/sproutcore/builders/base.rb +10 -3
  1556. data/lib/sproutcore/builders/chance_file.rb +78 -0
  1557. data/lib/sproutcore/builders/combine.rb +6 -5
  1558. data/lib/sproutcore/builders/handlebars.rb +30 -0
  1559. data/lib/sproutcore/builders/html.rb +2 -0
  1560. data/lib/sproutcore/builders/javascript.rb +15 -2
  1561. data/lib/sproutcore/builders/minify.rb +14 -25
  1562. data/lib/sproutcore/builders/module.rb +74 -0
  1563. data/lib/sproutcore/builders/string_wrapper.rb +41 -0
  1564. data/lib/sproutcore/buildfile.rb +17 -17
  1565. data/lib/sproutcore/buildfile/task.rb +4 -12
  1566. data/lib/sproutcore/buildfile/task_manager.rb +13 -4
  1567. data/lib/sproutcore/helpers.rb +1 -1
  1568. data/lib/sproutcore/helpers/entry_sorter.rb +5 -9
  1569. data/lib/sproutcore/helpers/minifier.rb +110 -0
  1570. data/lib/sproutcore/helpers/static_helper.rb +105 -39
  1571. data/lib/sproutcore/models/generator.rb +16 -0
  1572. data/lib/sproutcore/models/manifest.rb +3 -3
  1573. data/lib/sproutcore/models/manifest_entry.rb +10 -3
  1574. data/lib/sproutcore/models/target.rb +146 -34
  1575. data/lib/sproutcore/rack/dev.rb +3 -3
  1576. data/lib/sproutcore/rack/proxy.rb +1 -1
  1577. data/lib/sproutcore/tools.rb +53 -5
  1578. data/lib/sproutcore/tools/build.rb +10 -16
  1579. data/lib/sproutcore/tools/docs.rb +1 -1
  1580. data/lib/sproutcore/tools/gen.rb +1 -1
  1581. data/lib/sproutcore/tools/init.rb +26 -10
  1582. data/lib/sproutcore/tools/server.rb +9 -1
  1583. data/lib/sproutcore/version.rb +1 -0
  1584. data/spec/buildtasks/manifest/prepare_build_tasks/chance_2x_spec.rb +100 -0
  1585. data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +104 -0
  1586. data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +86 -9
  1587. data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +1 -1
  1588. data/spec/buildtasks/manifest/prepare_build_tasks/handlebars_spec.rb +39 -0
  1589. data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +1 -1
  1590. data/spec/buildtasks/manifest/prepare_build_tasks/module_info_spec.rb +96 -0
  1591. data/spec/buildtasks/manifest/prepare_build_tasks/module_spec.rb +83 -0
  1592. data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_indirect_spec.rb +191 -0
  1593. data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_spec.rb +185 -0
  1594. data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +46 -11
  1595. data/spec/buildtasks/manifest/spec_helper.rb +4 -0
  1596. data/spec/fixtures/builder_tests/Buildfile +11 -9
  1597. data/spec/fixtures/builder_tests/apps/chance_test/Buildfile +14 -0
  1598. data/spec/fixtures/builder_tests/apps/chance_test/core.js +27 -0
  1599. data/spec/fixtures/builder_tests/apps/chance_test/main.js +30 -0
  1600. data/spec/fixtures/builder_tests/apps/chance_test/resources/demo.css +6 -0
  1601. data/spec/fixtures/builder_tests/apps/chance_test/resources/force@2x.png +0 -0
  1602. data/spec/fixtures/builder_tests/apps/chance_test/resources/last_file.css +7 -0
  1603. data/spec/fixtures/builder_tests/apps/chance_test/resources/loading.rhtml +9 -0
  1604. data/spec/fixtures/builder_tests/apps/chance_test/resources/main_page.js +24 -0
  1605. data/spec/fixtures/builder_tests/apps/chance_test/resources/z_first_file.css +6 -0
  1606. data/spec/fixtures/builder_tests/apps/chance_test/theme.js +27 -0
  1607. data/spec/fixtures/builder_tests/apps/handlebars_test/template.handlebars +5 -0
  1608. data/spec/fixtures/builder_tests/apps/module_test/module.js +1 -0
  1609. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/req_style_2.css +0 -0
  1610. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/test.rhtml +1 -0
  1611. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/javascript.js +1 -0
  1612. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/lib/alt_layout.rhtml +0 -0
  1613. data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/req_js_2.js +0 -0
  1614. data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/dynamic_req_js_1.js +0 -0
  1615. data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/english.lproj/dynamic_req_style_1.css +0 -0
  1616. data/spec/fixtures/builder_tests/apps/module_test/modules/inlined_module/README +0 -0
  1617. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/req_style_1.css +0 -0
  1618. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/strings.js +4 -0
  1619. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/test.rhtml +1 -0
  1620. data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/req_js_1.js +0 -0
  1621. data/spec/fixtures/helper_tests/apps/minifier_test/core.js +8 -0
  1622. data/spec/fixtures/real_world/Buildfile +11 -1
  1623. data/spec/fixtures/real_world/apps/account/modules/preferences/README +0 -0
  1624. data/spec/fixtures/real_world/apps/calendar/modules/preferences/README +0 -0
  1625. data/spec/fixtures/real_world/apps/contacts/modules/preferences/README +0 -0
  1626. data/spec/fixtures/real_world/apps/contacts/modules/printing/README +0 -0
  1627. data/spec/fixtures/real_world/apps/mail/modules/preferences/README +0 -0
  1628. data/spec/fixtures/real_world/apps/mail/modules/printing/README +0 -0
  1629. data/spec/fixtures/real_world/apps/photos/modules/email/README +0 -0
  1630. data/spec/fixtures/real_world/apps/photos/modules/preferences/README +0 -0
  1631. data/spec/fixtures/real_world/frameworks/no_2x/resources/test.css +1 -0
  1632. data/spec/fixtures/real_world/frameworks/no_2x/resources/test.png +0 -0
  1633. data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/templates/demo.handlebars +4 -0
  1634. data/spec/fixtures/real_world/frameworks/sproutcore/resources/force@2x.png +0 -0
  1635. data/spec/lib/builders/chance_file_spec.rb +44 -0
  1636. data/spec/lib/builders/handlebars_spec.rb +29 -0
  1637. data/spec/lib/builders/module_spec.rb +133 -0
  1638. data/spec/lib/builders/strings_spec.rb +1 -0
  1639. data/spec/lib/helpers/minifier.rb +31 -0
  1640. data/spec/lib/models/project/find_targets_for_spec.rb +1 -1
  1641. data/sproutcore.gemspec +11 -4
  1642. data/vendor/chance/.gitignore +5 -0
  1643. data/vendor/chance/Gemfile +4 -0
  1644. data/vendor/chance/Rakefile +2 -0
  1645. data/vendor/chance/bin/chance +46 -0
  1646. data/vendor/chance/chance.gemspec +28 -0
  1647. data/vendor/chance/lib/chance.rb +156 -0
  1648. data/vendor/chance/lib/chance/instance.rb +330 -0
  1649. data/vendor/chance/lib/chance/instance/data_url.rb +85 -0
  1650. data/vendor/chance/lib/chance/instance/javascript.rb +19 -0
  1651. data/vendor/chance/lib/chance/instance/slicing.rb +181 -0
  1652. data/vendor/chance/lib/chance/instance/spriting.rb +311 -0
  1653. data/vendor/chance/lib/chance/parser.rb +835 -0
  1654. data/vendor/chance/lib/chance/perf.rb +17 -0
  1655. data/vendor/chance/lib/chance/version.rb +3 -0
  1656. data/vendor/chance/lib/tester/test.rb +108 -0
  1657. data/vendor/chance/lib/tester/test_runner.rb +27 -0
  1658. data/vendor/chance/test/case/abc.png +0 -0
  1659. data/vendor/chance/test/case/more/abc.png +0 -0
  1660. data/vendor/chance/test/case/more/another.css +4 -0
  1661. data/vendor/chance/test/case/test1.css +22 -0
  1662. data/vendor/chance/test/case/test2.css +6 -0
  1663. data/vendor/chance/tests/parser/basic/input/test.css +4 -0
  1664. data/vendor/chance/tests/parser/basic/output/test.parsed.css +5 -0
  1665. data/vendor/sproutcore/SCCompiler.jar +0 -0
  1666. data/vendor/sproutcore/lib/args4j-2.0.12.jar +0 -0
  1667. data/vendor/sproutcore/lib/htmlcompressor-0.9.3.jar +0 -0
  1668. data/{lib/sproutcore/vendor/yui-compressor → vendor/sproutcore/lib}/yuicompressor-2.4.2.jar +0 -0
  1669. data/vendor/sproutcore/src/SCCompiler/build.xml +74 -0
  1670. data/vendor/sproutcore/src/SCCompiler/lib/args4j-2.0.12.jar +0 -0
  1671. data/vendor/sproutcore/src/SCCompiler/lib/htmlcompressor-0.9.3.jar +0 -0
  1672. data/vendor/sproutcore/src/SCCompiler/lib/yuicompressor-2.4.2.jar +0 -0
  1673. data/vendor/sproutcore/src/SCCompiler/lib/yuicompressor-2.4.4.jar +0 -0
  1674. data/vendor/sproutcore/src/SCCompiler/manifest.mf +3 -0
  1675. data/vendor/sproutcore/src/SCCompiler/nbproject/build-impl.xml +894 -0
  1676. data/vendor/sproutcore/src/SCCompiler/nbproject/genfiles.properties +8 -0
  1677. data/vendor/sproutcore/src/SCCompiler/nbproject/private/config.properties +0 -0
  1678. data/vendor/sproutcore/src/SCCompiler/nbproject/private/private.properties +10 -0
  1679. data/vendor/sproutcore/src/SCCompiler/nbproject/private/private.xml +4 -0
  1680. data/vendor/sproutcore/src/SCCompiler/nbproject/project.properties +90 -0
  1681. data/vendor/sproutcore/src/SCCompiler/nbproject/project.xml +15 -0
  1682. data/vendor/sproutcore/src/SCCompiler/src/com/sproutcore/Main.java +348 -0
  1683. metadata +1236 -560
  1684. data/lib/frameworks/sproutcore/CHANGELOG +0 -93
  1685. data/lib/frameworks/sproutcore/CHANGELOG-1.4.md +0 -170
  1686. data/lib/frameworks/sproutcore/apps/docs/core.js +0 -27
  1687. data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
  1688. data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
  1689. data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +0 -14378
  1690. data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
  1691. data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
  1692. data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -0
  1693. data/lib/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +0 -9
  1694. data/lib/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +0 -22
  1695. data/lib/frameworks/sproutcore/apps/docs/english.lproj/strings.js +0 -15
  1696. data/lib/frameworks/sproutcore/apps/docs/main.js +0 -30
  1697. data/lib/frameworks/sproutcore/apps/greenhouse/README +0 -25
  1698. data/lib/frameworks/sproutcore/apps/greenhouse/TODO +0 -72
  1699. data/lib/frameworks/sproutcore/apps/greenhouse/controllers/file.js +0 -75
  1700. data/lib/frameworks/sproutcore/apps/greenhouse/controllers/library.js +0 -201
  1701. data/lib/frameworks/sproutcore/apps/greenhouse/core.js +0 -67
  1702. data/lib/frameworks/sproutcore/apps/greenhouse/core_file.js +0 -124
  1703. data/lib/frameworks/sproutcore/apps/greenhouse/data_source.js +0 -250
  1704. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/app_page.js +0 -377
  1705. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/app-selector.css +0 -111
  1706. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/button.css +0 -310
  1707. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/dock.css +0 -85
  1708. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/general.css +0 -52
  1709. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/main-page.css +0 -120
  1710. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/menu.css +0 -52
  1711. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/modal.css +0 -40
  1712. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/picker.css +0 -188
  1713. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/tabbed.css +0 -68
  1714. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/dialogs.js +0 -302
  1715. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/inspectors.js +0 -365
  1716. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/strings.js +0 -87
  1717. data/lib/frameworks/sproutcore/apps/greenhouse/main.js +0 -28
  1718. data/lib/frameworks/sproutcore/apps/greenhouse/models/design.js +0 -22
  1719. data/lib/frameworks/sproutcore/apps/greenhouse/models/dir.js +0 -92
  1720. data/lib/frameworks/sproutcore/apps/greenhouse/models/file.js +0 -51
  1721. data/lib/frameworks/sproutcore/apps/greenhouse/states/inspector.js +0 -144
  1722. data/lib/frameworks/sproutcore/apps/greenhouse/states/library.js +0 -133
  1723. data/lib/frameworks/sproutcore/apps/greenhouse/states/main.js +0 -224
  1724. data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +0 -291
  1725. data/lib/frameworks/sproutcore/apps/greenhouse/states/ready.js +0 -197
  1726. data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/list_item.js +0 -15
  1727. data/lib/frameworks/sproutcore/apps/greenhouse/views/plist_item.js +0 -39
  1728. data/lib/frameworks/sproutcore/apps/greenhouse/views/tear_off_picker.js +0 -56
  1729. data/lib/frameworks/sproutcore/design/TestRunner Design.graffle/image11.png +0 -0
  1730. data/lib/frameworks/sproutcore/design/TestRunner Design.graffle/image13.png +0 -0
  1731. data/lib/frameworks/sproutcore/design/TestRunner Design.graffle/image8.png +0 -0
  1732. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/parentless.js +0 -134
  1733. data/lib/frameworks/sproutcore/frameworks/datejs/core.js +0 -865
  1734. data/lib/frameworks/sproutcore/frameworks/datejs/english.lproj/en-US.js +0 -186
  1735. data/lib/frameworks/sproutcore/frameworks/datejs/extras.js +0 -332
  1736. data/lib/frameworks/sproutcore/frameworks/datejs/license.js +0 -25
  1737. data/lib/frameworks/sproutcore/frameworks/datejs/parser.js +0 -1116
  1738. data/lib/frameworks/sproutcore/frameworks/datejs/spanish.lproj/es-CO.js +0 -186
  1739. data/lib/frameworks/sproutcore/frameworks/datejs/sugarpak.js +0 -475
  1740. data/lib/frameworks/sproutcore/frameworks/datejs/time.js +0 -269
  1741. data/lib/frameworks/sproutcore/frameworks/datejs/validators/datejs.js +0 -34
  1742. data/lib/frameworks/sproutcore/frameworks/designer/coders/design.js +0 -20
  1743. data/lib/frameworks/sproutcore/frameworks/designer/coders/localization.js +0 -19
  1744. data/lib/frameworks/sproutcore/frameworks/designer/coders/object.js +0 -347
  1745. data/lib/frameworks/sproutcore/frameworks/designer/controllers/controllers.js +0 -16
  1746. data/lib/frameworks/sproutcore/frameworks/designer/controllers/design.js +0 -37
  1747. data/lib/frameworks/sproutcore/frameworks/designer/controllers/designs.js +0 -134
  1748. data/lib/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +0 -170
  1749. data/lib/frameworks/sproutcore/frameworks/designer/controllers/page_files.js +0 -22
  1750. data/lib/frameworks/sproutcore/frameworks/designer/core.js +0 -26
  1751. data/lib/frameworks/sproutcore/frameworks/designer/css/css_rule.js +0 -22
  1752. data/lib/frameworks/sproutcore/frameworks/designer/css/css_style.js +0 -29
  1753. data/lib/frameworks/sproutcore/frameworks/designer/css/css_style_sheet.js +0 -201
  1754. data/lib/frameworks/sproutcore/frameworks/designer/designers/button.js +0 -21
  1755. data/lib/frameworks/sproutcore/frameworks/designer/designers/label.js +0 -16
  1756. data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +0 -296
  1757. data/lib/frameworks/sproutcore/frameworks/designer/designers/tab.js +0 -18
  1758. data/lib/frameworks/sproutcore/frameworks/designer/designers/text_field.js +0 -15
  1759. data/lib/frameworks/sproutcore/frameworks/designer/designers/view_designer.js +0 -1259
  1760. data/lib/frameworks/sproutcore/frameworks/designer/english.lproj/design_page.js +0 -55
  1761. data/lib/frameworks/sproutcore/frameworks/designer/ext/object.js +0 -26
  1762. data/lib/frameworks/sproutcore/frameworks/designer/ext/page.js +0 -86
  1763. data/lib/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -54
  1764. data/lib/frameworks/sproutcore/frameworks/designer/mixins/button.js +0 -11
  1765. data/lib/frameworks/sproutcore/frameworks/designer/mixins/snap_lines.js +0 -221
  1766. data/lib/frameworks/sproutcore/frameworks/designer/views/designer_drop_target.js +0 -138
  1767. data/lib/frameworks/sproutcore/frameworks/designer/views/drawing.js +0 -219
  1768. data/lib/frameworks/sproutcore/frameworks/designer/views/selection_handles.js +0 -78
  1769. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/array.js +0 -518
  1770. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +0 -44
  1771. data/lib/frameworks/sproutcore/frameworks/foundation/controllers/object.js +0 -342
  1772. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +0 -474
  1773. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +0 -15
  1774. data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +0 -57
  1775. data/lib/frameworks/sproutcore/frameworks/foundation/ext/object.js +0 -83
  1776. data/lib/frameworks/sproutcore/frameworks/foundation/ext/run_loop.js +0 -162
  1777. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +0 -585
  1778. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/responder_context.js +0 -269
  1779. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +0 -250
  1780. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/string.js +0 -543
  1781. data/lib/frameworks/sproutcore/frameworks/foundation/panes/main.js +0 -51
  1782. data/lib/frameworks/sproutcore/frameworks/foundation/panes/pane.js +0 -848
  1783. data/lib/frameworks/sproutcore/frameworks/foundation/protocols/inline_editor_delegate.js +0 -84
  1784. data/lib/frameworks/sproutcore/frameworks/foundation/system/application.js +0 -37
  1785. data/lib/frameworks/sproutcore/frameworks/foundation/system/browser.js +0 -59
  1786. data/lib/frameworks/sproutcore/frameworks/foundation/system/builder.js +0 -210
  1787. data/lib/frameworks/sproutcore/frameworks/foundation/system/bundle.js +0 -337
  1788. data/lib/frameworks/sproutcore/frameworks/foundation/system/cursor.js +0 -131
  1789. data/lib/frameworks/sproutcore/frameworks/foundation/system/datetime.js +0 -1140
  1790. data/lib/frameworks/sproutcore/frameworks/foundation/system/device.js +0 -143
  1791. data/lib/frameworks/sproutcore/frameworks/foundation/system/event.js +0 -894
  1792. data/lib/frameworks/sproutcore/frameworks/foundation/system/image_cache.js +0 -433
  1793. data/lib/frameworks/sproutcore/frameworks/foundation/system/json.js +0 -515
  1794. data/lib/frameworks/sproutcore/frameworks/foundation/system/locale.js +0 -293
  1795. data/lib/frameworks/sproutcore/frameworks/foundation/system/page.js +0 -108
  1796. data/lib/frameworks/sproutcore/frameworks/foundation/system/platform.js +0 -298
  1797. data/lib/frameworks/sproutcore/frameworks/foundation/system/ready.js +0 -197
  1798. data/lib/frameworks/sproutcore/frameworks/foundation/system/render_context.js +0 -988
  1799. data/lib/frameworks/sproutcore/frameworks/foundation/system/request.js +0 -599
  1800. data/lib/frameworks/sproutcore/frameworks/foundation/system/responder.js +0 -124
  1801. data/lib/frameworks/sproutcore/frameworks/foundation/system/response.js +0 -538
  1802. data/lib/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +0 -2068
  1803. data/lib/frameworks/sproutcore/frameworks/foundation/system/time.js +0 -473
  1804. data/lib/frameworks/sproutcore/frameworks/foundation/system/timer.js +0 -551
  1805. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils.js +0 -710
  1806. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +0 -218
  1807. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +0 -206
  1808. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +0 -64
  1809. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/selection_support.js +0 -318
  1810. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/single_case.js +0 -136
  1811. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/empty_case.js +0 -82
  1812. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/multiple_case.js +0 -111
  1813. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_case.js +0 -193
  1814. data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_enumerable_case.js +0 -265
  1815. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/content.js +0 -195
  1816. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/displayProperties.js +0 -89
  1817. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +0 -57
  1818. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/ui.js +0 -68
  1819. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/content.js +0 -168
  1820. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/responder_context.js +0 -75
  1821. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +0 -83
  1822. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/builder.js +0 -42
  1823. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +0 -1334
  1824. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_dimensions.js +0 -387
  1825. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +0 -405
  1826. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/within.js +0 -66
  1827. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +0 -382
  1828. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/json.js +0 -14
  1829. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/locale.js +0 -134
  1830. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/begin.js +0 -47
  1831. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/element.js +0 -44
  1832. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/end.js +0 -124
  1833. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +0 -51
  1834. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +0 -50
  1835. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +0 -28
  1836. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +0 -179
  1837. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +0 -101
  1838. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/init.js +0 -55
  1839. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/join.js +0 -28
  1840. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/push_text.js +0 -74
  1841. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/tag.js +0 -46
  1842. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/update.js +0 -218
  1843. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +0 -223
  1844. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeKeyPane.js +0 -124
  1845. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeMainPane.js +0 -68
  1846. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeMenuPane.js +0 -48
  1847. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +0 -101
  1848. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/targetForAction.js +0 -251
  1849. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invalidate.js +0 -38
  1850. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invokeLater.js +0 -201
  1851. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/timer/isPaused.js +0 -71
  1852. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/timer/performAction.js +0 -69
  1853. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +0 -170
  1854. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/normalizeURL.js +0 -18
  1855. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/rect.js +0 -99
  1856. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/main_pane.js +0 -31
  1857. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +0 -124
  1858. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/firstResponder.js +0 -148
  1859. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/keyPane.js +0 -133
  1860. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/layout.js +0 -31
  1861. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/sendEvent.js +0 -206
  1862. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +0 -133
  1863. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +0 -246
  1864. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertLayouts.js +0 -145
  1865. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +0 -122
  1866. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/createLayer.js +0 -97
  1867. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/destroyLayer.js +0 -83
  1868. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/didAppendToDocument.js +0 -48
  1869. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +0 -50
  1870. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/init.js +0 -50
  1871. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/insertBefore.js +0 -200
  1872. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisible.js +0 -51
  1873. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +0 -116
  1874. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/layer.js +0 -150
  1875. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutChildViews.js +0 -162
  1876. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutDidChange.js +0 -127
  1877. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +0 -531
  1878. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/nextValidKeyView.js +0 -110
  1879. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/parentViewDidChange.js +0 -67
  1880. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +0 -180
  1881. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/removeChild.js +0 -189
  1882. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/render.js +0 -83
  1883. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/replaceChild.js +0 -29
  1884. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +0 -146
  1885. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayerLocation.js +0 -194
  1886. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/viewDidResize.js +0 -202
  1887. data/lib/frameworks/sproutcore/frameworks/foundation/views/view.js +0 -3313
  1888. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +0 -110
  1889. data/lib/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +0 -40
  1890. data/lib/frameworks/sproutcore/frameworks/runtime/protocols/sparse_array_delegate.js +0 -131
  1891. data/lib/frameworks/sproutcore/frameworks/runtime/system/cookie.js +0 -160
  1892. data/lib/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +0 -697
  1893. data/lib/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +0 -379
  1894. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +0 -622
  1895. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/cookie.js +0 -163
  1896. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/add.js +0 -92
  1897. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +0 -17
  1898. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +0 -98
  1899. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/isEqual.js +0 -60
  1900. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +0 -111
  1901. data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +0 -194
  1902. data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart.js +0 -336
  1903. data/lib/frameworks/sproutcore/frameworks/statechart/tests/basic.js +0 -90
  1904. data/lib/frameworks/sproutcore/frameworks/statechart/tests/history.js +0 -71
  1905. data/lib/frameworks/sproutcore/frameworks/statechart/tests/nested.js +0 -59
  1906. data/lib/frameworks/sproutcore/frameworks/statechart/tests/transient.js +0 -148
  1907. data/lib/frameworks/sproutcore/frameworks/testing/jquery.js +0 -3559
  1908. data/lib/frameworks/sproutcore/frameworks/testing/qunit.js +0 -827
  1909. data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/pane.css +0 -18
  1910. data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +0 -275
  1911. data/lib/sproutcore/builders/bundle.rb +0 -63
  1912. data/lib/sproutcore/buildfile/cloneable.rb +0 -34
  1913. data/lib/sproutcore/vendor/yui-compressor/SCyuicompressor-2.4.2.jar +0 -0
  1914. data/spec/buildtasks/manifest/prepare_build_tasks/bundle_spec.rb +0 -254
  1915. data/spec/fixtures/builder_tests/apps/bundle_test/bundle.js +0 -1
  1916. data/spec/lib/builders/bundle_spec.rb +0 -295
@@ -1,202 +0,0 @@
1
- // ==========================================================================
2
- // Project: SproutCore - JavaScript Application Framework
3
- // Copyright: ©2006-2010 Apple Inc. and contributors.
4
- // License: Licensed under MIT license (see license.js)
5
- // ==========================================================================
6
-
7
- /*global module test equals context ok same Q$ htmlbody */
8
-
9
- // ..........................................................
10
- // viewDidResize()
11
- //
12
- module("SC.View#viewDidResize");
13
-
14
- test("invokes parentViewDidResize on all child views", function() {
15
- var callCount = 0 ;
16
- var ChildView = SC.View.extend({
17
- parentViewDidResize: function() { callCount++; }
18
- });
19
-
20
- var view = SC.View.create({
21
- childViews: [ChildView, ChildView, ChildView]
22
- });
23
-
24
- // now test...
25
- SC.run(function() { view.viewDidResize(); });
26
- equals(callCount, 3, 'should invoke parentViewDidResize() on all children');
27
- });
28
-
29
- test("triggers whenever layout property is changed", function() {
30
- var callCount = 0 ;
31
- var view = SC.View.create({
32
- // use the callback below to detect when viewDidResize is icalled.
33
- childViews: [SC.View.extend({
34
- parentViewDidResize: function() { callCount++; }
35
- })]
36
- });
37
-
38
- SC.run(function() { view.set('layout', { top: 10, left: 20, height: 50, width: 40 }); });
39
- equals(callCount, 1, 'viewDidResize should invoke once');
40
- });
41
-
42
- test("making sure that the frame value is correct inside viewDidResize()", function() {
43
- // We want to test to be sure that when the view's viewDidResize() method is
44
- // called, its frame has been updated. But rather than run the test inside
45
- // the method itself, we'll cache a global reference to the then-current
46
- // value and test it later.
47
- var cachedFrame;
48
-
49
- var view = SC.View.create({
50
-
51
- layout: { left:0, top:0, width:400, height:400 },
52
-
53
- viewDidResize: function() {
54
- sc_super();
55
-
56
- // Set a global reference to my frame at this point so that we can
57
- // test for the correct value later.
58
- cachedFrame = this.get('frame');
59
- }
60
- });
61
-
62
-
63
- // Access the frame once before resizing the view, to make sure that the
64
- // previous value was cached. That way, when we ask for the frame again
65
- // after the resize, we can verify that the cache invalidation logic is
66
- // working correctly.
67
- var originalFrame = view.get('frame');
68
-
69
- SC.RunLoop.begin();
70
- view.adjust('height', 314);
71
- SC.RunLoop.end();
72
-
73
- // Now that we've adjusted the view, the cached view (as it was inside its
74
- // viewDidResize() method) should be the same value, because the cached
75
- // 'frame' value should have been invalidated by that point.
76
- same(view.get('frame').height, cachedFrame.height, 'height');
77
- });
78
-
79
-
80
- // ..........................................................
81
- // parentViewDidResize()
82
- //
83
- module("SC.View#parentViewDidResize");
84
-
85
- // view.callCount must increments whenever something interesting happens
86
- function testParentViewDidResizeWithAlignments(view) {
87
- // try with fixed layout
88
- view.set('layout', { top: 10, left: 10, height: 10, width: 10 });
89
- view.callCount = 0 ;
90
- view.parentViewDidResize();
91
- equals(view.callCount, 0, 'should not notify frame changed');
92
-
93
- // try with flexible height
94
- view.set('layout', { top: 10, left: 10, bottom: 10, width: 10 });
95
- view.callCount = 0 ;
96
- view.parentViewDidResize();
97
- equals(view.callCount, 1, 'should notify frame changed');
98
-
99
- // try with flexible width
100
- view.set('layout', { top: 10, left: 10, height: 10, right: 10 });
101
- view.callCount = 0 ;
102
- view.parentViewDidResize();
103
- equals(view.callCount, 1, 'should notify frame changed');
104
-
105
- // try with right align
106
- view.set('layout', { top: 10, right: 10, height: 10, width: 10 });
107
- view.callCount = 0 ;
108
- view.parentViewDidResize();
109
- equals(view.callCount, 1, 'should notify frame changed');
110
-
111
- // try with bottom align
112
- view.set('layout', { top: 10, bottom: 10, height: 10, width: 10 });
113
- view.callCount = 0 ;
114
- view.parentViewDidResize();
115
- equals(view.callCount, 1, 'should notify frame changed');
116
-
117
- // try with center horizontal align
118
- view.set('layout', { centerX: 10, top: 10, height: 10, width: 10 });
119
- view.callCount = 0 ;
120
- view.parentViewDidResize();
121
- equals(view.callCount, 1, 'should notify frame changed');
122
-
123
- // try with center vertical align
124
- view.set('layout', { left: 10, centerY: 10, height: 10, width: 10 });
125
- view.callCount = 0 ;
126
- view.parentViewDidResize();
127
- equals(view.callCount, 1, 'should notify frame changed');
128
- }
129
-
130
- test("notifies 'frame' property change unless layout is fixed", function() {
131
- var view = SC.View.create({
132
- // instrument...
133
- callCount: 0 ,
134
- frameDidChange: function() {
135
- this.callCount++;
136
- }.observes('frame')
137
- });
138
- testParentViewDidResizeWithAlignments(view);
139
- });
140
-
141
- test("calls viewDidResize on self unless layout is fixed", function() {
142
- var view = SC.View.create({
143
- // instrument...
144
- callCount: 0 ,
145
- viewDidResize: function() { this.callCount++; }
146
- });
147
- testParentViewDidResizeWithAlignments(view);
148
- });
149
-
150
- // ..........................................................
151
- // beginLiveResize()
152
- //
153
- module("SC.View#beginLiveResize");
154
-
155
- test("invokes willBeginLiveResize on receiver and any child views that implement it", function() {
156
- var callCount = 0;
157
- var ChildView = SC.View.extend({
158
- willBeginLiveResize: function() { callCount++ ;}
159
- });
160
-
161
- var view = ChildView.create({ // <-- has callback
162
- childViews: [SC.View.extend({ // <-- this does not implement callback
163
- childViews: [ChildView] // <-- has callback
164
- })]
165
- });
166
-
167
- callCount = 0 ;
168
- view.beginLiveResize();
169
- equals(callCount, 2, 'should invoke willBeginLiveResize when implemented');
170
- });
171
-
172
- test("returns receiver", function() {
173
- var view = SC.View.create();
174
- equals(view.beginLiveResize(), view, 'returns receiver');
175
- });
176
-
177
- // ..........................................................
178
- // endLiveResize()
179
- //
180
- module("SC.View#endLiveResize");
181
-
182
- test("invokes didEndLiveResize on receiver and any child views that implement it", function() {
183
- var callCount = 0;
184
- var ChildView = SC.View.extend({
185
- didEndLiveResize: function() { callCount++; }
186
- });
187
-
188
- var view = ChildView.create({ // <-- has callback
189
- childViews: [SC.View.extend({ // <-- this does not implement callback
190
- childViews: [ChildView] // <-- has callback
191
- })]
192
- });
193
-
194
- callCount = 0 ;
195
- view.endLiveResize();
196
- equals(callCount, 2, 'should invoke didEndLiveResize when implemented');
197
- });
198
-
199
- test("returns receiver", function() {
200
- var view = SC.View.create();
201
- equals(view.endLiveResize(), view, 'returns receiver');
202
- });
@@ -1,3313 +0,0 @@
1
- // ==========================================================================
2
- // Project: SproutCore - JavaScript Application Framework
3
- // Copyright: ©2006-2011 Strobe Inc. and contributors.
4
- // Portions ©2008-2010 Apple Inc. All rights reserved.
5
- // License: Licensed under MIT license (see license.js)
6
- // ==========================================================================
7
-
8
- sc_require('system/browser');
9
- sc_require('system/event');
10
- sc_require('system/cursor');
11
- sc_require('system/responder') ;
12
-
13
- sc_require('mixins/string') ;
14
-
15
- SC.viewKey = SC.guidKey + "_view" ;
16
-
17
- /** Select a horizontal layout for various views.*/
18
- SC.LAYOUT_HORIZONTAL = 'sc-layout-horizontal';
19
-
20
- /** Select a vertical layout for various views.*/
21
- SC.LAYOUT_VERTICAL = 'sc-layout-vertical';
22
-
23
- /** @private */
24
- SC._VIEW_DEFAULT_DIMS = 'marginTop marginLeft'.w();
25
-
26
- /**
27
- Layout properties needed to anchor a view to the top.
28
- */
29
- SC.ANCHOR_TOP = { top: 0 };
30
-
31
- /**
32
- Layout properties needed to anchor a view to the left.
33
- */
34
- SC.ANCHOR_LEFT = { left: 0 };
35
-
36
- /*
37
- Layout properties to anchor a view to the top left
38
- */
39
- SC.ANCHOR_TOP_LEFT = { top: 0, left: 0 };
40
-
41
- /**
42
- Layout properties to anchoe view to the bottom.
43
- */
44
- SC.ANCHOR_BOTTOM = { bottom: 0 };
45
-
46
- /**
47
- Layout properties to anchor a view to the right.
48
- */
49
- SC.ANCHOR_RIGHT = { right: 0 } ;
50
-
51
- /**
52
- Layout properties to anchor a view to the bottom right.
53
- */
54
- SC.ANCHOR_BOTTOM_RIGHT = { bottom: 0, right: 0 };
55
-
56
- /**
57
- Layout properties to take up the full width of a parent view.
58
- */
59
- SC.FULL_WIDTH = { left: 0, right: 0 };
60
-
61
- /**
62
- Layout properties to take up the full height of a parent view.
63
- */
64
- SC.FULL_HEIGHT = { top: 0, bottom: 0 };
65
-
66
- /**
67
- Layout properties to center. Note that you must also specify a width and
68
- height for this to work.
69
- */
70
- SC.ANCHOR_CENTER = { centerX: 0, centerY: 0 };
71
-
72
- /**
73
- Layout property for width, height
74
- */
75
-
76
- SC.LAYOUT_AUTO = 'auto';
77
-
78
- /**
79
- Default property to disable or enable by default the contextMenu
80
- */
81
- SC.CONTEXT_MENU_ENABLED = YES;
82
-
83
- /**
84
- Default property to disable or enable if the focus can jump to the address
85
- bar or not.
86
- */
87
- SC.TABBING_ONLY_INSIDE_DOCUMENT = YES;
88
-
89
- /** @private - custom array used for child views */
90
- SC.EMPTY_CHILD_VIEWS_ARRAY = [];
91
- SC.EMPTY_CHILD_VIEWS_ARRAY.needsClone = YES;
92
-
93
- /**
94
- @class
95
-
96
- Base class for managing a view. Views provide two functions:
97
-
98
- 1. They translate state and events into drawing instructions for the
99
- web browser and
100
-
101
- 2. They act as first responders for incoming keyboard, mouse, and
102
- touch events.
103
-
104
- h2. View Initialization
105
-
106
- When a view is setup, there are several methods you can override that
107
- will be called at different times depending on how your view is created.
108
- Here is a guide to which method you want to override and when:
109
-
110
- - *init:* override this method for any general object setup (such as
111
- observers, starting timers and animations, etc) that you need to happen
112
- everytime the view is created, regardless of whether or not its layer
113
- exists yet.
114
-
115
- - *render:* override this method to generate or update your HTML to reflect
116
- the current state of your view. This method is called both when your view
117
- is first created and later anytime it needs to be updated.
118
-
119
- - *didCreateLayer:* the render() method is used to generate new HTML.
120
- Override this method to perform any additional setup on the DOM you might
121
- need to do after creating the view. For example, if you need to listen
122
- for events.
123
-
124
- - *willDestroyLayer:* if you implement didCreateLayer() to setup event
125
- listeners, you should implement this method as well to remove the same
126
- just before the DOM for your view is destroyed.
127
-
128
- - *updateLayer:* Normally, when a view needs to update its content, it will
129
- re-render the view using the render() method. If you would like to
130
- override this behavior with your own custom updating code, you can
131
- replace updateLayer() with your own implementation instead.
132
-
133
- - *didAppendToDocument:* in theory all DOM setup could be done
134
- in didCreateLayer() as you already have a DOM element instantiated.
135
- However there is cases where the element has to be first appended to the
136
- Document because there is either a bug on the browser or you are using
137
- plugins which objects are not instantiated until you actually append the
138
- element to the DOM. This will allow you to do things like registering
139
- DOM events on flash or quicktime objects.
140
-
141
- @extends SC.Responder
142
- @extends SC.DelegateSupport
143
- @since SproutCore 1.0
144
- */
145
- SC.View = SC.Responder.extend(SC.DelegateSupport,
146
- /** @scope SC.View.prototype */ {
147
-
148
- concatenatedProperties: 'outlets displayProperties layoutProperties classNames renderMixin didCreateLayerMixin willDestroyLayerMixin'.w(),
149
-
150
- /**
151
- The current pane.
152
- @property {SC.Pane}
153
- */
154
- pane: function() {
155
- var view = this ;
156
- while (view && !view.isPane) view = view.get('parentView') ;
157
- return view ;
158
- }.property('parentView').cacheable(),
159
-
160
- /**
161
- The page this view was instantiated from. This is set by the page object
162
- during instantiation.
163
-
164
- @property {SC.Page}
165
- */
166
- page: null,
167
-
168
- /**
169
- The current split view this view is embedded in (may be null).
170
- @property {SC.SplitView}
171
- */
172
- splitView: function() {
173
- var view = this ;
174
- while (view && !view.isSplitView) view = view.get('parentView') ;
175
- return view ;
176
- }.property('parentView').cacheable(),
177
-
178
- /**
179
- If the view is currently inserted into the DOM of a parent view, this
180
- property will point to the parent of the view.
181
- */
182
- parentView: null,
183
-
184
- /**
185
- Optional background color. Will be applied to the view's element if
186
- set. This property is intended for one-off views that need a background
187
- element. If you plan to create many view instances it is probably better
188
- to use CSS.
189
-
190
- @property {String}
191
- */
192
- backgroundColor: null,
193
-
194
- /**
195
- Activates use of brower's static layout. You can apply this mixin and
196
- still use absolute positioning. To activate static positioning, set this
197
- property to YES.
198
-
199
- @property {Boolean}
200
- */
201
- useStaticLayout: NO,
202
-
203
- // ..........................................................
204
- // IS ENABLED SUPPORT
205
- //
206
-
207
- /**
208
- Set to true when the item is enabled. Note that changing this value
209
- will also alter the isVisibleInWindow property for this view and any
210
- child views.
211
-
212
- Note that if you apply the SC.Control mixin, changing this property will
213
- also automatically add or remove a 'disabled' CSS class name as well.
214
-
215
- This property is observable and bindable.
216
-
217
- @property {Boolean}
218
- */
219
- isEnabled: YES,
220
- isEnabledBindingDefault: SC.Binding.oneWay().bool(),
221
-
222
- /**
223
- Computed property returns YES if the view and all of its parent views
224
- are enabled in the pane. You should use this property when deciding
225
- whether to respond to an incoming event or not.
226
-
227
- This property is not observable.
228
-
229
- @property {Boolean}
230
- */
231
- isEnabledInPane: function() {
232
- var ret = this.get('isEnabled'), pv ;
233
- if (ret && (pv = this.get('parentView'))) ret = pv.get('isEnabledInPane');
234
- return ret ;
235
- }.property('parentView', 'isEnabled'),
236
-
237
- /** @private
238
- Observes the isEnabled property and resigns first responder if set to NO.
239
- This will avoid cases where, for example, a disabled text field retains
240
- its focus rings.
241
-
242
- @observes isEnabled
243
- */
244
- _sc_view_isEnabledDidChange: function(){
245
- if(!this.get('isEnabled') && this.get('isFirstResponder')){
246
- this.resignFirstResponder();
247
- }
248
- }.observes('isEnabled'),
249
-
250
- // ..........................................................
251
- // IS VISIBLE IN WINDOW SUPPORT
252
- //
253
-
254
- /**
255
- The isVisible property determines if the view is shown in the view
256
- hierarchy it is a part of. A view can have isVisible == YES and still have
257
- isVisibleInWindow == NO. This occurs, for instance, when a parent view has
258
- isVisible == NO. Default is YES.
259
-
260
- The isVisible property is considered part of the layout and so changing it
261
- will trigger a layout update.
262
-
263
- @property {Boolean}
264
- */
265
- isVisible: YES,
266
- isVisibleBindingDefault: SC.Binding.bool(),
267
-
268
- /**
269
- YES only if the view and all of its parent views are currently visible
270
- in the window. This property is used to optimize certain behaviors in
271
- the view. For example, updates to the view layer are not performed
272
- if the view until the view becomes visible in the window.
273
- */
274
- isVisibleInWindow: NO,
275
-
276
- /**
277
- By default we don't disable the context menu. Overriding this property
278
- can enable/disable the context menu per view.
279
- */
280
- isContextMenuEnabled: function() {
281
- return SC.CONTEXT_MENU_ENABLED;
282
- }.property(),
283
-
284
- /**
285
- Recomputes the isVisibleInWindow property based on the visibility of the
286
- view and its parent. If the recomputed value differs from the current
287
- isVisibleInWindow state, this method will also call
288
- recomputIsVisibleInWindow() on its child views as well. As an optional
289
- optimization, you can pass the isVisibleInWindow state of the parentView
290
- if you already know it.
291
-
292
- You will not generally need to call or override this method yourself. It
293
- is used by the SC.View hierarchy to relay window visibility changes up
294
- and down the chain.
295
-
296
- @property {Boolean} parentViewIsVisible
297
- @returns {SC.View} receiver
298
- */
299
- recomputeIsVisibleInWindow: function(parentViewIsVisible) {
300
- var previous = this.get('isVisibleInWindow'),
301
- current = this.get('isVisible'),
302
- parentView;
303
-
304
- // isVisibleInWindow = isVisible && parentView.isVisibleInWindow
305
- // this approach only goes up to the parentView if necessary.
306
- if (current) {
307
- // If we weren't passed in 'parentViewIsVisible' (we generally aren't;
308
- // it's an optimization), then calculate it.
309
- if (parentViewIsVisible === undefined) {
310
- parentView = this.get('parentView');
311
- parentViewIsVisible = parentView ? parentView.get('isVisibleInWindow') : NO;
312
- }
313
- current = current && parentViewIsVisible;
314
- }
315
-
316
- // If our visibility has changed, then set the new value and notify our
317
- // child views to update their value.
318
- if (previous !== current) {
319
- this.set('isVisibleInWindow', current);
320
-
321
- var childViews = this.get('childViews'), len = childViews.length, idx;
322
- for(idx=0;idx<len;idx++) {
323
- childViews[idx].recomputeIsVisibleInWindow(current);
324
- }
325
-
326
- // For historical reasons, we'll also layout the child views if
327
- // necessary.
328
- if (current) {
329
- if (this.get('childViewsNeedLayout')) this.invokeOnce(this.layoutChildViewsIfNeeded);
330
- }
331
- else {
332
- // Also, if we were previously visible and were the first responder,
333
- // resign it. This more appropriately belongs in a
334
- // 'isVisibleInWindow' observer or some such helper method because
335
- // this work is not strictly related to computing the visibility, but
336
- // view performance is critical, so avoiding the extra observer is
337
- // worthwhile.
338
- if (this.get('isFirstResponder')) this.resignFirstResponder();
339
- }
340
- }
341
-
342
- // If we're in this function, then that means one of our ancestor views
343
- // changed, or changed its 'isVisibleInWindow' value. That means that if
344
- // we are out of sync with the layer, then we need to update our state
345
- // now.
346
- //
347
- // For example, say we're isVisible=NO, but we have not yet added the
348
- // 'hidden' class to the layer because of the "don't update the layer if
349
- // we're not visible in the window" check. If any of our parent views
350
- // became visible, our layer would incorrectly be shown!
351
- this.updateLayerIfNeeded(YES);
352
-
353
- return this;
354
- },
355
-
356
-
357
- /** @private
358
- Whenever the view’s visibility changes, we need to recompute whether it is
359
- actually visible inside the window (a view is only visible in the window
360
- if it is marked as visibile and its parent view is as well), in addition
361
- to updating the layer accordingly.
362
- */
363
- _sc_isVisibleDidChange: function() {
364
- // 'isVisible' is effectively a displayProperty, but we'll call
365
- // displayDidChange() manually here instead of declaring it as a
366
- // displayProperty because that avoids having two observers on
367
- // 'isVisible'. A single observer is:
368
- // a. More efficient
369
- // b. More correct, because we can guarantee the order of operations
370
- this.displayDidChange();
371
-
372
- this.recomputeIsVisibleInWindow();
373
- }.observes('isVisible'),
374
-
375
-
376
-
377
- // ..........................................................
378
- // CHILD VIEW SUPPORT
379
- //
380
-
381
- /**
382
- Array of child views. You should never edit this array directly unless
383
- you are implementing createChildViews(). Most of the time, you should
384
- use the accessor methods such as appendChild(), insertBefore() and
385
- removeChild().
386
-
387
- @property {Array}
388
- */
389
- childViews: SC.EMPTY_CHILD_VIEWS_ARRAY,
390
-
391
- /**
392
- Insert the view into the the receiver's childNodes array.
393
-
394
- The view will be added to the childNodes array before the beforeView. If
395
- beforeView is null, then the view will be added to the end of the array.
396
- This will also add the view's rootElement DOM node to the receivers
397
- containerElement DOM node as a child.
398
-
399
- If the specified view already belongs to another parent, it will be
400
- removed from that view first.
401
-
402
- @param {SC.View} view
403
- @param {SC.View} beforeView
404
- @returns {SC.View} the receiver
405
- */
406
- insertBefore: function(view, beforeView) {
407
- view.beginPropertyChanges(); // limit notifications
408
-
409
- // remove view from old parent if needed. Also notify views.
410
- if (view.get('parentView')) view.removeFromParent() ;
411
- if (this.willAddChild) this.willAddChild(view, beforeView) ;
412
- if (view.willAddToParent) view.willAddToParent(this, beforeView) ;
413
-
414
- // set parentView of child
415
- view.set('parentView', this);
416
-
417
- // add to childView's array.
418
- var idx, childViews = this.get('childViews') ;
419
- if (childViews.needsClone) this.set(childViews = []);
420
- idx = (beforeView) ? childViews.indexOf(beforeView) : childViews.length;
421
- if (idx<0) idx = childViews.length ;
422
- childViews.insertAt(idx, view) ;
423
-
424
- // The DOM will need some fixing up, note this on the view.
425
- view.parentViewDidChange() ;
426
- view.layoutDidChange() ;
427
- var pane = view.get('pane');
428
- if(pane && pane.get('isPaneAttached')) {
429
- view._notifyDidAppendToDocument();
430
- }
431
-
432
- // notify views
433
- if (this.didAddChild) this.didAddChild(view, beforeView) ;
434
- if (view.didAddToParent) view.didAddToParent(this, beforeView) ;
435
-
436
- view.endPropertyChanges();
437
-
438
- return this ;
439
- },
440
-
441
- /**
442
- Removes the child view from the parent view.
443
-
444
- @param {SC.View} view
445
- @returns {SC.View} receiver
446
- */
447
- removeChild: function(view) {
448
- if (!view) return this; // nothing to do
449
- if (view.parentView !== this) {
450
- throw "%@.removeChild(%@) must belong to parent".fmt(this,view);
451
- }
452
- // notify views
453
- if (view.willRemoveFromParent) view.willRemoveFromParent() ;
454
- if (this.willRemoveChild) this.willRemoveChild(view) ;
455
-
456
- // update parent node
457
- view.set('parentView', null) ;
458
-
459
- // remove view from childViews array.
460
- var childViews = this.get('childViews'),
461
- idx = childViews.indexOf(view) ;
462
- if (idx>=0) childViews.removeAt(idx);
463
-
464
- // The DOM will need some fixing up, note this on the view.
465
- view.parentViewDidChange() ;
466
-
467
- // notify views
468
- if (this.didRemoveChild) this.didRemoveChild(view);
469
- if (view.didRemoveFromParent) view.didRemoveFromParent(this) ;
470
-
471
- return this ;
472
- },
473
-
474
- /**
475
- Removes all children from the parentView.
476
-
477
- @returns {SC.View} receiver
478
- */
479
- removeAllChildren: function() {
480
- var childViews = this.get('childViews'), view ;
481
- while (view = childViews.objectAt(childViews.get('length')-1)) {
482
- this.removeChild(view) ;
483
- }
484
- return this ;
485
- },
486
-
487
- /**
488
- Removes the view from its parentView, if one is found. Otherwise
489
- does nothing.
490
-
491
- @returns {SC.View} receiver
492
- */
493
- removeFromParent: function() {
494
- var parent = this.get('parentView') ;
495
- if (parent) parent.removeChild(this) ;
496
- return this ;
497
- },
498
-
499
- /**
500
- Replace the oldView with the specified view in the receivers childNodes
501
- array. This will also replace the DOM node of the oldView with the DOM
502
- node of the new view in the receivers DOM.
503
-
504
- If the specified view already belongs to another parent, it will be
505
- removed from that view first.
506
-
507
- @param view {SC.View} the view to insert in the DOM
508
- @param view {SC.View} the view to remove from the DOM.
509
- @returns {SC.View} the receiver
510
- */
511
- replaceChild: function(view, oldView) {
512
- // suspend notifications
513
- view.beginPropertyChanges();
514
- oldView.beginPropertyChanges();
515
- this.beginPropertyChanges();
516
-
517
- this.insertBefore(view,oldView).removeChild(oldView) ;
518
-
519
- // resume notifications
520
- this.endPropertyChanges();
521
- oldView.endPropertyChanges();
522
- view.endPropertyChanges();
523
-
524
- return this;
525
- },
526
-
527
- /**
528
- Replaces the current array of child views with the new array of child
529
- views.
530
-
531
- @param {Array} views views you want to add
532
- @returns {SC.View} receiver
533
- */
534
- replaceAllChildren: function(views) {
535
- var len = views.get('length'), idx;
536
-
537
- this.beginPropertyChanges();
538
- this.destroyLayer().removeAllChildren();
539
- for(idx=0;idx<len;idx++) this.appendChild(views.objectAt(idx));
540
- this.replaceLayer();
541
- this.endPropertyChanges();
542
-
543
- return this ;
544
- },
545
-
546
- /**
547
- Appends the specified view to the end of the receivers childViews array.
548
- This is equivalent to calling insertBefore(view, null);
549
-
550
- @param view {SC.View} the view to insert
551
- @returns {SC.View} the receiver
552
- */
553
- appendChild: function(view) {
554
- return this.insertBefore(view, null);
555
- },
556
-
557
- /**
558
- This method is called whenever the receiver's parentView has changed.
559
- The default implementation of this method marks the view's display
560
- location as dirty so that it will update at the end of the run loop.
561
-
562
- You will not usually need to override or call this method yourself, though
563
- if you manually patch the parentView hierarchy for some reason, you should
564
- call this method to notify the view that it's parentView has changed.
565
-
566
- @returns {SC.View} receiver
567
- */
568
- parentViewDidChange: function() {
569
- this.recomputeIsVisibleInWindow() ;
570
-
571
- this.set('layerLocationNeedsUpdate', YES) ;
572
- this.invokeOnce(this.updateLayerLocationIfNeeded) ;
573
-
574
- // We also need to iterate down through the view hierarchy and invalidate
575
- // all our child view's caches for 'pane', since it could have changed.
576
- //
577
- // Note: In theory we could try to avoid this invalidation if we
578
- // do this only in cases where we "know" the 'pane' value might
579
- // have changed, but those cases are few and far between.
580
-
581
- this._invalidatePaneCacheForSelfAndAllChildViews();
582
-
583
- return this ;
584
- },
585
-
586
- /** @private
587
- We want to cache the 'pane' property, but it's impossible for us to
588
- declare a dependence on all properties that can affect the value. (For
589
- example, if our grandparent gets attached to a new pane, our pane will
590
- have changed.) So when there's the potential for the pane changing, we
591
- need to invalidate the caches for all our child views, and their child
592
- views, and so on.
593
- */
594
- _invalidatePaneCacheForSelfAndAllChildViews: function () {
595
- var childView, childViews = this.get('childViews'),
596
- len = childViews.length, idx ;
597
-
598
- this.notifyPropertyChange('pane');
599
-
600
- for (idx=0; idx<len; ++idx) {
601
- childView = childViews[idx];
602
- if (childView._invalidatePaneCacheForSelfAndAllChildViews) {
603
- childView._invalidatePaneCacheForSelfAndAllChildViews();
604
- }
605
- }
606
- },
607
-
608
- // ..........................................................
609
- // LAYER SUPPORT
610
- //
611
-
612
- /**
613
- Returns the current layer for the view. The layer for a view is only
614
- generated when the view first becomes visible in the window and even
615
- then it will not be computed until you request this layer property.
616
-
617
- If the layer is not actually set on the view itself, then the layer will
618
- be found by calling this.findLayerInParentLayer().
619
-
620
- You can also set the layer by calling set on this property.
621
-
622
- @property {DOMElement} the layer
623
- */
624
- layer: function(key, value) {
625
- if (value !== undefined) {
626
- this._view_layer = value ;
627
-
628
- // no layer...attempt to discover it...
629
- } else {
630
- value = this._view_layer;
631
- if (!value) {
632
- var parent = this.get('parentView');
633
- if (parent) parent = parent.get('layer');
634
- if (parent) {
635
- this._view_layer = value = this.findLayerInParentLayer(parent);
636
- }
637
- parent = null ; // avoid memory leak
638
- }
639
- }
640
- return value ;
641
- }.property('isVisibleInWindow').cacheable(),
642
-
643
- /**
644
- Get a CoreQuery object for this view's layer, or pass in a selector string
645
- to get a CoreQuery object for a DOM node nested within this layer.
646
-
647
- @param {String} sel a CoreQuery-compatible selector string
648
- @returns {SC.CoreQuery} the CoreQuery object for the DOM node
649
- */
650
- $: function(sel) {
651
- var ret, layer = this.get('layer') ;
652
- // note: SC.$([]) returns an empty CoreQuery object. SC.$() would
653
- // return an object selecting the document.
654
- ret = !layer ? SC.$([]) : (sel === undefined) ? SC.$(layer) : SC.$(sel, layer) ;
655
- layer = null ; // avoid memory leak
656
- return ret ;
657
- },
658
-
659
- /**
660
- Returns the DOM element that should be used to hold child views when they
661
- are added/remove via DOM manipulation. The default implementation simply
662
- returns the layer itself. You can override this to return a DOM element
663
- within the layer.
664
-
665
- @property {DOMElement} the container layer
666
- */
667
- containerLayer: function() {
668
- return this.get('layer') ;
669
- }.property('layer').cacheable(),
670
-
671
- /**
672
- The ID to use when trying to locate the layer in the DOM. If you do not
673
- set the layerId explicitly, then the view's GUID will be used instead.
674
- This ID must be set at the time the view is created.
675
-
676
- @property {String}
677
- @readOnly
678
- */
679
- layerId: function(key, value) {
680
- if (value) this._layerId = value;
681
- if (this._layerId) return this._layerId;
682
- return SC.guidFor(this) ;
683
- }.property().cacheable(),
684
-
685
- _lastLayerId: null,
686
-
687
- /**
688
- Handles changes in the layer id.
689
- */
690
- layerIdDidChange: function() {
691
- var layer = this.get("layer"),
692
- lid = this.get("layerId"),
693
- lastId = this._lastLayerId;
694
- if (lid !== lastId) {
695
- // if we had an earlier one, remove from view hash.
696
- if (lastId && SC.View.views[lastId] === this) {
697
- delete SC.View.views[lastId];
698
- }
699
-
700
- // set the current one as the new old one
701
- this._lastLayerId = lid;
702
-
703
- // and add the new one
704
- SC.View.views[lid] = this;
705
-
706
- // and finally, set the actual layer id.
707
- if (layer) layer.id = lid;
708
- }
709
- }.observes("layerId"),
710
-
711
- /**
712
- Attempts to discover the layer in the parent layer. The default
713
- implementation looks for an element with an ID of layerId (or the view's
714
- guid if layerId is null). You can override this method to provide your
715
- own form of lookup. For example, if you want to discover your layer using
716
- a CSS class name instead of an ID.
717
-
718
- @param {DOMElement} parentLayer the parent's DOM layer
719
- @returns {DOMElement} the discovered layer
720
- */
721
- findLayerInParentLayer: function(parentLayer) {
722
- var layerId = this.get('layerId'),
723
- node, i, ilen, childNodes, elem, usedQuerySelector;
724
-
725
- // first, let's try the fast path...
726
- elem = document.getElementById(layerId) ;
727
-
728
- // TODO: use code generation to only really do this check on IE
729
- if (SC.browser.msie && elem && elem.id !== layerId) elem = null;
730
-
731
- // if no element was found the fast way, search down the parentLayer for
732
- // the element. This code should not be invoked very often. Usually a
733
- // DOM element will be discovered by the first method above.
734
- // This code uses a BFS algorithm as is expected to find the layer right
735
- // below the parent.
736
- if (!elem) {
737
- elem = parentLayer.firstChild ;
738
- var q = [];
739
- q.push(parentLayer);
740
- while (q.length !==0) {
741
- node = q.shift();
742
- if (node.id===layerId) {
743
- return node;
744
- }
745
- childNodes = node.childNodes;
746
- for (i=0, ilen=childNodes.length; i < ilen; ++i) {
747
- q.push(childNodes[i]);
748
- }
749
- }
750
- elem = null;
751
- }
752
-
753
- return elem;
754
- },
755
-
756
- /**
757
- Returns YES if the receiver is a subview of a given view or if it’s
758
- identical to that view. Otherwise, it returns NO.
759
-
760
- @property {SC.View} view
761
- */
762
- isDescendantOf: function(view) {
763
- var parentView = this.get('parentView');
764
-
765
- if(this===view) return YES;
766
- else if(parentView) return parentView.isDescendantOf(view);
767
- else return NO;
768
- },
769
-
770
- /**
771
- This method is invoked whenever a display property changes. It will set
772
- the layerNeedsUpdate method to YES. If you need to perform additional
773
- setup whenever the display changes, you can override this method as well.
774
-
775
- @returns {SC.View} receiver
776
- */
777
- displayDidChange: function() {
778
- this.set('layerNeedsUpdate', YES) ;
779
- return this;
780
- },
781
-
782
- /**
783
- Setting this property to YES will cause the updateLayerIfNeeded method to
784
- be invoked at the end of the runloop. You can also force a view to update
785
- sooner by calling updateLayerIfNeeded() directly. The method will update
786
- the layer only if this property is YES.
787
-
788
- @property {Boolean}
789
- @test in updateLayer
790
- */
791
- layerNeedsUpdate: NO,
792
-
793
- /** @private
794
- Schedules the updateLayerIfNeeded method to run at the end of the runloop
795
- if layerNeedsUpdate is set to YES.
796
- */
797
- _view_layerNeedsUpdateDidChange: function() {
798
- if (this.get('layerNeedsUpdate')) {
799
- this.invokeOnce(this.updateLayerIfNeeded) ;
800
- }
801
- }.observes('layerNeedsUpdate'),
802
-
803
- /**
804
- Updates the layer only if the view is visible onscreen and if
805
- layerNeedsUpdate is set to YES. Normally you will not invoke this method
806
- directly. Instead you set the layerNeedsUpdate property to YES and this
807
- method will be called once at the end of the runloop.
808
-
809
- If you need to update view's layer sooner than the end of the runloop, you
810
- can call this method directly. If your view is not visible in the window
811
- but you want it to update anyway, then call this method, passing YES for
812
- the 'skipIsVisibleInWindowCheck' parameter.
813
-
814
- You should not override this method. Instead override updateLayer() or
815
- render().
816
-
817
- @returns {SC.View} receiver
818
- @test in updateLayer
819
- */
820
- updateLayerIfNeeded: function(skipIsVisibleInWindowCheck) {
821
- var needsUpdate = this.get('layerNeedsUpdate'),
822
- shouldUpdate = needsUpdate && (skipIsVisibleInWindowCheck || this.get('isVisibleInWindow'));
823
- if (shouldUpdate) {
824
- // only update a layer if it already exists
825
- if (this.get('layer')) {
826
- this.beginPropertyChanges() ;
827
- this.set('layerNeedsUpdate', NO) ;
828
- this.updateLayer() ;
829
- this.endPropertyChanges() ;
830
- }
831
- }
832
-
833
- return this ;
834
- },
835
-
836
- /**
837
- This is the core method invoked to update a view layer whenever it has
838
- changed. This method simply creates a render context focused on the
839
- layer element and then calls your render() method.
840
-
841
- You will not usually call or override this method directly. Instead you
842
- should set the layerNeedsUpdate property to YES to cause this method to
843
- run at the end of the run loop, or you can call updateLayerIfNeeded()
844
- to force the layer to update immediately.
845
-
846
- Instead of overriding this method, consider overidding the render() method
847
- instead, which is called both when creating and updating a layer. If you
848
- do not want your render() method called when updating a layer, then you
849
- should override this method instead.
850
-
851
- @returns {SC.View} receiver
852
- */
853
- updateLayer: function() {
854
- var context = this.renderContext(this.get('layer')) ;
855
- this.prepareContext(context, NO) ;
856
- context.update() ;
857
- if (context._innerHTMLReplaced) {
858
- var pane = this.get('pane');
859
- if(pane && pane.get('isPaneAttached')) {
860
- this._notifyDidAppendToDocument();
861
- }
862
- }
863
-
864
- // If this view uses static layout, then notify that the frame (likely)
865
- // changed.
866
- if (this.useStaticLayout) this.viewDidResize();
867
-
868
- if (this.didUpdateLayer) this.didUpdateLayer(); // call to update DOM
869
- if(this.designer && this.designer.viewDidUpdateLayer) {
870
- this.designer.viewDidUpdateLayer(); //let the designer know
871
- }
872
- return this ;
873
- },
874
-
875
- /**
876
- Creates a new renderContext with the passed tagName or element. You
877
- can override this method to provide further customization to the context
878
- if needed. Normally you will not need to call or override this method.
879
-
880
- @returns {SC.RenderContext}
881
- */
882
- renderContext: function(tagNameOrElement) {
883
- return SC.RenderContext(tagNameOrElement) ;
884
- },
885
-
886
- /**
887
- Creates the layer by creating a renderContext and invoking the view's
888
- render() method. This will only create the layer if the layer does not
889
- already exist.
890
-
891
- When you create a layer, it is expected that your render() method will
892
- also render the HTML for all child views as well. This method will
893
- notify the view along with any of its childViews that its layer has been
894
- created.
895
-
896
- @returns {SC.View} receiver
897
- */
898
- createLayer: function() {
899
- if (this.get('layer')) return this ; // nothing to do
900
-
901
- var context = this.renderContext(this.get('tagName')) ;
902
-
903
- // now prepare the content like normal.
904
- this.prepareContext(context, YES) ;
905
- this.set('layer', context.element()) ;
906
-
907
- // now notify the view and its child views..
908
- this._notifyDidCreateLayer() ;
909
-
910
- return this ;
911
- },
912
-
913
- /** @private -
914
- Invokes the receivers didCreateLayer() method if it exists and then
915
- invokes the same on all child views.
916
- */
917
- _notifyDidCreateLayer: function() {
918
- if (this.didCreateLayer) this.didCreateLayer() ;
919
- var mixins = this.didCreateLayerMixin, len, idx,
920
- childViews = this.get('childViews'),
921
- childView;
922
- if (mixins) {
923
- len = mixins.length ;
924
- for (idx=0; idx<len; ++idx) mixins[idx].call(this) ;
925
- }
926
-
927
- len = childViews.length ;
928
- for (idx=0; idx<len; ++idx) {
929
- childView = childViews[idx];
930
- if (!childView) continue;
931
-
932
- // A parent view creating a layer might result in the creation of a
933
- // child view's DOM node being created via a render context without
934
- // createLayer() being invoked on the child. In such cases, if anyone
935
- // had requested 'layer' and it was cached as null, we need to
936
- // invalidate it.
937
- childView.notifyPropertyChange('layer');
938
-
939
- childView._notifyDidCreateLayer() ;
940
- }
941
- },
942
-
943
- /**
944
- Destroys any existing layer along with the layer for any child views as
945
- well. If the view does not currently have a layer, then this method will
946
- do nothing.
947
-
948
- If you implement willDestroyLayer() on your view or if any mixins
949
- implement willDestroLayerMixin(), then this method will be invoked on your
950
- view before your layer is destroyed to give you a chance to clean up any
951
- event handlers, etc.
952
-
953
- If you write a willDestroyLayer() handler, you can assume that your
954
- didCreateLayer() handler was called earlier for the same layer.
955
-
956
- Normally you will not call or override this method yourself, but you may
957
- want to implement the above callbacks when it is run.
958
-
959
- @returns {SC.View} receiver
960
- */
961
- destroyLayer: function() {
962
- var layer = this.get('layer') ;
963
- if (layer) {
964
- // Now notify the view and its child views. It will also set the
965
- // layer property to null.
966
- this._notifyWillDestroyLayer() ;
967
-
968
- // do final cleanup
969
- if (layer.parentNode) layer.parentNode.removeChild(layer) ;
970
- layer = null ;
971
- }
972
- return this ;
973
- },
974
-
975
- /**
976
- Destroys and recreates the current layer. This can be more efficient than
977
- modifying individual child views.
978
-
979
- @returns {SC.View} receiver
980
- */
981
- replaceLayer: function() {
982
- this.destroyLayer();
983
- this.set('layerLocationNeedsUpdate', YES) ;
984
- this.invokeOnce(this.updateLayerLocationIfNeeded) ;
985
- },
986
-
987
- /** @private -
988
- Invokes willDestroyLayer() on view and child views. Then sets layer to
989
- null for receiver.
990
- */
991
- _notifyWillDestroyLayer: function() {
992
- if (this.willDestroyLayer) this.willDestroyLayer() ;
993
- var mixins = this.willDestroyLayerMixin, len, idx,
994
- childViews = this.get('childViews') ;
995
- if (mixins) {
996
- len = mixins.length ;
997
- for (idx=0; idx<len; ++idx) mixins[idx].call(this) ;
998
- }
999
-
1000
- len = childViews.length ;
1001
- for (idx=0; idx<len; ++idx) childViews[idx]._notifyWillDestroyLayer() ;
1002
-
1003
- this.set('layer', null) ;
1004
- },
1005
-
1006
- /**
1007
- Invoked by createLayer() and updateLayer() to actually render a context.
1008
- This method calls the render() method on your view along with any
1009
- renderMixin() methods supplied by mixins you might have added.
1010
-
1011
- You should not override this method directly. However, you might call
1012
- this method if you choose to override updateLayer() or createLayer().
1013
-
1014
- @param {SC.RenderContext} context the render context
1015
- @param {Boolean} firstTime YES if this is creating a layer
1016
- @returns {void}
1017
- */
1018
- prepareContext: function(context, firstTime) {
1019
- var mixins, len, idx, layerId, bgcolor, cursor, classNames;
1020
-
1021
- // do some initial setup only needed at create time.
1022
- if (firstTime) {
1023
- // TODO: seems like things will break later if SC.guidFor(this) is used
1024
-
1025
- layerId = this.layerId ? this.get('layerId') : SC.guidFor(this) ;
1026
- context.id(layerId).classNames(this.get('classNames'), YES) ;
1027
- this.renderLayout(context, firstTime) ;
1028
- }else{
1029
- context.resetClassNames();
1030
- context.classNames(this.get('classNames'), YES);
1031
- }
1032
-
1033
- // do some standard setup...
1034
- classNames = [];
1035
- if (this.get('isTextSelectable')) classNames.push('allow-select') ;
1036
- if (!this.get('isEnabled')) classNames.push('disabled') ;
1037
- if (!this.get('isVisible')) classNames.push('hidden') ;
1038
- if (this.get('isFirstResponder')) classNames.push('focus');
1039
- if (this.get('useStaticLayout')) classNames.push('sc-static-layout');
1040
-
1041
- bgcolor = this.get('backgroundColor');
1042
- if (bgcolor) context.addStyle('backgroundColor', bgcolor);
1043
-
1044
- // Sets cursor class, if present.
1045
- cursor = this.get('cursor');
1046
- if (!cursor && this.get('shouldInheritCursor')) {
1047
- // If this view has no cursor and should inherit it from the parent,
1048
- // then it sets its own cursor view. This sets the cursor rather than
1049
- // simply using the parent's cursor object so that its cursorless
1050
- // childViews can also inherit it.
1051
- cursor = this.getPath('parentView.cursor');
1052
- }
1053
-
1054
- if (SC.typeOf(cursor) === SC.T_STRING) {
1055
- cursor = SC.objectForPropertyPath(cursor);
1056
- }
1057
-
1058
- if (cursor instanceof SC.Cursor) {
1059
- classNames.push(cursor.get('className')) ;
1060
- }
1061
-
1062
- // Doing a single call to 'addClass' is faster than multiple.
1063
- context.addClass(classNames);
1064
-
1065
- this.beginPropertyChanges() ;
1066
- this.set('layerNeedsUpdate', NO) ;
1067
- this.render(context, firstTime) ;
1068
- if (mixins = this.renderMixin) {
1069
- len = mixins.length;
1070
- for(idx=0; idx<len; ++idx) mixins[idx].call(this, context, firstTime) ;
1071
- }
1072
- this.endPropertyChanges() ;
1073
- },
1074
-
1075
- /**
1076
- Your render method should invoke this method to render any child views,
1077
- especially if this is the first time the view will be rendered. This will
1078
- walk down the childView chain, rendering all of the children in a nested
1079
- way.
1080
-
1081
- @param {SC.RenderContext} context the context
1082
- @param {Boolean} firstName true if the layer is being created
1083
- @returns {SC.RenderContext} the render context
1084
- @test in render
1085
- */
1086
- renderChildViews: function(context, firstTime) {
1087
- var cv = this.get('childViews'), len = cv.length, idx, view ;
1088
- for (idx=0; idx<len; ++idx) {
1089
- view = cv[idx] ;
1090
- if (!view) continue;
1091
- context = context.begin(view.get('tagName')) ;
1092
- view.prepareContext(context, firstTime) ;
1093
- context = context.end() ;
1094
- }
1095
- return context ;
1096
- },
1097
-
1098
- /**
1099
- Invoked whenever your view needs to be rendered, including when the view's
1100
- layer is first created and any time in the future when it needs to be
1101
- updated.
1102
-
1103
- You will normally override this method in your subclassed views to
1104
- provide whatever drawing functionality you will need in order to
1105
- render your content.
1106
-
1107
- You can use the passed firstTime property to determine whether or not
1108
- you need to completely re-render the view or only update the surrounding
1109
- HTML.
1110
-
1111
- The default implementation of this method simply calls renderChildViews()
1112
- if this is the first time you are rendering, or null otherwise.
1113
-
1114
- @param {SC.RenderContext} context the render context
1115
- @param {Boolean} firstTime YES if this is creating a layer
1116
- @returns {void}
1117
- */
1118
- render: function(context, firstTime) {
1119
- if (firstTime) this.renderChildViews(context, firstTime) ;
1120
- },
1121
-
1122
-
1123
- /** @private -
1124
- Invokes the receivers didAppendLayerToDocument() method if it exists and
1125
- then invokes the same on all child views.
1126
- */
1127
-
1128
- _notifyDidAppendToDocument: function() {
1129
- if (this.didAppendToDocument) this.didAppendToDocument();
1130
-
1131
- var i=0, child, childLen, children = this.get('childViews');
1132
- for(i=0, childLen=children.length; i<childLen; i++) {
1133
- child = children[i];
1134
- if(child._notifyDidAppendToDocument){
1135
- child._notifyDidAppendToDocument();
1136
- }
1137
- }
1138
- },
1139
-
1140
- childViewsObserver: function(){
1141
- var childViews = this.get('childViews'), i, iLen, child;
1142
- for(i=0, iLen = childViews.length; i<iLen; i++){
1143
- child = childViews[i];
1144
- if(child._notifyDidAppendToDocument){
1145
- child._notifyDidAppendToDocument();
1146
- }
1147
- }
1148
- }.observes('childViews'),
1149
-
1150
- // ..........................................................
1151
- // STANDARD RENDER PROPERTIES
1152
- //
1153
-
1154
- /**
1155
- Tag name for the view's outer element. The tag name is only used when
1156
- a layer is first created. If you change the tagName for an element, you
1157
- must destroy and recreate the view layer.
1158
-
1159
- @property {String}
1160
- */
1161
- tagName: 'div',
1162
-
1163
- /**
1164
- Standard CSS class names to apply to the view's outer element. This
1165
- property automatically inherits any class names defined by the view's
1166
- superclasses as well.
1167
-
1168
- @property {Array}
1169
- */
1170
- classNames: ['sc-view'],
1171
-
1172
- /**
1173
- Tool tip property that will be set to the title attribute on the HTML
1174
- rendered element.
1175
-
1176
- @property {String}
1177
- */
1178
- toolTip: null,
1179
-
1180
- /**
1181
- Determines if the user can select text within the view. Normally this is
1182
- set to NO to disable text selection. You should set this to YES if you
1183
- are creating a view that includes editable text. Otherwise, settings this
1184
- to YES will probably make your controls harder to use and it is not
1185
- recommended.
1186
-
1187
- @property {Boolean}
1188
- @readOnly
1189
- */
1190
- isTextSelectable: NO,
1191
-
1192
- /**
1193
- You can set this array to include any properties that should immediately
1194
- invalidate the display. The display will be automatically invalidated
1195
- when one of these properties change.
1196
-
1197
- Implementation note: 'isVisible' is also effectively a display property,
1198
- but it is not declared as such because the same effect is implemented
1199
- inside _sc_isVisibleDidChange(). This avoids having two observers on
1200
- 'isVisible', which is:
1201
- a. More efficient
1202
- b. More correct, because we can guarantee the order of operations
1203
-
1204
- @property {Array}
1205
- @readOnly
1206
- */
1207
- displayProperties: ['isFirstResponder'],
1208
-
1209
- /**
1210
- You can set this to an SC.Cursor instance; its class name will
1211
- automatically be added to the layer's classNames, allowing you
1212
- to efficiently change the cursor for a large group of views with
1213
- just one change to the SC.Cursor object. The cursor property
1214
- is only used when the layer is created, so if you need to change
1215
- it to a different cursor object, you will have to destroy and
1216
- recreate the view layer. (In this case you might investigate
1217
- setting cursors using CSS directly instead of SC.Cursor.)
1218
-
1219
- @property {SC.Cursor String}
1220
- */
1221
- cursor: null,
1222
-
1223
- /**
1224
- A child view without a cursor of its own inherits its parent's cursor by
1225
- default. Set this to NO to prevent this behavior.
1226
-
1227
- @property {Boolean}
1228
- */
1229
- shouldInheritCursor: YES,
1230
-
1231
- // ..........................................................
1232
- // LAYER LOCATION
1233
- //
1234
-
1235
- /**
1236
- Set to YES when the view's layer location is dirty. You can call
1237
- updateLayerLocationIfNeeded() to clear this flag if it is set.
1238
-
1239
- @property {Boolean}
1240
- */
1241
- layerLocationNeedsUpdate: NO,
1242
-
1243
- /**
1244
- Calls updateLayerLocation(), but only if the view's layer location
1245
- currently needs to be updated. This method is called automatically at
1246
- the end of a run loop if you have called parentViewDidChange() at some
1247
- point.
1248
-
1249
- @property {Boolean} force This property is ignored.
1250
- @returns {SC.View} receiver
1251
- @test in updateLayerLocation
1252
- */
1253
- updateLayerLocationIfNeeded: function(force) {
1254
- if (this.get('layerLocationNeedsUpdate')) {
1255
- this.updateLayerLocation() ;
1256
- }
1257
- return this ;
1258
- },
1259
-
1260
- /**
1261
- This method is called when a view changes its location in the view
1262
- hierarchy. This method will update the underlying DOM-location of the
1263
- layer so that it reflects the new location.
1264
-
1265
- @returns {SC.View} receiver
1266
- */
1267
- updateLayerLocation: function() {
1268
- // collect some useful value
1269
- // if there is no node for some reason, just exit
1270
- var node = this.get('layer'),
1271
- parentView = this.get('parentView'),
1272
- parentNode = parentView ? parentView.get('containerLayer') : null ;
1273
-
1274
- // remove node from current parentNode if the node does not match the new
1275
- // parent node.
1276
- if (node && node.parentNode && node.parentNode !== parentNode) {
1277
- node.parentNode.removeChild(node);
1278
- }
1279
-
1280
- // CASE 1: no new parentView. just remove from parent (above).
1281
- if (!parentView) {
1282
- if (node && node.parentNode) node.parentNode.removeChild(node);
1283
-
1284
- // CASE 2: parentView has no layer, view has layer. destroy layer
1285
- // CASE 3: parentView has no layer, view has no layer, nothing to do
1286
- } else if (!parentNode) {
1287
- if (node) {
1288
- if (node.parentNode) node.parentNode.removeChild(node);
1289
- this.destroyLayer();
1290
- }
1291
-
1292
- // CASE 4: parentView has layer, view has no layer. create layer & add
1293
- // CASE 5: parentView has layer, view has layer. move layer
1294
- } else {
1295
- if (!node) {
1296
- this.createLayer() ;
1297
- node = this.get('layer') ;
1298
- if (!node) return; // can't do anything without a node.
1299
- }
1300
-
1301
- var siblings = parentView.get('childViews'),
1302
- nextView = siblings.objectAt(siblings.indexOf(this)+1),
1303
- nextNode = (nextView) ? nextView.get('layer') : null ;
1304
-
1305
- // before we add to parent node, make sure that the nextNode exists...
1306
- if (nextView && (!nextNode || nextNode.parentNode!==parentNode)) {
1307
- nextView.updateLayerLocationIfNeeded() ;
1308
- nextNode = nextView.get('layer') ;
1309
- }
1310
-
1311
- // add to parentNode if needed.
1312
- if ((node.parentNode!==parentNode) || (node.nextSibling!==nextNode)) {
1313
- parentNode.insertBefore(node, nextNode) ;
1314
- }
1315
- }
1316
-
1317
- parentNode = parentView = node = nextNode = null ; // avoid memory leaks
1318
-
1319
- this.set('layerLocationNeedsUpdate', NO) ;
1320
-
1321
- return this ;
1322
- },
1323
-
1324
- // .......................................................
1325
- // SC.RESPONDER SUPPORT
1326
- //
1327
-
1328
- /** @property
1329
- The nextResponder is usually the parentView.
1330
- */
1331
- nextResponder: function() {
1332
- return this.get('parentView') ;
1333
- }.property('parentView').cacheable(),
1334
-
1335
-
1336
- /** @property
1337
- Set to YES if your view is willing to accept first responder status. This
1338
- is used when calculcating key responder loop.
1339
- */
1340
- acceptsFirstResponder: NO,
1341
-
1342
- // ..........................................................
1343
- // KEY RESPONDER
1344
- //
1345
-
1346
- /** @property
1347
- YES if the view is currently first responder and the pane the view belongs
1348
- to is also key pane. While this property is set, you should expect to
1349
- receive keyboard events.
1350
- */
1351
- isKeyResponder: NO,
1352
-
1353
- /**
1354
- This method is invoked just before you lost the key responder status.
1355
- The passed view is the view that is about to gain keyResponder status.
1356
- This gives you a chance to do any early setup. Remember that you can
1357
- gain/lose key responder status either because another view in the same
1358
- pane is becoming first responder or because another pane is about to
1359
- become key.
1360
-
1361
- @param {SC.Responder} responder
1362
- */
1363
- willLoseKeyResponderTo: function(responder) {},
1364
-
1365
- /**
1366
- This method is invoked just before you become the key responder. The
1367
- passed view is the view that is about to lose keyResponder status. You
1368
- can use this to do any setup before the view changes.
1369
- Remember that you can gain/lose key responder status either because
1370
- another view in the same pane is becoming first responder or because
1371
- another pane is about to become key.
1372
-
1373
- @param {SC.Responder} responder
1374
- */
1375
- willBecomeKeyResponderFrom: function(responder) {},
1376
-
1377
- /**
1378
- Invokved just after the responder loses key responder status.
1379
- */
1380
- didLoseKeyResponderTo: function(responder) {},
1381
-
1382
- /**
1383
- Invoked just after the responder gains key responder status.
1384
- */
1385
- didBecomeKeyResponderFrom: function(responder) {},
1386
-
1387
- /**
1388
- This method will process a key input event, attempting to convert it to
1389
- an appropriate action method and sending it up the responder chain. The
1390
- event is converted using the SC.KEY_BINDINGS hash, which maps key events
1391
- into method names. If no key binding is found, then the key event will
1392
- be passed along using an insertText() method.
1393
-
1394
- @param {SC.Event} event
1395
- @returns {Object} object that handled event, if any
1396
- */
1397
- interpretKeyEvents: function(event) {
1398
- var codes = event.commandCodes(), cmd = codes[0], chr = codes[1], ret;
1399
-
1400
- if (!cmd && !chr) return null ; //nothing to do.
1401
-
1402
- // if this is a command key, try to do something about it.
1403
- if (cmd) {
1404
- var methodName = SC.MODIFIED_KEY_BINDINGS[cmd] || SC.BASE_KEY_BINDINGS[cmd.match(/[^_]+$/)[0]];
1405
- if (methodName) {
1406
- var target = this, pane = this.get('pane'), handler = null;
1407
- while(target && !(handler = target.tryToPerform(methodName, event))){
1408
- target = (target===pane)? null: target.get('nextResponder') ;
1409
- }
1410
- return handler ;
1411
- }
1412
- }
1413
-
1414
- if (chr && this.respondsTo('insertText')) {
1415
- // if we haven't returned yet and there is plain text, then do an insert
1416
- // of the text. Since this is not an action, do not send it up the
1417
- // responder chain.
1418
- ret = this.insertText(chr, event);
1419
- return ret ? (ret===YES ? this : ret) : null ; // map YES|NO => this|nil
1420
- }
1421
-
1422
- return null ; //nothing to do.
1423
- },
1424
-
1425
- /**
1426
- This method is invoked by interpretKeyEvents() when you receive a key
1427
- event matching some plain text. You can use this to actually insert the
1428
- text into your application, if needed.
1429
-
1430
- @param {SC.Event} event
1431
- @returns {Object} receiver or object that handled event
1432
- */
1433
- insertText: function(chr) {
1434
- return NO ;
1435
- },
1436
-
1437
- /**
1438
- Recursively travels down the view hierarchy looking for a view that
1439
- implements the key equivalent (returning to YES to indicate it handled
1440
- the event). You can override this method to handle specific key
1441
- equivalents yourself.
1442
-
1443
- The keystring is a string description of the key combination pressed.
1444
- The evt is the event itself. If you handle the equivalent, return YES.
1445
- Otherwise, you should just return sc_super.
1446
-
1447
- @param {String} keystring
1448
- @param {SC.Event} evt
1449
- @returns {Boolean}
1450
- */
1451
- performKeyEquivalent: function(keystring, evt) {
1452
- var ret = NO,
1453
- childViews = this.get('childViews'),
1454
- len = childViews.length,
1455
- idx = -1 ;
1456
- while (!ret && (++idx < len)) {
1457
- ret = childViews[idx].performKeyEquivalent(keystring, evt) ;
1458
- }
1459
- return ret ;
1460
- },
1461
-
1462
- /**
1463
- Optionally points to the next key view that should gain focus when tabbing
1464
- through an interface. If this is not set, then the next key view will
1465
- be set automatically to the next child.
1466
- */
1467
- nextKeyView: null,
1468
-
1469
- /**
1470
- Computes the next valid key view, possibly returning the receiver or null.
1471
- This is the next key view that acceptsFirstResponder.
1472
-
1473
- @property
1474
- @type SC.View
1475
- */
1476
- nextValidKeyView: function() {
1477
- var seen = [],
1478
- rootView = this.get('pane'), ret = this.get('nextKeyView');
1479
-
1480
- if(!ret) ret = rootView._computeNextValidKeyView(this, seen);
1481
-
1482
- if(SC.TABBING_ONLY_INSIDE_DOCUMENT && !ret) {
1483
- ret = rootView._computeNextValidKeyView(rootView, seen);
1484
- }
1485
-
1486
- return ret ;
1487
- }.property('nextKeyView'),
1488
-
1489
- _computeNextValidKeyView: function(currentView, seen) {
1490
- var ret = this.get('nextKeyView'),
1491
- children, i, childLen, child;
1492
- if(this !== currentView && seen.indexOf(currentView)!=-1 &&
1493
- this.get('acceptsFirstResponder') && this.get('isVisibleInWindow')){
1494
- return this;
1495
- }
1496
- seen.push(this); // avoid cycles
1497
-
1498
- // find next sibling
1499
- if (!ret) {
1500
- children = this.get('childViews');
1501
- for(i=0, childLen = children.length; i<childLen; i++){
1502
- child = children[i];
1503
- if(child.get('isVisibleInWindow') && child.get('isVisible')){
1504
- ret = child._computeNextValidKeyView(currentView, seen);
1505
- }
1506
- if (ret) return ret;
1507
- }
1508
- ret = null;
1509
- }
1510
- return ret ;
1511
- },
1512
-
1513
- /**
1514
- Optionally points to the previous key view that should gain focus when
1515
- tabbing through the interface. If this is not set then the previous
1516
- key view will be set automatically to the previous child.
1517
- */
1518
- previousKeyView: null,
1519
-
1520
- /**
1521
- Computes the previous valid key view, possibly returning the receiver or
1522
- null. This is the previous key view that acceptsFirstResponder.
1523
-
1524
- @property
1525
- @type SC.View
1526
- */
1527
- previousValidKeyView: function() {
1528
- var seen = [],
1529
- rootView = this.pane(), ret = this.get('previousKeyView');
1530
- if(!ret) ret = rootView._computePreviousValidKeyView(this, seen);
1531
- return ret ;
1532
- }.property('previousKeyView'),
1533
-
1534
- _computePreviousValidKeyView: function(currentView, seen) {
1535
- var ret = this.get('previousKeyView'),
1536
- children, i, child;
1537
-
1538
- if(this !== currentView && seen.indexOf(currentView)!=-1 &&
1539
- this.get('acceptsFirstResponder') && this.get('isVisibleInWindow')){
1540
- return this;
1541
- }
1542
- seen.push(this); // avoid cycles
1543
-
1544
- // find next sibling
1545
- if (!ret) {
1546
- children = this.get('childViews');
1547
- for(i=children.length-1; 0<=i; i--){
1548
- child = children[i];
1549
- if(child.get('isVisibleInWindow') && child.get('isVisible')){
1550
- ret = child._computePreviousValidKeyView(currentView, seen);
1551
- }
1552
- if (ret) return ret;
1553
- }
1554
- ret = null;
1555
- }
1556
- return ret ;
1557
- },
1558
-
1559
- // .......................................................
1560
- // CORE DISPLAY METHODS
1561
- //
1562
-
1563
- /** @private
1564
- Setup a view, but do not finish waking it up.
1565
- - configure childViews
1566
- - generate DOM + plug in outlets/childViews unless rootElement is defined
1567
- - register the view with the global views hash, which is used for mgmt
1568
- */
1569
- init: function() {
1570
- var parentView, path, root, idx, len, lp, dp ;
1571
-
1572
- sc_super() ;
1573
-
1574
- // Register this view for event handling
1575
- SC.View.views[this.get('layerId')] = this ;
1576
-
1577
- var childViews = this.get('childViews');
1578
-
1579
- // setup child views. be sure to clone the child views array first
1580
- this.childViews = childViews ? childViews.slice() : [] ;
1581
- this.createChildViews() ; // setup child Views
1582
-
1583
- // register display property observers ..
1584
- // TODO: Optimize into class setup
1585
- dp = this.get('displayProperties') ;
1586
- idx = dp.length ;
1587
- while (--idx >= 0) {
1588
- this.addObserver(dp[idx], this, this.displayDidChange) ;
1589
- }
1590
-
1591
- // register for drags
1592
- if (this.get('isDropTarget')) SC.Drag.addDropTarget(this) ;
1593
-
1594
- // register scroll views for autoscroll during drags
1595
- if (this.get('isScrollable')) SC.Drag.addScrollableView(this) ;
1596
- },
1597
-
1598
- /**
1599
- Wakes up the view. The default implementation immediately syncs any
1600
- bindings, which may cause the view to need its display updated. You
1601
- can override this method to perform any additional setup. Be sure to
1602
- call sc_super to setup bindings and to call awake on childViews.
1603
-
1604
- It is best to awake a view before you add it to the DOM. This way when
1605
- the DOM is generated, it will have the correct initial values and will
1606
- not require any additional setup.
1607
-
1608
- @returns {void}
1609
- */
1610
- awake: function() {
1611
- sc_super();
1612
- var childViews = this.get('childViews'), len = childViews.length, idx ;
1613
- for (idx=0; idx<len; ++idx) {
1614
- if (!childViews[idx]) continue ;
1615
- childViews[idx].awake() ;
1616
- }
1617
- },
1618
-
1619
- /**
1620
- You must call this method on a view to destroy the view (and all of its
1621
- child views). This will remove the view from any parent node, then make
1622
- sure that the DOM element managed by the view can be released by the
1623
- memory manager.
1624
- */
1625
- destroy: function() {
1626
- if (this.get('isDestroyed')) return this; // nothing to do
1627
-
1628
- this._destroy(); // core destroy method
1629
-
1630
- // remove from parent if found
1631
- this.removeFromParent() ;
1632
-
1633
- // unregister for drags
1634
- if (this.get('isDropTarget')) SC.Drag.removeDropTarget(this) ;
1635
-
1636
- // unregister for autoscroll during drags
1637
- if (this.get('isScrollable')) SC.Drag.removeScrollableView(this) ;
1638
-
1639
- //Do generic destroy. It takes care of mixins and sets isDestroyed to YES.
1640
- sc_super();
1641
- return this; // done with cleanup
1642
- },
1643
-
1644
- _destroy: function() {
1645
- if (this.get('isDestroyed')) return this ; // nothing to do
1646
-
1647
- // destroy the layer -- this will avoid each child view destroying
1648
- // the layer over and over again...
1649
- this.destroyLayer() ;
1650
-
1651
- // first destroy any children.
1652
- var childViews = this.get('childViews'), len = childViews.length, idx ;
1653
- if (len) {
1654
- childViews = childViews.slice() ;
1655
- for (idx=0; idx<len; ++idx) childViews[idx].destroy() ;
1656
- }
1657
-
1658
- // next remove view from global hash
1659
- delete SC.View.views[this.get('layerId')] ;
1660
- delete this._CQ ;
1661
- delete this.page ;
1662
-
1663
- return this ;
1664
- },
1665
-
1666
- /**
1667
- This method is called when your view is first created to setup any child
1668
- views that are already defined on your class. If any are found, it will
1669
- instantiate them for you.
1670
-
1671
- The default implementation of this method simply steps through your
1672
- childViews array, which is expects to either be empty or to contain View
1673
- designs that can be instantiated
1674
-
1675
- Alternatively, you can implement this method yourself in your own
1676
- subclasses to look for views defined on specific properties and then build
1677
- a childViews array yourself.
1678
-
1679
- Note that when you implement this method yourself, you should never
1680
- instantiate views directly. Instead, you should use
1681
- this.createChildView() method instead. This method can be much faster in
1682
- a production environment than creating views yourself.
1683
-
1684
- @returns {SC.View} receiver
1685
- */
1686
- createChildViews: function() {
1687
- var childViews = this.get('childViews'),
1688
- len = childViews.length,
1689
- idx, key, views, view ;
1690
-
1691
- this.beginPropertyChanges() ;
1692
-
1693
- // swap the array
1694
- for (idx=0; idx<len; ++idx) {
1695
- if (key = (view = childViews[idx])) {
1696
-
1697
- // is this is a key name, lookup view class
1698
- if (typeof key === SC.T_STRING) {
1699
- view = this[key];
1700
- } else key = null ;
1701
-
1702
- if (!view) {
1703
- console.error ("No view with name "+key+" has been found in "+this.toString());
1704
- // skip this one.
1705
- continue;
1706
- }
1707
-
1708
- if (view.isClass) {
1709
- view = this.createChildView(view) ; // instantiate if needed
1710
- if (key) this[key] = view ; // save on key name if passed
1711
- }
1712
- }
1713
- childViews[idx] = view;
1714
- }
1715
-
1716
- this.endPropertyChanges() ;
1717
- return this ;
1718
- },
1719
-
1720
- /**
1721
- Instantiates a view to be added to the childViews array during view
1722
- initialization. You generally will not call this method directly unless
1723
- you are overriding createChildViews(). Note that this method will
1724
- automatically configure the correct settings on the new view instance to
1725
- act as a child of the parent.
1726
-
1727
- @param {Class} viewClass
1728
- @param {Hash} attrs optional attributes to add
1729
- @returns {SC.View} new instance
1730
- @test in createChildViews
1731
- */
1732
- createChildView: function(view, attrs) {
1733
- // attrs should always exist...
1734
- if (!attrs) attrs = {} ;
1735
- attrs.owner = attrs.parentView = this ;
1736
- attrs.isVisibleInWindow = this.get('isVisibleInWindow');
1737
- if (!attrs.page) attrs.page = this.page ;
1738
-
1739
- // Now add this to the attributes and create.
1740
- view = view.create(attrs) ;
1741
- return view ;
1742
- },
1743
-
1744
- // ...........................................
1745
- // LAYOUT
1746
- //
1747
-
1748
- /**
1749
- The 'frame' property depends on the 'layout' property as well as the
1750
- parent view’s frame. In order to properly invalidate any cached values,
1751
- we need to invalidate the cache whenever 'layout' changes. However,
1752
- observing 'layout' does not guarantee that; the observer might not be run
1753
- immediately.
1754
-
1755
- In order to avoid any window of opportunity where the cached frame could
1756
- be invalid, we need to force layoutDidChange() to always immediately run
1757
- whenever 'layout' is set.
1758
- */
1759
- propertyDidChange: function(key, value, _keepCache) {
1760
- // If the key is 'layout', we need to call layoutDidChange() immediately
1761
- // so that if the frame has changed any cached values (for both this view
1762
- // and any child views) can be appropriately invalidated.
1763
-
1764
- // To allow layout to be a computed property, we check if any property has
1765
- // changed and if layout is dependent on the property.
1766
- // If it is we call layoutDidChange.
1767
- var layoutChange=false;
1768
- if(typeof this.layout === "function" && this._kvo_dependents) {
1769
- var dependents = this._kvo_dependents[key];
1770
- if(dependents && dependents.indexOf('layout')!=-1) layoutChange = true;
1771
- }
1772
- if(key==='layout' || layoutChange) this.layoutDidChange();
1773
- // Resume notification as usual.
1774
- sc_super();
1775
- },
1776
-
1777
-
1778
- /**
1779
- This convenience method will take the current layout, apply any changes
1780
- you pass and set it again. It is more convenient than having to do this
1781
- yourself sometimes.
1782
-
1783
- You can pass just a key/value pair or a hash with several pairs. You can
1784
- also pass a null value to delete a property.
1785
-
1786
- This method will avoid actually setting the layout if the value you pass
1787
- does not edit the layout.
1788
-
1789
- @param {String|Hash} key
1790
- @param {Object} value
1791
- @returns {SC.View} receiver
1792
- */
1793
- adjust: function(key, value) {
1794
- var layout = SC.clone(this.get('layout')), didChange = NO, cur ;
1795
-
1796
- if (key === undefined) return this ; // nothing to do.
1797
-
1798
- // handle string case
1799
- if (SC.typeOf(key) === SC.T_STRING) {
1800
- cur = layout[key] ;
1801
- if (SC.none(value)) {
1802
- if (cur !== undefined) didChange = YES ;
1803
- delete layout[key] ;
1804
- } else {
1805
- if (cur !== value) didChange = YES ;
1806
- layout[key] = value ;
1807
- }
1808
-
1809
- // handle hash -- do it this way to avoid creating memory unless needed
1810
- } else {
1811
- var hash = key;
1812
- for(key in hash) {
1813
- if (!hash.hasOwnProperty(key)) continue;
1814
- value = hash[key] ;
1815
- cur = layout[key] ;
1816
-
1817
- if (value === null) {
1818
- if (cur !== undefined) didChange = YES ;
1819
- delete layout[key] ;
1820
- } else if (value !== undefined) {
1821
- if (cur !== value) didChange = YES ;
1822
- layout[key] = value ;
1823
- }
1824
- }
1825
- }
1826
- // now set adjusted layout
1827
- if (didChange) this.set('layout', layout) ;
1828
-
1829
- return this ;
1830
- },
1831
-
1832
- /**
1833
- The layout describes how you want your view to be positions on the
1834
- screen. You can define the following properties:
1835
-
1836
- - left: the left edge
1837
- - top: the top edge
1838
- - right: the right edge
1839
- - bottom: the bottom edge
1840
- - height: the height
1841
- - width: the width
1842
- - centerX: an offset from center X
1843
- - centerY: an offset from center Y
1844
- - minWidth: a minimum width
1845
- - minHeight: a minimum height
1846
- - maxWidth: a maximum width
1847
- - maxHeight: a maximum height
1848
-
1849
- Note that you can only use certain combinations to set layout. For
1850
- example, you may set left/right or left/width, but not left/width/right,
1851
- since that combination doesn't make sense.
1852
-
1853
- Likewise, you may set a minWidth/minHeight, or maxWidth/maxHeight, but
1854
- if you also set the width/height explicitly, then those constraints won't
1855
- matter as much.
1856
-
1857
- Layout is designed to maximize reliance on the browser's rendering
1858
- engine to keep your app up to date.
1859
-
1860
- @test in layoutStyle
1861
- */
1862
- layout: { top: 0, left: 0, bottom: 0, right: 0 },
1863
-
1864
- /**
1865
- Converts a frame from the receiver's offset to the target offset. Both
1866
- the receiver and the target must belong to the same pane. If you pass
1867
- null, the conversion will be to the pane level.
1868
-
1869
- Note that the context of a view's frame is the view's parent frame. In
1870
- other words, if you want to convert the frame of your view to the global
1871
- frame, then you should do:
1872
-
1873
- {{{
1874
- var pv = this.get('parentView'), frame = this.get('frame');
1875
- var newFrame = pv ? pv.convertFrameToView(frame, null) : frame;
1876
- }}}
1877
-
1878
- @param {Rect} frame the source frame
1879
- @param {SC.View} targetView the target view to convert to
1880
- @returns {Rect} converted frame
1881
- @test in converFrames
1882
- */
1883
- convertFrameToView: function(frame, targetView) {
1884
- var myX=0, myY=0, targetX=0, targetY=0, view = this, f ;
1885
-
1886
- // walk up this side
1887
- while (view) {
1888
- f = view.get('frame'); myX += f.x; myY += f.y ;
1889
- view = view.get('layoutView') ;
1890
- }
1891
-
1892
- // walk up other size
1893
- if (targetView) {
1894
- view = targetView ;
1895
- while (view) {
1896
- f = view.get('frame'); targetX += f.x; targetY += f.y ;
1897
- view = view.get('layoutView') ;
1898
- }
1899
- }
1900
-
1901
- // now we can figure how to translate the origin.
1902
- myX = frame.x + myX - targetX ;
1903
- myY = frame.y + myY - targetY ;
1904
- return { x: myX, y: myY, width: frame.width, height: frame.height } ;
1905
- },
1906
-
1907
- /**
1908
- Converts a frame offset in the coordinates of another view system to the
1909
- receiver's view.
1910
-
1911
- Note that the convext of a view's frame is relative to the view's
1912
- parentFrame. For example, if you want to convert the frame of view that
1913
- belongs to another view to the receiver's frame you would do:
1914
-
1915
- {{{
1916
- var frame = view.get('frame');
1917
- var newFrame = this.convertFrameFromView(frame, view.get('parentView'));
1918
- }}}
1919
-
1920
- @param {Rect} frame the source frame
1921
- @param {SC.View} targetView the target view to convert to
1922
- @returns {Rect} converted frame
1923
- @test in converFrames
1924
- */
1925
- convertFrameFromView: function(frame, targetView) {
1926
- var myX=0, myY=0, targetX=0, targetY=0, view = this, f ;
1927
-
1928
- // walk up this side
1929
- //Note: Intentional assignment of variable f
1930
- while (view && (f = view.get('frame'))) {
1931
- myX += f.x; myY += f.y ;
1932
- view = view.get('parentView') ;
1933
- }
1934
-
1935
- // walk up other size
1936
- if (targetView) {
1937
- view = targetView ;
1938
- while(view) {
1939
- f = view.get('frame'); targetX += f.x; targetY += f.y ;
1940
- view = view.get('parentView') ;
1941
- }
1942
- }
1943
-
1944
- // now we can figure how to translate the origin.
1945
- myX = frame.x - myX + targetX ;
1946
- myY = frame.y - myY + targetY ;
1947
- return { x: myX, y: myY, width: frame.width, height: frame.height } ;
1948
- },
1949
-
1950
- /**
1951
- Attempt to scroll the view to visible. This will walk up the parent
1952
- view hierarchy looking looking for a scrollable view. It will then
1953
- call scrollToVisible() on it.
1954
-
1955
- Returns YES if an actual scroll took place, no otherwise.
1956
-
1957
- @returns {Boolean}
1958
- */
1959
- scrollToVisible: function() {
1960
- var pv = this.get('parentView');
1961
- while(pv && !pv.get('isScrollable')) pv = pv.get('parentView');
1962
-
1963
- // found view, first make it scroll itself visible then scroll this.
1964
- if (pv) {
1965
- pv.scrollToVisible();
1966
- return pv.scrollToVisible(this);
1967
- } else return NO ;
1968
- },
1969
-
1970
- /**
1971
- Frame describes the current bounding rect for your view. This is always
1972
- measured from the top-left corner of the parent view.
1973
-
1974
- @property {Rect}
1975
- @test in layoutStyle
1976
- */
1977
- frame: function() {
1978
- return this.computeFrameWithParentFrame(null) ;
1979
- }.property('useStaticLayout').cacheable(), // We depend on the layout, but layoutDidChange will call viewDidChange to check the frame for us
1980
-
1981
- /**
1982
- Computes what the frame of this view would be if the parent were resized
1983
- to the passed dimensions. You can use this method to project the size of
1984
- a frame based on the resize behavior of the parent.
1985
-
1986
- This method is used especially by the scroll view to automatically
1987
- calculate when scrollviews should be visible.
1988
-
1989
- Passing null for the parent dimensions will use the actual current
1990
- parent dimensions. This is the same method used to calculate the current
1991
- frame when it changes.
1992
-
1993
- @param {Rect} pdim the projected parent dimensions
1994
- @returns {Rect} the computed frame
1995
- */
1996
- computeFrameWithParentFrame: function(pdim) {
1997
- var layout = this.get('layout'),
1998
- f = {} , error, layer, AUTO = SC.LAYOUT_AUTO,
1999
- stLayout = this.get('useStaticLayout'),
2000
- pv = this.get('parentView'),
2001
- dH, dW, //shortHand for parentDimensions
2002
- borderTop, borderLeft,
2003
- lR = layout.right,
2004
- lL = layout.left,
2005
- lT = layout.top,
2006
- lB = layout.bottom,
2007
- lW = layout.width,
2008
- lH = layout.height,
2009
- lcX = layout.centerX,
2010
- lcY = layout.centerY;
2011
-
2012
- if (lW !== undefined &&
2013
- lW === SC.LAYOUT_AUTO &&
2014
- stLayout !== undefined && !stLayout) {
2015
- error = SC.Error.desc(("%@.layout() cannot use width:auto if "+
2016
- "staticLayout is disabled").fmt(this), "%@".fmt(this), -1);
2017
- console.error(error.toString()) ;
2018
- throw error ;
2019
- }
2020
-
2021
- if (lH !== undefined &&
2022
- lH === SC.LAYOUT_AUTO &&
2023
- stLayout !== undefined && !stLayout) {
2024
- error = SC.Error.desc(("%@.layout() cannot use height:auto if "+
2025
- "staticLayout is disabled").fmt(this),"%@".fmt(this), -1);
2026
- console.error(error.toString()) ;
2027
- throw error ;
2028
- }
2029
-
2030
- if (stLayout) {
2031
- // need layer to be able to compute rect
2032
- if (layer = this.get('layer')) {
2033
- f = SC.viewportOffset(layer); // x,y
2034
- if (pv) f = pv.convertFrameFromView(f, null);
2035
-
2036
- /*
2037
- TODO Can probably have some better width/height values - CC
2038
- */
2039
- f.width = layer.offsetWidth;
2040
- f.height = layer.offsetHeight;
2041
- return f;
2042
- }
2043
- return null; // can't compute
2044
- }
2045
-
2046
-
2047
- if (!pdim) pdim = this.computeParentDimensions(layout) ;
2048
- dH = pdim.height;
2049
- dW = pdim.width;
2050
-
2051
-
2052
- // handle left aligned and left/right
2053
- if (!SC.none(lL)) {
2054
- if(SC.isPercentage(lL)){
2055
- f.x = dW*lL;
2056
- }else{
2057
- f.x = lL ;
2058
- }
2059
- if (lW !== undefined) {
2060
- if(lW === AUTO) f.width = AUTO ;
2061
- else if(SC.isPercentage(lW)) f.width = dW*lW ;
2062
- else f.width = lW ;
2063
- } else { // better have lR!
2064
- f.width = dW - f.x ;
2065
- if(lR && SC.isPercentage(lR)) f.width = f.width - (lR*dW) ;
2066
- else f.width = f.width - (lR || 0) ;
2067
- }
2068
- // handle right aligned
2069
- } else if (!SC.none(lR)) {
2070
- if (SC.none(lW)) {
2071
- if (SC.isPercentage(lR)) {
2072
- f.width = dW - (dW*lR) ;
2073
- }
2074
- else f.width = dW - lR ;
2075
- f.x = 0 ;
2076
- } else {
2077
- if(lW === AUTO) f.width = AUTO ;
2078
- else if(SC.isPercentage(lW)) f.width = dW*lW ;
2079
- else f.width = (lW || 0) ;
2080
- if (SC.isPercentage(lW)) f.x = dW - (lR*dW) - f.width ;
2081
- else f.x = dW - lR - f.width ;
2082
- }
2083
-
2084
- // handle centered
2085
- } else if (!SC.none(lcX)) {
2086
- if(lW === AUTO) f.width = AUTO ;
2087
- else if (SC.isPercentage(lW)) f.width = lW*dW ;
2088
- else f.width = (lW || 0) ;
2089
- if(SC.isPercentage(lcX)) f.x = (dW - f.width)/2 + (lcX*dW) ;
2090
- else f.x = (dW - f.width)/2 + lcX ;
2091
- } else {
2092
- f.x = 0 ; // fallback
2093
- if (SC.none(lW)) {
2094
- f.width = dW ;
2095
- } else {
2096
- if(lW === AUTO) f.width = AUTO ;
2097
- if (SC.isPercentage(lW)) f.width = lW*dW ;
2098
- else f.width = (lW || 0) ;
2099
- }
2100
- }
2101
-
2102
- // handle top aligned and top/bottom
2103
- if (!SC.none(lT)) {
2104
- if(SC.isPercentage(lT)) f.y = lT*dH ;
2105
- else f.y = lT ;
2106
- if (lH !== undefined) {
2107
- if(lH === AUTO) f.height = AUTO ;
2108
- else if(SC.isPercentage(lH)) f.height = lH*dH ;
2109
- else f.height = lH ;
2110
- } else { // better have lB!
2111
- if(lB && SC.isPercentage(lB)) f.height = dH - f.y - (lB*dH) ;
2112
- else f.height = dH - f.y - (lB || 0) ;
2113
- }
2114
-
2115
- // handle bottom aligned
2116
- } else if (!SC.none(lB)) {
2117
- if (SC.none(lH)) {
2118
- if (SC.isPercentage(lB)) f.height = dH - (lB*dH) ;
2119
- else f.height = dH - lB ;
2120
- f.y = 0 ;
2121
- } else {
2122
- if(lH === AUTO) f.height = AUTO ;
2123
- if (lH && SC.isPercentage(lH)) f.height = lH*dH ;
2124
- else f.height = (lH || 0) ;
2125
- if (SC.isPercentage(lB)) f.y = dH - (lB*dH) - f.height ;
2126
- else f.y = dH - lB - f.height ;
2127
- }
2128
-
2129
- // handle centered
2130
- } else if (!SC.none(lcY)) {
2131
- if(lH === AUTO) f.height = AUTO ;
2132
- if (lH && SC.isPercentage(lH)) f.height = lH*dH ;
2133
- else f.height = (lH || 0) ;
2134
- if (SC.isPercentage(lcY)) f.y = (dH - f.height)/2 + (lcY*dH) ;
2135
- else f.y = (dH - f.height)/2 + lcY ;
2136
-
2137
- // fallback
2138
- } else {
2139
- f.y = 0 ; // fallback
2140
- if (SC.none(lH)) {
2141
- f.height = dH ;
2142
- } else {
2143
- if(lH === AUTO) f.height = AUTO ;
2144
- if (SC.isPercentage(lH)) f.height = lH*dH ;
2145
- else f.height = lH || 0 ;
2146
- }
2147
- }
2148
-
2149
- f.x = Math.floor(f.x);
2150
- f.y = Math.floor(f.y);
2151
- if(f.height !== AUTO) f.height = Math.floor(f.height);
2152
- if(f.width !== AUTO) f.width = Math.floor(f.width);
2153
-
2154
- // if width or height were set to auto and we have a layer, try lookup
2155
- if (f.height === AUTO || f.width === AUTO) {
2156
- layer = this.get('layer');
2157
- if (f.height === AUTO) f.height = layer ? layer.clientHeight : 0;
2158
- if (f.width === AUTO) f.width = layer ? layer.clientWidth : 0;
2159
- }
2160
-
2161
- // views with SC.Border mixin applied applied
2162
- if (this.get('hasBorder')) {
2163
- borderTop = this.get('borderTop');
2164
- borderLeft = this.get('borderLeft');
2165
- f.height -= borderTop+this.get('borderBottom');
2166
- f.y += borderTop;
2167
- f.width -= borderLeft+this.get('borderRight');
2168
- f.x += borderLeft;
2169
- }
2170
-
2171
- // Account for special cases inside ScrollView, where we adjust the
2172
- // element's scrollTop/scrollLeft property for performance reasons.
2173
- if (pv && pv.isScrollContainer) {
2174
- pv = pv.get('parentView');
2175
- f.x -= pv.get('horizontalScrollOffset');
2176
- f.y -= pv.get('verticalScrollOffset');
2177
- }
2178
-
2179
- // make sure the width/height fix min/max...
2180
- if (!SC.none(layout.maxHeight) && (f.height > layout.maxHeight)) {
2181
- f.height = layout.maxHeight ;
2182
- }
2183
-
2184
- if (!SC.none(layout.minHeight) && (f.height < layout.minHeight)) {
2185
- f.height = layout.minHeight ;
2186
- }
2187
-
2188
- if (!SC.none(layout.maxWidth) && (f.width > layout.maxWidth)) {
2189
- f.width = layout.maxWidth ;
2190
- }
2191
-
2192
- if (!SC.none(layout.minWidth) && (f.width < layout.minWidth)) {
2193
- f.width = layout.minWidth ;
2194
- }
2195
-
2196
- // make sure width/height are never < 0
2197
- if (f.height < 0) f.height = 0 ;
2198
- if (f.width < 0) f.width = 0 ;
2199
-
2200
- return f;
2201
- },
2202
-
2203
- computeParentDimensions: function(frame) {
2204
- var ret, pv = this.get('parentView'), pf = (pv) ? pv.get('frame') : null ;
2205
-
2206
- if (pf) {
2207
- ret = { width: pf.width, height: pf.height };
2208
- } else {
2209
- var f = frame || {};
2210
- ret = {
2211
- width: (f.left || 0) + (f.width || 0) + (f.right || 0),
2212
- height: (f.top || 0) + (f.height || 0) + (f.bottom || 0)
2213
- };
2214
- }
2215
- return ret ;
2216
- },
2217
-
2218
- /**
2219
- The clipping frame returns the visible portion of the view, taking into
2220
- account the contentClippingFrame of the parent view. Keep in mind that
2221
- the clippingFrame is in the context of the view itself, not it's parent
2222
- view.
2223
-
2224
- Normally this will be calculated based on the intersection of your own
2225
- clippingFrame and your parentView's contentClippingFrame.
2226
-
2227
- @property {Rect}
2228
- */
2229
- clippingFrame: function() {
2230
- var f = this.get('frame'),
2231
- ret = f,
2232
- pv, cf;
2233
-
2234
- if (!f) return null;
2235
- pv = this.get('parentView');
2236
- if (pv) {
2237
- cf = pv.get('contentClippingFrame');
2238
- if (!cf) return f;
2239
- ret = SC.intersectRects(cf, f);
2240
- }
2241
- ret.x -= f.x;
2242
- ret.y -= f.y;
2243
-
2244
- return ret;
2245
- }.property('parentView', 'frame').cacheable(),
2246
-
2247
- /**
2248
- The clipping frame child views should intersect with. Normally this is
2249
- the same as the regular clippingFrame. However, you may override this
2250
- method if you want the child views to actually draw more or less content
2251
- than is actually visible for some reason.
2252
-
2253
- Usually this is only used by the ScrollView to optimize drawing on touch
2254
- devices.
2255
-
2256
- @property {Rect}
2257
- */
2258
- contentClippingFrame: function() {
2259
- return this.get('clippingFrame');
2260
- }.property('clippingFrame').cacheable(),
2261
-
2262
- /** @private
2263
- This method is invoked whenever the clippingFrame changes, notifying
2264
- each child view that its clippingFrame has also changed.
2265
- */
2266
- _sc_view_clippingFrameDidChange: function() {
2267
- var cvs = this.get('childViews'), len = cvs.length, idx, cv ;
2268
- for (idx=0; idx<len; ++idx) {
2269
- cv = cvs[idx] ;
2270
-
2271
- // In SC 1.0 views with static layout did not receive notifications
2272
- // of frame changes because they didn't support frames. In SC 1.1 they
2273
- // do support frames, so they should receive notifications. Also in
2274
- // SC 1.1 SC.StaticLayout is merged into SC.View. The mixin is only
2275
- // for compatibility. This property is defined on the mixin.
2276
- //
2277
- // frame changes should be sent all the time unless this property is
2278
- // present to indicate that we want the old 1.0 API behavior instead.
2279
- //
2280
- if (!cv.hasStaticLayout) {
2281
- cv.notifyPropertyChange('clippingFrame') ;
2282
- cv._sc_view_clippingFrameDidChange();
2283
- }
2284
- }
2285
- },
2286
-
2287
- /**
2288
- This method may be called on your view whenever the parent view resizes.
2289
-
2290
- The default version of this method will reset the frame and then call
2291
- viewDidResize(). You will not usually override this method, but you may
2292
- override the viewDidResize() method.
2293
-
2294
- @returns {void}
2295
- @test in viewDidResize
2296
- */
2297
- parentViewDidResize: function() {
2298
- var frameMayHaveChanged, layout, isFixed, isPercentageFunc, isPercentage;
2299
-
2300
- // If this view uses static layout, our "do we think the frame changed?"
2301
- // logic is not applicable and we simply have to assume that the frame may
2302
- // have changed.
2303
- if (this.useStaticLayout) {
2304
- frameMayHaveChanged = YES;
2305
- }
2306
- else {
2307
- layout = this.get('layout');
2308
-
2309
- // only resizes if the layout does something other than left/top - fixed
2310
- // size.
2311
- isFixed = (
2312
- (layout.left !== undefined) && (layout.top !== undefined) &&
2313
- (layout.width !== undefined) && (layout.height !== undefined)
2314
- );
2315
-
2316
-
2317
- // If it's fixed, our frame still could have changed if it's fixed to a
2318
- // percentage of the parent.
2319
- if (isFixed) {
2320
- isPercentageFunc = SC.isPercentage;
2321
- isPercentage = (isPercentageFunc(layout.left) ||
2322
- isPercentageFunc(layout.top) ||
2323
- isPercentageFunc(layout.width) ||
2324
- isPercentageFunc(layout.right) ||
2325
- isPercentageFunc(layout.centerX) ||
2326
- isPercentageFunc(layout.centerY));
2327
- }
2328
-
2329
- frameMayHaveChanged = (!isFixed || isPercentage);
2330
- }
2331
-
2332
- // Do we think there's a chance our frame will have changed as a result?
2333
- if (frameMayHaveChanged) {
2334
- // There's a chance our frame changed. Invoke viewDidResize(), which
2335
- // will notify about our change to 'frame' (if it actually changed) and
2336
- // appropriately notify our child views.
2337
- this.viewDidResize();
2338
- }
2339
- },
2340
-
2341
-
2342
-
2343
- /**
2344
- This method is invoked on your view when the view resizes due to a layout
2345
- change or potentially due to the parent view resizing (if your view’s size
2346
- depends on the size of your parent view). You can override this method
2347
- to implement your own layout if you like, such as performing a grid
2348
- layout.
2349
-
2350
- The default implementation simply notifies about the change to 'frame' and
2351
- then calls parentViewDidResize on all of your children.
2352
-
2353
- @returns {void}
2354
- */
2355
- viewDidResize: function() {
2356
- this._viewFrameDidChange();
2357
-
2358
- // Also notify our children.
2359
- var cv = this.childViews, len = cv.length, idx, view ;
2360
- for (idx=0; idx<len; ++idx) {
2361
- view = cv[idx];
2362
- view.parentViewDidResize();
2363
- }
2364
- },
2365
-
2366
- /** @private
2367
- Invoked by other views to notify this view that its frame has changed.
2368
-
2369
- This notifies the view that its frame property has changed,
2370
- then propagates those changes to its child views.
2371
- */
2372
- _viewFrameDidChange: function() {
2373
- this.notifyPropertyChange('frame');
2374
- this._sc_view_clippingFrameDidChange();
2375
- },
2376
-
2377
- // Implementation note: As a general rule, paired method calls, such as
2378
- // beginLiveResize/endLiveResize that are called recursively on the tree
2379
- // should reverse the order when doing the final half of the call. This
2380
- // ensures that the calls are propertly nested for any cleanup routines.
2381
- //
2382
- // -> View A.beginXXX()
2383
- // -> View B.beginXXX()
2384
- // -> View C.begitXXX()
2385
- // -> View D.beginXXX()
2386
- //
2387
- // ...later on, endXXX methods are called in reverse order of beginXXX...
2388
- //
2389
- // <- View D.endXXX()
2390
- // <- View C.endXXX()
2391
- // <- View B.endXXX()
2392
- // <- View A.endXXX()
2393
- //
2394
- // See the two methods below for an example implementation.
2395
-
2396
- /**
2397
- Call this method when you plan to begin a live resize. This will
2398
- notify the receiver view and any of its children that are interested
2399
- that the resize is about to begin.
2400
-
2401
- @returns {SC.View} receiver
2402
- @test in viewDidResize
2403
- */
2404
- beginLiveResize: function() {
2405
- // call before children have been notified...
2406
- if (this.willBeginLiveResize) this.willBeginLiveResize() ;
2407
-
2408
- // notify children in order
2409
- var ary = this.get('childViews'), len = ary.length, idx, view ;
2410
- for (idx=0; idx<len; ++idx) {
2411
- view = ary[idx] ;
2412
- if (view.beginLiveResize) view.beginLiveResize();
2413
- }
2414
- return this ;
2415
- },
2416
-
2417
- /**
2418
- Call this method when you are finished with a live resize. This will
2419
- notify the receiver view and any of its children that are interested
2420
- that the live resize has ended.
2421
-
2422
- @returns {SC.View} receiver
2423
- @test in viewDidResize
2424
- */
2425
- endLiveResize: function() {
2426
- // notify children in *reverse* order
2427
- var ary = this.get('childViews'), len = ary.length, idx, view ;
2428
- for (idx=len-1; idx>=0; --idx) { // loop backwards
2429
- view = ary[idx] ;
2430
- if (view.endLiveResize) view.endLiveResize() ;
2431
- }
2432
-
2433
- // call *after* all children have been notified...
2434
- if (this.didEndLiveResize) this.didEndLiveResize() ;
2435
- return this ;
2436
- },
2437
-
2438
- /**
2439
- Setting wantsAcceleratedLayer to YES will use 3d transforms to move the
2440
- layer when available.
2441
- */
2442
- wantsAcceleratedLayer: NO,
2443
-
2444
- /**
2445
- Specifies whether 3d transforms can be used to move the layer.
2446
- */
2447
- hasAcceleratedLayer: function(){
2448
- return this.get('wantsAcceleratedLayer') && SC.platform.supportsAcceleratedLayers;
2449
- }.property('wantsAcceleratedLayer').cacheable(),
2450
-
2451
-
2452
- /**
2453
- layoutStyle describes the current styles to be written to your element
2454
- based on the layout you defined. Both layoutStyle and frame reset when
2455
- you edit the layout property. Both are read only.
2456
-
2457
- Computes the layout style settings needed for the current anchor.
2458
-
2459
- @property {Hash}
2460
- @readOnly
2461
- */
2462
-
2463
-
2464
- layoutStyle: function() {
2465
- var layout = this.get('layout'), ret = {}, pdim = null, error,
2466
- AUTO = SC.LAYOUT_AUTO,
2467
- dims = SC._VIEW_DEFAULT_DIMS, loc = dims.length, x, value, key,
2468
- stLayout = this.get('useStaticLayout'),
2469
- lR = layout.right,
2470
- lL = layout.left,
2471
- lT = layout.top,
2472
- lB = layout.bottom,
2473
- lW = layout.width,
2474
- lH = layout.height,
2475
- lMW = layout.maxWidth,
2476
- lMH = layout.maxHeight,
2477
- lcX = layout.centerX,
2478
- lcY = layout.centerY,
2479
- hasAcceleratedLayer = this.get('hasAcceleratedLayer'),
2480
- translateTop = 0,
2481
- translateLeft = 0;
2482
- if (lW !== undefined && lW === SC.LAYOUT_AUTO && !stLayout) {
2483
- error= SC.Error.desc("%@.layout() you cannot use width:auto if "+
2484
- "staticLayout is disabled".fmt(this),"%@".fmt(this),-1);
2485
- console.error(error.toString()) ;
2486
- throw error ;
2487
- }
2488
-
2489
- if (lH !== undefined && lH === SC.LAYOUT_AUTO && !stLayout) {
2490
- error = SC.Error.desc("%@.layout() you cannot use height:auto if "+
2491
- "staticLayout is disabled".fmt(this),"%@".fmt(this),-1);
2492
- console.error(error.toString()) ;
2493
- throw error ;
2494
- }
2495
-
2496
- // X DIRECTION
2497
-
2498
- // handle left aligned and left/right
2499
- if (!SC.none(lL)) {
2500
- if(SC.isPercentage(lL)) {
2501
- ret.left = (lL*100)+"%"; //percentage left
2502
- } else if (hasAcceleratedLayer && !SC.empty(lW)) {
2503
- translateLeft = Math.floor(lL);
2504
- ret.left = 0;
2505
- } else {
2506
- ret.left = Math.floor(lL); //px left
2507
- }
2508
- ret.marginLeft = 0 ;
2509
-
2510
- if (lW !== undefined) {
2511
- if(lW === SC.LAYOUT_AUTO) ret.width = SC.LAYOUT_AUTO ;
2512
- else if(SC.isPercentage(lW)) ret.width = (lW*100)+"%"; //percentage width
2513
- else ret.width = Math.floor(lW) ; //px width
2514
- ret.right = null ;
2515
- } else {
2516
- ret.width = null ;
2517
- if(lR && SC.isPercentage(lR)) ret.right = (lR*100)+"%"; //percentage right
2518
- else ret.right = Math.floor(lR || 0) ; //px right
2519
- }
2520
-
2521
- // handle right aligned
2522
- } else if (!SC.none(lR)) {
2523
- if(SC.isPercentage(lR)) {
2524
- ret.right = Math.floor(lR*100)+"%"; //percentage left
2525
- }else{
2526
- ret.right = Math.floor(lR) ;
2527
- }
2528
- ret.marginLeft = 0 ;
2529
-
2530
- if (SC.none(lW)) {
2531
- if (SC.none(lMW)) ret.left = 0;
2532
- ret.width = null;
2533
- } else {
2534
- ret.left = null ;
2535
- if(lW === SC.LAYOUT_AUTO) ret.width = SC.LAYOUT_AUTO ;
2536
- else if(lW && SC.isPercentage(lW)) ret.width = (lW*100)+"%" ; //percentage width
2537
- else ret.width = Math.floor(lW || 0) ; //px width
2538
- }
2539
-
2540
- // handle centered
2541
- } else if (!SC.none(lcX)) {
2542
- ret.left = "50%";
2543
- if(lW && SC.isPercentage(lW)) ret.width = (lW*100)+"%" ; //percentage width
2544
- else ret.width = Math.floor(lW || 0) ;
2545
- if(lW && SC.isPercentage(lW) && (SC.isPercentage(lcX) || SC.isPercentage(lcX*-1))){
2546
- ret.marginLeft = Math.floor((lcX - lW/2)*100)+"%" ;
2547
- }else if(lW && lW >= 1 && !SC.isPercentage(lcX)){
2548
- ret.marginLeft = Math.floor(lcX - ret.width/2) ;
2549
- }else {
2550
- // This error message happens whenever width is not set.
2551
- console.warn("You have to set width and centerX usign both percentages or pixels");
2552
- ret.marginLeft = "50%";
2553
- }
2554
- ret.right = null ;
2555
-
2556
- // if width defined, assume top/left of zero
2557
- } else if (!SC.none(lW)) {
2558
- ret.left = 0;
2559
- ret.right = null;
2560
- if(lW === SC.LAYOUT_AUTO) ret.width = SC.LAYOUT_AUTO ;
2561
- else if(SC.isPercentage(lW)) ret.width = (lW*100)+"%";
2562
- else ret.width = Math.floor(lW);
2563
- ret.marginLeft = 0;
2564
-
2565
- // fallback, full width.
2566
- } else {
2567
- ret.left = 0;
2568
- ret.right = 0;
2569
- ret.width = null ;
2570
- ret.marginLeft= 0;
2571
- }
2572
-
2573
-
2574
- // handle min/max
2575
- ret.minWidth = (layout.minWidth === undefined) ? null : layout.minWidth ;
2576
- ret.maxWidth = (layout.maxWidth === undefined) ? null : layout.maxWidth ;
2577
-
2578
- // Y DIRECTION
2579
-
2580
- // handle top aligned and left/right
2581
- if (!SC.none(lT)) {
2582
- if(SC.isPercentage(lT)) {
2583
- ret.top = (lT*100)+"%";
2584
- } else if (hasAcceleratedLayer && !SC.empty(lH)) {
2585
- translateTop = Math.floor(lT);
2586
- ret.top = 0;
2587
- } else {
2588
- ret.top = Math.floor(lT);
2589
- }
2590
- if (lH !== undefined) {
2591
- if(lH === SC.LAYOUT_AUTO) ret.height = SC.LAYOUT_AUTO ;
2592
- else if(SC.isPercentage(lH)) ret.height = (lH*100)+"%" ;
2593
- else ret.height = Math.floor(lH) ;
2594
- ret.bottom = null ;
2595
- } else {
2596
- ret.height = null ;
2597
- if(lB && SC.isPercentage(lB)) ret.bottom = (lB*100)+"%" ;
2598
- else ret.bottom = Math.floor(lB || 0) ;
2599
- }
2600
- ret.marginTop = 0 ;
2601
-
2602
- // handle bottom aligned
2603
- } else if (!SC.none(lB)) {
2604
- ret.marginTop = 0 ;
2605
- if(SC.isPercentage(lB)) ret.bottom = (lB*100)+"%";
2606
- else ret.bottom = Math.floor(lB) ;
2607
- if (SC.none(lH)) {
2608
- if (SC.none(lMH)) ret.top = 0;
2609
- ret.height = null ;
2610
- } else {
2611
- ret.top = null ;
2612
- if(lH === SC.LAYOUT_AUTO) ret.height = SC.LAYOUT_AUTO ;
2613
- else if(lH && SC.isPercentage(lH)) ret.height = (lH*100)+"%" ;
2614
- else ret.height = Math.floor(lH || 0) ;
2615
- }
2616
-
2617
- // handle centered
2618
- } else if (!SC.none(lcY)) {
2619
- ret.top = "50%";
2620
- ret.bottom = null ;
2621
-
2622
- if(lH && SC.isPercentage(lH)) ret.height = (lH*100)+ "%" ;
2623
- else ret.height = Math.floor(lH || 0) ;
2624
-
2625
- if(lH && SC.isPercentage(lH) && (SC.isPercentage(lcY) || SC.isPercentage(lcY*-1))){ //height is percentage and lcy too
2626
- ret.marginTop = Math.floor((lcY - lH/2)*100)+"%" ;
2627
- }else if(lH && lH >= 1 && !SC.isPercentage(lcY)){
2628
- ret.marginTop = Math.floor(lcY - ret.height/2) ;
2629
- }else {
2630
- console.warn("You have to set height and centerY to use both percentages or pixels");
2631
- ret.marginTop = "50%";
2632
- }
2633
- } else if (!SC.none(lH)) {
2634
- ret.top = 0;
2635
- ret.bottom = null;
2636
- if(lH === SC.LAYOUT_AUTO) ret.height = SC.LAYOUT_AUTO ;
2637
- else if(lH && SC.isPercentage(lH)) ret.height = (lH*100)+"%" ;
2638
- else ret.height = Math.floor(lH || 0) ;
2639
- ret.marginTop = 0;
2640
-
2641
- // fallback, full width.
2642
- } else {
2643
- ret.top = 0;
2644
- ret.bottom = 0;
2645
- ret.height = null ;
2646
- ret.marginTop= 0;
2647
- }
2648
-
2649
- // handle min/max
2650
- ret.minHeight = (layout.minHeight === undefined) ?
2651
- null :
2652
- layout.minHeight ;
2653
- ret.maxHeight = (layout.maxHeight === undefined) ?
2654
- null :
2655
- layout.maxHeight ;
2656
-
2657
- // if zIndex is set, use it. otherwise let default shine through
2658
- ret.zIndex = SC.none(layout.zIndex) ? null : layout.zIndex.toString();
2659
-
2660
- // if backgroundPosition is set, use it.
2661
- // otherwise let default shine through
2662
- ret.backgroundPosition = SC.none(layout.backgroundPosition) ?
2663
- null :
2664
- layout.backgroundPosition.toString() ;
2665
-
2666
- // set default values to null to allow built-in CSS to shine through
2667
- // currently applies only to marginLeft & marginTop
2668
- while(--loc >=0) {
2669
- x = dims[loc];
2670
- if (ret[x]===0) ret[x]=null;
2671
- }
2672
-
2673
- if (hasAcceleratedLayer) {
2674
- var transform = 'translateX('+translateLeft+'px) translateY('+translateTop+'px)';
2675
- if (SC.platform.supportsCSS3DTransforms) transform += ' translateZ(0px)'
2676
- ret[SC.platform.domCSSPrefix+'Transform'] = transform;
2677
- }
2678
-
2679
- // convert any numbers into a number + "px".
2680
- for(key in ret) {
2681
- value = ret[key];
2682
- if (typeof value === SC.T_NUMBER) ret[key] = (value + "px");
2683
- }
2684
- return ret ;
2685
- }.property().cacheable(),
2686
-
2687
- /**
2688
- The view responsible for laying out this view. The default version
2689
- returns the current parent view.
2690
- */
2691
- layoutView: function() {
2692
- return this.get('parentView') ;
2693
- }.property('parentView').cacheable(),
2694
-
2695
- /**
2696
- This method is called whenever a property changes that invalidates the
2697
- layout of the view. Changing the layout will do this automatically, but
2698
- you can add others if you want.
2699
-
2700
- Implementation Note: In a traditional setup, we would simply observe
2701
- 'layout' here, but as described above in the documentation for our custom
2702
- implementation of propertyDidChange(), this method must always run
2703
- immediately after 'layout' is updated to avoid the potential for stale
2704
- (incorrect) cached 'frame' values.
2705
-
2706
- @returns {SC.View} receiver
2707
- */
2708
- layoutDidChange: function() {
2709
- // Did our layout change in a way that could cause us to be resized? If
2710
- // not, then there's no need to invalidate the frames of our child views.
2711
- var previousLayout = this._previousLayout,
2712
- currentLayout = this.get('layout'),
2713
- didResize = YES,
2714
- previousWidth, previousHeight, currentWidth, currentHeight;
2715
-
2716
- if (previousLayout && previousLayout !== currentLayout) {
2717
- // This is a simple check to see whether we think the view may have
2718
- // resized. We could look for a number of cases, but for now we'll
2719
- // handle only one simple case: if the width and height are both
2720
- // specified, and they have not changed.
2721
- previousWidth = previousLayout.width;
2722
- if (previousWidth !== undefined) {
2723
- currentWidth = currentLayout.width;
2724
- if (previousWidth === currentWidth) {
2725
- previousHeight = previousLayout.height;
2726
- if (previousLayout !== undefined) {
2727
- currentHeight = currentLayout.height;
2728
- if (previousHeight === currentHeight) didResize = NO;
2729
- }
2730
- }
2731
- }
2732
- }
2733
-
2734
- this.beginPropertyChanges() ;
2735
- this.notifyPropertyChange('layoutStyle') ;
2736
- if (didResize) {
2737
- this.viewDidResize();
2738
- }
2739
- else {
2740
- // Even if we didn't resize, our frame might have changed.
2741
- // viewDidResize() handles this in the other case.
2742
- this._viewFrameDidChange();
2743
- }
2744
- this.endPropertyChanges() ;
2745
-
2746
- // notify layoutView...
2747
- var layoutView = this.get('layoutView');
2748
- if (layoutView) {
2749
- layoutView.set('childViewsNeedLayout', YES);
2750
- layoutView.layoutDidChangeFor(this) ;
2751
- if (layoutView.get('childViewsNeedLayout')) {
2752
- layoutView.invokeOnce(layoutView.layoutChildViewsIfNeeded);
2753
- }
2754
- }
2755
-
2756
- return this ;
2757
- },
2758
-
2759
- /**
2760
- This this property to YES whenever the view needs to layout its child
2761
- views. Normally this property is set automatically whenever the layout
2762
- property for a child view changes.
2763
-
2764
- @property {Boolean}
2765
- */
2766
- childViewsNeedLayout: NO,
2767
-
2768
- /**
2769
- One of two methods that are invoked whenever one of your childViews
2770
- layout changes. This method is invoked everytime a child view's layout
2771
- changes to give you a chance to record the information about the view.
2772
-
2773
- Since this method may be called many times during a single run loop, you
2774
- should keep this method pretty short. The other method called when layout
2775
- changes, layoutChildViews(), is invoked only once at the end of
2776
- the run loop. You should do any expensive operations (including changing
2777
- a childView's actual layer) in this other method.
2778
-
2779
- Note that if as a result of running this method you decide that you do not
2780
- need your layoutChildViews() method run later, you can set the
2781
- childViewsNeedsLayout property to NO from this method and the layout
2782
- method will not be called layer.
2783
-
2784
- @param {SC.View} childView the view whose layout has changed.
2785
- @returns {void}
2786
- */
2787
- layoutDidChangeFor: function(childView) {
2788
- var set = this._needLayoutViews ;
2789
- if (!set) set = this._needLayoutViews = SC.CoreSet.create();
2790
- set.add(childView);
2791
- },
2792
-
2793
- /**
2794
- Called your layout method if the view currently needs to layout some
2795
- child views.
2796
-
2797
- @param {Boolean} isVisible if true assume view is visible even if it is not.
2798
- @returns {SC.View} receiver
2799
- @test in layoutChildViews
2800
- */
2801
- layoutChildViewsIfNeeded: function(isVisible) {
2802
- if (!isVisible) isVisible = this.get('isVisibleInWindow');
2803
- if (isVisible && this.get('childViewsNeedLayout')) {
2804
- this.set('childViewsNeedLayout', NO);
2805
- this.layoutChildViews();
2806
- }
2807
- return this ;
2808
- },
2809
-
2810
- /**
2811
- Applies the current layout to the layer. This method is usually only
2812
- called once per runloop. You can override this method to provide your
2813
- own layout updating method if you want, though usually the better option
2814
- is to override the layout method from the parent view.
2815
-
2816
- The default implementation of this method simply calls the renderLayout()
2817
- method on the views that need layout.
2818
-
2819
- @returns {void}
2820
- */
2821
- layoutChildViews: function() {
2822
- var set = this._needLayoutViews,
2823
- len = set ? set.length : 0,
2824
- i;
2825
- for (i = 0; i < len; ++i) {
2826
- set[i].updateLayout();
2827
- }
2828
- set.clear(); // reset & reuse
2829
- },
2830
-
2831
- /**
2832
- Invoked by the layoutChildViews method to update the layout on a
2833
- particular view. This method creates a render context and calls the
2834
- renderLayout() method, which is probably what you want to override instead
2835
- of this.
2836
-
2837
- You will not usually override this method, but you may call it if you
2838
- implement layoutChildViews() in a view yourself.
2839
-
2840
- @returns {SC.View} receiver
2841
- @test in layoutChildViews
2842
- */
2843
- updateLayout: function() {
2844
- var layer = this.get('layer'), context;
2845
- if (layer) {
2846
- context = this.renderContext(layer);
2847
- this.renderLayout(context);
2848
- context.update();
2849
-
2850
- // If this view uses static layout, then notify if the frame changed.
2851
- // (viewDidResize will do a comparison)
2852
- if (this.useStaticLayout) this.viewDidResize();
2853
- }
2854
- layer = null ;
2855
- return this ;
2856
- },
2857
-
2858
- /**
2859
- Default method called by the layout view to actually apply the current
2860
- layout to the layer. The default implementation simply assigns the
2861
- current layoutStyle to the layer. This method is also called whenever
2862
- the layer is first created.
2863
-
2864
- @param {SC.RenderContext} the render context
2865
- @returns {void}
2866
- @test in layoutChildViews
2867
- */
2868
- renderLayout: function(context, firstTime) {
2869
- context.addStyle(this.get('layoutStyle'));
2870
- },
2871
-
2872
- /** walk like a duck */
2873
- isView: YES,
2874
-
2875
- /**
2876
- Default method called when a selectstart event is triggered. This event is
2877
- only supported by IE. Used in sproutcore to disable text selection and
2878
- IE8 accelerators. The accelerators will be enabled only in
2879
- text selectable views. In FF and Safari we use the css style 'allow-select'.
2880
-
2881
- If you want to enable text selection in certain controls is recommended
2882
- to override this function to always return YES , instead of setting
2883
- isTextSelectable to true.
2884
-
2885
- For example in textfield you dont want to enable textSelection on the text
2886
- hint only on the actual text you are entering. You can achieve that by
2887
- only overriding this method.
2888
-
2889
- @param evt {SC.Event} the selectstart event
2890
- @returns YES if selectable
2891
- */
2892
- selectStart: function(evt) {
2893
- return this.get('isTextSelectable');
2894
- },
2895
-
2896
- /**
2897
- Used to block the contextMenu per view.
2898
-
2899
- @param evt {SC.Event} the contextmenu event
2900
- @returns YES if the contextmenu can show up
2901
- */
2902
- contextMenu: function(evt) {
2903
- if(!this.get('isContextMenuEnabled')) evt.stop();
2904
- return true;
2905
- },
2906
-
2907
- /**
2908
- A boundary set of distances outside which the touch will not be considered "inside" the view anymore.
2909
-
2910
- By default, up to 50px on each side.
2911
- */
2912
- touchBoundary: { left: 50, right: 50, top: 50, bottom: 50 },
2913
-
2914
- /**
2915
- @private
2916
- A computed property based on frame.
2917
- */
2918
- _touchBoundaryFrame: function (){
2919
- return this.get("parentView").convertFrameToView(this.get('frame'), null);
2920
- }.property("frame", "parentView").cacheable(),
2921
-
2922
- /**
2923
- Returns YES if the provided touch is within the boundary.
2924
- */
2925
- touchIsInBoundary: function(touch) {
2926
- var f = this.get("_touchBoundaryFrame"), maxX = 0, maxY = 0, boundary = this.get("touchBoundary");
2927
- var x = touch.pageX, y = touch.pageY;
2928
-
2929
- if (x < f.x) {
2930
- x = f.x - x;
2931
- maxX = boundary.left;
2932
- } else if (x > f.x + f.width) {
2933
- x = x - (f.x + f.width);
2934
- maxX = boundary.right;
2935
- } else {
2936
- x = 0;
2937
- maxX = 1;
2938
- }
2939
-
2940
- if (y < f.y) {
2941
- y = f.y - y;
2942
- maxY = boundary.top;
2943
- } else if (y > f.y + f.height) {
2944
- y = y - (f.y + f.height);
2945
- maxY = boundary.bottom;
2946
- } else {
2947
- y = 0;
2948
- maxY = 1;
2949
- }
2950
-
2951
- if (x > 100 || y > 100) return NO;
2952
- return YES;
2953
- }
2954
- });
2955
-
2956
- SC.View.mixin(/** @scope SC.View */ {
2957
-
2958
- /** @private walk like a duck -- used by SC.Page */
2959
- isViewClass: YES,
2960
-
2961
- /**
2962
- This method works just like extend() except that it will also preserve
2963
- the passed attributes in case you want to use a view builder later, if
2964
- needed.
2965
-
2966
- @param {Hash} attrs Attributes to add to view
2967
- @returns {Class} SC.View subclass to create
2968
- @function
2969
- */
2970
- design: function() {
2971
- if (this.isDesign) return this; // only run design one time
2972
- var ret = this.extend.apply(this, arguments);
2973
- ret.isDesign = YES ;
2974
- if (SC.ViewDesigner) {
2975
- SC.ViewDesigner.didLoadDesign(ret, this, SC.A(arguments));
2976
- }
2977
- return ret ;
2978
- },
2979
-
2980
- /**
2981
- Helper applies the layout to the prototype.
2982
- */
2983
- layout: function(layout) {
2984
- this.prototype.layout = layout ;
2985
- return this ;
2986
- },
2987
-
2988
- /**
2989
- Convert any layout to a Top, Left, Width, Height layout
2990
- */
2991
- convertLayoutToAnchoredLayout: function(layout, parentFrame){
2992
- var ret = {top: 0, left: 0, width: parentFrame.width, height: parentFrame.height},
2993
- pFW = parentFrame.width, pFH = parentFrame.height, //shortHand for parentDimensions
2994
- lR = layout.right,
2995
- lL = layout.left,
2996
- lT = layout.top,
2997
- lB = layout.bottom,
2998
- lW = layout.width,
2999
- lH = layout.height,
3000
- lcX = layout.centerX,
3001
- lcY = layout.centerY;
3002
-
3003
- // X Conversion
3004
- // handle left aligned and left/right
3005
- if (!SC.none(lL)) {
3006
- if(SC.isPercentage(lL)) ret.left = lL*pFW;
3007
- else ret.left = lL;
3008
- if (lW !== undefined) {
3009
- if(lW === SC.LAYOUT_AUTO) ret.width = SC.LAYOUT_AUTO ;
3010
- else if(SC.isPercentage(lW)) ret.width = lW*pFW ;
3011
- else ret.width = lW ;
3012
- } else {
3013
- if (lR && SC.isPercentage(lR)) ret.width = pFW - ret.left - (lR*pFW);
3014
- else ret.width = pFW - ret.left - (lR || 0);
3015
- }
3016
-
3017
- // handle right aligned
3018
- } else if (!SC.none(lR)) {
3019
-
3020
- // if no width, calculate it from the parent frame
3021
- if (SC.none(lW)) {
3022
- ret.left = 0;
3023
- if(lR && SC.isPercentage(lR)) ret.width = pFW - (lR*pFW);
3024
- else ret.width = pFW - (lR || 0);
3025
-
3026
- // If has width, calculate the left anchor from the width and right and parent frame
3027
- } else {
3028
- if(lW === SC.LAYOUT_AUTO) ret.width = SC.LAYOUT_AUTO ;
3029
- else {
3030
- if (SC.isPercentage(lW)) ret.width = lW*pFW;
3031
- else ret.width = lW;
3032
- if (SC.isPercentage(lR)) ret.left = pFW - (ret.width + lR);
3033
- else ret.left = pFW - (ret.width + lR);
3034
- }
3035
- }
3036
-
3037
- // handle centered
3038
- } else if (!SC.none(lcX)) {
3039
- if(lW && SC.isPercentage(lW)) ret.width = (lW*pFW) ;
3040
- else ret.width = (lW || 0) ;
3041
- ret.left = ((pFW - ret.width)/2);
3042
- if (SC.isPercentage(lcX)) ret.left = ret.left + lcX*pFW;
3043
- else ret.left = ret.left + lcX;
3044
-
3045
- // if width defined, assume left of zero
3046
- } else if (!SC.none(lW)) {
3047
- ret.left = 0;
3048
- if(lW === SC.LAYOUT_AUTO) ret.width = SC.LAYOUT_AUTO ;
3049
- else {
3050
- if(SC.isPercentage(lW)) ret.width = lW*pFW;
3051
- else ret.width = lW;
3052
- }
3053
-
3054
- // fallback, full width.
3055
- } else {
3056
- ret.left = 0;
3057
- ret.width = 0;
3058
- }
3059
-
3060
- // handle min/max
3061
- if (layout.minWidth !== undefined) ret.minWidth = layout.minWidth ;
3062
- if (layout.maxWidth !== undefined) ret.maxWidth = layout.maxWidth ;
3063
-
3064
- // Y Conversion
3065
- // handle left aligned and top/bottom
3066
- if (!SC.none(lT)) {
3067
- if(SC.isPercentage(lT)) ret.top = lT*pFH;
3068
- else ret.top = lT;
3069
- if (lH !== undefined) {
3070
- if(lH === SC.LAYOUT_AUTO) ret.height = SC.LAYOUT_AUTO ;
3071
- else if (SC.isPercentage(lH)) ret.height = lH*pFH;
3072
- else ret.height = lH ;
3073
- } else {
3074
- ret.height = pFH - ret.top;
3075
- if(lB && SC.isPercentage(lB)) ret.height = ret.height - (lB*pFH);
3076
- else ret.height = ret.height - (lB || 0);
3077
- }
3078
-
3079
- // handle bottom aligned
3080
- } else if (!SC.none(lB)) {
3081
-
3082
- // if no height, calculate it from the parent frame
3083
- if (SC.none(lH)) {
3084
- ret.top = 0;
3085
- if (lB && SC.isPercentage(lB)) ret.height = pFH - (lB*pFH);
3086
- else ret.height = pFH - (lB || 0);
3087
-
3088
- // If has height, calculate the top anchor from the height and bottom and parent frame
3089
- } else {
3090
- if(lH === SC.LAYOUT_AUTO) ret.height = SC.LAYOUT_AUTO ;
3091
- else {
3092
- if (SC.isPercentage(lH)) ret.height = lH*pFH;
3093
- else ret.height = lH;
3094
- ret.top = pFH - ret.height;
3095
- if (SC.isPercentage(lB)) ret.top = ret.top - (lB*pFH);
3096
- else ret.top = ret.top - lB;
3097
- }
3098
- }
3099
-
3100
- // handle centered
3101
- } else if (!SC.none(lcY)) {
3102
- if(lH && SC.isPercentage(lH)) ret.height = (lH*pFH) ;
3103
- else ret.height = (lH || 0) ;
3104
- ret.top = ((pFH - ret.height)/2);
3105
- if(SC.isPercentage(lcY)) ret.top = ret.top + lcY*pFH;
3106
- else ret.top = ret.top + lcY;
3107
-
3108
- // if height defined, assume top of zero
3109
- } else if (!SC.none(lH)) {
3110
- ret.top = 0;
3111
- if(lH === SC.LAYOUT_AUTO) ret.height = SC.LAYOUT_AUTO ;
3112
- else if (SC.isPercentage(lH)) ret.height = lH*pFH;
3113
- else ret.height = lH;
3114
-
3115
- // fallback, full height.
3116
- } else {
3117
- ret.top = 0;
3118
- ret.height = 0;
3119
- }
3120
-
3121
- if(ret.top) ret.top = Math.floor(ret.top);
3122
- if(ret.bottom) ret.bottom = Math.floor(ret.bottom);
3123
- if(ret.left) ret.left = Math.floor(ret.left);
3124
- if(ret.right) ret.right = Math.floor(ret.right);
3125
- if(ret.width !== SC.LAYOUT_AUTO) ret.width = Math.floor(ret.width);
3126
- if(ret.height !== SC.LAYOUT_AUTO) ret.height = Math.floor(ret.height);
3127
-
3128
- // handle min/max
3129
- if (layout.minHeight !== undefined) ret.minHeight = layout.minHeight ;
3130
- if (layout.maxHeight !== undefined) ret.maxHeight = layout.maxHeight ;
3131
-
3132
- return ret;
3133
- },
3134
-
3135
- /**
3136
- For now can only convert Top/Left/Width/Height to a Custom Layout
3137
- */
3138
- convertLayoutToCustomLayout: function(layout, layoutParams, parentFrame){
3139
- // TODO: [EG] Create Top/Left/Width/Height to a Custom Layout conversion
3140
- },
3141
-
3142
- /**
3143
- Helper applies the classNames to the prototype
3144
- */
3145
- classNames: function(sc) {
3146
- sc = (this.prototype.classNames || []).concat(sc);
3147
- this.prototype.classNames = sc;
3148
- return this ;
3149
- },
3150
-
3151
- /**
3152
- Help applies the tagName
3153
- */
3154
- tagName: function(tg) {
3155
- this.prototype.tagName = tg;
3156
- return this ;
3157
- },
3158
-
3159
- /**
3160
- Helper adds the childView
3161
- */
3162
- childView: function(cv) {
3163
- var childViews = this.prototype.childViews || [];
3164
- if (childViews === this.superclass.prototype.childViews) {
3165
- childViews = childViews.slice();
3166
- }
3167
- childViews.push(cv) ;
3168
- this.prototype.childViews = childViews;
3169
- return this ;
3170
- },
3171
-
3172
- /**
3173
- Helper adds a binding to a design
3174
- */
3175
- bind: function(keyName, path) {
3176
- var p = this.prototype, s = this.superclass.prototype;
3177
- var bindings = p._bindings ;
3178
- if (!bindings || bindings === s._bindings) {
3179
- bindings = p._bindings = (bindings || []).slice() ;
3180
- }
3181
-
3182
- keyName = keyName + "Binding";
3183
- p[keyName] = path ;
3184
- bindings.push(keyName);
3185
-
3186
- return this ;
3187
- },
3188
-
3189
- /**
3190
- Helper sets a generic property on a design.
3191
- */
3192
- prop: function(keyName, value) {
3193
- this.prototype[keyName] = value;
3194
- return this ;
3195
- },
3196
-
3197
- /**
3198
- Used to construct a localization for a view. The default implementation
3199
- will simply return the passed attributes.
3200
- */
3201
- localization: function(attrs, rootElement) {
3202
- // add rootElement
3203
- if (rootElement) attrs.rootElement = SC.$(rootElement)[0];
3204
- return attrs;
3205
- },
3206
-
3207
- /**
3208
- Creates a view instance, first finding the DOM element you name and then
3209
- using that as the root element. You should not use this method very
3210
- often, but it is sometimes useful if you want to attach to already
3211
- existing HTML.
3212
-
3213
- @param {String|Element} element
3214
- @param {Hash} attrs
3215
- @returns {SC.View} instance
3216
- */
3217
- viewFor: function(element, attrs) {
3218
- var args = SC.$A(arguments); // prepare to edit
3219
- if (SC.none(element)) {
3220
- args.shift(); // remove if no element passed
3221
- } else args[0] = { rootElement: SC.$(element)[0] } ;
3222
- var ret = this.create.apply(this, arguments) ;
3223
- args = args[0] = null;
3224
- return ret ;
3225
- },
3226
-
3227
- /**
3228
- Create a new view with the passed attributes hash. If you have the
3229
- Designer module loaded, this will also create a peer designer if needed.
3230
- */
3231
- create: function() {
3232
- var C=this, ret = new C(arguments);
3233
- if (SC.ViewDesigner) {
3234
- SC.ViewDesigner.didCreateView(ret, SC.$A(arguments));
3235
- }
3236
- return ret ;
3237
- },
3238
-
3239
- /**
3240
- Applies the passed localization hash to the component views. Call this
3241
- method before you call create(). Returns the receiver. Typically you
3242
- will do something like this:
3243
-
3244
- view = SC.View.design({...}).loc(localizationHash).create();
3245
-
3246
- @param {Hash} loc
3247
- @param rootElement {String} optional rootElement with prepped HTML
3248
- @returns {SC.View} receiver
3249
- */
3250
- loc: function(loc) {
3251
- var childLocs = loc.childViews;
3252
- delete loc.childViews; // clear out child views before applying to attrs
3253
-
3254
- this.applyLocalizedAttributes(loc) ;
3255
- if (SC.ViewDesigner) {
3256
- SC.ViewDesigner.didLoadLocalization(this, SC.$A(arguments));
3257
- }
3258
-
3259
- // apply localization recursively to childViews
3260
- var childViews = this.prototype.childViews, idx = childViews.length,
3261
- viewClass;
3262
- while(--idx>=0) {
3263
- viewClass = childViews[idx];
3264
- loc = childLocs[idx];
3265
- if (loc && viewClass && viewClass.loc) viewClass.loc(loc) ;
3266
- }
3267
-
3268
- return this; // done!
3269
- },
3270
-
3271
- /**
3272
- Internal method actually updates the localizated attributes on the view
3273
- class. This is overloaded in design mode to also save the attributes.
3274
- */
3275
- applyLocalizedAttributes: function(loc) {
3276
- SC.mixin(this.prototype, loc) ;
3277
- },
3278
-
3279
- views: {}
3280
-
3281
- }) ;
3282
-
3283
- // .......................................................
3284
- // OUTLET BUILDER
3285
- //
3286
-
3287
- /**
3288
- Generates a computed property that will look up the passed property path
3289
- the first time you try to get the value. Use this whenever you want to
3290
- define an outlet that points to another view or object. The root object
3291
- used for the path will be the receiver.
3292
- */
3293
- SC.outlet = function(path, root) {
3294
- return function(key) {
3295
- return (this[key] = SC.objectForPropertyPath(path, (root !== undefined) ? root : this)) ;
3296
- }.property();
3297
- };
3298
-
3299
- /** @private on unload clear cached divs. */
3300
- SC.View.unload = function() {
3301
- // delete view items this way to ensure the views are cleared. The hash
3302
- // itself may be owned by multiple view subclasses.
3303
- var views = SC.View.views;
3304
- if (views) {
3305
- for(var key in views) {
3306
- if (!views.hasOwnProperty(key)) continue ;
3307
- delete views[key];
3308
- }
3309
- }
3310
- } ;
3311
-
3312
- //unload views for IE, trying to collect memory.
3313
- if(SC.browser.msie) SC.Event.add(window, 'unload', SC.View, SC.View.unload) ;