sproutit-sproutcore 1.0.0.20090407205609 → 1.0.0.20090408130025
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/frameworks/sproutcore/Buildfile +63 -0
- data/frameworks/sproutcore/HISTORY +682 -0
- data/frameworks/sproutcore/README +22 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +149 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/core.js +16 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +17 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +99 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/main.js +27 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +21 -0
- data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +209 -0
- data/frameworks/sproutcore/apps/sc_qunit/core.js +16 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +17 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +107 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/sc_qunit/main.js +18 -0
- data/frameworks/sproutcore/apps/sc_qunit/models/test.js +24 -0
- data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +52 -0
- data/frameworks/sproutcore/apps/tests/controllers/targets.js +47 -0
- data/frameworks/sproutcore/apps/tests/controllers/test.js +20 -0
- data/frameworks/sproutcore/apps/tests/controllers/tests.js +38 -0
- data/frameworks/sproutcore/apps/tests/core.js +35 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/loading.rhtml +9 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +19 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +86 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +17 -0
- data/frameworks/sproutcore/apps/tests/fixtures/target.js +43 -0
- data/frameworks/sproutcore/apps/tests/fixtures/test.js +43 -0
- data/frameworks/sproutcore/apps/tests/main.js +39 -0
- data/frameworks/sproutcore/apps/tests/models/target.js +49 -0
- data/frameworks/sproutcore/apps/tests/models/test.js +20 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/test.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/models/target.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/models/test.js +15 -0
- data/frameworks/sproutcore/apps/welcome/core.js +23 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/loading.rhtml +8 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/main_page.js +43 -0
- data/frameworks/sproutcore/apps/welcome/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/welcome/main.js +36 -0
- data/frameworks/sproutcore/design/Design Charts.graffle +15819 -0
- data/frameworks/sproutcore/design/Record State Table.numbers +0 -0
- data/frameworks/sproutcore/frameworks/datastore/core.js +14 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +113 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +256 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +196 -0
- data/frameworks/sproutcore/frameworks/datastore/debug/json.js +71 -0
- data/frameworks/sproutcore/frameworks/datastore/debug/standard_setup.js +96 -0
- data/frameworks/sproutcore/frameworks/datastore/fixtures/author_fixtures.js +2503 -0
- data/frameworks/sproutcore/frameworks/datastore/fixtures/sample.js +17 -0
- data/frameworks/sproutcore/frameworks/datastore/models/fetched_attribute.js +92 -0
- data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +38 -0
- data/frameworks/sproutcore/frameworks/datastore/models/record.js +430 -0
- data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +361 -0
- data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +305 -0
- data/frameworks/sproutcore/frameworks/datastore/system/query.js +128 -0
- data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +149 -0
- data/frameworks/sproutcore/frameworks/datastore/system/store.js +1689 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +86 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/contact_model.js +114 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/mail_model.js +91 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/integration/test_runner_model.js +56 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +73 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/readAttribute.js +48 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +42 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/storeDidChangeProperties.js +138 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/unknownProperty.js +46 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/writeAttribute.js +71 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +115 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/chain.js +40 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +116 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +135 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +110 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +99 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +180 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +163 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +166 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +175 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +54 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +127 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +57 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +78 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +247 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +106 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/init.js +21 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +61 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/readEditableDataHash.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +74 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/removeDataHash.js +144 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +137 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/writeDataHash.js +130 -0
- data/frameworks/sproutcore/frameworks/debug/core.js +1 -0
- data/frameworks/sproutcore/frameworks/deprecated/core.js +61 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/button_views.rb +330 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/collection_view.rb +83 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/core_views.rb +326 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/form_views.rb +253 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/index.rhtml +75 -0
- data/frameworks/sproutcore/frameworks/deprecated/lib/menu_views.rb +93 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/rails_server.js +80 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/rest_server.js +178 -0
- data/frameworks/sproutcore/frameworks/deprecated/server/server.js +674 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/animator.js +679 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/binding.js +36 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +77 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +314 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/event.js +60 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/globals.js +20 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +60 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/node_descriptor.js +72 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/object.js +124 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +433 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/string.js +109 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/application/application.rhtml +125 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/clippingFrame.rhtml +401 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/frame.rhtml +357 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/classic_view/isVisibleInWindow.rhtml +147 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/base.rhtml +298 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/incremental_rendering.rhtml +260 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/collection/source_list_rendering.rhtml +143 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/popup_button.rhtml +128 -0
- data/frameworks/sproutcore/frameworks/deprecated/tests/views/text_field.rhtml +37 -0
- data/frameworks/sproutcore/frameworks/deprecated/views/collection.js +24 -0
- data/frameworks/sproutcore/frameworks/designer/coders/design.js +30 -0
- data/frameworks/sproutcore/frameworks/designer/coders/localization.js +28 -0
- data/frameworks/sproutcore/frameworks/designer/coders/object.js +347 -0
- data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +102 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_rule.js +22 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_style.js +29 -0
- data/frameworks/sproutcore/frameworks/designer/css/css_style_sheet.js +201 -0
- data/frameworks/sproutcore/frameworks/designer/ext/page.js +88 -0
- data/frameworks/sproutcore/frameworks/designer/ext/view.js +40 -0
- data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +18 -0
- data/frameworks/sproutcore/frameworks/designer/views/designer.js +553 -0
- data/frameworks/sproutcore/frameworks/designer/views/label.js +17 -0
- data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +13 -0
- data/frameworks/sproutcore/frameworks/designer/views/tab.js +17 -0
- data/frameworks/sproutcore/frameworks/desktop/core.js +6 -0
- data/frameworks/sproutcore/frameworks/desktop/debug/drag.js +41 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +56 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/a_sample_image.jpg +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/apple-logo1.jpeg +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/debug/iframe.html +23 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/disclosure.css +71 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +943 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_222222.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_454545.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_888888.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/mini_ffffff.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/icons/shared.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/indicator.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-x.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/panels/sprite-y.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sc-theme-sprite.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/000000.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/standard_fade/ffffff.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/sticky-note.png +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +156 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +83 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +99 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +3 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +94 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/picker.css +39 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/progress.css +31 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/radio.css +10 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/scroller.css +26 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/segmented.css +141 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/separator.css +19 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +57 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split.css +70 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +8 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/strings.js +14 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +12 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/text_field.css +29 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/toolbar.css +6 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/border.js +53 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_group.js +22 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_item.js +22 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +226 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +247 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +377 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +504 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/modal.js +68 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +63 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +184 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +402 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +46 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +39 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +81 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +175 -0
- data/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +280 -0
- data/frameworks/sproutcore/frameworks/desktop/system/drag.js +721 -0
- data/frameworks/sproutcore/frameworks/desktop/system/key_bindings.js +40 -0
- data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +641 -0
- data/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +187 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +43 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +152 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +57 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +36 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +40 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +80 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +38 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/methods.js +45 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +140 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +145 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +99 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +39 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +64 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/grid/ui.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +110 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +255 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +44 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +128 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +240 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +113 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +202 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/methods.js +139 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +111 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +63 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/ui.js +70 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +94 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +206 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +81 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +85 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +37 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/source_list/ui.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +50 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +52 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +54 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +88 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/text_field/methods.js +76 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/text_field/ui.js +198 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/web/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +110 -0
- data/frameworks/sproutcore/frameworks/desktop/views/button.js +320 -0
- data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +98 -0
- data/frameworks/sproutcore/frameworks/desktop/views/collection.js +2141 -0
- data/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +44 -0
- data/frameworks/sproutcore/frameworks/desktop/views/form.js +595 -0
- data/frameworks/sproutcore/frameworks/desktop/views/grid.js +199 -0
- data/frameworks/sproutcore/frameworks/desktop/views/list.js +706 -0
- data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +523 -0
- data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +437 -0
- data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +62 -0
- data/frameworks/sproutcore/frameworks/desktop/views/progress.js +207 -0
- data/frameworks/sproutcore/frameworks/desktop/views/radio.js +332 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scene.js +56 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +648 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +203 -0
- data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +509 -0
- data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +292 -0
- data/frameworks/sproutcore/frameworks/desktop/views/separator.js +37 -0
- data/frameworks/sproutcore/frameworks/desktop/views/slider.js +178 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +1117 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +169 -0
- data/frameworks/sproutcore/frameworks/desktop/views/split.js +651 -0
- data/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +55 -0
- data/frameworks/sproutcore/frameworks/desktop/views/tab.js +190 -0
- data/frameworks/sproutcore/frameworks/desktop/views/text_field.js +233 -0
- data/frameworks/sproutcore/frameworks/desktop/views/thumb.js +49 -0
- data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +49 -0
- data/frameworks/sproutcore/frameworks/desktop/views/web.js +86 -0
- data/frameworks/sproutcore/frameworks/foundation/TESTING +46 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +490 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +317 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +421 -0
- data/frameworks/sproutcore/frameworks/foundation/core.js +111 -0
- data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +172 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +53 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +55 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +5 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +8 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/static_layout.css +5 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +40 -0
- data/frameworks/sproutcore/frameworks/foundation/ext/object.js +81 -0
- data/frameworks/sproutcore/frameworks/foundation/ext/run_loop.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/fixtures/file_exists.json +1 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +291 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/content_display.js +88 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +352 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +146 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +156 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +154 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +101 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +237 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +176 -0
- data/frameworks/sproutcore/frameworks/foundation/panes/main.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +555 -0
- data/frameworks/sproutcore/frameworks/foundation/protocols/inline_editor_delegate.js +84 -0
- data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +244 -0
- data/frameworks/sproutcore/frameworks/foundation/system/browser.js +64 -0
- data/frameworks/sproutcore/frameworks/foundation/system/builder.js +210 -0
- data/frameworks/sproutcore/frameworks/foundation/system/core_query.js +2015 -0
- data/frameworks/sproutcore/frameworks/foundation/system/cursor.js +129 -0
- data/frameworks/sproutcore/frameworks/foundation/system/error.js +93 -0
- data/frameworks/sproutcore/frameworks/foundation/system/event.js +817 -0
- data/frameworks/sproutcore/frameworks/foundation/system/image_cache.js +433 -0
- data/frameworks/sproutcore/frameworks/foundation/system/json.js +440 -0
- data/frameworks/sproutcore/frameworks/foundation/system/locale.js +288 -0
- data/frameworks/sproutcore/frameworks/foundation/system/page.js +106 -0
- data/frameworks/sproutcore/frameworks/foundation/system/ready.js +189 -0
- data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +865 -0
- data/frameworks/sproutcore/frameworks/foundation/system/request.js +255 -0
- data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +368 -0
- data/frameworks/sproutcore/frameworks/foundation/system/routes.js +446 -0
- data/frameworks/sproutcore/frameworks/foundation/system/time.js +478 -0
- data/frameworks/sproutcore/frameworks/foundation/system/timer.js +549 -0
- data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/system/utils.js +330 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +118 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +268 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +433 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/debug/control_test_pane/ui.js +113 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +113 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/content.js +195 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/displayProperties.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/content.js +168 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/control/displayProperties.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/builder.js +42 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_core.js +1323 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_dimensions.js +387 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +405 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/setClass.js +49 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/within.js +66 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/error.js +41 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/json.js +14 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/locale.js +128 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/begin.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/element.js +44 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/end.js +119 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +51 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +50 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +28 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +179 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +100 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/init.js +55 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/join.js +28 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/push_text.js +74 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/tag.js +45 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/update.js +205 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeKeyPane.js +124 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/makeMainPane.js +68 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +97 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/targetForAction.js +238 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/routes.js +33 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invalidate.js +38 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/invokeLater.js +201 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/isPaused.js +71 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/performAction.js +67 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +170 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +27 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/normalizeURL.js +18 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/utils/range.js +62 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/credit_card.js +35 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +21 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/number.js +47 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/password.js +13 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +83 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +39 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/main_pane.js +31 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +89 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/firstResponder.js +148 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/keyPane.js +133 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/sendEvent.js +165 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +132 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +246 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +87 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createLayer.js +97 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/destroyLayer.js +85 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +52 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/init.js +50 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/insertBefore.js +200 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +102 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layer.js +150 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutChildViews.js +162 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutDidChange.js +127 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +248 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/parentViewDidChange.js +67 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +166 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/removeChild.js +189 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/render.js +83 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/replaceChild.js +29 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +142 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayerLocation.js +194 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/viewDidResize.js +185 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +125 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/date.js +52 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/email.js +45 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/not_empty.js +33 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/number.js +82 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/password.js +86 -0
- data/frameworks/sproutcore/frameworks/foundation/validators/validator.js +311 -0
- data/frameworks/sproutcore/frameworks/foundation/views/container.js +136 -0
- data/frameworks/sproutcore/frameworks/foundation/views/field.js +276 -0
- data/frameworks/sproutcore/frameworks/foundation/views/image.js +158 -0
- data/frameworks/sproutcore/frameworks/foundation/views/label.js +261 -0
- data/frameworks/sproutcore/frameworks/foundation/views/view.js +2160 -0
- data/frameworks/sproutcore/frameworks/mobile/english.lproj/core.css +12 -0
- data/frameworks/sproutcore/frameworks/mobile/lib/index.rhtml +126 -0
- data/frameworks/sproutcore/frameworks/mobile/system/root_responder.js +109 -0
- data/frameworks/sproutcore/frameworks/mobile/tests/views/button/ui.js +9 -0
- data/frameworks/sproutcore/frameworks/mobile/views/button.js +190 -0
- data/frameworks/sproutcore/frameworks/runtime/README +11 -0
- data/frameworks/sproutcore/frameworks/runtime/core.js +777 -0
- data/frameworks/sproutcore/frameworks/runtime/license.js +28 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +403 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +70 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1193 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1149 -0
- data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +135 -0
- data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +108 -0
- data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +128 -0
- data/frameworks/sproutcore/frameworks/runtime/protocols/sparse_array_delegate.js +131 -0
- data/frameworks/sproutcore/frameworks/runtime/system/binding.js +891 -0
- data/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +107 -0
- data/frameworks/sproutcore/frameworks/runtime/system/object.js +783 -0
- data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +99 -0
- data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +214 -0
- data/frameworks/sproutcore/frameworks/runtime/system/set.js +246 -0
- data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +286 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/IsEqual.js +56 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/beget.js +23 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +66 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +147 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/inspect.js +27 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/isArray.js +25 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/itemType.js +38 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/keys.js +20 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +30 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +19 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/tupleForPropertyPath.js +37 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +592 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +467 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +123 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/registerDependentKeys.js +79 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/propertyChanges.js +80 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +263 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +190 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/object/base.js +135 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/object/bindings.js +339 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +120 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +313 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +84 -0
- data/frameworks/sproutcore/frameworks/testing/core.js +13 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/additions.css +8 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/testsuite.css +131 -0
- data/frameworks/sproutcore/frameworks/testing/extras.js +43 -0
- data/frameworks/sproutcore/frameworks/testing/jquery.js +3559 -0
- data/frameworks/sproutcore/frameworks/testing/qunit.js +819 -0
- data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +25 -0
- data/frameworks/sproutcore/frameworks/testing/utils.js +55 -0
- data/frameworks/sproutcore/lib/index.rhtml +118 -0
- data/frameworks/sproutcore/license.js +28 -0
- data/frameworks/sproutcore/themes/empty_theme/tests/mini_icons.rhtml +69 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/button.css +41 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +8 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/backButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/blueButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/cancel.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/grayButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/leftButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrow.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listArrowSel.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/listGroup.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/loading.gif +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/pinstripes.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/rightButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/selection.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/thumb.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggle.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toggleOn.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/toolbar.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/images/whiteButton.png +0 -0
- data/frameworks/sproutcore/themes/iphone_theme/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/Panel.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/ToolbarView Pattern.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-x.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/Data +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Preview.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/panel-sprite-y.drawit/QuickLook/Thumbnail.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +333 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +90 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +53 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +47 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/disclosure.css +55 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-sprite.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-ysprite.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-toolbar-view.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +37 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/pane.css +8 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-fat.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/background-thin.jpg +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-left-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/bottom-right-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/left-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/overlay.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/right-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-edge.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-left-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/panels/top-right-corner.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +23 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +113 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +141 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +62 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/split_view.css +27 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +12 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +13 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -0
- data/lib/thor/.autotest +7 -0
- data/lib/thor/CHANGELOG.rdoc +52 -0
- data/lib/thor/LICENSE +20 -0
- data/lib/thor/README.markdown +76 -0
- data/lib/thor/Rakefile +6 -0
- data/lib/thor/Thorfile +45 -0
- data/lib/thor/bin/rake2thor +83 -0
- data/lib/thor/bin/thor +7 -0
- data/lib/thor/lib/thor/error.rb +3 -0
- data/lib/thor/lib/thor/options.rb +267 -0
- data/lib/thor/lib/thor/ordered_hash.rb +64 -0
- data/lib/thor/lib/thor/runner.rb +305 -0
- data/lib/thor/lib/thor/task.rb +83 -0
- data/lib/thor/lib/thor/task_hash.rb +22 -0
- data/lib/thor/lib/thor/tasks/package.rb +18 -0
- data/lib/thor/lib/thor/tasks.rb +77 -0
- data/lib/thor/lib/thor/util.rb +75 -0
- data/lib/thor/lib/thor.rb +170 -0
- data/lib/thor/script/destroy +14 -0
- data/lib/thor/script/generate +14 -0
- data/lib/thor/spec/fixtures/task.thor +10 -0
- data/lib/thor/spec/options_spec.rb +271 -0
- data/lib/thor/spec/ordered_hash_spec.rb +84 -0
- data/lib/thor/spec/spec.opts +1 -0
- data/lib/thor/spec/spec_helper.rb +30 -0
- data/lib/thor/spec/task_spec.rb +11 -0
- data/lib/thor/spec/tasks_spec.rb +28 -0
- data/lib/thor/spec/thor_runner_spec.rb +194 -0
- data/lib/thor/spec/thor_spec.rb +206 -0
- data/lib/thor/spec/util_spec.rb +99 -0
- data/lib/thor/task.thor +15 -0
- data/lib/thor/thor.gemspec +29 -0
- metadata +3 -4
- data/sproutcore.gemspec +0 -47
@@ -0,0 +1,46 @@
|
|
1
|
+
SproutCore Unit Testing
|
2
|
+
|
3
|
+
ABOUT UNIT TESTS
|
4
|
+
|
5
|
+
Unit tests are divided into two types of tests: API unit tests and integration
|
6
|
+
tests. API unit tests test each public method and property to ensure that the method behaves correctly according to its documentation. Integration tests
|
7
|
+
spot check the way various API methods are used together to ensure they
|
8
|
+
function correctly in usage scenarios.
|
9
|
+
|
10
|
+
Most unit tests found in the SproutCore framework are API unit tests.
|
11
|
+
Typically the testing directory for a framework will contain a folder
|
12
|
+
structure matching the framework source. Within those folders will be one
|
13
|
+
folder per source class file. Within that folder will be one test file per
|
14
|
+
method (or groups of methods of the methods are very closely related).
|
15
|
+
|
16
|
+
Integration tests, on the other hand, are all kept in the tests/integration
|
17
|
+
folder. Each file is named for the general type of integration scenarios
|
18
|
+
tested, but the structure and naming of this directory is less rigid.
|
19
|
+
|
20
|
+
WHERE TO ADD NEW UNIT TESTS
|
21
|
+
|
22
|
+
If you find a bug and reduce the problem down to a particular API method that
|
23
|
+
is not responding in the way you might expect, then the best place to add a
|
24
|
+
test for this is in the API unit tests. This will effectively make your unit
|
25
|
+
test part of the API "specification" that must be satisified for all future
|
26
|
+
releases.
|
27
|
+
|
28
|
+
Often times, however, you will find bugs that are not due to a particular
|
29
|
+
method behaving badly but is due to a problem that occurs when you use a
|
30
|
+
series of API methods together in a certain way. For these kinds of tests
|
31
|
+
you should add a test to the integration directory. If one of the existing
|
32
|
+
files makes sense for your scenario, add it there. Otherwise, create a new
|
33
|
+
test file and add it there.
|
34
|
+
|
35
|
+
HOW TO WRITE API UNIT TESTS VS INTEGRATION
|
36
|
+
|
37
|
+
The purpose of an API unit test is to excercise individual methods in the API
|
38
|
+
in isolation of the rest of the API. You should swap out methods, mock objects, or make any other temporary modifications to the framework needed to
|
39
|
+
make the method run as isolated as possible from other methods.
|
40
|
+
|
41
|
+
Integration tests, on the other hand, are about testing API usage in place.
|
42
|
+
Avoid mocking parts of the framework unless necessary. Try to run the
|
43
|
+
framework code in its natural state to ensure the full stack is excercised
|
44
|
+
just as it would be in production code.
|
45
|
+
|
46
|
+
|
@@ -0,0 +1,490 @@
|
|
1
|
+
// ========================================================================
|
2
|
+
// SproutCore -- JavaScript Application Framework
|
3
|
+
// Copyright ©2006-2008, Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions copyright ©2008 Apple, Inc. All rights reserved.
|
5
|
+
// ========================================================================
|
6
|
+
|
7
|
+
require('controllers/controller');
|
8
|
+
require('mixins/selection_support');
|
9
|
+
|
10
|
+
/**
|
11
|
+
@class
|
12
|
+
|
13
|
+
An Array Controller provides a way to project the contents of an array
|
14
|
+
out to a view. You can use this object any place you might use an
|
15
|
+
array. Changes to the array will not propogate to the content array
|
16
|
+
until you call commitChanges().
|
17
|
+
|
18
|
+
@extends SC.Controller
|
19
|
+
@extends SC.Array
|
20
|
+
@extends SC.SelectionSupport
|
21
|
+
@author Charles Jolley
|
22
|
+
@author Erich Ocean
|
23
|
+
@version 1.0
|
24
|
+
@since SproutCore 1.0
|
25
|
+
*/
|
26
|
+
SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
|
27
|
+
/** @scope SC.ArrayController.prototype */ {
|
28
|
+
|
29
|
+
/**
|
30
|
+
If YES the will return controllers for content objects.
|
31
|
+
|
32
|
+
If you want to use an array controller to edit an array contents directly
|
33
|
+
but you do not want to wrap the values of the array in controller objects
|
34
|
+
then you should set this property to NO.
|
35
|
+
|
36
|
+
@type Boolean
|
37
|
+
*/
|
38
|
+
useControllersForContent: NO,
|
39
|
+
|
40
|
+
/**
|
41
|
+
Provides compatibility with collection controllers.
|
42
|
+
|
43
|
+
@property
|
44
|
+
@type SC.ArrayController
|
45
|
+
*/
|
46
|
+
arrangedObjects: function() { return this; }.property('content'),
|
47
|
+
|
48
|
+
/**
|
49
|
+
The content array managed by this controller.
|
50
|
+
|
51
|
+
In general you can treat an instance of ArrayController as if it were
|
52
|
+
the array held in this property. Any changes you make to the controller
|
53
|
+
that are not specifically implemented in the controller will pass through
|
54
|
+
to the Array.
|
55
|
+
|
56
|
+
Also if you set commitsChangesImmediately to NO, the controller will
|
57
|
+
buffer changes against this.
|
58
|
+
|
59
|
+
@type SC.Array
|
60
|
+
*/
|
61
|
+
content: null,
|
62
|
+
|
63
|
+
/** @private */
|
64
|
+
contentBindingDefault: SC.Binding.multiple(),
|
65
|
+
|
66
|
+
/**
|
67
|
+
Set to YES if the controller has any content, even an empty array.
|
68
|
+
|
69
|
+
@property
|
70
|
+
@type Boolean
|
71
|
+
*/
|
72
|
+
hasContent: function() {
|
73
|
+
return !SC.none(this.get('content')) ;
|
74
|
+
}.property('content'),
|
75
|
+
|
76
|
+
/**
|
77
|
+
Property key to use to group objects.
|
78
|
+
|
79
|
+
If groupBy is set to a non-null value, then the array controller will
|
80
|
+
automatically partion the content array into groups based on the value of
|
81
|
+
the passed property key. The exampleGroup will be used to create the
|
82
|
+
objects in the groups array.
|
83
|
+
|
84
|
+
If this property is set, you MUST ensure the items in the content array
|
85
|
+
are already sorted by the group key. Otherwise groups might appear more
|
86
|
+
than once.
|
87
|
+
|
88
|
+
@type String
|
89
|
+
*/
|
90
|
+
groupByKey: null,
|
91
|
+
|
92
|
+
/**
|
93
|
+
When grouping, create objects using this class. SC.ArrayController will
|
94
|
+
set 'value' to the value of the groupByKey, and 'itemRange' to an
|
95
|
+
SC.Range of the item indexes in the group, and 'owner' to this array
|
96
|
+
controller.
|
97
|
+
|
98
|
+
@type Class
|
99
|
+
*/
|
100
|
+
exampleGroup: SC.Object,
|
101
|
+
|
102
|
+
/**
|
103
|
+
The groups, if any, for the current content array.
|
104
|
+
|
105
|
+
@readOnly
|
106
|
+
@property
|
107
|
+
@type SC.Array
|
108
|
+
*/
|
109
|
+
groups: function(key, val) {
|
110
|
+
if (val) throw "The SC.ArrayController groups property is read-only." ;
|
111
|
+
|
112
|
+
var groupByKey = this.get('groupByKey') ;
|
113
|
+
if (!groupByKey) return SC.EMPTY_ARRAY ; // no groups
|
114
|
+
|
115
|
+
var content = this.get('content') ;
|
116
|
+
if (!content || content.get('length') === 0) {
|
117
|
+
return SC.EMPTY_ARRAY ; // no groups...
|
118
|
+
}
|
119
|
+
|
120
|
+
// okay, calculate the groups...
|
121
|
+
var previousGroup, currentGroup, groupStart = 0 ;
|
122
|
+
var obj, groups = [], GroupClass = this.get('exampleGroup') ;
|
123
|
+
|
124
|
+
// initialize the discover groups loop
|
125
|
+
previousGroup = content.objectAt(0).get(groupByKey) ;
|
126
|
+
|
127
|
+
// discover groups...
|
128
|
+
for (var idx=0, len=content.get('length'); idx<len; ++idx) {
|
129
|
+
obj = content.objectAt(idx) ;
|
130
|
+
currentGroup = obj.get(groupByKey) ;
|
131
|
+
|
132
|
+
// did our group change?
|
133
|
+
if (previousGroup !== currentGroup) {
|
134
|
+
// save the current group
|
135
|
+
groups.push(GroupClass.create({
|
136
|
+
value: previousGroup,
|
137
|
+
itemRange: { start: groupStart, length: idx - groupStart },
|
138
|
+
owner: this
|
139
|
+
}));
|
140
|
+
|
141
|
+
// and move on to the next group
|
142
|
+
previousGroup = currentGroup ;
|
143
|
+
groupStart = idx ;
|
144
|
+
}
|
145
|
+
}
|
146
|
+
|
147
|
+
// close the last and final group
|
148
|
+
groups.push(GroupClass.create({
|
149
|
+
value: previousGroup,
|
150
|
+
itemRange: { start: groupStart, length: idx - groupStart },
|
151
|
+
owner: this
|
152
|
+
}));
|
153
|
+
|
154
|
+
return groups ;
|
155
|
+
}.property('content', 'groupByKey').cacheable(),
|
156
|
+
|
157
|
+
/**
|
158
|
+
Set to YES if you want objects removed from the array to also be
|
159
|
+
deleted. This is a convenient way to manage lists of items owned
|
160
|
+
by a parent record object.
|
161
|
+
|
162
|
+
Note that even if this is set to NO, calling destroyObject() instead of
|
163
|
+
removeObject() will still destroy the object in question as well as
|
164
|
+
removing it from the parent array.
|
165
|
+
|
166
|
+
@type {Boolean}
|
167
|
+
*/
|
168
|
+
destroyOnRemoval: NO,
|
169
|
+
|
170
|
+
/**
|
171
|
+
Defines the default class to use when creating new content.
|
172
|
+
|
173
|
+
This property should either contains a class or a string that resolves
|
174
|
+
to a class that responds to the newRecord() method.
|
175
|
+
|
176
|
+
@type {Class}
|
177
|
+
*/
|
178
|
+
exampleContentObject: null,
|
179
|
+
|
180
|
+
/**
|
181
|
+
Creates a new record instance and adds it to the end of the current array.
|
182
|
+
|
183
|
+
This method works just like insertNewObjectAt() but always appends.
|
184
|
+
|
185
|
+
@param attributes {Hash} optional hash of attributes to pass to the new obejct.
|
186
|
+
@param objectType {Class} optional class of object to create.
|
187
|
+
@returns {Object} the newly created object (also added to the array)
|
188
|
+
*/
|
189
|
+
newObject: function(attributes, objectType) {
|
190
|
+
return this.insertNewObjectAt(null, attributes, objectType) ;
|
191
|
+
},
|
192
|
+
|
193
|
+
/**
|
194
|
+
Creates a new content object and inserts it at the passed index or appends
|
195
|
+
it at the end of the array if you pass null.
|
196
|
+
|
197
|
+
This method takes an optional hash of attributes which will be set on
|
198
|
+
the new record. You can also pass an optional objectType. If you do
|
199
|
+
not pass the objectType, you must instead set the exampleContentObject to
|
200
|
+
the class of the object you want to use. The object can be of any type
|
201
|
+
but it must respond to the newRecord() method.
|
202
|
+
|
203
|
+
Objects created using this method will be destroyed automatically if you
|
204
|
+
have set commitsChangesImmediately to false and call discardChanges().
|
205
|
+
|
206
|
+
@param index {Number} the index to insert at or null to append.
|
207
|
+
@param attributes {Hash} optional hash of attributes to pass to the new obejct.
|
208
|
+
@param objectType {Class} optional class of object to create.
|
209
|
+
@returns {Object} the newly created object (also added to the array)
|
210
|
+
*/
|
211
|
+
insertNewObjectAt: function(index, attributes, objectType) {
|
212
|
+
|
213
|
+
// compute the objectType
|
214
|
+
if (!objectType) objectType = this.get('exampleContentObject') ;
|
215
|
+
if (SC.typeOf(objectType) === SC.T_STRING) {
|
216
|
+
objectType = SC.objectForPropertyPath(objectType) ;
|
217
|
+
}
|
218
|
+
if (SC.none(objectType)) {
|
219
|
+
throw "Invalid object type was provided" ;
|
220
|
+
}
|
221
|
+
|
222
|
+
if (SC.typeOf(objectType.newObject) !== SC.T_FUNCTION) {
|
223
|
+
throw "content object type does not support newRecord()" ;
|
224
|
+
}
|
225
|
+
|
226
|
+
// Create a new object...
|
227
|
+
var obj = objectType.newObject(attributes) ;
|
228
|
+
if (!this._createdObjects) this._createdObjects = [] ;
|
229
|
+
this._createdObjects.push(obj) ; // save for discard...
|
230
|
+
|
231
|
+
// Add to array.
|
232
|
+
if (index) {
|
233
|
+
this.insertAt(index, obj) ;
|
234
|
+
} else this.pushObject(obj) ;
|
235
|
+
|
236
|
+
return obj ;
|
237
|
+
},
|
238
|
+
|
239
|
+
/** @private
|
240
|
+
Watches changes to the content property updates the contentClone.
|
241
|
+
|
242
|
+
@observes content
|
243
|
+
*/
|
244
|
+
_contentDidChange: function() {
|
245
|
+
var content = this.get('content') ;
|
246
|
+
if (SC.isEqual(content, this._content)) return ; // nothing to do
|
247
|
+
|
248
|
+
var func = this._contentPropertyDidChange ;
|
249
|
+
|
250
|
+
// remove old observer, add new observer, and trigger content property change
|
251
|
+
if (this._content && this._content.removeObserver) {
|
252
|
+
this._content.removeObserver('[]', this, func) ;
|
253
|
+
}
|
254
|
+
|
255
|
+
if (content && content.addObserver) {
|
256
|
+
content.addObserver('[]', this, func) ;
|
257
|
+
}
|
258
|
+
|
259
|
+
this._content = content; //cache
|
260
|
+
this._contentPropertyRevision = null ;
|
261
|
+
|
262
|
+
var rev = (content) ? content.propertyRevision : -1 ;
|
263
|
+
this._contentPropertyDidChange(content, '[]', content, rev) ;
|
264
|
+
}.observes('content'),
|
265
|
+
|
266
|
+
_contentPropertyDidChange: function(target, key, value, rev) {
|
267
|
+
if (!this._updatingContent && (!rev || (rev != this._contentPropertyRevision))) {
|
268
|
+
this._contentPropertyRevision = rev ;
|
269
|
+
|
270
|
+
this._updatingContent = true ;
|
271
|
+
|
272
|
+
this.beginPropertyChanges();
|
273
|
+
this.contentCloneReset();
|
274
|
+
this.enumerableContentDidChange() ;
|
275
|
+
this.notifyPropertyChange('length') ;
|
276
|
+
this.updateSelectionAfterContentChange();
|
277
|
+
this.endPropertyChanges() ;
|
278
|
+
|
279
|
+
this._updatingContent = false ;
|
280
|
+
}
|
281
|
+
},
|
282
|
+
|
283
|
+
/**
|
284
|
+
The array content that (when committed) will be merged back into the
|
285
|
+
content property. All array methods will take place on this object.
|
286
|
+
|
287
|
+
@property
|
288
|
+
@type SC.Array
|
289
|
+
*/
|
290
|
+
contentClone: null,
|
291
|
+
|
292
|
+
/** @private
|
293
|
+
Clones the content property into the contentClone property.
|
294
|
+
*/
|
295
|
+
contentCloneReset: function() {
|
296
|
+
this._changelog = [];
|
297
|
+
this.set('contentClone', null);
|
298
|
+
},
|
299
|
+
|
300
|
+
/**
|
301
|
+
SC.Array interface implementation.
|
302
|
+
|
303
|
+
@param idx {Number} Starting index in the array to replace. If idx >=
|
304
|
+
length, then append to the end of the array.
|
305
|
+
|
306
|
+
@param amt {Number} Number of elements that should be removed from the
|
307
|
+
array, starting at *idx*.
|
308
|
+
|
309
|
+
@param objects {Array} An array of zero or more objects that should be
|
310
|
+
inserted into the array at *idx*
|
311
|
+
*/
|
312
|
+
replace: function(idx, amt, objects) {
|
313
|
+
var content = this.get('content') ;
|
314
|
+
|
315
|
+
// in case the passed objects are controllers, convert to source objects.
|
316
|
+
var copyIdx = objects.length ;
|
317
|
+
var sourceObjects = objects ;
|
318
|
+
if (copyIdx > 0) {
|
319
|
+
sourceObjects = [] ;
|
320
|
+
while(--copyIdx >= 0) {
|
321
|
+
sourceObjects[copyIdx] = this._sourceObjectFor(objects[copyIdx]) ;
|
322
|
+
}
|
323
|
+
}
|
324
|
+
|
325
|
+
// create clone of content array if needed
|
326
|
+
var contentClone = this.get('contentClone') ;
|
327
|
+
if (!contentClone) {
|
328
|
+
this.set('contentClone', contentClone = SC.$A(content)) ;
|
329
|
+
}
|
330
|
+
|
331
|
+
// now, record the removed objects. This may be used later.
|
332
|
+
if (this.get('destroyOnRemoval')) {
|
333
|
+
if (!this._deletions) this._deletions = [] ;
|
334
|
+
for (var i=0; i < amt; i++) {
|
335
|
+
this._deletions.push(content.objectAt(idx + i));
|
336
|
+
}
|
337
|
+
}
|
338
|
+
|
339
|
+
// and record additions
|
340
|
+
if (!this._changelog) this._changelog = [];
|
341
|
+
this._changelog.push({ idx: idx, amt: amt, objects: sourceObjects });
|
342
|
+
|
343
|
+
// then actually perform the edit on the contentClone
|
344
|
+
contentClone.replace(idx, amt, sourceObjects);
|
345
|
+
|
346
|
+
this.editorDidChange() ;
|
347
|
+
this.enumerableContentDidChange();
|
348
|
+
this.updateSelectionAfterContentChange();
|
349
|
+
|
350
|
+
return this;
|
351
|
+
},
|
352
|
+
|
353
|
+
/**
|
354
|
+
SC.Array interface implimentation.
|
355
|
+
@param idx {Number} The index of the item to return. If idx exceeds the
|
356
|
+
current length, return null.
|
357
|
+
*/
|
358
|
+
objectAt: function(idx) {
|
359
|
+
var obj = this._getSourceContent() ;
|
360
|
+
obj = (obj && obj.objectAt) ? obj.objectAt(idx) : null;
|
361
|
+
return this._objectControllerFor(obj) ;
|
362
|
+
},
|
363
|
+
/**
|
364
|
+
SC.Array interface implimentation.
|
365
|
+
@property
|
366
|
+
@type {integer}
|
367
|
+
*/
|
368
|
+
length: function( key, value ) {
|
369
|
+
var ret = this._getSourceContent() ;
|
370
|
+
return (ret && ret.get) ? (ret.get('length') || 0) : 0 ;
|
371
|
+
}.property(),
|
372
|
+
|
373
|
+
/**
|
374
|
+
Returns the index in the array of the specified object.
|
375
|
+
|
376
|
+
This can handle both controller wrapper objects and source content objects.
|
377
|
+
*/
|
378
|
+
indexOf: function(obj) {
|
379
|
+
return this._getSourceContent().indexOf(this._sourceObjectFor(obj)) ;
|
380
|
+
},
|
381
|
+
|
382
|
+
_getSourceContent: function() {
|
383
|
+
return this.get('contentClone') || this.get('content') || [];
|
384
|
+
},
|
385
|
+
|
386
|
+
/** @private */
|
387
|
+
performCommitChanges: function() {
|
388
|
+
var content = this.get('content');
|
389
|
+
var ret = true;
|
390
|
+
var idx ;
|
391
|
+
|
392
|
+
// cannot commit changes to null content. Return an error.
|
393
|
+
if (!content) {
|
394
|
+
return SC.$error("No Content");
|
395
|
+
}
|
396
|
+
|
397
|
+
if (content.beginPropertyChanges) content.beginPropertyChanges();
|
398
|
+
|
399
|
+
// apply all the changes made to the clone
|
400
|
+
if (this._changelog) {
|
401
|
+
var changelog = this._changelog ;
|
402
|
+
var max = changelog.length;
|
403
|
+
for(idx=0;idx<max;idx++) {
|
404
|
+
var change = changelog[idx];
|
405
|
+
content.replace(change.idx, change.amt, change.objects) ;
|
406
|
+
}
|
407
|
+
this._changelog.length = 0 ; // reset changelog
|
408
|
+
}
|
409
|
+
|
410
|
+
// finally, destroy any removed objects if necessary. Make
|
411
|
+
// sure the objects have not been re-added before doing this.
|
412
|
+
if (this.get('destroyOnRemoval') && this._deletions && this._deletions.length>0) {
|
413
|
+
idx = this._deletions.length;
|
414
|
+
while(--idx >= 0) {
|
415
|
+
var obj = this._deletions[idx] ;
|
416
|
+
if (obj && obj.destroy && (content.indexOf(obj) < 0)) {
|
417
|
+
obj.destroy() ;
|
418
|
+
}
|
419
|
+
}
|
420
|
+
this._deletions.length = 0; // clear array
|
421
|
+
}
|
422
|
+
|
423
|
+
// changes commited, clear any created objects from the internal array
|
424
|
+
if (this._createdObjects) this._createdObjects.length = 0 ;
|
425
|
+
|
426
|
+
// finish commiting changes.
|
427
|
+
if (content.endPropertyChanges) content.endPropertyChanges();
|
428
|
+
if (content.commitChanges) ret = content.commitChanges();
|
429
|
+
|
430
|
+
if (SC.$ok(ret)) {
|
431
|
+
this.contentCloneReset();
|
432
|
+
this.editorDidClearChanges();
|
433
|
+
}
|
434
|
+
|
435
|
+
return ret;
|
436
|
+
},
|
437
|
+
|
438
|
+
/** @private */
|
439
|
+
performDiscardChanges: function() {
|
440
|
+
this.contentCloneReset();
|
441
|
+
this.editorDidClearChanges();
|
442
|
+
|
443
|
+
// if any objects were created before the commit, destroy the objects
|
444
|
+
// and reset the array.
|
445
|
+
if (this._createdObjects && this._createdObjects.length > 0) {
|
446
|
+
var idx = this._createdObjects.length ;
|
447
|
+
while(--idx >= 0) {
|
448
|
+
var obj = this._createdObjects[idx] ;
|
449
|
+
if (SC.typeOf(obj.destroy) === SC.T_FUNCTION) obj.destroy() ;
|
450
|
+
}
|
451
|
+
this._createdObjects.length = 0 ;
|
452
|
+
}
|
453
|
+
|
454
|
+
return true;
|
455
|
+
},
|
456
|
+
|
457
|
+
/** @private
|
458
|
+
Returns the object controller for a source value.
|
459
|
+
*/
|
460
|
+
_objectControllerFor: function(obj) {
|
461
|
+
if (!this.useControllersForContent) return obj;
|
462
|
+
|
463
|
+
var controllers = (this._objControllers = this._objControllers || {}) ;
|
464
|
+
var guid = SC.guidFor(obj) ;
|
465
|
+
var ret = controllers[guid] ;
|
466
|
+
if (!ret) {
|
467
|
+
ret = controllers[guid] = this.controllerForValue(obj) ;
|
468
|
+
if (ret) ret.__isArrayController = true ;
|
469
|
+
}
|
470
|
+
return ret ;
|
471
|
+
},
|
472
|
+
|
473
|
+
/** @private
|
474
|
+
Returns the source object for the passed value. If the passed value is a
|
475
|
+
controller, this will map back to the sourceo object. Otherwise the
|
476
|
+
object itself will be returned.
|
477
|
+
*/
|
478
|
+
_sourceObjectFor: function(obj) {
|
479
|
+
return (obj && obj.kindOf && obj.kindOf(SC.Controller)) ?
|
480
|
+
obj.get('content') :
|
481
|
+
obj ;
|
482
|
+
},
|
483
|
+
|
484
|
+
/** @private */
|
485
|
+
init: function() {
|
486
|
+
sc_super() ;
|
487
|
+
if (this.get('content')) this._contentDidChange() ;
|
488
|
+
}
|
489
|
+
|
490
|
+
});
|