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.
- data/.rspec +1 -0
- data/CHANGELOG +126 -0
- data/README.txt +25 -0
- data/VERSION.yml +2 -2
- data/bin/sc-build +1 -1
- data/bin/sc-build-number +1 -1
- data/bin/sc-docs +1 -1
- data/bin/sc-gen +1 -1
- data/bin/sc-init +1 -1
- data/bin/sc-manifest +1 -1
- data/bin/sc-server +1 -1
- data/bin/sproutcore +1 -1
- data/lib/Buildfile +14 -5
- data/lib/buildtasks/build.rake +33 -17
- data/lib/buildtasks/manifest.rake +381 -103
- data/lib/buildtasks/target.rake +1 -0
- data/lib/doc_templates/sproutcore/index.tmpl +18 -4
- data/lib/doc_templates/sproutcore/publish.js +1 -1
- data/lib/frameworks/sproutcore/Buildfile +36 -33
- data/lib/frameworks/sproutcore/CHANGELOG.md +414 -0
- data/lib/frameworks/sproutcore/README.md +1 -0
- data/lib/frameworks/sproutcore/apps/test_controls/Buildfile +0 -0
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/alert.js +39 -0
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/buttons.js +21 -0
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/categories.js +125 -0
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/category.js +36 -0
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/split.js +74 -0
- data/lib/frameworks/sproutcore/apps/test_controls/core.js +29 -0
- data/lib/frameworks/sproutcore/apps/test_controls/main.js +14 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/buttons_page.js +158 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/checkboxes_page.js +53 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/flow_layout_page.js +85 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/list_page.js +40 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/loading.rhtml +9 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.css +60 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +151 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/panels_page.js +62 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +33 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/radio_page.js +55 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/scroll_page.js +77 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/segmented_page.js +99 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +61 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/sliders_page.js +54 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/split_page.js +141 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/strings.js +50 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/tab_page.js +53 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/text_field_page.js +65 -0
- data/lib/frameworks/sproutcore/apps/test_controls/theme.js +34 -0
- data/lib/frameworks/sproutcore/apps/tests/controllers/detail.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/controllers/source.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/controllers/target.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/controllers/tests.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/core.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +6 -6
- data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/main.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_loading.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/start.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/detail.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/source.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/target.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/tests/models/target.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/tests/models/test.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +1 -1
- data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +10 -4
- data/lib/frameworks/sproutcore/apps/welcome/core.js +1 -1
- data/lib/frameworks/sproutcore/apps/{greenhouse → welcome}/english.lproj/images/main-bg.png +0 -0
- data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.css +24 -6
- data/lib/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +37 -47
- data/lib/frameworks/sproutcore/apps/welcome/english.lproj/strings.js +1 -1
- data/lib/frameworks/sproutcore/apps/welcome/main.js +1 -1
- data/lib/frameworks/sproutcore/apps/welcome/tests/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_DatastoreDesign.graffle}/QuickLook/Preview.pdf +0 -0
- data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_DatastoreDesign.graffle}/QuickLook/Thumbnail.tiff +0 -0
- data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_DatastoreDesign.graffle}/data.plist +0 -0
- data/lib/frameworks/sproutcore/{apps/docs/design/Doc Viewer.graffle → design/Sproutcore_DatastoreDesign.graffle}/image8.png +0 -0
- data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → Sproutcore_Design_Template.graffle}/QuickLook/Preview.pdf +0 -0
- data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → Sproutcore_Design_Template.graffle}/QuickLook/Thumbnail.tiff +0 -0
- data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → Sproutcore_Design_Template.graffle}/data.plist +0 -0
- data/lib/frameworks/sproutcore/design/{SproutCore Datastore Design.graffle → Sproutcore_Design_Template.graffle}/image8.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/QuickLook/Preview.pdf +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/QuickLook/Thumbnail.tiff +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/data.plist +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image10.png +0 -0
- data/lib/frameworks/sproutcore/{apps/docs/design/Doc Viewer.graffle → design/TestRunner_Design.graffle}/image11.png +0 -0
- data/lib/frameworks/sproutcore/{apps/docs/design/Doc Viewer.graffle → design/TestRunner_Design.graffle}/image13.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image15.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image16.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image17.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image18.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image19.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image22.tiff +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image23.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image24.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image25.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image30.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image31.png +0 -0
- data/lib/frameworks/sproutcore/design/{SproutCore Design Template.graffle → TestRunner_Design.graffle}/image8.png +0 -0
- data/lib/frameworks/sproutcore/design/{TestRunner Design.graffle → TestRunner_Design.graffle}/image9.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/ajax/fixtures/file_exists.json +1 -0
- data/lib/frameworks/sproutcore/frameworks/ajax/fixtures/malformed.json +11 -0
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +611 -0
- data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +550 -0
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +276 -0
- data/lib/frameworks/sproutcore/frameworks/animation/core.js +57 -45
- data/lib/frameworks/sproutcore/frameworks/animation/tests/core.js +10 -5
- data/lib/frameworks/sproutcore/frameworks/bootstrap/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/bootstrap/setup_body_class_names.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/bench.js +14 -0
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +219 -23
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +16 -15
- data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +187 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +540 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +342 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/core.js +189 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/function.js +39 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars.js +73 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/bind.js +293 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +55 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/localization.js +5 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/view.js +96 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +81 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +163 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +60 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +110 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +268 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +249 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/checkbox_support.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +55 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +74 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +95 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +50 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/manipulation.js +33 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +670 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/visibility.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/observable_protocol.js +40 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +131 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/core.css +378 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/resources/view.css +57 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/application.js +33 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/bindable_span.js +164 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +36 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +202 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/core_query.js +141 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +131 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +210 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +991 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +289 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/page.js +106 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +419 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +103 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +1063 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +124 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +2174 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/selection_set.js +693 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +397 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +165 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/theme.js +316 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +548 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +155 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils/rect.js +104 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +301 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/enum_case.js +206 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/null_case.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/selection_support.js +344 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/single_case.js +136 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/empty_case.js +82 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/multiple_case.js +111 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/single_case.js +193 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/single_enumerable_case.js +265 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/responder_context.js +76 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/checkbox_support.js +38 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/text_field_support.js +79 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/panes/template.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/builder.js +49 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/core_query/within.js +71 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +140 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/ready/done.js +40 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/begin.js +47 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/element.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +124 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/get.js +51 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_attr.js +50 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_basic.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +177 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +109 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/init.js +55 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/join.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/push_text.js +74 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/tag.js +46 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +219 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeKeyPane.js +124 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeMainPane.js +68 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/makeMenuPane.js +48 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/root_responder.js +108 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/root_responder/targetForAction.js +288 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/add.js +92 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/copy.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/indexSetForSource.js +98 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/isEqual.js +60 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +111 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +201 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/theme.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/invalidate.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/invokeLater.js +209 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/isPaused.js +77 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/performAction.js +75 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/schedule.js +176 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/normalizeURL.js +24 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +284 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/rect.js +105 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/main_pane.js +49 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +224 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/child_view.js +26 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/firstResponder.js +148 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/keyPane.js +133 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/layout.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/sendEvent.js +206 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +201 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/core.js +160 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +919 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +382 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build.js +85 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +89 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +117 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +248 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertLayouts.js +153 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +132 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createLayer.js +97 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/destroyLayer.js +83 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/didAppendToDocument.js +83 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/findLayerInParentLayer.js +50 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/init.js +50 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +217 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisible.js +85 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/isVisibleInWindow.js +122 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/keyboard.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layer.js +146 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js +162 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutDidChange.js +180 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +745 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/parentViewDidChange.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/prepareContext.js +203 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/removeChild.js +189 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render.js +203 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/render_delegate_support.js +163 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/replaceChild.js +29 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/static_layout.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/theme.js +45 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayer.js +148 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayerLocation.js +213 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/view.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/viewDidResize.js +202 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template.js +131 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +242 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +1524 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +181 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/base.js +3 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +48 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +57 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +223 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +1115 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +624 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +401 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +400 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/touch.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/visibility.js +118 -0
- data/lib/frameworks/sproutcore/frameworks/core_tools/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_tools/data_source.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_tools/english.lproj/strings.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_tools/fixtures/target.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_tools/fixtures/test.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_tools/models/test.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +17 -21
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +322 -132
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/datastore/debug/json.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/debug/standard_setup.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +44 -61
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +16 -100
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +17 -24
- data/lib/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +20 -21
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +457 -216
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +204 -94
- data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +17 -19
- data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +150 -115
- data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +148 -110
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +51 -26
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +160 -158
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +298 -204
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +419 -233
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/cascade.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +7 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/contact_model.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/cyclical_relationship.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/mail_model.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/test_runner_model.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/datetime_recordattribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +180 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +56 -18
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +36 -10
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/error_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +26 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/readAttribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/storeDidChangeProperties.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/core_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +5 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/builders.js +22 -22
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/contains.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/containsRecordTypes.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/copy.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +39 -14
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/expandedRecordTypes.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +14 -6
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/queryWithScope.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/error_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +89 -53
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +11 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +6 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +6 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/error_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/init.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/loadRecord.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/loadRecords.js +100 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readEditableDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +39 -36
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/removeDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +17 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/unloadRecord.js +55 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/unloadRecords.js +85 -32
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/writeDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +1103 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +390 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +14 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +91 -0
- data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +10 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/core.js +19 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/debug/drag.js +8 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +0 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +0 -27
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +27 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +1 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +72 -74
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +49 -27
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +63 -46
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_group.js +6 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +53 -17
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +84 -79
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/navigation_builder.js +138 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +38 -24
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +396 -218
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +92 -123
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +23 -18
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +39 -17
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +66 -53
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +364 -121
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/select_button.js +209 -108
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +40 -17
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +16 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +25 -27
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +36 -24
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +7 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +112 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +98 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +25 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +59 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/helpers/slicing.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +51 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/master_detail.js +29 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/menu.js +60 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/picker.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +100 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +84 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +116 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +58 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +80 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +81 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/source_list.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/toolbar.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/workspace.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +197 -103
- data/lib/frameworks/sproutcore/frameworks/desktop/system/key_bindings.js +7 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +74 -37
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +26 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +16 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +190 -22
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +69 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/pane_page.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +30 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +91 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/ui.js +11 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +189 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/displayProperties.js +89 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/keyEquivalents.js +57 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +46 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +91 -18
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +16 -32
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +29 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/displayProperties.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +27 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +16 -10
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +40 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/image_button/ui.js +52 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/render.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_alternatingrows.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +129 -21
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +174 -43
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +93 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +50 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +14 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +29 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +26 -83
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +292 -61
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +11 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +32 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +78 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +11 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +11 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +16 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/static_content.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +33 -29
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/method.js +33 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +29 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/web/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/well/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +550 -231
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +63 -55
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +286 -187
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +77 -53
- data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +39 -31
- data/lib/frameworks/sproutcore/frameworks/desktop/views/file.js +148 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +43 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/image_button.js +82 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +58 -36
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +668 -509
- data/lib/frameworks/sproutcore/frameworks/desktop/views/master_detail.js +313 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +93 -54
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +152 -38
- data/lib/frameworks/sproutcore/frameworks/desktop/views/navigation.js +261 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/navigation_bar.js +191 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +35 -30
- data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +131 -122
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +208 -208
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +24 -17
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +332 -135
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +184 -73
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +193 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +829 -426
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +377 -143
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +96 -37
- data/lib/frameworks/sproutcore/frameworks/desktop/views/separator.js +26 -10
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +52 -39
- data/lib/frameworks/sproutcore/frameworks/desktop/views/source_list.js +19 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +15 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +387 -271
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +10 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +15 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +18 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +114 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/views/thumb.js +14 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +103 -14
- data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +36 -20
- data/lib/frameworks/sproutcore/frameworks/desktop/views/well.js +27 -31
- data/lib/frameworks/sproutcore/frameworks/desktop/views/workspace.js +285 -0
- data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +6 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/README.md +23 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/README +18 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/TODO +56 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/beautify.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/design.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/file.js +35 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/files.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/layout.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +194 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/page.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/property.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/property_editor.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/target.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/targets.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/controllers/view_configs.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/core.js +65 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/core_file.js +124 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/data_source.js +250 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/app_page.js +399 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/app-selector.css +107 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/button.css +314 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/dock.css +90 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/general.css +51 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/main-page.css +93 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/menu.css +49 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/modal.css +41 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/css/picker.css +195 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/search.css +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/css/text-field.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/dialogs.js +303 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500.eot +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500.otf +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500.woff +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500_italic.eot +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500_italic.otf +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/fonts/museosans_500_italic.woff +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/app-selector/choose-app.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/app-selector/list-item-sel.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule-xl/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/capsule/sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/active-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/cap-sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/regular-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/dark/sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/active-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/regular-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/sel-active-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/sel-disabled-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/shared/sel-m.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/regular-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/regular-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-active-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-active-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-disabled-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/buttons/square/sel-r.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/actions-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/actions.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/inspector-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/inspector.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/library-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/library.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/projects-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/projects.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/run-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/run.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/save-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/icons/save.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/logos/greenhouse-l.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/logos/greenhouse-s.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/logos/sproutcore.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/apps/greenhouse}/english.lproj/images/main-bg.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/bottom-left.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/bottom-right.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/bottom.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/close-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/close.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/left.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-bottom.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-left.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-right.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/pointer-top.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/right.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/search-active.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/search.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/top-left.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/top-right.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/picker/top.png +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/images/toolbar-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/inspectors.js +365 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/loading.rhtml +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/english.lproj/main_page.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/english.lproj/strings.js +93 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/fixtures/file.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/main.js +28 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/mixins/drop_down.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/models/design.js +26 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/models/dir.js +93 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/models/file.js +51 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/models/target.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/models/view_config.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/resources/test_page.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/inspector.js +152 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/library.js +142 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/main.js +283 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/modals.js +299 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +235 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/design.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/designs.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/file.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/controllers/files.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/models/file.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/tests/models/view_config.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/tests/views/list_item.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/tests/views/plist_item.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/theme.js +25 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/anchor.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/application_list_item.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/event_blocker.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/label_designer.js +0 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/list_item.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +178 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/simple_button.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/tear_off_picker.js +56 -0
- data/lib/frameworks/sproutcore/{apps → frameworks/experimental/apps}/greenhouse/views/web.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/coders/design.js +22 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/coders/object.js +349 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/controllers.js +23 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/design.js +43 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/designs.js +139 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +172 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_files.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/core.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_rule.js +22 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style.js +29 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +201 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/button.js +23 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/label.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +298 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/tab.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/text_field.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +1269 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/css/designer.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/english.lproj/design_page.js +55 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/high_light.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/controller.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-divider.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-sel-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/dock-item-sel-divider.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/english.lproj/images/main-bg.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/page.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/pane.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/images/view.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/english.lproj/selection_handles.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/ext/binding.js +39 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/ext/object.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/ext/page.js +60 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/ext/view.js +29 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/button.js +13 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +227 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/tests/coders/page.js +54 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/tests/designers/view_designer.js +47 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +144 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +219 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/views/high_light.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{designer → experimental/frameworks/designer}/views/page_item_view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/selection_handles.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/README.md +11 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +215 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/platform.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/README.md +46 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +112 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/many.js +79 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +76 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/single.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +229 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +236 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/render_delegates/split_divider.js +26 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +100 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/dividers.js +243 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +294 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_child.js +135 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +160 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +929 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split_divider.js +40 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/thumb.js +26 -0
- data/lib/frameworks/sproutcore/frameworks/forms/english.lproj/default_styles.css +5 -0
- data/lib/frameworks/sproutcore/frameworks/forms/english.lproj/strings.js +15 -0
- data/lib/frameworks/sproutcore/frameworks/forms/mixins/edit_mode.js +48 -0
- data/lib/frameworks/sproutcore/frameworks/forms/mixins/emptiness.js +94 -0
- data/lib/frameworks/sproutcore/frameworks/forms/render_delegates/form.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/forms/render_delegates/form_row.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_checkbox_field.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_field.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_label.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_radio_field.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_row.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/forms/tests/views/form_text_field.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +286 -0
- data/lib/frameworks/sproutcore/frameworks/forms/views/form_row.js +187 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +52 -43
- data/lib/frameworks/sproutcore/frameworks/foundation/core.js +15 -142
- data/lib/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +29 -21
- data/lib/frameworks/sproutcore/frameworks/foundation/delegates/inline_text_field.js +90 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/benchmark.css +146 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +4 -16
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/checkbox_view.css +5 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/images/favicon.ico +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/images/sproutcore.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +5 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/radio_view.css +7 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +4 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/ext/string.js +89 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/gestures/pinch.js +119 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/gestures/swipe.js +234 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/gestures/tap.js +157 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/license.js +24 -26
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_mixin.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +355 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +4 -350
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +10 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +8 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +227 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/control.js +105 -200
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +16 -15
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +745 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +214 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +254 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +188 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor_delegate.js +195 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +194 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +20 -21
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +57 -53
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +18 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +214 -203
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +110 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/container.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +174 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/image.js +99 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +119 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +386 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +404 -191
- data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +65 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/cookie.js +176 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/core_query.js +20 -2006
- data/lib/frameworks/sproutcore/frameworks/foundation/system/exception_handler.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/system/gesture.js +363 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/image_queue.js +433 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/math.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +591 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/routes.js +123 -24
- data/lib/frameworks/sproutcore/frameworks/foundation/system/string.js +422 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +19 -16
- data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +91 -96
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/colors.js +87 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +157 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/range.js +71 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +254 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tasks/preload_bundle.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/tasks/task.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/selection_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/delegates/inline_text_field/inline_text_field.js +150 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +9 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_display.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +168 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +194 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +150 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +151 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +114 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +151 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +152 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/api.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +13 -22
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/staticLayout.js +8 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/validatable/ui.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +59 -59
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +114 -114
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +74 -74
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/render_delegates/render_delegate.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/cookie.js +182 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +19 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/math.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/routes.js +30 -20
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/string.js +34 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/task_queue.js +8 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +241 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/range.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/credit_card.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +11 -13
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/not_empty.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/number.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/password.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/validators/validator.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +10 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +76 -11
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +499 -46
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +32 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/nextValidKeyView.js +110 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +87 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +39 -12
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/email.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/not_empty.js +6 -10
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/number.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/positive_integer.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +16 -14
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +23 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +307 -105
- data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +654 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +81 -195
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +287 -116
- data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +1435 -0
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +390 -0
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +210 -0
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +7179 -0
- data/lib/frameworks/sproutcore/frameworks/jquery/tests/set_class.js +40 -0
- data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +10 -8
- data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +4 -6
- data/lib/frameworks/sproutcore/frameworks/media/views/media_slider.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/media/views/simple_controls.js +4 -5
- data/lib/frameworks/sproutcore/frameworks/media/views/video.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/mini/license.js +30 -28
- data/lib/frameworks/sproutcore/frameworks/qunit/README.md +24 -0
- data/lib/frameworks/sproutcore/frameworks/qunit/package.json +21 -0
- data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.css +215 -0
- data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +1442 -0
- data/lib/frameworks/sproutcore/frameworks/qunit/test/headless.html +24 -0
- data/lib/frameworks/sproutcore/frameworks/qunit/test/index.html +18 -0
- data/lib/frameworks/sproutcore/frameworks/qunit/test/logs.html +17 -0
- data/lib/frameworks/sproutcore/frameworks/qunit/test/logs.js +150 -0
- data/lib/frameworks/sproutcore/frameworks/qunit/test/same.js +1421 -0
- data/lib/frameworks/sproutcore/frameworks/qunit/test/test.js +314 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +232 -537
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array.js +14 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +163 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +74 -74
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +92 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/date.js +15 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +189 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/string.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/license.js +29 -28
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +577 -317
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/comparable.js +16 -13
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +25 -18
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +351 -308
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +51 -52
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1149 -1001
- data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +85 -45
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +61 -55
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +51 -107
- data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +195 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +361 -348
- data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +45 -40
- data/lib/frameworks/sproutcore/frameworks/runtime/system/function.js +76 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +275 -265
- data/lib/frameworks/sproutcore/frameworks/runtime/system/json.js +515 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +1337 -204
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +312 -259
- data/lib/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +89 -87
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +119 -106
- data/lib/frameworks/sproutcore/frameworks/runtime/system/set.js +107 -101
- data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +60 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +23 -47
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/beget.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +5 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +59 -126
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/inspect.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +21 -19
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +71 -33
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +21 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +39 -15
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/comparable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable/enumerable.js +623 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable/enumerable_observers.js +81 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +44 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +286 -98
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observersForKey.js +36 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +7 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/registerDependentKeys.js +78 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +7 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +87 -8
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/error.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/addEach.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/removeEach.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/json.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +180 -92
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/bindings.js +11 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/concatenated_properties.js +77 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +196 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/observer_set.js +56 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/create.js +12 -12
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +77 -45
- data/lib/frameworks/sproutcore/frameworks/statechart/core.js +4 -10
- data/lib/frameworks/sproutcore/frameworks/statechart/debug/monitor.js +155 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +1241 -97
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +1617 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/advanced/respond_to_event.js +401 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/advanced/without_concurrent_states.js +306 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +183 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/without_concurrent_states.js +122 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/pane.js +89 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +109 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/root_responder.js +74 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/initial_substate.js +67 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/is_current_state.js +60 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/namespacing.js +248 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/plugin/mixin.js +68 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/plugin/nesting.js +95 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/state_observes.js +235 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/async/core.js +94 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/async/with_concurrent_states.js +123 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/async/without_concurrent_states.js +191 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/initial_substate/core.js +48 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/initial_substate/without_concurrent_states.js +218 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/with_concurrent_states.js +88 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +191 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/core.js +200 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/advanced.js +239 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/basic.js +131 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/with_concurrent_states/intermediate.js +120 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/context.js +144 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +281 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/transient/without_concurrent_states.js +162 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/create/assigned_root_state.js +76 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/create/unassigned_root_state.js +162 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/destroy.js +73 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/invoke_state_method.js +241 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/owner.js +236 -0
- data/lib/frameworks/sproutcore/frameworks/table/mixins/table_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/table/system/table_column.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/table/views/table.js +6 -5
- data/lib/frameworks/sproutcore/frameworks/table/views/table_cell.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/table/views/table_head.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/table/views/table_header.js +6 -4
- data/lib/frameworks/sproutcore/frameworks/table/views/table_row.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/testing/core.js +4 -1
- data/lib/frameworks/sproutcore/frameworks/testing/extras.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/dump.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +32 -19
- data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +13 -3
- data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/utils.js +1 -1
- data/lib/frameworks/sproutcore/lib/index.rhtml +54 -9
- data/lib/frameworks/sproutcore/license.js +32 -30
- data/lib/frameworks/sproutcore/themes/ace/designs/dark.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/dark.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/light.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/light.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/18px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/normal_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/24px/selected_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/normal_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/30px/selected_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/ace/44px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/normal_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_capsule.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/24px/selected_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/normal_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_active_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/dark/30px/selected_button_pointer.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/popup/active_select.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/button/popup/normal_select.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_checked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_mixed_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/14px/checkbox_unchecked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_checked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_mixed_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/checkbox/ace/16px/checkbox_unchecked_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/collection/source-list/selection.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_closed_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/disclosure/ace/disclosure_open_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/checkmark.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/checkmark_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/down.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/menu_item.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/menu/up.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/panel.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/pointers.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_empty.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_notoolbar.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/picker/popover/popover_pointers_notoolbar.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_content.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_indeterminate_content.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/progress/ace/progress_view_track.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_mixed.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_mixed_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_selected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_selected_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/radio/radio_unselected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/thumb.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/horizontal/track_and_arrows_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/thumb.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/scroller/vertical/track_and_arrows_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_normal.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/18px/segmented_selected_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_normal.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/24px/segmented_selected_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_normal.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/30px/segmented_selected_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_normal.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/segmented/44px/segmented_selected_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/14px/knob_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/16px/knob_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/knob_active.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/22px/track.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/slider/ace/track.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/psds/toolbar/toolbar.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_handle.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_handle.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_off.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_off.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_on.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/designs/switch/switch_on.psd +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/body.css +13 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +33 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/normal_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/selected_active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/selected_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/active_button_capsule.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/active_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +102 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/normal_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/normal_button_capsule.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/normal_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button_capsule.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_active_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_button_capsule.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/selected_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/active_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +78 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/normal_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/normal_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_active_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/selected_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +39 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/normal_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/selected_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/button.css +41 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/active_button_capsule.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/active_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +93 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/normal_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/normal_button_capsule.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/normal_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button_capsule.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_active_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_button_capsule.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/selected_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/active_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +72 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/normal_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/normal_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_active_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_active_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_button.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/selected_button_pointer.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/button.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/button.js +5 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/active_select.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/normal_select.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/popup/select.css +21 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox.css +40 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_checked_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_mixed_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/14px/checkbox_unchecked_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox.css +40 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_checked_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_mixed_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/16px/checkbox_unchecked_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/checkbox/ace/checkbox.css +7 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +4 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/source-list/selection.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/source-list/source-list.js +3 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/source-list/source_list_view.css +36 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +24 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_closed.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_closed_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_open.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure_open_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/imagebutton/ace/imagebutton.css +11 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/loading.css +50 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +27 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/checkmark.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/checkmark_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/down.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.css +79 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/menu_item.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/menu/up.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/pane/pane.css +3 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.css +13 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/panel/panel.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.css +41 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.js +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/picker.js +32 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +111 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.js +12 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_empty.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_notoolbar.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_pointers.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover_pointers_notoolbar.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/workspace.js +28 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress.css +27 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress_view_content.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress_view_track.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio.css +57 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_mixed.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_mixed_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_selected.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_selected_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/radio/radio_unselected.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal.css +78 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/horizontal_touch.css +91 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/thumb.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/track_and_arrows.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/horizontal/track_and_arrows_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/thumb.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/track_and_arrows.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/track_and_arrows_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical.css +80 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/scroller/vertical/vertical_touch.css +92 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +91 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_normal.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_selected.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented_selected_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +91 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_normal.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_selected.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_selected_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +91 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_normal.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_selected.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_selected_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +95 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_normal.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_selected.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented_selected_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +83 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/knob_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/14px/slider.css +27 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/knob_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/16px/slider.css +27 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/knob_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/slider.css +27 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/22px/track.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +8 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/track.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/split/split.css +31 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/tab/tab.css +3 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/toolbar/toolbar.css +8 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/toolbar/toolbar.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/well/well.css +7 -0
- data/lib/frameworks/sproutcore/themes/ace/theme.js +30 -0
- data/lib/frameworks/sproutcore/themes/empty_theme/theme.js +16 -0
- data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/strings.js +1 -1
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/Panel.drawit/Data +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
- 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
- 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
- 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
- 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
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/10.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/100.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/102.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/110.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/120.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/127.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/18.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/19.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/2.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/24.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/26.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/27.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/28.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/29.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/30.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/31.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/33.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/37.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/41.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/16/99.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/10.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/100.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/102.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/110.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/120.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/127.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/18.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/19.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/2.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/24.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/26.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/27.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/28.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/29.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/30.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/31.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/33.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/37.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/41.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/24/99.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/10.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/100.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/102.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/110.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/120.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/127.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/18.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/19.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/2.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/24.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/26.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/27.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/28.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/29.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/30.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/31.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/33.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/37.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/41.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/32/99.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/10.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/18.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/19.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/icons/48/2.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-x.drawit/Data +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-y.drawit/Data +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-repeat-x-2.psd +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-repeat-x.psd +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-sprite.psd +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sc-theme-ysprite.psd +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/shared-icons.psd +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sproutcore-logo.psd +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/Source/sticky-note.psd +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/button.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/checkbox.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/collection.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/core.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/disclosure.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_222222.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_454545.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_888888.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/icons/mini_ffffff.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/panels/sprite-x.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/panels/sprite-y.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-scroller-repeat-x.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-scroller-repeat-y.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-scroller-sprite.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-theme-repeat-x.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-theme-ysprite.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/images/sc-toolbar-view.png +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/label.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/list_item.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/menu.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/menu_item_view.css +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/pane.css +18 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/panel.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/picker.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/progress.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/radio.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/scroller.css +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/segmented.css +270 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/slider.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/split_view.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/tab.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/table.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/text_field.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/toolbar.css +0 -0
- data/lib/frameworks/sproutcore/themes/{standard_theme → legacy_theme}/english.lproj/well.css +0 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/button.js +89 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/panel.js +28 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/progress.js +194 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/slider.js +67 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/render_delegates/well.js +27 -0
- data/lib/frameworks/sproutcore/themes/legacy_theme/theme.js +13 -0
- data/lib/gen/app/templates/apps/@target_name@/Buildfile +14 -0
- data/lib/gen/app/templates/apps/@target_name@/theme.js +27 -0
- data/lib/gen/html_app/Buildfile +36 -0
- data/lib/gen/html_app/README +1 -0
- data/lib/gen/html_app/USAGE +15 -0
- data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +14 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +4 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +1 -0
- data/lib/gen/html_project/Buildfile +45 -0
- data/lib/gen/html_project/INIT +3 -0
- data/lib/gen/html_project/README +1 -0
- data/lib/gen/html_project/USAGE +2 -0
- data/lib/gen/html_project/templates/@filename@/Buildfile +8 -0
- data/lib/gen/html_project/templates/@filename@/README +7 -0
- data/lib/gen/project/templates/@filename@/Buildfile +7 -2
- data/lib/gen/theme/templates/themes/@target_name@/Buildfile +3 -0
- data/lib/gen/theme/templates/themes/@target_name@/theme.js +23 -0
- data/lib/sproutcore.rb +11 -2
- data/lib/sproutcore/builders.rb +4 -2
- data/lib/sproutcore/builders/base.rb +10 -3
- data/lib/sproutcore/builders/chance_file.rb +78 -0
- data/lib/sproutcore/builders/combine.rb +6 -5
- data/lib/sproutcore/builders/handlebars.rb +30 -0
- data/lib/sproutcore/builders/html.rb +2 -0
- data/lib/sproutcore/builders/javascript.rb +15 -2
- data/lib/sproutcore/builders/minify.rb +14 -25
- data/lib/sproutcore/builders/module.rb +74 -0
- data/lib/sproutcore/builders/string_wrapper.rb +41 -0
- data/lib/sproutcore/buildfile.rb +17 -17
- data/lib/sproutcore/buildfile/task.rb +4 -12
- data/lib/sproutcore/buildfile/task_manager.rb +13 -4
- data/lib/sproutcore/helpers.rb +1 -1
- data/lib/sproutcore/helpers/entry_sorter.rb +5 -9
- data/lib/sproutcore/helpers/minifier.rb +110 -0
- data/lib/sproutcore/helpers/static_helper.rb +105 -39
- data/lib/sproutcore/models/generator.rb +16 -0
- data/lib/sproutcore/models/manifest.rb +3 -3
- data/lib/sproutcore/models/manifest_entry.rb +10 -3
- data/lib/sproutcore/models/target.rb +146 -34
- data/lib/sproutcore/rack/dev.rb +3 -3
- data/lib/sproutcore/rack/proxy.rb +1 -1
- data/lib/sproutcore/tools.rb +53 -5
- data/lib/sproutcore/tools/build.rb +10 -16
- data/lib/sproutcore/tools/docs.rb +1 -1
- data/lib/sproutcore/tools/gen.rb +1 -1
- data/lib/sproutcore/tools/init.rb +26 -10
- data/lib/sproutcore/tools/server.rb +9 -1
- data/lib/sproutcore/version.rb +1 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/chance_2x_spec.rb +100 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +104 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +86 -9
- data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +1 -1
- data/spec/buildtasks/manifest/prepare_build_tasks/handlebars_spec.rb +39 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +1 -1
- data/spec/buildtasks/manifest/prepare_build_tasks/module_info_spec.rb +96 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/module_spec.rb +83 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_indirect_spec.rb +191 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_spec.rb +185 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +46 -11
- data/spec/buildtasks/manifest/spec_helper.rb +4 -0
- data/spec/fixtures/builder_tests/Buildfile +11 -9
- data/spec/fixtures/builder_tests/apps/chance_test/Buildfile +14 -0
- data/spec/fixtures/builder_tests/apps/chance_test/core.js +27 -0
- data/spec/fixtures/builder_tests/apps/chance_test/main.js +30 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/demo.css +6 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/force@2x.png +0 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/last_file.css +7 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/loading.rhtml +9 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/main_page.js +24 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/z_first_file.css +6 -0
- data/spec/fixtures/builder_tests/apps/chance_test/theme.js +27 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/template.handlebars +5 -0
- data/spec/fixtures/builder_tests/apps/module_test/module.js +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/req_style_2.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/javascript.js +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/lib/alt_layout.rhtml +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/req_js_2.js +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/dynamic_req_js_1.js +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/english.lproj/dynamic_req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/inlined_module/README +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/strings.js +4 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/req_js_1.js +0 -0
- data/spec/fixtures/helper_tests/apps/minifier_test/core.js +8 -0
- data/spec/fixtures/real_world/Buildfile +11 -1
- data/spec/fixtures/real_world/apps/account/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/calendar/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/contacts/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/contacts/modules/printing/README +0 -0
- data/spec/fixtures/real_world/apps/mail/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/mail/modules/printing/README +0 -0
- data/spec/fixtures/real_world/apps/photos/modules/email/README +0 -0
- data/spec/fixtures/real_world/apps/photos/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/frameworks/no_2x/resources/test.css +1 -0
- data/spec/fixtures/real_world/frameworks/no_2x/resources/test.png +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/templates/demo.handlebars +4 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/resources/force@2x.png +0 -0
- data/spec/lib/builders/chance_file_spec.rb +44 -0
- data/spec/lib/builders/handlebars_spec.rb +29 -0
- data/spec/lib/builders/module_spec.rb +133 -0
- data/spec/lib/builders/strings_spec.rb +1 -0
- data/spec/lib/helpers/minifier.rb +31 -0
- data/spec/lib/models/project/find_targets_for_spec.rb +1 -1
- data/sproutcore.gemspec +11 -4
- data/vendor/chance/.gitignore +5 -0
- data/vendor/chance/Gemfile +4 -0
- data/vendor/chance/Rakefile +2 -0
- data/vendor/chance/bin/chance +46 -0
- data/vendor/chance/chance.gemspec +28 -0
- data/vendor/chance/lib/chance.rb +156 -0
- data/vendor/chance/lib/chance/instance.rb +330 -0
- data/vendor/chance/lib/chance/instance/data_url.rb +85 -0
- data/vendor/chance/lib/chance/instance/javascript.rb +19 -0
- data/vendor/chance/lib/chance/instance/slicing.rb +181 -0
- data/vendor/chance/lib/chance/instance/spriting.rb +311 -0
- data/vendor/chance/lib/chance/parser.rb +835 -0
- data/vendor/chance/lib/chance/perf.rb +17 -0
- data/vendor/chance/lib/chance/version.rb +3 -0
- data/vendor/chance/lib/tester/test.rb +108 -0
- data/vendor/chance/lib/tester/test_runner.rb +27 -0
- data/vendor/chance/test/case/abc.png +0 -0
- data/vendor/chance/test/case/more/abc.png +0 -0
- data/vendor/chance/test/case/more/another.css +4 -0
- data/vendor/chance/test/case/test1.css +22 -0
- data/vendor/chance/test/case/test2.css +6 -0
- data/vendor/chance/tests/parser/basic/input/test.css +4 -0
- data/vendor/chance/tests/parser/basic/output/test.parsed.css +5 -0
- data/vendor/sproutcore/SCCompiler.jar +0 -0
- data/vendor/sproutcore/lib/args4j-2.0.12.jar +0 -0
- data/vendor/sproutcore/lib/htmlcompressor-0.9.3.jar +0 -0
- data/{lib/sproutcore/vendor/yui-compressor → vendor/sproutcore/lib}/yuicompressor-2.4.2.jar +0 -0
- data/vendor/sproutcore/src/SCCompiler/build.xml +74 -0
- data/vendor/sproutcore/src/SCCompiler/lib/args4j-2.0.12.jar +0 -0
- data/vendor/sproutcore/src/SCCompiler/lib/htmlcompressor-0.9.3.jar +0 -0
- data/vendor/sproutcore/src/SCCompiler/lib/yuicompressor-2.4.2.jar +0 -0
- data/vendor/sproutcore/src/SCCompiler/lib/yuicompressor-2.4.4.jar +0 -0
- data/vendor/sproutcore/src/SCCompiler/manifest.mf +3 -0
- data/vendor/sproutcore/src/SCCompiler/nbproject/build-impl.xml +894 -0
- data/vendor/sproutcore/src/SCCompiler/nbproject/genfiles.properties +8 -0
- data/vendor/sproutcore/src/SCCompiler/nbproject/private/config.properties +0 -0
- data/vendor/sproutcore/src/SCCompiler/nbproject/private/private.properties +10 -0
- data/vendor/sproutcore/src/SCCompiler/nbproject/private/private.xml +4 -0
- data/vendor/sproutcore/src/SCCompiler/nbproject/project.properties +90 -0
- data/vendor/sproutcore/src/SCCompiler/nbproject/project.xml +15 -0
- data/vendor/sproutcore/src/SCCompiler/src/com/sproutcore/Main.java +348 -0
- metadata +1236 -560
- data/lib/frameworks/sproutcore/CHANGELOG +0 -93
- data/lib/frameworks/sproutcore/CHANGELOG-1.4.md +0 -170
- data/lib/frameworks/sproutcore/apps/docs/core.js +0 -27
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +0 -14378
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
- data/lib/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -0
- data/lib/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +0 -9
- data/lib/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +0 -22
- data/lib/frameworks/sproutcore/apps/docs/english.lproj/strings.js +0 -15
- data/lib/frameworks/sproutcore/apps/docs/main.js +0 -30
- data/lib/frameworks/sproutcore/apps/greenhouse/README +0 -25
- data/lib/frameworks/sproutcore/apps/greenhouse/TODO +0 -72
- data/lib/frameworks/sproutcore/apps/greenhouse/controllers/file.js +0 -75
- data/lib/frameworks/sproutcore/apps/greenhouse/controllers/library.js +0 -201
- data/lib/frameworks/sproutcore/apps/greenhouse/core.js +0 -67
- data/lib/frameworks/sproutcore/apps/greenhouse/core_file.js +0 -124
- data/lib/frameworks/sproutcore/apps/greenhouse/data_source.js +0 -250
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/app_page.js +0 -377
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/app-selector.css +0 -111
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/button.css +0 -310
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/dock.css +0 -85
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/general.css +0 -52
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/main-page.css +0 -120
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/menu.css +0 -52
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/modal.css +0 -40
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/picker.css +0 -188
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/tabbed.css +0 -68
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/dialogs.js +0 -302
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/inspectors.js +0 -365
- data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/strings.js +0 -87
- data/lib/frameworks/sproutcore/apps/greenhouse/main.js +0 -28
- data/lib/frameworks/sproutcore/apps/greenhouse/models/design.js +0 -22
- data/lib/frameworks/sproutcore/apps/greenhouse/models/dir.js +0 -92
- data/lib/frameworks/sproutcore/apps/greenhouse/models/file.js +0 -51
- data/lib/frameworks/sproutcore/apps/greenhouse/states/inspector.js +0 -144
- data/lib/frameworks/sproutcore/apps/greenhouse/states/library.js +0 -133
- data/lib/frameworks/sproutcore/apps/greenhouse/states/main.js +0 -224
- data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +0 -291
- data/lib/frameworks/sproutcore/apps/greenhouse/states/ready.js +0 -197
- data/lib/frameworks/sproutcore/apps/greenhouse/tests/views/list_item.js +0 -15
- data/lib/frameworks/sproutcore/apps/greenhouse/views/plist_item.js +0 -39
- data/lib/frameworks/sproutcore/apps/greenhouse/views/tear_off_picker.js +0 -56
- data/lib/frameworks/sproutcore/design/TestRunner Design.graffle/image11.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner Design.graffle/image13.png +0 -0
- data/lib/frameworks/sproutcore/design/TestRunner Design.graffle/image8.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/parentless.js +0 -134
- data/lib/frameworks/sproutcore/frameworks/datejs/core.js +0 -865
- data/lib/frameworks/sproutcore/frameworks/datejs/english.lproj/en-US.js +0 -186
- data/lib/frameworks/sproutcore/frameworks/datejs/extras.js +0 -332
- data/lib/frameworks/sproutcore/frameworks/datejs/license.js +0 -25
- data/lib/frameworks/sproutcore/frameworks/datejs/parser.js +0 -1116
- data/lib/frameworks/sproutcore/frameworks/datejs/spanish.lproj/es-CO.js +0 -186
- data/lib/frameworks/sproutcore/frameworks/datejs/sugarpak.js +0 -475
- data/lib/frameworks/sproutcore/frameworks/datejs/time.js +0 -269
- data/lib/frameworks/sproutcore/frameworks/datejs/validators/datejs.js +0 -34
- data/lib/frameworks/sproutcore/frameworks/designer/coders/design.js +0 -20
- data/lib/frameworks/sproutcore/frameworks/designer/coders/localization.js +0 -19
- data/lib/frameworks/sproutcore/frameworks/designer/coders/object.js +0 -347
- data/lib/frameworks/sproutcore/frameworks/designer/controllers/controllers.js +0 -16
- data/lib/frameworks/sproutcore/frameworks/designer/controllers/design.js +0 -37
- data/lib/frameworks/sproutcore/frameworks/designer/controllers/designs.js +0 -134
- data/lib/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +0 -170
- data/lib/frameworks/sproutcore/frameworks/designer/controllers/page_files.js +0 -22
- data/lib/frameworks/sproutcore/frameworks/designer/core.js +0 -26
- data/lib/frameworks/sproutcore/frameworks/designer/css/css_rule.js +0 -22
- data/lib/frameworks/sproutcore/frameworks/designer/css/css_style.js +0 -29
- data/lib/frameworks/sproutcore/frameworks/designer/css/css_style_sheet.js +0 -201
- data/lib/frameworks/sproutcore/frameworks/designer/designers/button.js +0 -21
- data/lib/frameworks/sproutcore/frameworks/designer/designers/label.js +0 -16
- data/lib/frameworks/sproutcore/frameworks/designer/designers/object_designer.js +0 -296
- data/lib/frameworks/sproutcore/frameworks/designer/designers/tab.js +0 -18
- data/lib/frameworks/sproutcore/frameworks/designer/designers/text_field.js +0 -15
- data/lib/frameworks/sproutcore/frameworks/designer/designers/view_designer.js +0 -1259
- data/lib/frameworks/sproutcore/frameworks/designer/english.lproj/design_page.js +0 -55
- data/lib/frameworks/sproutcore/frameworks/designer/ext/object.js +0 -26
- data/lib/frameworks/sproutcore/frameworks/designer/ext/page.js +0 -86
- data/lib/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -54
- data/lib/frameworks/sproutcore/frameworks/designer/mixins/button.js +0 -11
- data/lib/frameworks/sproutcore/frameworks/designer/mixins/snap_lines.js +0 -221
- data/lib/frameworks/sproutcore/frameworks/designer/views/designer_drop_target.js +0 -138
- data/lib/frameworks/sproutcore/frameworks/designer/views/drawing.js +0 -219
- data/lib/frameworks/sproutcore/frameworks/designer/views/selection_handles.js +0 -78
- data/lib/frameworks/sproutcore/frameworks/foundation/controllers/array.js +0 -518
- data/lib/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +0 -44
- data/lib/frameworks/sproutcore/frameworks/foundation/controllers/object.js +0 -342
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +0 -474
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +0 -15
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +0 -57
- data/lib/frameworks/sproutcore/frameworks/foundation/ext/object.js +0 -83
- data/lib/frameworks/sproutcore/frameworks/foundation/ext/run_loop.js +0 -162
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +0 -585
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/responder_context.js +0 -269
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +0 -250
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/string.js +0 -543
- data/lib/frameworks/sproutcore/frameworks/foundation/panes/main.js +0 -51
- data/lib/frameworks/sproutcore/frameworks/foundation/panes/pane.js +0 -848
- data/lib/frameworks/sproutcore/frameworks/foundation/protocols/inline_editor_delegate.js +0 -84
- data/lib/frameworks/sproutcore/frameworks/foundation/system/application.js +0 -37
- data/lib/frameworks/sproutcore/frameworks/foundation/system/browser.js +0 -59
- data/lib/frameworks/sproutcore/frameworks/foundation/system/builder.js +0 -210
- data/lib/frameworks/sproutcore/frameworks/foundation/system/bundle.js +0 -337
- data/lib/frameworks/sproutcore/frameworks/foundation/system/cursor.js +0 -131
- data/lib/frameworks/sproutcore/frameworks/foundation/system/datetime.js +0 -1140
- data/lib/frameworks/sproutcore/frameworks/foundation/system/device.js +0 -143
- data/lib/frameworks/sproutcore/frameworks/foundation/system/event.js +0 -894
- data/lib/frameworks/sproutcore/frameworks/foundation/system/image_cache.js +0 -433
- data/lib/frameworks/sproutcore/frameworks/foundation/system/json.js +0 -515
- data/lib/frameworks/sproutcore/frameworks/foundation/system/locale.js +0 -293
- data/lib/frameworks/sproutcore/frameworks/foundation/system/page.js +0 -108
- data/lib/frameworks/sproutcore/frameworks/foundation/system/platform.js +0 -298
- data/lib/frameworks/sproutcore/frameworks/foundation/system/ready.js +0 -197
- data/lib/frameworks/sproutcore/frameworks/foundation/system/render_context.js +0 -988
- data/lib/frameworks/sproutcore/frameworks/foundation/system/request.js +0 -599
- data/lib/frameworks/sproutcore/frameworks/foundation/system/responder.js +0 -124
- data/lib/frameworks/sproutcore/frameworks/foundation/system/response.js +0 -538
- data/lib/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +0 -2068
- data/lib/frameworks/sproutcore/frameworks/foundation/system/time.js +0 -473
- data/lib/frameworks/sproutcore/frameworks/foundation/system/timer.js +0 -551
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils.js +0 -710
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +0 -218
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +0 -206
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +0 -64
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/selection_support.js +0 -318
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/single_case.js +0 -136
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/empty_case.js +0 -82
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/multiple_case.js +0 -111
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_case.js +0 -193
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_enumerable_case.js +0 -265
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/content.js +0 -195
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/displayProperties.js +0 -89
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/keyEquivalents.js +0 -57
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/ui.js +0 -68
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/content.js +0 -168
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/responder_context.js +0 -75
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +0 -83
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/builder.js +0 -42
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +0 -1334
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_dimensions.js +0 -387
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +0 -405
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/within.js +0 -66
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +0 -382
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/json.js +0 -14
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/locale.js +0 -134
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/begin.js +0 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/element.js +0 -44
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/end.js +0 -124
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +0 -51
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +0 -50
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +0 -28
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +0 -179
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +0 -101
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/init.js +0 -55
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/join.js +0 -28
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/push_text.js +0 -74
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/tag.js +0 -46
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/update.js +0 -218
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +0 -223
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeKeyPane.js +0 -124
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeMainPane.js +0 -68
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeMenuPane.js +0 -48
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +0 -101
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/targetForAction.js +0 -251
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invalidate.js +0 -38
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invokeLater.js +0 -201
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/timer/isPaused.js +0 -71
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/timer/performAction.js +0 -69
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +0 -170
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/normalizeURL.js +0 -18
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/rect.js +0 -99
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/main_pane.js +0 -31
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +0 -124
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/firstResponder.js +0 -148
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/keyPane.js +0 -133
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/layout.js +0 -31
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/pane/sendEvent.js +0 -206
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +0 -133
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +0 -246
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertLayouts.js +0 -145
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +0 -122
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/createLayer.js +0 -97
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/destroyLayer.js +0 -83
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/didAppendToDocument.js +0 -48
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +0 -50
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/init.js +0 -50
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/insertBefore.js +0 -200
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisible.js +0 -51
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +0 -116
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/layer.js +0 -150
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutChildViews.js +0 -162
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutDidChange.js +0 -127
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +0 -531
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/nextValidKeyView.js +0 -110
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/parentViewDidChange.js +0 -67
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +0 -180
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/removeChild.js +0 -189
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/render.js +0 -83
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/replaceChild.js +0 -29
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +0 -146
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayerLocation.js +0 -194
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/view/viewDidResize.js +0 -202
- data/lib/frameworks/sproutcore/frameworks/foundation/views/view.js +0 -3313
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +0 -110
- data/lib/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +0 -40
- data/lib/frameworks/sproutcore/frameworks/runtime/protocols/sparse_array_delegate.js +0 -131
- data/lib/frameworks/sproutcore/frameworks/runtime/system/cookie.js +0 -160
- data/lib/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +0 -697
- data/lib/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +0 -379
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +0 -622
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/cookie.js +0 -163
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/add.js +0 -92
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +0 -17
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +0 -98
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/isEqual.js +0 -60
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +0 -111
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +0 -194
- data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart.js +0 -336
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/basic.js +0 -90
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/history.js +0 -71
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/nested.js +0 -59
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/transient.js +0 -148
- data/lib/frameworks/sproutcore/frameworks/testing/jquery.js +0 -3559
- data/lib/frameworks/sproutcore/frameworks/testing/qunit.js +0 -827
- data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/pane.css +0 -18
- data/lib/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +0 -275
- data/lib/sproutcore/builders/bundle.rb +0 -63
- data/lib/sproutcore/buildfile/cloneable.rb +0 -34
- data/lib/sproutcore/vendor/yui-compressor/SCyuicompressor-2.4.2.jar +0 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/bundle_spec.rb +0 -254
- data/spec/fixtures/builder_tests/apps/bundle_test/bundle.js +0 -1
- data/spec/lib/builders/bundle_spec.rb +0 -295
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
// ==========================================================================
|
|
2
2
|
// Project: SproutCore Costello - Property Observing Library
|
|
3
3
|
// Copyright: ©2006-2011 Strobe Inc. and contributors.
|
|
4
|
-
// Portions ©2008-
|
|
4
|
+
// Portions ©2008-2011 Apple Inc. All rights reserved.
|
|
5
5
|
// License: Licensed under MIT license (see license.js)
|
|
6
6
|
// ==========================================================================
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
Standard Error that should be raised when you try to modify a frozen object.
|
|
11
|
-
|
|
11
|
+
|
|
12
12
|
@property {Error}
|
|
13
13
|
*/
|
|
14
14
|
SC.FROZEN_ERROR = new Error("Cannot modify a frozen object");
|
|
15
15
|
|
|
16
|
-
/**
|
|
17
|
-
@
|
|
18
|
-
|
|
16
|
+
/**
|
|
17
|
+
@class
|
|
18
|
+
|
|
19
19
|
The SC.Freezable mixin implements some basic methods for marking an object
|
|
20
|
-
as frozen. Once an object is frozen it should be read only. No changes
|
|
20
|
+
as frozen. Once an object is frozen it should be read only. No changes
|
|
21
21
|
may be made the internal state of the object.
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
|
|
23
|
+
Enforcement
|
|
24
|
+
---
|
|
24
25
|
|
|
25
26
|
To fully support freezing in your subclass, you must include this mixin and
|
|
26
27
|
override any method that might alter any property on the object to instead
|
|
@@ -31,78 +32,76 @@ SC.FROZEN_ERROR = new Error("Cannot modify a frozen object");
|
|
|
31
32
|
object objects, that is not the case today. Even if an object is freezable,
|
|
32
33
|
it is still technically possible to modify the object, even though it could
|
|
33
34
|
break other parts of your application that do not expect a frozen object to
|
|
34
|
-
change. It is, therefore, very important that you always respect the
|
|
35
|
+
change. It is, therefore, very important that you always respect the
|
|
35
36
|
isFrozen property on all freezable objects.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
The example below shows a simple object that implement the SC.Freezable
|
|
40
|
-
protocol.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
h2. Copying
|
|
68
|
-
|
|
37
|
+
|
|
38
|
+
Example
|
|
39
|
+
|
|
40
|
+
The example below shows a simple object that implement the SC.Freezable
|
|
41
|
+
protocol.
|
|
42
|
+
|
|
43
|
+
Contact = SC.Object.extend(SC.Freezable, {
|
|
44
|
+
|
|
45
|
+
firstName: null,
|
|
46
|
+
|
|
47
|
+
lastName: null,
|
|
48
|
+
|
|
49
|
+
// swaps the names
|
|
50
|
+
swapNames: function() {
|
|
51
|
+
if (this.get('isFrozen')) throw SC.FROZEN_ERROR;
|
|
52
|
+
var tmp = this.get('firstName');
|
|
53
|
+
this.set('firstName', this.get('lastName'));
|
|
54
|
+
this.set('lastName', tmp);
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
c = Context.create({ firstName: "John", lastName: "Doe" });
|
|
61
|
+
c.swapNames(); => returns c
|
|
62
|
+
c.freeze();
|
|
63
|
+
c.swapNames(); => EXCEPTION
|
|
64
|
+
|
|
65
|
+
Copying
|
|
66
|
+
---
|
|
67
|
+
|
|
69
68
|
Usually the SC.Freezable protocol is implemented in cooperation with the
|
|
70
69
|
SC.Copyable protocol, which defines a frozenCopy() method that will return
|
|
71
70
|
a frozen object, if the object implements this method as well.
|
|
72
|
-
|
|
71
|
+
|
|
73
72
|
*/
|
|
74
|
-
SC.Freezable = {
|
|
75
|
-
|
|
73
|
+
SC.Freezable = /** @scope SC.Freezable.prototype */ {
|
|
74
|
+
|
|
76
75
|
/**
|
|
77
76
|
Walk like a duck.
|
|
78
|
-
|
|
77
|
+
|
|
79
78
|
@property {Boolean}
|
|
80
79
|
*/
|
|
81
80
|
isFreezable: YES,
|
|
82
|
-
|
|
81
|
+
|
|
83
82
|
/**
|
|
84
83
|
Set to YES when the object is frozen. Use this property to detect whether
|
|
85
84
|
your object is frozen or not.
|
|
86
|
-
|
|
85
|
+
|
|
87
86
|
@property {Boolean}
|
|
88
87
|
*/
|
|
89
88
|
isFrozen: NO,
|
|
90
|
-
|
|
89
|
+
|
|
91
90
|
/**
|
|
92
91
|
Freezes the object. Once this method has been called the object should
|
|
93
92
|
no longer allow any properties to be edited.
|
|
94
|
-
|
|
93
|
+
|
|
95
94
|
@returns {Object} reciever
|
|
96
95
|
*/
|
|
97
96
|
freeze: function() {
|
|
98
97
|
// NOTE: Once someone actually implements Object.freeze() in the browser,
|
|
99
98
|
// add a call to that here also.
|
|
100
|
-
|
|
99
|
+
|
|
101
100
|
if (this.set) this.set('isFrozen', YES);
|
|
102
101
|
else this.isFrozen = YES;
|
|
103
102
|
return this;
|
|
104
103
|
}
|
|
105
|
-
|
|
104
|
+
|
|
106
105
|
};
|
|
107
106
|
|
|
108
107
|
|
|
@@ -1,212 +1,206 @@
|
|
|
1
1
|
// ==========================================================================
|
|
2
2
|
// Project: SproutCore Costello - Property Observing Library
|
|
3
3
|
// Copyright: ©2006-2011 Strobe Inc. and contributors.
|
|
4
|
-
// Portions ©2008-
|
|
4
|
+
// Portions ©2008-2011 Apple Inc. All rights reserved.
|
|
5
5
|
// License: Licensed under MIT license (see license.js)
|
|
6
6
|
// ==========================================================================
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
sc_require('ext/function');
|
|
9
|
+
sc_require('private/observer_set');
|
|
10
|
+
sc_require('private/chain_observer');
|
|
9
11
|
|
|
10
12
|
/*globals logChange */
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
|
-
Set to YES to have all observing activity logged to the
|
|
15
|
+
Set to YES to have all observing activity logged to the SC.Logger. This
|
|
14
16
|
should be used for debugging only.
|
|
15
|
-
|
|
17
|
+
|
|
16
18
|
@property {Boolean}
|
|
17
19
|
*/
|
|
18
20
|
SC.LOG_OBSERVERS = NO ;
|
|
19
21
|
|
|
20
22
|
/**
|
|
21
|
-
@
|
|
22
|
-
|
|
23
|
-
Key-Value-Observing (KVO) simply allows one object to observe changes to a
|
|
24
|
-
property on another object. It is one of the fundamental ways that models,
|
|
25
|
-
controllers and views communicate with each other in a SproutCore
|
|
26
|
-
application. Any object that has this module applied to it can be used in
|
|
23
|
+
@class
|
|
24
|
+
|
|
25
|
+
Key-Value-Observing (KVO) simply allows one object to observe changes to a
|
|
26
|
+
property on another object. It is one of the fundamental ways that models,
|
|
27
|
+
controllers and views communicate with each other in a SproutCore
|
|
28
|
+
application. Any object that has this module applied to it can be used in
|
|
27
29
|
KVO-operations.
|
|
28
|
-
|
|
30
|
+
|
|
29
31
|
This module is applied automatically to all objects that inherit from
|
|
30
|
-
SC.Object, which includes most objects bundled with the SproutCore
|
|
32
|
+
SC.Object, which includes most objects bundled with the SproutCore
|
|
31
33
|
framework. You will not generally apply this module to classes yourself,
|
|
32
34
|
but you will use the features provided by this module frequently, so it is
|
|
33
35
|
important to understand how to use it.
|
|
34
|
-
|
|
35
|
-
h2. Enabling Key Value Observing
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
Enabling Key Value Observing
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
With KVO, you can write functions that will be called automatically whenever
|
|
38
41
|
a property on a particular object changes. You can use this feature to
|
|
39
|
-
reduce the amount of "glue code" that you often write to tie the various
|
|
42
|
+
reduce the amount of "glue code" that you often write to tie the various
|
|
40
43
|
parts of your application together.
|
|
41
|
-
|
|
42
|
-
To use KVO, just use the KVO-aware methods get() and set() to access
|
|
44
|
+
|
|
45
|
+
To use KVO, just use the KVO-aware methods get() and set() to access
|
|
43
46
|
properties instead of accessing properties directly. Instead of writing:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
contact.firstName = 'Charles' ;
|
|
48
|
-
}}}
|
|
47
|
+
|
|
48
|
+
var aName = contact.firstName ;
|
|
49
|
+
contact.firstName = 'Charles' ;
|
|
49
50
|
|
|
50
51
|
use:
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
get() and set() work just like the normal "dot operators" provided by
|
|
53
|
+
var aName = contact.get('firstName') ;
|
|
54
|
+
contact.set('firstName', 'Charles') ;
|
|
55
|
+
|
|
56
|
+
get() and set() work just like the normal "dot operators" provided by
|
|
58
57
|
JavaScript but they provide you with much more power, including not only
|
|
59
58
|
observing but computed properties as well.
|
|
60
59
|
|
|
61
|
-
|
|
60
|
+
Observing Property Changes
|
|
61
|
+
---
|
|
62
62
|
|
|
63
|
-
You typically observe property changes simply by adding the observes()
|
|
63
|
+
You typically observe property changes simply by adding the observes()
|
|
64
64
|
call to the end of your method declarations in classes that you write. For
|
|
65
65
|
example:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}}}
|
|
74
|
-
|
|
66
|
+
|
|
67
|
+
SC.Object.create({
|
|
68
|
+
valueObserver: function() {
|
|
69
|
+
// Executes whenever the "Value" property changes
|
|
70
|
+
}.observes('value')
|
|
71
|
+
}) ;
|
|
72
|
+
|
|
75
73
|
Although this is the most common way to add an observer, this capability is
|
|
76
74
|
actually built into the SC.Object class on top of two methods defined in
|
|
77
75
|
this mixin called addObserver() and removeObserver(). You can use these two
|
|
78
|
-
methods to add and remove observers yourself if you need to do so at run
|
|
79
|
-
time.
|
|
80
|
-
|
|
76
|
+
methods to add and remove observers yourself if you need to do so at run
|
|
77
|
+
time.
|
|
78
|
+
|
|
81
79
|
To add an observer for a property, just call:
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}}}
|
|
86
|
-
|
|
80
|
+
|
|
81
|
+
object.addObserver('propertyKey', targetObject, targetAction) ;
|
|
82
|
+
|
|
87
83
|
This will call the 'targetAction' method on the targetObject to be called
|
|
88
84
|
whenever the value of the propertyKey changes.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
85
|
+
|
|
86
|
+
Observer Parameters
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
An observer function typically does not need to accept any parameters,
|
|
90
|
+
however you can accept certain arguments when writing generic observers.
|
|
94
91
|
An observer function can have the following arguments:
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}}}
|
|
99
|
-
|
|
92
|
+
|
|
93
|
+
propertyObserver(target, key, value, revision) ;
|
|
94
|
+
|
|
100
95
|
- *target* - This is the object whose value changed. Usually this.
|
|
101
96
|
- *key* - The key of the value that changed
|
|
102
97
|
- *value* - this property is no longer used. It will always be null
|
|
103
98
|
- *revision* - this is the revision of the target object
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
99
|
+
|
|
100
|
+
Implementing Manual Change Notifications
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
Sometimes you may want to control the rate at which notifications for
|
|
104
|
+
a property are delivered, for example by checking first to make sure
|
|
109
105
|
that the value has changed.
|
|
110
|
-
|
|
111
|
-
To do this, you need to implement a computed property for the property
|
|
106
|
+
|
|
107
|
+
To do this, you need to implement a computed property for the property
|
|
112
108
|
you want to change and override automaticallyNotifiesObserversFor().
|
|
113
|
-
|
|
109
|
+
|
|
114
110
|
The example below will only notify if the "balance" property value actually
|
|
115
111
|
changes:
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
automaticallyNotifiesObserversFor: function(key) {
|
|
115
|
+
return (key === 'balance') ? NO : sc_super() ;
|
|
116
|
+
},
|
|
117
|
+
|
|
118
|
+
balance: function(key, value) {
|
|
119
|
+
var balance = this._balance ;
|
|
120
|
+
if ((value !== undefined) && (balance !== value)) {
|
|
121
|
+
this.propertyWillChange(key) ;
|
|
122
|
+
balance = this._balance = value ;
|
|
123
|
+
this.propertyDidChange(key) ;
|
|
124
|
+
}
|
|
125
|
+
return balance ;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
Implementation Details
|
|
130
|
+
---
|
|
131
|
+
|
|
137
132
|
Internally, SproutCore keeps track of observable information by adding a
|
|
138
133
|
number of properties to the object adopting the observable. All of these
|
|
139
134
|
properties begin with "_kvo_" to separate them from the rest of your object.
|
|
140
|
-
|
|
141
|
-
@static
|
|
135
|
+
|
|
142
136
|
@since SproutCore 1.0
|
|
143
137
|
*/
|
|
144
|
-
SC.Observable = {
|
|
138
|
+
SC.Observable = /** @scope SC.Observable.prototype */{
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
Walk like that ol' duck
|
|
145
142
|
|
|
146
|
-
/**
|
|
147
|
-
Walk like that ol' duck
|
|
148
|
-
|
|
149
143
|
@property {Boolean}
|
|
150
144
|
*/
|
|
151
145
|
isObservable: YES,
|
|
152
|
-
|
|
146
|
+
|
|
153
147
|
/**
|
|
154
148
|
Determines whether observers should be automatically notified of changes
|
|
155
149
|
to a key.
|
|
156
|
-
|
|
150
|
+
|
|
157
151
|
If you are manually implementing change notifications for a property, you
|
|
158
152
|
can override this method to return NO for properties you do not want the
|
|
159
153
|
observing system to automatically notify for.
|
|
160
|
-
|
|
154
|
+
|
|
161
155
|
The default implementation always returns YES.
|
|
162
|
-
|
|
163
|
-
@param
|
|
156
|
+
|
|
157
|
+
@param {String} key the key that is changing
|
|
164
158
|
@returns {Boolean} YES if automatic notification should occur.
|
|
165
159
|
*/
|
|
166
|
-
automaticallyNotifiesObserversFor: function(key) {
|
|
160
|
+
automaticallyNotifiesObserversFor: function(key) {
|
|
167
161
|
return YES;
|
|
168
162
|
},
|
|
169
163
|
|
|
170
164
|
// ..........................................
|
|
171
165
|
// PROPERTIES
|
|
172
|
-
//
|
|
166
|
+
//
|
|
173
167
|
// Use these methods to get/set properties. This will handle observing
|
|
174
|
-
// notifications as well as allowing you to define functions that can be
|
|
168
|
+
// notifications as well as allowing you to define functions that can be
|
|
175
169
|
// used as properties.
|
|
176
170
|
|
|
177
|
-
/**
|
|
171
|
+
/**
|
|
178
172
|
Retrieves the value of key from the object.
|
|
179
|
-
|
|
173
|
+
|
|
180
174
|
This method is generally very similar to using object[key] or object.key,
|
|
181
175
|
however it supports both computed properties and the unknownProperty
|
|
182
176
|
handler.
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
177
|
+
|
|
178
|
+
Computed Properties
|
|
179
|
+
---
|
|
180
|
+
|
|
186
181
|
Computed properties are methods defined with the property() modifier
|
|
187
182
|
declared at the end, such as:
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}}}
|
|
194
|
-
|
|
183
|
+
|
|
184
|
+
fullName: function() {
|
|
185
|
+
return this.getEach('firstName', 'lastName').compact().join(' ');
|
|
186
|
+
}.property('firstName', 'lastName')
|
|
187
|
+
|
|
195
188
|
When you call get() on a computed property, the property function will be
|
|
196
189
|
called and the return value will be returned instead of the function
|
|
197
190
|
itself.
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
191
|
+
|
|
192
|
+
Unknown Properties
|
|
193
|
+
---
|
|
194
|
+
|
|
201
195
|
Likewise, if you try to call get() on a property whose values is
|
|
202
196
|
undefined, the unknownProperty() method will be called on the object.
|
|
203
197
|
If this method reutrns any value other than undefined, it will be returned
|
|
204
|
-
instead. This allows you to implement "virtual" properties that are
|
|
198
|
+
instead. This allows you to implement "virtual" properties that are
|
|
205
199
|
not defined upfront.
|
|
206
|
-
|
|
207
|
-
@param
|
|
200
|
+
|
|
201
|
+
@param {String} key the property to retrieve
|
|
208
202
|
@returns {Object} the property value or undefined.
|
|
209
|
-
|
|
203
|
+
|
|
210
204
|
*/
|
|
211
205
|
get: function(key) {
|
|
212
206
|
var ret = this[key], cache ;
|
|
@@ -221,59 +215,72 @@ SC.Observable = {
|
|
|
221
215
|
} else return ret ;
|
|
222
216
|
},
|
|
223
217
|
|
|
224
|
-
/**
|
|
218
|
+
/**
|
|
225
219
|
Sets the key equal to value.
|
|
226
|
-
|
|
220
|
+
|
|
227
221
|
This method is generally very similar to calling object[key] = value or
|
|
228
|
-
object.key = value, except that it provides support for computed
|
|
222
|
+
object.key = value, except that it provides support for computed
|
|
229
223
|
properties, the unknownProperty() method and property observers.
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
224
|
+
|
|
225
|
+
Computed Properties
|
|
226
|
+
---
|
|
227
|
+
|
|
233
228
|
If you try to set a value on a key that has a computed property handler
|
|
234
229
|
defined (see the get() method for an example), then set() will call
|
|
235
|
-
that method, passing both the value and key instead of simply changing
|
|
236
|
-
the value itself. This is useful for those times when you need to
|
|
230
|
+
that method, passing both the value and key instead of simply changing
|
|
231
|
+
the value itself. This is useful for those times when you need to
|
|
237
232
|
implement a property that is composed of one or more member
|
|
238
233
|
properties.
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
234
|
+
|
|
235
|
+
Unknown Properties
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
If you try to set a value on a key that is undefined in the target
|
|
243
239
|
object, then the unknownProperty() handler will be called instead. This
|
|
244
240
|
gives you an opportunity to implement complex "virtual" properties that
|
|
245
|
-
are not predefined on the obejct. If unknownProperty() returns
|
|
241
|
+
are not predefined on the obejct. If unknownProperty() returns
|
|
246
242
|
undefined, then set() will simply set the value on the object.
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
243
|
+
|
|
244
|
+
Property Observers
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
In addition to changing the property, set() will also register a
|
|
248
|
+
property change with the object. Unless you have placed this call
|
|
252
249
|
inside of a beginPropertyChanges() and endPropertyChanges(), any "local"
|
|
253
250
|
observers (i.e. observer methods declared on the same object), will be
|
|
254
|
-
called immediately. Any "remote" observers (i.e. observer methods
|
|
251
|
+
called immediately. Any "remote" observers (i.e. observer methods
|
|
255
252
|
declared on another object) will be placed in a queue and called at a
|
|
256
253
|
later time in a coelesced manner.
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
254
|
+
|
|
255
|
+
Chaining
|
|
256
|
+
---
|
|
257
|
+
|
|
260
258
|
In addition to property changes, set() returns the value of the object
|
|
261
259
|
itself so you can do chaining like this:
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
@param key {String} the property to set
|
|
268
|
-
@param value {Object} the value to set or null.
|
|
260
|
+
|
|
261
|
+
record.set('firstName', 'Charles').set('lastName', 'Jolley');
|
|
262
|
+
|
|
263
|
+
@param {String|Hash} key the property to set
|
|
264
|
+
@param {Object} value the value to set or null.
|
|
269
265
|
@returns {SC.Observable}
|
|
270
266
|
*/
|
|
271
267
|
set: function(key, value) {
|
|
272
|
-
var func = this[key],
|
|
268
|
+
var func = this[key],
|
|
273
269
|
notify = this.automaticallyNotifiesObserversFor(key),
|
|
274
|
-
ret = value,
|
|
270
|
+
ret = value,
|
|
275
271
|
cachedep, cache, idx, dfunc ;
|
|
276
272
|
|
|
273
|
+
if(value === undefined && SC.typeOf(key) === SC.T_HASH) {
|
|
274
|
+
var hash = key;
|
|
275
|
+
|
|
276
|
+
for(key in hash) {
|
|
277
|
+
if (!hash.hasOwnProperty(key)) continue;
|
|
278
|
+
this.set(key, hash[key]);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
return this;
|
|
282
|
+
}
|
|
283
|
+
|
|
277
284
|
// if there are any dependent keys and they use caching, then clear the
|
|
278
285
|
// cache. (If we're notifying, then propertyDidChange will do this for
|
|
279
286
|
// us.)
|
|
@@ -285,7 +292,7 @@ SC.Observable = {
|
|
|
285
292
|
if (!cachedep || (cachedep = cachedep[key])===undefined) {
|
|
286
293
|
cachedep = this._kvo_computeCachedDependentsFor(key);
|
|
287
294
|
}
|
|
288
|
-
|
|
295
|
+
|
|
289
296
|
if (cachedep) {
|
|
290
297
|
idx = cachedep.length;
|
|
291
298
|
while(--idx>=0) {
|
|
@@ -326,15 +333,15 @@ SC.Observable = {
|
|
|
326
333
|
return this ;
|
|
327
334
|
},
|
|
328
335
|
|
|
329
|
-
/**
|
|
336
|
+
/**
|
|
330
337
|
Called whenever you try to get or set an undefined property.
|
|
331
|
-
|
|
338
|
+
|
|
332
339
|
This is a generic property handler. If you define it, it will be called
|
|
333
340
|
when the named property is not yet set in the object. The default does
|
|
334
341
|
nothing.
|
|
335
|
-
|
|
336
|
-
@param
|
|
337
|
-
@param
|
|
342
|
+
|
|
343
|
+
@param {String} key the key that was requested
|
|
344
|
+
@param {Object} value The value if called as a setter, undefined if called as a getter.
|
|
338
345
|
@returns {Object} The new value for key.
|
|
339
346
|
*/
|
|
340
347
|
unknownProperty: function(key,value) {
|
|
@@ -342,33 +349,33 @@ SC.Observable = {
|
|
|
342
349
|
return value ;
|
|
343
350
|
},
|
|
344
351
|
|
|
345
|
-
/**
|
|
352
|
+
/**
|
|
346
353
|
Begins a grouping of property changes.
|
|
347
|
-
|
|
354
|
+
|
|
348
355
|
You can use this method to group property changes so that notifications
|
|
349
|
-
will not be sent until the changes are finished. If you plan to make a
|
|
350
|
-
large number of changes to an object at one time, you should call this
|
|
356
|
+
will not be sent until the changes are finished. If you plan to make a
|
|
357
|
+
large number of changes to an object at one time, you should call this
|
|
351
358
|
method at the beginning of the changes to suspend change notifications.
|
|
352
|
-
When you are done making changes,
|
|
359
|
+
When you are done making changes, call endPropertyChanges() to allow
|
|
353
360
|
notification to resume.
|
|
354
|
-
|
|
361
|
+
|
|
355
362
|
@returns {SC.Observable}
|
|
356
363
|
*/
|
|
357
364
|
beginPropertyChanges: function() {
|
|
358
|
-
this._kvo_changeLevel = (this._kvo_changeLevel || 0) + 1;
|
|
365
|
+
this._kvo_changeLevel = (this._kvo_changeLevel || 0) + 1;
|
|
359
366
|
return this;
|
|
360
367
|
},
|
|
361
368
|
|
|
362
|
-
/**
|
|
369
|
+
/**
|
|
363
370
|
Ends a grouping of property changes.
|
|
364
|
-
|
|
371
|
+
|
|
365
372
|
You can use this method to group property changes so that notifications
|
|
366
|
-
will not be sent until the changes are finished. If you plan to make a
|
|
367
|
-
large number of changes to an object at one time, you should call
|
|
368
|
-
beginPropertyChanges() at the beginning of the changes to suspend change
|
|
369
|
-
notifications. When you are done making changes, call this method to allow
|
|
373
|
+
will not be sent until the changes are finished. If you plan to make a
|
|
374
|
+
large number of changes to an object at one time, you should call
|
|
375
|
+
beginPropertyChanges() at the beginning of the changes to suspend change
|
|
376
|
+
notifications. When you are done making changes, call this method to allow
|
|
370
377
|
notification to resume.
|
|
371
|
-
|
|
378
|
+
|
|
372
379
|
@returns {SC.Observable}
|
|
373
380
|
*/
|
|
374
381
|
endPropertyChanges: function() {
|
|
@@ -376,55 +383,74 @@ SC.Observable = {
|
|
|
376
383
|
var level = this._kvo_changeLevel, changes = this._kvo_changes;
|
|
377
384
|
if ((level<=0) && changes && (changes.length>0) && !SC.Observers.isObservingSuspended) {
|
|
378
385
|
this._notifyPropertyObservers() ;
|
|
379
|
-
}
|
|
386
|
+
}
|
|
380
387
|
return this ;
|
|
381
388
|
},
|
|
382
389
|
|
|
383
|
-
/**
|
|
390
|
+
/**
|
|
384
391
|
Notify the observer system that a property is about to change.
|
|
385
392
|
|
|
386
|
-
Sometimes you need to change a value directly or indirectly without
|
|
387
|
-
actually calling get() or set() on it. In this case, you can use this
|
|
388
|
-
method and propertyDidChange() instead. Calling these two methods
|
|
389
|
-
together will notify all observers that the property has potentially
|
|
393
|
+
Sometimes you need to change a value directly or indirectly without
|
|
394
|
+
actually calling get() or set() on it. In this case, you can use this
|
|
395
|
+
method and propertyDidChange() instead. Calling these two methods
|
|
396
|
+
together will notify all observers that the property has potentially
|
|
390
397
|
changed value.
|
|
391
|
-
|
|
392
|
-
Note that you must always call propertyWillChange and propertyDidChange as
|
|
393
|
-
a pair. If you do not, it may get the property change groups out of order
|
|
398
|
+
|
|
399
|
+
Note that you must always call propertyWillChange and propertyDidChange as
|
|
400
|
+
a pair. If you do not, it may get the property change groups out of order
|
|
394
401
|
and cause notifications to be delivered more often than you would like.
|
|
395
|
-
|
|
396
|
-
@param
|
|
402
|
+
|
|
403
|
+
@param {String} key The property key that is about to change.
|
|
397
404
|
@returns {SC.Observable}
|
|
398
405
|
*/
|
|
399
406
|
propertyWillChange: function(key) {
|
|
400
407
|
return this ;
|
|
401
408
|
},
|
|
402
409
|
|
|
403
|
-
/**
|
|
410
|
+
/**
|
|
404
411
|
Notify the observer system that a property has just changed.
|
|
405
412
|
|
|
406
|
-
Sometimes you need to change a value directly or indirectly without
|
|
407
|
-
actually calling get() or set() on it. In this case, you can use this
|
|
408
|
-
method and propertyWillChange() instead. Calling these two methods
|
|
409
|
-
together will notify all observers that the property has potentially
|
|
413
|
+
Sometimes you need to change a value directly or indirectly without
|
|
414
|
+
actually calling get() or set() on it. In this case, you can use this
|
|
415
|
+
method and propertyWillChange() instead. Calling these two methods
|
|
416
|
+
together will notify all observers that the property has potentially
|
|
410
417
|
changed value.
|
|
411
|
-
|
|
412
|
-
Note that you must always call propertyWillChange and propertyDidChange as
|
|
413
|
-
a pair. If you do not, it may get the property change groups out of order
|
|
418
|
+
|
|
419
|
+
Note that you must always call propertyWillChange and propertyDidChange as
|
|
420
|
+
a pair. If you do not, it may get the property change groups out of order
|
|
414
421
|
and cause notifications to be delivered more often than you would like.
|
|
415
|
-
|
|
416
|
-
@param
|
|
417
|
-
@param
|
|
422
|
+
|
|
423
|
+
@param {String} key The property key that has just changed.
|
|
424
|
+
@param {Object} value The new value of the key. May be null.
|
|
425
|
+
@param {Boolean} _keepCache Private property
|
|
418
426
|
@returns {SC.Observable}
|
|
419
427
|
*/
|
|
420
428
|
propertyDidChange: function(key,value, _keepCache) {
|
|
421
|
-
|
|
422
|
-
this._kvo_revision = (this._kvo_revision || 0) + 1;
|
|
429
|
+
this._kvo_revision = (this._kvo_revision || 0) + 1;
|
|
423
430
|
var level = this._kvo_changeLevel || 0,
|
|
424
|
-
cachedep, idx, dfunc,
|
|
425
|
-
log = SC.LOG_OBSERVERS &&
|
|
431
|
+
cachedep, idx, dfunc, func,
|
|
432
|
+
log = SC.LOG_OBSERVERS && (this.LOG_OBSERVING !== NO);
|
|
433
|
+
|
|
434
|
+
// If any dependent keys contain this property in their path,
|
|
435
|
+
// invalidate the cache of the computed property and re-setup chain with
|
|
436
|
+
// new value.
|
|
437
|
+
var chains = this._kvo_property_chains;
|
|
438
|
+
if (chains) {
|
|
439
|
+
var keyChains = chains[key];
|
|
440
|
+
|
|
441
|
+
if (keyChains) {
|
|
442
|
+
this.beginPropertyChanges();
|
|
443
|
+
keyChains = SC.clone(keyChains);
|
|
444
|
+
keyChains.forEach(function(chain) {
|
|
445
|
+
// Invalidate the property that depends on the changed key.
|
|
446
|
+
chain.notifyPropertyDidChange();
|
|
447
|
+
});
|
|
448
|
+
this.endPropertyChanges();
|
|
449
|
+
}
|
|
450
|
+
}
|
|
426
451
|
|
|
427
|
-
|
|
452
|
+
var cache = this._kvo_cache;
|
|
453
|
+
if (cache) {
|
|
428
454
|
|
|
429
455
|
// clear any cached value
|
|
430
456
|
if (!_keepCache) {
|
|
@@ -458,894 +484,1016 @@ SC.Observable = {
|
|
|
458
484
|
var changes = this._kvo_changes ;
|
|
459
485
|
if (!changes) changes = this._kvo_changes = SC.CoreSet.create() ;
|
|
460
486
|
changes.add(key) ;
|
|
461
|
-
|
|
487
|
+
|
|
462
488
|
if (suspended) {
|
|
463
|
-
if (log)
|
|
489
|
+
if (log) SC.Logger.log("%@%@: will not notify observers because observing is suspended".fmt(SC.KVO_SPACES,this));
|
|
464
490
|
SC.Observers.objectHasPendingChanges(this) ;
|
|
465
491
|
}
|
|
466
|
-
|
|
492
|
+
|
|
467
493
|
// otherwise notify property observers immediately
|
|
468
494
|
} else this._notifyPropertyObservers(key) ;
|
|
469
|
-
|
|
495
|
+
|
|
470
496
|
return this ;
|
|
471
497
|
},
|
|
472
498
|
|
|
473
499
|
// ..........................................
|
|
474
500
|
// DEPENDENT KEYS
|
|
475
|
-
//
|
|
501
|
+
//
|
|
476
502
|
|
|
477
503
|
/**
|
|
478
|
-
Use this to indicate that one key changes if other keys it depends on
|
|
504
|
+
Use this to indicate that one key changes if other keys it depends on
|
|
479
505
|
change. Pass the key that is dependent and additional keys it depends
|
|
480
|
-
upon. You can either pass the additional keys inline as arguments or
|
|
506
|
+
upon. You can either pass the additional keys inline as arguments or
|
|
481
507
|
in a single array.
|
|
482
|
-
|
|
508
|
+
|
|
483
509
|
You generally do not call this method, but instead pass dependent keys to
|
|
484
510
|
your property() method when you declare a computed property.
|
|
485
|
-
|
|
511
|
+
|
|
486
512
|
You can call this method during your init to register the keys that should
|
|
487
|
-
trigger a change notification for your computed properties.
|
|
488
|
-
|
|
513
|
+
trigger a change notification for your computed properties.
|
|
514
|
+
|
|
489
515
|
@param {String} key the dependent key
|
|
490
|
-
@param {Array|String} dependentKeys one or more dependent keys
|
|
516
|
+
@param {Array|String} dependentKeys one or more dependent keys
|
|
491
517
|
@returns {Object} this
|
|
492
|
-
*/
|
|
518
|
+
*/
|
|
493
519
|
registerDependentKey: function(key, dependentKeys) {
|
|
494
|
-
var dependents
|
|
495
|
-
|
|
520
|
+
var dependents = this._kvo_dependents,
|
|
521
|
+
chainDependents = this._kvo_chain_dependents,
|
|
522
|
+
func = this[key],
|
|
496
523
|
keys, idx, lim, dep, queue;
|
|
497
524
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
525
|
+
// normalize input.
|
|
526
|
+
if (typeof dependentKeys === "object" && (dependentKeys instanceof Array)) {
|
|
527
|
+
keys = dependentKeys;
|
|
528
|
+
lim = 0;
|
|
529
|
+
} else {
|
|
530
|
+
keys = arguments;
|
|
531
|
+
lim = 1;
|
|
532
|
+
}
|
|
533
|
+
idx = keys.length;
|
|
534
|
+
|
|
535
|
+
// define dependents if not defined already.
|
|
536
|
+
if (!dependents) this._kvo_dependents = dependents = {} ;
|
|
537
|
+
|
|
538
|
+
// for each key, build array of dependents, add this key...
|
|
539
|
+
// note that we ignore the first argument since it is the key...
|
|
540
|
+
while(--idx >= lim) {
|
|
541
|
+
dep = keys[idx] ;
|
|
542
|
+
|
|
543
|
+
if (dep.indexOf('.') >= 0) {
|
|
544
|
+
SC._PropertyChain.createChain(dep, this, key).activate();
|
|
545
|
+
} else {
|
|
546
|
+
// add dependent key to dependents array of key it depends on
|
|
547
|
+
queue = dependents[dep] ;
|
|
548
|
+
if (!queue) { queue = dependents[dep] = [] ; }
|
|
549
|
+
queue.push(key) ;
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
},
|
|
507
553
|
|
|
508
|
-
|
|
509
|
-
|
|
554
|
+
/** @private
|
|
555
|
+
Register a property chain so that dependent keys can be invalidated
|
|
556
|
+
when a property on this object changes.
|
|
510
557
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
558
|
+
@param {String} property the property on this object that invalidates the chain
|
|
559
|
+
@param {SC._PropertyChain} chain the chain to notify
|
|
560
|
+
*/
|
|
561
|
+
registerDependentKeyWithChain: function(property, chain) {
|
|
562
|
+
var chains = this._chainsFor(property), next;
|
|
563
|
+
chains.add(chain);
|
|
564
|
+
},
|
|
515
565
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
if (!queue) queue = dependents[dep] = [] ;
|
|
519
|
-
queue.push(key) ;
|
|
520
|
-
}
|
|
521
|
-
},
|
|
566
|
+
/** @private
|
|
567
|
+
Removes a property chain from the object.
|
|
522
568
|
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
569
|
+
@param {String} property the property on this object that invalidates the chain
|
|
570
|
+
@param {SC._PropertyChain} chain the chain to notify
|
|
571
|
+
*/
|
|
572
|
+
removeDependentKeyWithChain: function(property, chain) {
|
|
573
|
+
var chains = this._chainsFor(property), next;
|
|
574
|
+
chains.remove(chain);
|
|
575
|
+
|
|
576
|
+
if (chains.get('length') === 0) {
|
|
577
|
+
delete this._kvo_property_chains[property];
|
|
578
|
+
}
|
|
579
|
+
},
|
|
580
|
+
|
|
581
|
+
/** @private
|
|
582
|
+
Returns an instance of SC.CoreSet in which to save SC._PropertyChains.
|
|
583
|
+
|
|
584
|
+
@param {String} property the property associated with the SC._PropertyChain
|
|
585
|
+
@returns {SC.CoreSet}
|
|
586
|
+
*/
|
|
587
|
+
_chainsFor: function(property) {
|
|
588
|
+
this._kvo_property_chains = this._kvo_property_chains || {};
|
|
589
|
+
var chains = this._kvo_property_chains[property] || SC.CoreSet.create();
|
|
590
|
+
this._kvo_property_chains[property] = chains;
|
|
591
|
+
|
|
592
|
+
return chains;
|
|
593
|
+
},
|
|
594
|
+
|
|
595
|
+
/** @private
|
|
596
|
+
|
|
597
|
+
Helper method used by computeCachedDependents. Just loops over the
|
|
598
|
+
array of dependent keys. If the passed function is cacheable, it will
|
|
599
|
+
be added to the queue. Also, recursively call on each keys dependent
|
|
600
|
+
keys.
|
|
601
|
+
|
|
602
|
+
@param {Array} queue the queue to add functions to
|
|
603
|
+
@param {Array} keys the array of dependent keys for this key
|
|
604
|
+
@param {Hash} dependents the _kvo_dependents cache
|
|
605
|
+
@param {SC.Set} seen already seen keys
|
|
606
|
+
@returns {void}
|
|
607
|
+
*/
|
|
608
|
+
_kvo_addCachedDependents: function(queue, keys, dependents, seen) {
|
|
609
|
+
var idx = keys.length,
|
|
610
|
+
func, key, deps ;
|
|
611
|
+
|
|
612
|
+
while(--idx >= 0) {
|
|
613
|
+
key = keys[idx];
|
|
614
|
+
seen.add(key);
|
|
615
|
+
|
|
616
|
+
// if the value for this key is a computed property, then add it to the
|
|
617
|
+
// set if it is cacheable, and process any of its dependent keys also.
|
|
618
|
+
func = this[key];
|
|
619
|
+
if (func && (func instanceof Function) && func.isProperty) {
|
|
620
|
+
if (func.isCacheable) queue.push(func); // handle this func
|
|
621
|
+
if ((deps = dependents[key]) && deps.length>0) { // and any dependents
|
|
622
|
+
this._kvo_addCachedDependents(queue, deps, dependents, seen);
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
},
|
|
628
|
+
|
|
629
|
+
/** @private
|
|
630
|
+
|
|
631
|
+
Called by set() whenever it needs to determine which cached dependent
|
|
632
|
+
keys to clear. Recursively searches dependent keys to determine all
|
|
633
|
+
cached property direcly or indirectly affected.
|
|
634
|
+
|
|
635
|
+
The return value is also saved for future reference
|
|
636
|
+
|
|
637
|
+
@param {String} key the key to compute
|
|
638
|
+
@returns {Array}
|
|
639
|
+
*/
|
|
640
|
+
_kvo_computeCachedDependentsFor: function(key) {
|
|
641
|
+
var cached = this._kvo_cachedep,
|
|
642
|
+
dependents = this._kvo_dependents,
|
|
643
|
+
keys = dependents ? dependents[key] : null,
|
|
644
|
+
queue, seen ;
|
|
645
|
+
if (!cached) cached = this._kvo_cachedep = {};
|
|
646
|
+
|
|
647
|
+
// if there are no dependent keys, then just set and return null to avoid
|
|
648
|
+
// this mess again.
|
|
649
|
+
if (!keys || keys.length===0) return cached[key] = null;
|
|
650
|
+
|
|
651
|
+
// there are dependent keys, so we need to do the work to find out if
|
|
652
|
+
// any of them or their dependent keys are cached.
|
|
653
|
+
queue = cached[key] = [];
|
|
654
|
+
seen = SC._TMP_SEEN_SET = (SC._TMP_SEEN_SET || SC.CoreSet.create());
|
|
542
655
|
seen.add(key);
|
|
543
|
-
|
|
544
|
-
//
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
656
|
+
this._kvo_addCachedDependents(queue, keys, dependents, seen);
|
|
657
|
+
seen.clear(); // reset
|
|
658
|
+
|
|
659
|
+
if (queue.length === 0) queue = cached[key] = null ; // turns out nothing
|
|
660
|
+
return queue ;
|
|
661
|
+
},
|
|
662
|
+
|
|
663
|
+
// ..........................................
|
|
664
|
+
// OBSERVERS
|
|
665
|
+
//
|
|
666
|
+
|
|
667
|
+
_kvo_for: function(kvoKey, type) {
|
|
668
|
+
var ret = this[kvoKey] ;
|
|
669
|
+
|
|
670
|
+
if (!this._kvo_cloned) this._kvo_cloned = {} ;
|
|
671
|
+
|
|
672
|
+
// if the item does not exist, create it. Unless type is passed,
|
|
673
|
+
// assume array.
|
|
674
|
+
if (!ret) {
|
|
675
|
+
ret = this[kvoKey] = (type === undefined) ? [] : type.create();
|
|
676
|
+
this._kvo_cloned[kvoKey] = YES ;
|
|
677
|
+
|
|
678
|
+
// if item does exist but has not been cloned, then clone it. Note
|
|
679
|
+
// that all types must implement copy().0
|
|
680
|
+
} else if (!this._kvo_cloned[kvoKey]) {
|
|
681
|
+
ret = this[kvoKey] = ret.copy();
|
|
682
|
+
this._kvo_cloned[kvoKey] = YES;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
return ret ;
|
|
686
|
+
},
|
|
687
|
+
|
|
688
|
+
/**
|
|
689
|
+
Adds an observer on a property.
|
|
690
|
+
|
|
691
|
+
This is the core method used to register an observer for a property.
|
|
692
|
+
|
|
693
|
+
Once you call this method, anytime the key's value is set, your observer
|
|
694
|
+
will be notified. Note that the observers are triggered anytime the
|
|
695
|
+
value is set, regardless of whether it has actually changed. Your
|
|
696
|
+
observer should be prepared to handle that.
|
|
697
|
+
|
|
698
|
+
You can also pass an optional context parameter to this method. The
|
|
699
|
+
context will be passed to your observer method whenever it is triggered.
|
|
700
|
+
Note that if you add the same target/method pair on a key multiple times
|
|
701
|
+
with different context parameters, your observer will only be called once
|
|
702
|
+
with the last context you passed.
|
|
703
|
+
|
|
704
|
+
Observer Methods
|
|
705
|
+
---
|
|
706
|
+
|
|
707
|
+
Observer methods you pass should generally have the following signature if
|
|
708
|
+
you do not pass a "context" parameter:
|
|
709
|
+
|
|
710
|
+
fooDidChange: function(sender, key, value, rev);
|
|
711
|
+
|
|
712
|
+
The sender is the object that changed. The key is the property that
|
|
713
|
+
changes. The value property is currently reserved and unused. The rev
|
|
714
|
+
is the last property revision of the object when it changed, which you can
|
|
715
|
+
use to detect if the key value has really changed or not.
|
|
716
|
+
|
|
717
|
+
If you pass a "context" parameter, the context will be passed before the
|
|
718
|
+
revision like so:
|
|
719
|
+
|
|
720
|
+
fooDidChange: function(sender, key, value, context, rev);
|
|
721
|
+
|
|
722
|
+
Usually you will not need the value, context or revision parameters at
|
|
723
|
+
the end. In this case, it is common to write observer methods that take
|
|
724
|
+
only a sender and key value as parameters or, if you aren't interested in
|
|
725
|
+
any of these values, to write an observer that has no parameters at all.
|
|
726
|
+
|
|
727
|
+
@param {String} key the key to observer
|
|
728
|
+
@param {Object} target the target object to invoke
|
|
729
|
+
@param {String|Function} method the method to invoke.
|
|
730
|
+
@param {Object} context optional context
|
|
731
|
+
@returns {SC.Object} self
|
|
732
|
+
*/
|
|
733
|
+
addObserver: function(key, target, method, context) {
|
|
734
|
+
var kvoKey, chain, chains, observers;
|
|
735
|
+
|
|
736
|
+
// normalize. if a function is passed to target, make it the method.
|
|
737
|
+
if (method === undefined) {
|
|
738
|
+
method = target; target = this ;
|
|
739
|
+
}
|
|
740
|
+
if (!target) target = this ;
|
|
741
|
+
|
|
742
|
+
if (typeof method === "string") method = target[method] ;
|
|
743
|
+
if (!method) throw "You must pass a method to addObserver()" ;
|
|
744
|
+
|
|
745
|
+
// Normalize key...
|
|
746
|
+
key = key.toString() ;
|
|
747
|
+
if (key.indexOf('.') >= 0) {
|
|
748
|
+
|
|
749
|
+
// create the chain and save it for later so we can tear it down if
|
|
750
|
+
// needed.
|
|
751
|
+
chain = SC._ChainObserver.createChain(this, key, target, method, context);
|
|
752
|
+
chain.masterTarget = target;
|
|
753
|
+
chain.masterMethod = method ;
|
|
754
|
+
|
|
755
|
+
// Save in set for chain observers.
|
|
756
|
+
this._kvo_for(SC.keyFor('_kvo_chains', key)).push(chain);
|
|
757
|
+
|
|
758
|
+
// Create observers if needed...
|
|
759
|
+
} else {
|
|
760
|
+
|
|
761
|
+
// Special case to support reduced properties. If the property
|
|
762
|
+
// key begins with '@' and its value is unknown, then try to get its
|
|
763
|
+
// value. This will configure the dependent keys if needed.
|
|
764
|
+
if ((this[key] === undefined) && (key.indexOf('@') === 0)) {
|
|
765
|
+
this.get(key) ;
|
|
551
766
|
}
|
|
552
|
-
}
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
},
|
|
556
|
-
|
|
557
|
-
/** @private
|
|
558
|
-
|
|
559
|
-
Called by set() whenever it needs to determine which cached dependent
|
|
560
|
-
keys to clear. Recursively searches dependent keys to determine all
|
|
561
|
-
cached property direcly or indirectly affected.
|
|
562
|
-
|
|
563
|
-
The return value is also saved for future reference
|
|
564
|
-
|
|
565
|
-
@param {String} key the key to compute
|
|
566
|
-
@returns {Array}
|
|
567
|
-
*/
|
|
568
|
-
_kvo_computeCachedDependentsFor: function(key) {
|
|
569
|
-
var cached = this._kvo_cachedep,
|
|
570
|
-
dependents = this._kvo_dependents,
|
|
571
|
-
keys = dependents ? dependents[key] : null,
|
|
572
|
-
queue, seen ;
|
|
573
|
-
if (!cached) cached = this._kvo_cachedep = {};
|
|
574
|
-
|
|
575
|
-
// if there are no dependent keys, then just set and return null to avoid
|
|
576
|
-
// this mess again.
|
|
577
|
-
if (!keys || keys.length===0) return cached[key] = null;
|
|
578
|
-
|
|
579
|
-
// there are dependent keys, so we need to do the work to find out if
|
|
580
|
-
// any of them or their dependent keys are cached.
|
|
581
|
-
queue = cached[key] = [];
|
|
582
|
-
seen = SC._TMP_SEEN_SET = (SC._TMP_SEEN_SET || SC.CoreSet.create());
|
|
583
|
-
seen.add(key);
|
|
584
|
-
this._kvo_addCachedDependents(queue, keys, dependents, seen);
|
|
585
|
-
seen.clear(); // reset
|
|
586
|
-
|
|
587
|
-
if (queue.length === 0) queue = cached[key] = null ; // turns out nothing
|
|
588
|
-
return queue ;
|
|
589
|
-
},
|
|
590
|
-
|
|
591
|
-
// ..........................................
|
|
592
|
-
// OBSERVERS
|
|
593
|
-
//
|
|
594
|
-
|
|
595
|
-
_kvo_for: function(kvoKey, type) {
|
|
596
|
-
var ret = this[kvoKey] ;
|
|
597
|
-
|
|
598
|
-
if (!this._kvo_cloned) this._kvo_cloned = {} ;
|
|
599
|
-
|
|
600
|
-
// if the item does not exist, create it. Unless type is passed,
|
|
601
|
-
// assume array.
|
|
602
|
-
if (!ret) {
|
|
603
|
-
ret = this[kvoKey] = (type === undefined) ? [] : type.create();
|
|
604
|
-
this._kvo_cloned[kvoKey] = YES ;
|
|
605
|
-
|
|
606
|
-
// if item does exist but has not been cloned, then clone it. Note
|
|
607
|
-
// that all types must implement copy().0
|
|
608
|
-
} else if (!this._kvo_cloned[kvoKey]) {
|
|
609
|
-
ret = this[kvoKey] = ret.copy();
|
|
610
|
-
this._kvo_cloned[kvoKey] = YES;
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
return ret ;
|
|
614
|
-
},
|
|
615
767
|
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
Once you call this method, anytime the key's value is set, your observer
|
|
622
|
-
will be notified. Note that the observers are triggered anytime the
|
|
623
|
-
value is set, regardless of whether it has actually changed. Your
|
|
624
|
-
observer should be prepared to handle that.
|
|
625
|
-
|
|
626
|
-
You can also pass an optional context parameter to this method. The
|
|
627
|
-
context will be passed to your observer method whenever it is triggered.
|
|
628
|
-
Note that if you add the same target/method pair on a key multiple times
|
|
629
|
-
with different context parameters, your observer will only be called once
|
|
630
|
-
with the last context you passed.
|
|
631
|
-
|
|
632
|
-
h2. Observer Methods
|
|
633
|
-
|
|
634
|
-
Observer methods you pass should generally have the following signature if
|
|
635
|
-
you do not pass a "context" parameter:
|
|
636
|
-
|
|
637
|
-
{{{
|
|
638
|
-
fooDidChange: function(sender, key, value, rev);
|
|
639
|
-
}}}
|
|
640
|
-
|
|
641
|
-
The sender is the object that changed. The key is the property that
|
|
642
|
-
changes. The value property is currently reserved and unused. The rev
|
|
643
|
-
is the last property revision of the object when it changed, which you can
|
|
644
|
-
use to detect if the key value has really changed or not.
|
|
645
|
-
|
|
646
|
-
If you pass a "context" parameter, the context will be passed before the
|
|
647
|
-
revision like so:
|
|
648
|
-
|
|
649
|
-
{{{
|
|
650
|
-
fooDidChange: function(sender, key, value, context, rev);
|
|
651
|
-
}}}
|
|
652
|
-
|
|
653
|
-
Usually you will not need the value, context or revision parameters at
|
|
654
|
-
the end. In this case, it is common to write observer methods that take
|
|
655
|
-
only a sender and key value as parameters or, if you aren't interested in
|
|
656
|
-
any of these values, to write an observer that has no parameters at all.
|
|
657
|
-
|
|
658
|
-
@param key {String} the key to observer
|
|
659
|
-
@param target {Object} the target object to invoke
|
|
660
|
-
@param method {String|Function} the method to invoke.
|
|
661
|
-
@param context {Object} optional context
|
|
662
|
-
@returns {SC.Object} self
|
|
663
|
-
*/
|
|
664
|
-
addObserver: function(key, target, method, context) {
|
|
665
|
-
|
|
666
|
-
var kvoKey, chain, chains, observers;
|
|
667
|
-
|
|
668
|
-
// normalize. if a function is passed to target, make it the method.
|
|
669
|
-
if (method === undefined) {
|
|
670
|
-
method = target; target = this ;
|
|
671
|
-
}
|
|
672
|
-
if (!target) target = this ;
|
|
673
|
-
|
|
674
|
-
if (typeof method === "string") method = target[method] ;
|
|
675
|
-
if (!method) throw "You must pass a method to addObserver()" ;
|
|
676
|
-
|
|
677
|
-
// Normalize key...
|
|
678
|
-
key = key.toString() ;
|
|
679
|
-
if (key.indexOf('.') >= 0) {
|
|
680
|
-
|
|
681
|
-
// create the chain and save it for later so we can tear it down if
|
|
682
|
-
// needed.
|
|
683
|
-
chain = SC._ChainObserver.createChain(this, key, target, method, context);
|
|
684
|
-
chain.masterTarget = target;
|
|
685
|
-
chain.masterMethod = method ;
|
|
686
|
-
|
|
687
|
-
// Save in set for chain observers.
|
|
688
|
-
this._kvo_for(SC.keyFor('_kvo_chains', key)).push(chain);
|
|
689
|
-
|
|
690
|
-
// Create observers if needed...
|
|
691
|
-
} else {
|
|
692
|
-
|
|
693
|
-
// Special case to support reduced properties. If the property
|
|
694
|
-
// key begins with '@' and its value is unknown, then try to get its
|
|
695
|
-
// value. This will configure the dependent keys if needed.
|
|
696
|
-
if ((this[key] === undefined) && (key.indexOf('@') === 0)) {
|
|
697
|
-
this.get(key) ;
|
|
768
|
+
if (target === this) target = null ; // use null for observers only.
|
|
769
|
+
kvoKey = SC.keyFor('_kvo_observers', key);
|
|
770
|
+
this._kvo_for(kvoKey, SC.ObserverSet).add(target, method, context);
|
|
771
|
+
this._kvo_for('_kvo_observed_keys', SC.CoreSet).add(key) ;
|
|
698
772
|
}
|
|
699
773
|
|
|
700
|
-
if (
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
this._kvo_for('_kvo_observed_keys', SC.CoreSet).add(key) ;
|
|
704
|
-
}
|
|
774
|
+
if (this.didAddObserver) this.didAddObserver(key, target, method);
|
|
775
|
+
return this;
|
|
776
|
+
},
|
|
705
777
|
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
778
|
+
/**
|
|
779
|
+
Remove an observer you have previously registered on this object. Pass
|
|
780
|
+
the same key, target, and method you passed to addObserver() and your
|
|
781
|
+
target will no longer receive notifications.
|
|
709
782
|
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
chains[idx] = chain.destroyChain() ;
|
|
783
|
+
@param {String} key the key to observer
|
|
784
|
+
@param {Object} target the target object to invoke
|
|
785
|
+
@param {String|Function} method the method to invoke.
|
|
786
|
+
@returns {SC.Observable} reciever
|
|
787
|
+
*/
|
|
788
|
+
removeObserver: function(key, target, method) {
|
|
789
|
+
|
|
790
|
+
var kvoKey, chains, chain, observers, idx ;
|
|
791
|
+
|
|
792
|
+
// normalize. if a function is passed to target, make it the method.
|
|
793
|
+
if (method === undefined) {
|
|
794
|
+
method = target; target = this ;
|
|
795
|
+
}
|
|
796
|
+
if (!target) target = this ;
|
|
797
|
+
|
|
798
|
+
if (typeof method === "string") method = target[method] ;
|
|
799
|
+
if (!method) throw "You must pass a method to removeObserver()" ;
|
|
800
|
+
|
|
801
|
+
// if the key contains a '.', this is a chained observer.
|
|
802
|
+
key = key.toString() ;
|
|
803
|
+
if (key.indexOf('.') >= 0) {
|
|
804
|
+
|
|
805
|
+
// try to find matching chains
|
|
806
|
+
kvoKey = SC.keyFor('_kvo_chains', key);
|
|
807
|
+
if (chains = this[kvoKey]) {
|
|
808
|
+
|
|
809
|
+
// if chains have not been cloned yet, do so now.
|
|
810
|
+
chains = this._kvo_for(kvoKey) ;
|
|
811
|
+
|
|
812
|
+
// remove any chains
|
|
813
|
+
idx = chains.length;
|
|
814
|
+
while(--idx >= 0) {
|
|
815
|
+
chain = chains[idx];
|
|
816
|
+
if (chain && (chain.masterTarget===target) && (chain.masterMethod===method)) {
|
|
817
|
+
chains[idx] = chain.destroyChain() ;
|
|
818
|
+
}
|
|
747
819
|
}
|
|
748
820
|
}
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
821
|
+
|
|
822
|
+
// otherwise, just like a normal observer.
|
|
823
|
+
} else {
|
|
824
|
+
if (target === this) target = null ; // use null for observers only.
|
|
825
|
+
kvoKey = SC.keyFor('_kvo_observers', key) ;
|
|
826
|
+
if (observers = this[kvoKey]) {
|
|
827
|
+
// if observers have not been cloned yet, do so now
|
|
828
|
+
observers = this._kvo_for(kvoKey) ;
|
|
829
|
+
observers.remove(target, method) ;
|
|
830
|
+
if (observers.getMembers().length === 0) {
|
|
831
|
+
this._kvo_for('_kvo_observed_keys', SC.CoreSet).remove(key);
|
|
832
|
+
}
|
|
761
833
|
}
|
|
762
834
|
}
|
|
763
|
-
}
|
|
764
835
|
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
/**
|
|
770
|
-
Returns YES if the object currently has observers registered for a
|
|
771
|
-
particular key. You can use this method to potentially defer performing
|
|
772
|
-
an expensive action until someone begins observing a particular property
|
|
773
|
-
on the object.
|
|
774
|
-
|
|
775
|
-
@param {String} key key to check
|
|
776
|
-
@returns {Boolean}
|
|
777
|
-
*/
|
|
778
|
-
hasObserverFor: function(key) {
|
|
779
|
-
SC.Observers.flush(this) ; // hookup as many observers as possible.
|
|
780
|
-
|
|
781
|
-
var observers = this[SC.keyFor('_kvo_observers', key)],
|
|
782
|
-
locals = this[SC.keyFor('_kvo_local', key)],
|
|
783
|
-
members ;
|
|
784
|
-
|
|
785
|
-
if (locals && locals.length>0) return YES ;
|
|
786
|
-
if (observers && observers.getMembers().length>0) return YES ;
|
|
787
|
-
return NO ;
|
|
788
|
-
},
|
|
836
|
+
if (this.didRemoveObserver) this.didRemoveObserver(key, target, method);
|
|
837
|
+
return this;
|
|
838
|
+
},
|
|
789
839
|
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
840
|
+
/**
|
|
841
|
+
Returns YES if the object currently has observers registered for a
|
|
842
|
+
particular key. You can use this method to potentially defer performing
|
|
843
|
+
an expensive action until someone begins observing a particular property
|
|
844
|
+
on the object.
|
|
845
|
+
|
|
846
|
+
@param {String} key key to check
|
|
847
|
+
@returns {Boolean}
|
|
848
|
+
*/
|
|
849
|
+
hasObserverFor: function(key) {
|
|
850
|
+
SC.Observers.flush(this) ; // hookup as many observers as possible.
|
|
851
|
+
|
|
852
|
+
var observers = this[SC.keyFor('_kvo_observers', key)],
|
|
853
|
+
locals = this[SC.keyFor('_kvo_local', key)],
|
|
854
|
+
members ;
|
|
855
|
+
|
|
856
|
+
if (locals && locals.length>0) return YES ;
|
|
857
|
+
if (observers && observers.getMembers().length > 0) return YES ;
|
|
858
|
+
return NO ;
|
|
859
|
+
},
|
|
860
|
+
|
|
861
|
+
/**
|
|
862
|
+
This method will register any observers and computed properties saved on
|
|
863
|
+
the object. Normally you do not need to call this method youself. It
|
|
864
|
+
is invoked automatically just before property notifications are sent and
|
|
865
|
+
from the init() method of SC.Object. You may choose to call this
|
|
866
|
+
from your own initialization method if you are using SC.Observable in
|
|
867
|
+
a non-SC.Object-based object.
|
|
868
|
+
|
|
869
|
+
This method looks for several private variables, which you can setup,
|
|
870
|
+
to initialize:
|
|
871
|
+
|
|
872
|
+
- _observers: this should contain an array of key names for observers
|
|
873
|
+
you need to configure.
|
|
874
|
+
|
|
875
|
+
- _bindings: this should contain an array of key names that configure
|
|
876
|
+
bindings.
|
|
877
|
+
|
|
878
|
+
- _properties: this should contain an array of key names for computed
|
|
879
|
+
properties.
|
|
880
|
+
|
|
881
|
+
@returns {Object} this
|
|
882
|
+
*/
|
|
883
|
+
initObservable: function() {
|
|
884
|
+
if (this._observableInited) return ;
|
|
885
|
+
this._observableInited = YES ;
|
|
886
|
+
|
|
887
|
+
var loc, keys, key, value, observer, propertyPaths, propertyPathsLength,
|
|
888
|
+
len, ploc, path, dotIndex, root, propertyKey, keysLen;
|
|
889
|
+
|
|
890
|
+
// Loop through observer functions and register them
|
|
891
|
+
if (keys = this._observers) {
|
|
892
|
+
len = keys.length ;
|
|
893
|
+
for(loc=0;loc<len;loc++) {
|
|
894
|
+
key = keys[loc]; observer = this[key] ;
|
|
895
|
+
propertyPaths = observer.propertyPaths ;
|
|
896
|
+
propertyPathsLength = (propertyPaths) ? propertyPaths.length : 0 ;
|
|
897
|
+
for(ploc=0;ploc<propertyPathsLength;ploc++) {
|
|
898
|
+
path = propertyPaths[ploc] ;
|
|
899
|
+
dotIndex = path.indexOf('.') ;
|
|
900
|
+
// handle most common case, observing a local property
|
|
901
|
+
if (dotIndex < 0) {
|
|
902
|
+
this.addObserver(path, this, observer) ;
|
|
903
|
+
|
|
904
|
+
// next most common case, use a chained observer
|
|
905
|
+
} else if (path.indexOf('*') === 0) {
|
|
906
|
+
this.addObserver(path.slice(1), this, observer) ;
|
|
907
|
+
|
|
908
|
+
// otherwise register the observer in the observers queue. This
|
|
909
|
+
// will add the observer now or later when the named path becomes
|
|
910
|
+
// available.
|
|
911
|
+
} else {
|
|
912
|
+
root = null ;
|
|
913
|
+
|
|
914
|
+
// handle special cases for observers that look to the local root
|
|
915
|
+
if (dotIndex === 0) {
|
|
916
|
+
root = this; path = path.slice(1) ;
|
|
917
|
+
} else if (dotIndex===4 && path.slice(0,5) === 'this.') {
|
|
918
|
+
root = this; path = path.slice(5) ;
|
|
919
|
+
} else if (dotIndex<0 && path.length===4 && path === 'this') {
|
|
920
|
+
root = this; path = '';
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
SC.Observers.addObserver(path, this, observer, root);
|
|
850
924
|
}
|
|
851
|
-
|
|
852
|
-
SC.Observers.addObserver(path, this, observer, root);
|
|
853
925
|
}
|
|
854
926
|
}
|
|
855
927
|
}
|
|
856
|
-
}
|
|
857
928
|
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
929
|
+
// Add Bindings
|
|
930
|
+
this.bindings = []; // will be filled in by the bind() method.
|
|
931
|
+
if (keys = this._bindings) {
|
|
932
|
+
for(loc=0, keysLen = keys.length; loc < keysLen;loc++) {
|
|
933
|
+
// get propertyKey
|
|
934
|
+
key = keys[loc] ; value = this[key] ;
|
|
935
|
+
propertyKey = key.slice(0,-7) ; // contentBinding => content
|
|
936
|
+
this[key] = this.bind(propertyKey, value) ;
|
|
937
|
+
}
|
|
866
938
|
}
|
|
867
|
-
}
|
|
868
939
|
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
940
|
+
// Add Properties
|
|
941
|
+
if (keys = this._properties) {
|
|
942
|
+
for(loc=0, keysLen = keys.length; loc<keysLen;loc++) {
|
|
943
|
+
key = keys[loc];
|
|
944
|
+
if (value = this[key]) {
|
|
874
945
|
|
|
875
|
-
|
|
876
|
-
|
|
946
|
+
// activate cacheable only if needed for perf reasons
|
|
947
|
+
if (value.isCacheable) this._kvo_cacheable = YES;
|
|
877
948
|
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
949
|
+
// register dependent keys
|
|
950
|
+
if (value.dependentKeys && (value.dependentKeys.length>0)) {
|
|
951
|
+
this.registerDependentKey(key, value.dependentKeys) ;
|
|
952
|
+
}
|
|
881
953
|
}
|
|
882
954
|
}
|
|
883
955
|
}
|
|
884
|
-
}
|
|
885
|
-
|
|
886
|
-
},
|
|
887
|
-
|
|
888
|
-
// ..........................................
|
|
889
|
-
// NOTIFICATION
|
|
890
|
-
//
|
|
891
956
|
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
957
|
+
},
|
|
958
|
+
|
|
959
|
+
// ..........................................
|
|
960
|
+
// NOTIFICATION
|
|
961
|
+
//
|
|
962
|
+
|
|
963
|
+
/**
|
|
964
|
+
Returns an array with all of the observers registered for the specified
|
|
965
|
+
key. This is intended for debugging purposes only. You generally do not
|
|
966
|
+
want to rely on this method for production code.
|
|
967
|
+
|
|
968
|
+
@param {String} key the key to evaluate
|
|
898
969
|
@returns {Array} array of Observer objects, describing the observer.
|
|
899
970
|
*/
|
|
900
971
|
observersForKey: function(key) {
|
|
901
|
-
|
|
902
|
-
|
|
972
|
+
SC.Observers.flush(this) ; // hookup as many observers as possible.
|
|
973
|
+
|
|
974
|
+
var observers = this[SC.keyFor('_kvo_observers', key)];
|
|
975
|
+
return observers ? observers.getMembers() : [];
|
|
903
976
|
},
|
|
904
|
-
|
|
905
|
-
// this private method actually notifies the observers for any keys in the
|
|
906
|
-
// observer queue. If you pass a key it will be added to the queue.
|
|
907
|
-
_notifyPropertyObservers: function(key) {
|
|
908
977
|
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
978
|
+
// this private method actually notifies the observers for any keys in the
|
|
979
|
+
// observer queue. If you pass a key it will be added to the queue.
|
|
980
|
+
_notifyPropertyObservers: function(key) {
|
|
981
|
+
if (!this._observableInited) this.initObservable() ;
|
|
912
982
|
|
|
913
|
-
|
|
914
|
-
observers, changes, dependents, starObservers, idx, keys, rev,
|
|
915
|
-
members, membersLength, member, memberLoc, target, method, loc, func,
|
|
916
|
-
context, spaces, cache ;
|
|
983
|
+
SC.Observers.flush(this) ; // hookup as many observers as possible.
|
|
917
984
|
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
changes.
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
//
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
if (
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
985
|
+
var log = SC.LOG_OBSERVERS && !(this.LOG_OBSERVING===NO),
|
|
986
|
+
observers, changes, dependents, starObservers, idx, keys, rev,
|
|
987
|
+
members, membersLength, member, memberLoc, target, method, loc, func,
|
|
988
|
+
context, spaces, cache ;
|
|
989
|
+
|
|
990
|
+
if (log) {
|
|
991
|
+
spaces = SC.KVO_SPACES = (SC.KVO_SPACES || '') + ' ';
|
|
992
|
+
SC.Logger.log('%@%@: notifying observers after change to key "%@"'.fmt(spaces, this, key));
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
// Get any starObservers -- they will be notified of all changes.
|
|
996
|
+
starObservers = this['_kvo_observers_*'] ;
|
|
997
|
+
|
|
998
|
+
// prevent notifications from being sent until complete
|
|
999
|
+
this._kvo_changeLevel = (this._kvo_changeLevel || 0) + 1;
|
|
1000
|
+
|
|
1001
|
+
// keep sending notifications as long as there are changes
|
|
1002
|
+
while(((changes = this._kvo_changes) && (changes.length > 0)) || key) {
|
|
1003
|
+
|
|
1004
|
+
// increment revision
|
|
1005
|
+
rev = ++this.propertyRevision ;
|
|
1006
|
+
|
|
1007
|
+
// save the current set of changes and swap out the kvo_changes so that
|
|
1008
|
+
// any set() calls by observers will be saved in a new set.
|
|
1009
|
+
if (!changes) changes = SC.CoreSet.create() ;
|
|
1010
|
+
this._kvo_changes = null ;
|
|
1011
|
+
|
|
1012
|
+
// Add the passed key to the changes set. If a '*' was passed, then
|
|
1013
|
+
// add all keys in the observers to the set...
|
|
1014
|
+
// once finished, clear the key so the loop will end.
|
|
1015
|
+
if (key === '*') {
|
|
1016
|
+
changes.add('*') ;
|
|
1017
|
+
changes.addEach(this._kvo_for('_kvo_observed_keys', SC.CoreSet));
|
|
1018
|
+
|
|
1019
|
+
} else if (key) changes.add(key) ;
|
|
1020
|
+
|
|
1021
|
+
// Now go through the set and add all dependent keys...
|
|
1022
|
+
if (dependents = this._kvo_dependents) {
|
|
1023
|
+
|
|
1024
|
+
// NOTE: each time we loop, we check the changes length, this
|
|
1025
|
+
// way any dependent keys added to the set will also be evaluated...
|
|
1026
|
+
for(idx=0;idx<changes.length;idx++) {
|
|
1027
|
+
key = changes[idx] ;
|
|
1028
|
+
keys = dependents[key] ;
|
|
1029
|
+
|
|
1030
|
+
// for each dependent key, add to set of changes. Also, if key
|
|
1031
|
+
// value is a cacheable property, clear the cached value...
|
|
1032
|
+
if (keys && (loc = keys.length)) {
|
|
1033
|
+
if (log) {
|
|
1034
|
+
SC.Logger.log("%@...including dependent keys for %@: %@".fmt(spaces, key, keys));
|
|
1035
|
+
}
|
|
1036
|
+
cache = this._kvo_cache;
|
|
1037
|
+
if (!cache) cache = this._kvo_cache = {};
|
|
1038
|
+
while(--loc >= 0) {
|
|
1039
|
+
changes.add(key = keys[loc]);
|
|
1040
|
+
if (func = this[key]) {
|
|
1041
|
+
this[func.cacheKey] = undefined;
|
|
1042
|
+
cache[func.cacheKey] = cache[func.lastSetValueKey] = undefined;
|
|
1043
|
+
} // if (func=)
|
|
1044
|
+
} // while (--loc)
|
|
1045
|
+
} // if (keys &&
|
|
1046
|
+
} // for(idx...
|
|
1047
|
+
} // if (dependents...)
|
|
1048
|
+
|
|
1049
|
+
// now iterate through all changed keys and notify observers.
|
|
1050
|
+
while(changes.length > 0) {
|
|
1051
|
+
key = changes.pop() ; // the changed key
|
|
1052
|
+
|
|
1053
|
+
// find any observers and notify them...
|
|
1054
|
+
observers = this[SC.keyFor('_kvo_observers', key)];
|
|
1055
|
+
|
|
1056
|
+
if (observers) {
|
|
1057
|
+
// We need to clone the 'members' structure here in case any of the
|
|
1058
|
+
// observers we're about to notify happen to remove observers for
|
|
1059
|
+
// this key, which would mutate the structure underneath us.
|
|
1060
|
+
// (Cloning it rather than mutating gives us a clear policy: if you
|
|
1061
|
+
// were registered as an observer at the time notification begins,
|
|
1062
|
+
// you will be notified, regardless of whether you're removed as an
|
|
1063
|
+
// observer during that round of notification. Similarly, if you're
|
|
1064
|
+
// added as an observer during the notification round by another
|
|
1065
|
+
// observer, you will not be notified until the next time.)
|
|
1066
|
+
members = SC.clone(observers.getMembers()) ;
|
|
1067
|
+
membersLength = members.length ;
|
|
1068
|
+
for(memberLoc=0;memberLoc < membersLength; memberLoc++) {
|
|
1069
|
+
member = members[memberLoc] ;
|
|
1070
|
+
|
|
1071
|
+
if (member[3] === rev) continue ; // skip notified items.
|
|
1072
|
+
|
|
1073
|
+
if(!member[1]) SC.Logger.log(member);
|
|
1074
|
+
|
|
1075
|
+
target = member[0] || this;
|
|
1076
|
+
method = member[1] ;
|
|
1077
|
+
context = member[2];
|
|
1078
|
+
member[3] = rev;
|
|
1079
|
+
|
|
1080
|
+
if (log) SC.Logger.log('%@...firing observer on %@ for key "%@"'.fmt(spaces, target, key));
|
|
1081
|
+
if (context !== undefined) {
|
|
1082
|
+
method.call(target, this, key, null, context, rev);
|
|
1083
|
+
} else {
|
|
1084
|
+
method.call(target, this, key, null, rev) ;
|
|
1085
|
+
}
|
|
1000
1086
|
}
|
|
1001
1087
|
}
|
|
1002
|
-
}
|
|
1003
1088
|
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
method
|
|
1089
|
+
// look for local observers. Local observers are added by SC.Object
|
|
1090
|
+
// as an optimization to avoid having to add observers for every
|
|
1091
|
+
// instance when you are just observing your local object.
|
|
1092
|
+
members = this[SC.keyFor('_kvo_local', key)];
|
|
1093
|
+
if (members) {
|
|
1094
|
+
// Note: Since, unlike above, we don't expect local observers to be
|
|
1095
|
+
// removed in general, we will not clone 'members'.
|
|
1096
|
+
membersLength = members.length ;
|
|
1097
|
+
for(memberLoc=0;memberLoc<membersLength;memberLoc++) {
|
|
1098
|
+
member = members[memberLoc];
|
|
1099
|
+
method = this[member] ; // try to find observer function
|
|
1100
|
+
if (method) {
|
|
1101
|
+
if (log) SC.Logger.log('%@...firing local observer %@.%@ for key "%@"'.fmt(spaces, this, member, key));
|
|
1102
|
+
method.call(this, this, key, null, rev);
|
|
1103
|
+
}
|
|
1016
1104
|
}
|
|
1017
1105
|
}
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1106
|
+
|
|
1107
|
+
// if there are starObservers, do the same thing for them
|
|
1108
|
+
if (starObservers && key !== '*') {
|
|
1109
|
+
// We clone the structure per the justification, above, for regular
|
|
1110
|
+
// observers.
|
|
1111
|
+
members = SC.clone(starObservers.getMembers()) ;
|
|
1112
|
+
membersLength = members.length ;
|
|
1113
|
+
for(memberLoc=0;memberLoc < membersLength; memberLoc++) {
|
|
1114
|
+
member = members[memberLoc] ;
|
|
1115
|
+
target = member[0] || this;
|
|
1116
|
+
method = member[1] ;
|
|
1117
|
+
context = member[2] ;
|
|
1118
|
+
|
|
1119
|
+
if (log) SC.Logger.log('%@...firing * observer on %@ for key "%@"'.fmt(spaces, target, key));
|
|
1120
|
+
if (context !== undefined) {
|
|
1121
|
+
method.call(target, this, key, null, context, rev);
|
|
1122
|
+
} else {
|
|
1123
|
+
method.call(target, this, key, null, rev) ;
|
|
1124
|
+
}
|
|
1035
1125
|
}
|
|
1036
1126
|
}
|
|
1037
|
-
}
|
|
1038
1127
|
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
// changes set should be empty. release it for reuse
|
|
1047
|
-
if (changes) changes.destroy() ;
|
|
1048
|
-
|
|
1049
|
-
// key is no longer needed; clear it to avoid infinite loops
|
|
1050
|
-
key = null ;
|
|
1051
|
-
|
|
1052
|
-
} // while (changes)
|
|
1053
|
-
|
|
1054
|
-
// done with loop, reduce change level so that future sets can resume
|
|
1055
|
-
this._kvo_changeLevel = (this._kvo_changeLevel || 1) - 1;
|
|
1056
|
-
|
|
1057
|
-
if (log) SC.KVO_SPACES = spaces.slice(0, -2);
|
|
1058
|
-
|
|
1059
|
-
return YES ; // finished successfully
|
|
1060
|
-
},
|
|
1128
|
+
// if there is a default property observer, call that also
|
|
1129
|
+
if (this.propertyObserver) {
|
|
1130
|
+
if (log) SC.Logger.log('%@...firing %@.propertyObserver for key "%@"'.fmt(spaces, this, key));
|
|
1131
|
+
this.propertyObserver(this, key, null, rev);
|
|
1132
|
+
}
|
|
1133
|
+
} // while(changes.length>0)
|
|
1061
1134
|
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
//
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1135
|
+
// changes set should be empty. release it for reuse
|
|
1136
|
+
if (changes) changes.destroy() ;
|
|
1137
|
+
|
|
1138
|
+
// key is no longer needed; clear it to avoid infinite loops
|
|
1139
|
+
key = null ;
|
|
1140
|
+
|
|
1141
|
+
} // while (changes)
|
|
1142
|
+
|
|
1143
|
+
// done with loop, reduce change level so that future sets can resume
|
|
1144
|
+
this._kvo_changeLevel = (this._kvo_changeLevel || 1) - 1;
|
|
1145
|
+
|
|
1146
|
+
if (log) SC.KVO_SPACES = spaces.slice(0, -2);
|
|
1147
|
+
|
|
1148
|
+
return YES ; // finished successfully
|
|
1149
|
+
},
|
|
1150
|
+
|
|
1151
|
+
// ..........................................
|
|
1152
|
+
// BINDINGS
|
|
1153
|
+
//
|
|
1154
|
+
|
|
1155
|
+
/**
|
|
1156
|
+
Manually add a new binding to an object. This is the same as doing
|
|
1157
|
+
the more familiar propertyBinding: 'property.path' approach.
|
|
1158
|
+
|
|
1159
|
+
@param {String} toKey the key to bind to
|
|
1160
|
+
@param {Object} target target or property path to bind from
|
|
1161
|
+
@param {String|Function} method method for target to bind from
|
|
1162
|
+
@returns {SC.Binding} new binding instance
|
|
1163
|
+
*/
|
|
1164
|
+
bind: function(toKey, target, method) {
|
|
1165
|
+
|
|
1166
|
+
var binding , pathType;
|
|
1167
|
+
|
|
1168
|
+
// normalize...
|
|
1169
|
+
if (method !== undefined) target = [target, method];
|
|
1170
|
+
|
|
1171
|
+
pathType = typeof target;
|
|
1172
|
+
|
|
1173
|
+
// if a string or array (i.e. tuple) is passed, convert this into a
|
|
1174
|
+
// binding. If a binding default was provided, use that.
|
|
1175
|
+
if (pathType === "string" || (pathType === "object" && (target instanceof Array))) {
|
|
1176
|
+
binding = this[toKey + 'BindingDefault'] || SC.Binding;
|
|
1177
|
+
binding = binding.beget().from(target) ;
|
|
1178
|
+
} else {
|
|
1179
|
+
// If a binding object was provided, clone it so that it gets
|
|
1180
|
+
// connected again if the original example binding was already
|
|
1181
|
+
// connected.
|
|
1182
|
+
binding = target.beget() ;
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
// finish configuring the binding and then connect it.
|
|
1186
|
+
binding = binding.to(toKey, this).connect() ;
|
|
1187
|
+
this.bindings.push(binding) ;
|
|
1188
|
+
|
|
1189
|
+
return binding ;
|
|
1190
|
+
},
|
|
1191
|
+
|
|
1192
|
+
/**
|
|
1193
|
+
didChangeFor allows you to determine if a property has changed since the
|
|
1194
|
+
last time the method was called. You must pass a unique context as the
|
|
1195
|
+
first parameter (so didChangeFor can identify which method is calling it),
|
|
1196
|
+
followed by a list of keys that should be checked for changes.
|
|
1197
|
+
|
|
1198
|
+
For example, in your render method you might pass the following context:
|
|
1199
|
+
if (this.didChangeFor('render','height','width')) {
|
|
1200
|
+
// Only render if changed
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
In your view's update method, you might instead pass 'update':
|
|
1204
|
+
|
|
1205
|
+
if (this.didChangeFor('update', 'height', 'width')) {
|
|
1206
|
+
// Only update height and width properties
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
This method works by comparing property revision counts. Every time a
|
|
1210
|
+
property changes, an internal counter is incremented. When didChangeFor is
|
|
1211
|
+
invoked, the current revision count of the property is compared to the
|
|
1212
|
+
revision count from the last time this method was called.
|
|
1213
|
+
|
|
1214
|
+
@param {String|Object} context a unique identifier
|
|
1215
|
+
@param {String…} propertyNames one or more property names
|
|
1216
|
+
*/
|
|
1217
|
+
didChangeFor: function(context) {
|
|
1218
|
+
var valueCache, revisionCache, seenValues, seenRevisions, ret,
|
|
1219
|
+
currentRevision, idx, key, value;
|
|
1220
|
+
context = SC.hashFor(context) ; // get a hash key we can use in caches.
|
|
1221
|
+
|
|
1222
|
+
// setup caches...
|
|
1223
|
+
valueCache = this._kvo_didChange_valueCache ;
|
|
1224
|
+
if (!valueCache) valueCache = this._kvo_didChange_valueCache = {};
|
|
1225
|
+
revisionCache = this._kvo_didChange_revisionCache;
|
|
1226
|
+
if (!revisionCache) revisionCache=this._kvo_didChange_revisionCache={};
|
|
1227
|
+
|
|
1228
|
+
// get the cache of values and revisions already seen in this context
|
|
1229
|
+
seenValues = valueCache[context] || {} ;
|
|
1230
|
+
seenRevisions = revisionCache[context] || {} ;
|
|
1231
|
+
|
|
1232
|
+
// prepare too loop!
|
|
1233
|
+
ret = false ;
|
|
1234
|
+
currentRevision = this._kvo_revision || 0 ;
|
|
1235
|
+
idx = arguments.length ;
|
|
1236
|
+
while(--idx >= 1) { // NB: loop only to 1 to ignore context arg.
|
|
1237
|
+
key = arguments[idx];
|
|
1238
|
+
|
|
1239
|
+
// has the kvo revision changed since the last time we did this?
|
|
1240
|
+
if (seenRevisions[key] != currentRevision) {
|
|
1241
|
+
// yes, check the value with the last seen value
|
|
1242
|
+
value = this.get(key) ;
|
|
1243
|
+
if (seenValues[key] !== value) {
|
|
1244
|
+
ret = true ; // did change!
|
|
1245
|
+
seenValues[key] = value;
|
|
1246
|
+
}
|
|
1136
1247
|
}
|
|
1248
|
+
seenRevisions[key] = currentRevision;
|
|
1137
1249
|
}
|
|
1138
|
-
seenRevisions[key] = currentRevision;
|
|
1139
|
-
}
|
|
1140
|
-
|
|
1141
|
-
valueCache[context] = seenValues ;
|
|
1142
|
-
revisionCache[context] = seenRevisions ;
|
|
1143
|
-
return ret ;
|
|
1144
|
-
},
|
|
1145
1250
|
|
|
1251
|
+
valueCache[context] = seenValues ;
|
|
1252
|
+
revisionCache[context] = seenRevisions ;
|
|
1253
|
+
return ret ;
|
|
1254
|
+
},
|
|
1146
1255
|
|
|
1256
|
+
/**
|
|
1257
|
+
Sets the property only if the passed value is different from the
|
|
1258
|
+
current value. Depending on how expensive a get() is on this property,
|
|
1259
|
+
this may be more efficient.
|
|
1260
|
+
|
|
1261
|
+
NOTE: By default, the set() method will not set the value unless it has
|
|
1262
|
+
changed. However, this check can skipped by setting .property().idempotent(NO)
|
|
1263
|
+
setIfChanged() may be useful in this case.
|
|
1264
|
+
|
|
1265
|
+
@param {String|Hash} key the key to change
|
|
1266
|
+
@param {Object} value the value to change
|
|
1267
|
+
@returns {SC.Observable}
|
|
1268
|
+
*/
|
|
1269
|
+
setIfChanged: function(key, value) {
|
|
1270
|
+
if(value === undefined && SC.typeOf(key) === SC.T_HASH) {
|
|
1271
|
+
var hash = key;
|
|
1272
|
+
|
|
1273
|
+
for(key in hash) {
|
|
1274
|
+
if (!hash.hasOwnProperty(key)) continue;
|
|
1275
|
+
this.setIfChanged(key, hash[key]);
|
|
1276
|
+
}
|
|
1147
1277
|
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
current value. Depending on how expensive a get() is on this property,
|
|
1151
|
-
this may be more efficient.
|
|
1278
|
+
return this;
|
|
1279
|
+
}
|
|
1152
1280
|
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
setIfChanged() may be useful in this case.
|
|
1281
|
+
return (this.get(key) !== value) ? this.set(key, value) : this ;
|
|
1282
|
+
},
|
|
1156
1283
|
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
@returns {SC.Observable}
|
|
1160
|
-
*/
|
|
1161
|
-
setIfChanged: function(key, value) {
|
|
1162
|
-
return (this.get(key) !== value) ? this.set(key, value) : this ;
|
|
1163
|
-
},
|
|
1164
|
-
|
|
1165
|
-
/**
|
|
1166
|
-
Navigates the property path, returning the value at that point.
|
|
1167
|
-
|
|
1168
|
-
If any object in the path is undefined, returns undefined.
|
|
1169
|
-
*/
|
|
1170
|
-
getPath: function(path) {
|
|
1171
|
-
var tuple = SC.tupleForPropertyPath(path, this) ;
|
|
1172
|
-
if (tuple === null || tuple[0] === null) return undefined ;
|
|
1173
|
-
return tuple[0].get(tuple[1]) ;
|
|
1174
|
-
},
|
|
1175
|
-
|
|
1176
|
-
/**
|
|
1177
|
-
Navigates the property path, finally setting the value.
|
|
1178
|
-
|
|
1179
|
-
@param path {String} the property path to set
|
|
1180
|
-
@param value {Object} the value to set
|
|
1181
|
-
@returns {SC.Observable}
|
|
1182
|
-
*/
|
|
1183
|
-
setPath: function(path, value) {
|
|
1184
|
-
if (path.indexOf('.') >= 0) {
|
|
1185
|
-
var tuple = SC.tupleForPropertyPath(path, this) ;
|
|
1186
|
-
if (!tuple || !tuple[0]) return null ;
|
|
1187
|
-
tuple[0].set(tuple[1], value) ;
|
|
1188
|
-
} else this.set(path, value) ; // shortcut
|
|
1189
|
-
return this;
|
|
1190
|
-
},
|
|
1284
|
+
/**
|
|
1285
|
+
Navigates the property path, returning the value at that point.
|
|
1191
1286
|
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
@param path {String} the property path to set
|
|
1198
|
-
@param value {Object} the value to set
|
|
1199
|
-
@returns {Object} this
|
|
1200
|
-
*/
|
|
1201
|
-
setPathIfChanged: function(path, value) {
|
|
1202
|
-
if (path.indexOf('.') >= 0) {
|
|
1287
|
+
If any object in the path is undefined, returns undefined.
|
|
1288
|
+
@param {String} path The property path you want to retrieve
|
|
1289
|
+
*/
|
|
1290
|
+
getPath: function(path) {
|
|
1203
1291
|
var tuple = SC.tupleForPropertyPath(path, this) ;
|
|
1204
|
-
if (
|
|
1205
|
-
|
|
1292
|
+
if (tuple === null || tuple[0] === null) return undefined ;
|
|
1293
|
+
return SC.get(tuple[0], tuple[1]) ;
|
|
1294
|
+
},
|
|
1295
|
+
|
|
1296
|
+
/**
|
|
1297
|
+
Navigates the property path, finally setting the value.
|
|
1298
|
+
|
|
1299
|
+
@param {String} path the property path to set
|
|
1300
|
+
@param {Object} value the value to set
|
|
1301
|
+
@returns {SC.Observable}
|
|
1302
|
+
*/
|
|
1303
|
+
setPath: function(path, value) {
|
|
1304
|
+
if (path.indexOf('.') >= 0) {
|
|
1305
|
+
var tuple = SC.tupleForPropertyPath(path, this) ;
|
|
1306
|
+
if (!tuple || !tuple[0]) return null ;
|
|
1206
1307
|
tuple[0].set(tuple[1], value) ;
|
|
1308
|
+
} else this.set(path, value) ; // shortcut
|
|
1309
|
+
return this;
|
|
1310
|
+
},
|
|
1311
|
+
|
|
1312
|
+
/**
|
|
1313
|
+
Navigates the property path, finally setting the value but only if
|
|
1314
|
+
the value does not match the current value. This will avoid sending
|
|
1315
|
+
unecessary change notifications.
|
|
1316
|
+
|
|
1317
|
+
@param {String} path the property path to set
|
|
1318
|
+
@param {Object} value the value to set
|
|
1319
|
+
@returns {Object} this
|
|
1320
|
+
*/
|
|
1321
|
+
setPathIfChanged: function(path, value) {
|
|
1322
|
+
if (path.indexOf('.') >= 0) {
|
|
1323
|
+
var tuple = SC.tupleForPropertyPath(path, this) ;
|
|
1324
|
+
if (!tuple || !tuple[0]) return null ;
|
|
1325
|
+
if (tuple[0].get(tuple[1]) !== value) {
|
|
1326
|
+
tuple[0].set(tuple[1], value) ;
|
|
1327
|
+
}
|
|
1328
|
+
} else this.setIfChanged(path, value) ; // shortcut
|
|
1329
|
+
return this;
|
|
1330
|
+
},
|
|
1331
|
+
|
|
1332
|
+
/**
|
|
1333
|
+
Convenience method to get an array of properties.
|
|
1334
|
+
|
|
1335
|
+
Pass in multiple property keys or an array of property keys. This
|
|
1336
|
+
method uses getPath() so you can also pass key paths.
|
|
1337
|
+
|
|
1338
|
+
@returns {Array} Values of property keys.
|
|
1339
|
+
*/
|
|
1340
|
+
getEach: function() {
|
|
1341
|
+
var keys = SC.A(arguments),
|
|
1342
|
+
ret = [], idx, idxLen;
|
|
1343
|
+
for(idx=0, idxLen = keys.length; idx < idxLen;idx++) {
|
|
1344
|
+
ret[ret.length] = this.getPath(keys[idx]);
|
|
1207
1345
|
}
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
},
|
|
1211
|
-
|
|
1212
|
-
/**
|
|
1213
|
-
Convenience method to get an array of properties.
|
|
1214
|
-
|
|
1215
|
-
Pass in multiple property keys or an array of property keys. This
|
|
1216
|
-
method uses getPath() so you can also pass key paths.
|
|
1217
|
-
|
|
1218
|
-
@returns {Array} Values of property keys.
|
|
1219
|
-
*/
|
|
1220
|
-
getEach: function() {
|
|
1221
|
-
var keys = SC.A(arguments),
|
|
1222
|
-
ret = [], idx, idxLen;
|
|
1223
|
-
for(idx=0, idxLen = keys.length; idx < idxLen;idx++) {
|
|
1224
|
-
ret[ret.length] = this.getPath(keys[idx]);
|
|
1225
|
-
}
|
|
1226
|
-
return ret ;
|
|
1227
|
-
},
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
/**
|
|
1231
|
-
Increments the value of a property.
|
|
1232
|
-
|
|
1233
|
-
@param key {String} property name
|
|
1234
|
-
@param increment {Number} the amount to increment (optional)
|
|
1235
|
-
@returns {Number} new value of property
|
|
1236
|
-
*/
|
|
1237
|
-
incrementProperty: function(key,increment) {
|
|
1238
|
-
if (!increment) increment = 1;
|
|
1239
|
-
this.set(key,(this.get(key) || 0)+increment);
|
|
1240
|
-
return this.get(key) ;
|
|
1241
|
-
},
|
|
1346
|
+
return ret ;
|
|
1347
|
+
},
|
|
1242
1348
|
|
|
1243
|
-
/**
|
|
1244
|
-
Decrements the value of a property.
|
|
1245
|
-
|
|
1246
|
-
@param key {String} property name
|
|
1247
|
-
@param increment {Number} the amount to decrement (optional)
|
|
1248
|
-
@returns {Number} new value of property
|
|
1249
|
-
*/
|
|
1250
|
-
decrementProperty: function(key,increment) {
|
|
1251
|
-
if (!increment) increment = 1;
|
|
1252
|
-
this.set(key,(this.get(key) || 0) - increment) ;
|
|
1253
|
-
return this.get(key) ;
|
|
1254
|
-
},
|
|
1255
1349
|
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
@param key {String} property name
|
|
1260
|
-
@param value {Object} optional parameter for "true" value
|
|
1261
|
-
@param alt {Object} optional parameter for "false" value
|
|
1262
|
-
@returns {Object} new value
|
|
1263
|
-
*/
|
|
1264
|
-
toggleProperty: function(key,value,alt) {
|
|
1265
|
-
if (value === undefined) value = true ;
|
|
1266
|
-
if (alt === undefined) alt = false ;
|
|
1267
|
-
value = (this.get(key) == value) ? alt : value ;
|
|
1268
|
-
this.set(key,value);
|
|
1269
|
-
return this.get(key) ;
|
|
1270
|
-
},
|
|
1350
|
+
/**
|
|
1351
|
+
Increments the value of a property.
|
|
1271
1352
|
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
@param value {Object} The new value of the key. May be null.
|
|
1282
|
-
@returns {SC.Observable}
|
|
1283
|
-
*/
|
|
1284
|
-
notifyPropertyChange: function(key, value) {
|
|
1285
|
-
this.propertyWillChange(key) ;
|
|
1286
|
-
this.propertyDidChange(key, value) ;
|
|
1287
|
-
return this;
|
|
1288
|
-
},
|
|
1289
|
-
|
|
1290
|
-
/**
|
|
1291
|
-
Notifies all of observers of a property changes.
|
|
1292
|
-
|
|
1293
|
-
Sometimes when you make a major update to your object, it is cheaper to
|
|
1294
|
-
simply notify all observers that their property might have changed than
|
|
1295
|
-
to figure out specifically which properties actually did change.
|
|
1296
|
-
|
|
1297
|
-
In those cases, you can simply call this method to notify all property
|
|
1298
|
-
observers immediately. Note that this ignores property groups.
|
|
1299
|
-
|
|
1300
|
-
@returns {SC.Observable}
|
|
1301
|
-
*/
|
|
1302
|
-
allPropertiesDidChange: function() {
|
|
1303
|
-
this._kvo_cache = null; //clear cached props
|
|
1304
|
-
this._notifyPropertyObservers('*') ;
|
|
1305
|
-
return this ;
|
|
1306
|
-
},
|
|
1353
|
+
@param {String} key property name
|
|
1354
|
+
@param {Number} increment the amount to increment (optional)
|
|
1355
|
+
@returns {Number} new value of property
|
|
1356
|
+
*/
|
|
1357
|
+
incrementProperty: function(key,increment) {
|
|
1358
|
+
if (!increment) increment = 1;
|
|
1359
|
+
this.set(key,(this.get(key) || 0)+increment);
|
|
1360
|
+
return this.get(key) ;
|
|
1361
|
+
},
|
|
1307
1362
|
|
|
1308
|
-
|
|
1309
|
-
|
|
1363
|
+
/**
|
|
1364
|
+
Decrements the value of a property.
|
|
1365
|
+
|
|
1366
|
+
@param {String} key property name
|
|
1367
|
+
@param {Number} increment the amount to decrement (optional)
|
|
1368
|
+
@returns {Number} new value of property
|
|
1369
|
+
*/
|
|
1370
|
+
decrementProperty: function(key,increment) {
|
|
1371
|
+
if (!increment) increment = 1;
|
|
1372
|
+
this.set(key,(this.get(key) || 0) - increment) ;
|
|
1373
|
+
return this.get(key) ;
|
|
1374
|
+
},
|
|
1310
1375
|
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1376
|
+
/**
|
|
1377
|
+
Inverts a property. Property should be a bool.
|
|
1378
|
+
|
|
1379
|
+
@param {String} key property name
|
|
1380
|
+
@param {Object} value optional parameter for "true" value
|
|
1381
|
+
@param {Object} alt optional parameter for "false" value
|
|
1382
|
+
@returns {Object} new value
|
|
1383
|
+
*/
|
|
1384
|
+
toggleProperty: function(key,value,alt) {
|
|
1385
|
+
if (value === undefined) value = true ;
|
|
1386
|
+
if (alt === undefined) alt = false ;
|
|
1387
|
+
value = (this.get(key) == value) ? alt : value ;
|
|
1388
|
+
this.set(key,value);
|
|
1389
|
+
return this.get(key) ;
|
|
1390
|
+
},
|
|
1324
1391
|
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1392
|
+
/**
|
|
1393
|
+
Convenience method to call propertyWillChange/propertyDidChange.
|
|
1394
|
+
|
|
1395
|
+
Sometimes you need to notify observers that a property has changed value
|
|
1396
|
+
without actually changing this value. In those cases, you can use this
|
|
1397
|
+
method as a convenience instead of calling propertyWillChange() and
|
|
1398
|
+
propertyDidChange().
|
|
1399
|
+
|
|
1400
|
+
@param {String} key The property key that has just changed.
|
|
1401
|
+
@param {Object} value The new value of the key. May be null.
|
|
1402
|
+
@returns {SC.Observable}
|
|
1403
|
+
*/
|
|
1404
|
+
notifyPropertyChange: function(key, value) {
|
|
1405
|
+
this.propertyWillChange(key) ;
|
|
1406
|
+
this.propertyDidChange(key, value) ;
|
|
1407
|
+
return this;
|
|
1408
|
+
},
|
|
1328
1409
|
|
|
1329
|
-
/**
|
|
1330
|
-
|
|
1331
|
-
console.log("CHANGE: %@[%@] => %@".fmt(target, key, target.get(key)));
|
|
1332
|
-
};
|
|
1410
|
+
/**
|
|
1411
|
+
Notifies observers of all possible property changes.
|
|
1333
1412
|
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1413
|
+
Sometimes when you make a major update to your object, it is cheaper to
|
|
1414
|
+
simply notify all observers that their property might have changed than
|
|
1415
|
+
to figure out specifically which properties actually did change.
|
|
1337
1416
|
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
SC.
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1417
|
+
In those cases, you can simply call this method to notify all property
|
|
1418
|
+
observers immediately. Note that this ignores property groups.
|
|
1419
|
+
|
|
1420
|
+
@returns {SC.Observable}
|
|
1421
|
+
*/
|
|
1422
|
+
allPropertiesDidChange: function() {
|
|
1423
|
+
this._kvo_cache = null; //clear cached props
|
|
1424
|
+
this._notifyPropertyObservers('*') ;
|
|
1425
|
+
return this ;
|
|
1426
|
+
},
|
|
1427
|
+
|
|
1428
|
+
/**
|
|
1429
|
+
Allows you to inspect a property for changes. Whenever the named property
|
|
1430
|
+
changes, a log will be printed to the console. This (along with removeProbe)
|
|
1431
|
+
are convenience methods meant for debugging purposes.
|
|
1432
|
+
|
|
1433
|
+
@param {String} key The name of the property you want probed for changes
|
|
1434
|
+
*/
|
|
1435
|
+
addProbe: function(key) { this.addObserver(key,SC.logChange); },
|
|
1436
|
+
|
|
1437
|
+
/**
|
|
1438
|
+
Stops a running probe from observing changes to the observer.
|
|
1439
|
+
|
|
1440
|
+
@param {String} key The name of the property you want probed for changes
|
|
1441
|
+
*/
|
|
1442
|
+
removeProbe: function(key) { this.removeObserver(key,SC.logChange); },
|
|
1443
|
+
|
|
1444
|
+
/**
|
|
1445
|
+
Logs the named properties to the SC.Logger.
|
|
1446
|
+
|
|
1447
|
+
@param {String...} propertyNames one or more property names
|
|
1448
|
+
*/
|
|
1449
|
+
logProperty: function() {
|
|
1450
|
+
var props = SC.$A(arguments),
|
|
1451
|
+
prop, propsLen, idx;
|
|
1452
|
+
for(idx=0, propsLen = props.length; idx<propsLen; idx++) {
|
|
1453
|
+
prop = props[idx] ;
|
|
1454
|
+
SC.Logger.log('%@:%@: '.fmt(SC.guidFor(this), prop), this.get(prop)) ;
|
|
1455
|
+
}
|
|
1456
|
+
},
|
|
1457
|
+
|
|
1458
|
+
propertyRevision: 1
|
|
1459
|
+
|
|
1460
|
+
} ;
|
|
1461
|
+
|
|
1462
|
+
/** @private used by addProbe/removeProbe */
|
|
1463
|
+
SC.logChange = function logChange(target, key, value) {
|
|
1464
|
+
SC.Logger.log("CHANGE: %@[%@] => %@".fmt(target, key, target.get(key)));
|
|
1465
|
+
};
|
|
1466
|
+
|
|
1467
|
+
/**
|
|
1468
|
+
Retrieves a property from an object, using get() if the
|
|
1469
|
+
object implements SC.Observable.
|
|
1470
|
+
|
|
1471
|
+
@param {Object} object the object to query
|
|
1472
|
+
@param {String} key the property to retrieve
|
|
1473
|
+
*/
|
|
1474
|
+
SC.mixin(SC, {
|
|
1475
|
+
get: function(object, key) {
|
|
1476
|
+
if (!object) return undefined;
|
|
1477
|
+
if (key === undefined) return this[object];
|
|
1478
|
+
if (object.get) return object.get(key);
|
|
1479
|
+
return object[key];
|
|
1480
|
+
},
|
|
1481
|
+
|
|
1482
|
+
/**
|
|
1483
|
+
Retrieves a property from an object at a specified path, using get() if
|
|
1484
|
+
the object implements SC.Observable.
|
|
1485
|
+
|
|
1486
|
+
@param {Object} object the object to query
|
|
1487
|
+
@param {String} path the path to the property to retrieve
|
|
1488
|
+
*/
|
|
1489
|
+
getPath: function(object, path) {
|
|
1490
|
+
if (path === undefined) {
|
|
1491
|
+
path = object;
|
|
1492
|
+
object = window;
|
|
1493
|
+
}
|
|
1494
|
+
return SC.objectForPropertyPath(path, object);
|
|
1495
|
+
}
|
|
1496
|
+
});
|
|
1497
|
+
|
|
1498
|
+
// Make all Array's observable
|
|
1499
|
+
SC.mixin(Array.prototype, SC.Observable) ;
|