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,421 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
require('controllers/controller') ;
|
9
|
+
|
10
|
+
/** @class
|
11
|
+
|
12
|
+
An ObjectController gives you a simple way to manage the editing state of
|
13
|
+
an object. You can use an ObjectController instance as a "proxy" for your
|
14
|
+
model objects.
|
15
|
+
|
16
|
+
Any properties you get or set on the object controller, will be passed
|
17
|
+
through to its content object. This allows you to setup bindings to your
|
18
|
+
object controller one time for all of your views and then swap out the
|
19
|
+
content as needed.
|
20
|
+
|
21
|
+
h2. Working with Arrays
|
22
|
+
|
23
|
+
An ObjectController can accept both arrays and single objects as content.
|
24
|
+
If the content is an array, the ObjectController will do its best to treat
|
25
|
+
the array as a single object. For example, if you set the content of an
|
26
|
+
ObjectController to an array of Contact records and then call:
|
27
|
+
|
28
|
+
contactController.get('name');
|
29
|
+
|
30
|
+
The controller will check the name property of each Contact in the array.
|
31
|
+
If the value of the property for each Contact is the same, that value will
|
32
|
+
be returned. If the any values are different, then an array will be
|
33
|
+
returned with the values from each Contact in them.
|
34
|
+
|
35
|
+
Most SproutCore views can work with both arrays and single content, which
|
36
|
+
means that most of the time, you can simply hook up your views and this will
|
37
|
+
work.
|
38
|
+
|
39
|
+
If you would prefer to make sure that your ObjectController is always
|
40
|
+
working with a single object and you are using bindings, you can always
|
41
|
+
setup your bindings so that they will convert the content to a single object
|
42
|
+
like so:
|
43
|
+
|
44
|
+
contentBinding: SC.Binding.Single('MyApp.listController.selection') ;
|
45
|
+
|
46
|
+
This will ensure that your content property is always a single object
|
47
|
+
instead of an array.
|
48
|
+
|
49
|
+
@extends SC.Controller
|
50
|
+
*/
|
51
|
+
SC.ObjectController = SC.Controller.extend(
|
52
|
+
/** @scope SC.ObjectController.prototype */ {
|
53
|
+
|
54
|
+
// ...............................
|
55
|
+
// PROPERTIES
|
56
|
+
//
|
57
|
+
|
58
|
+
/**
|
59
|
+
set this to some value and the object controller will project
|
60
|
+
its properties.
|
61
|
+
*/
|
62
|
+
content: null,
|
63
|
+
contentBindingDefault: SC.Binding.multiple(),
|
64
|
+
|
65
|
+
/**
|
66
|
+
This will be set to true if the object currently does not have any
|
67
|
+
content. You might use this to disable any controls attached to the
|
68
|
+
controller.
|
69
|
+
|
70
|
+
@type Boolean
|
71
|
+
*/
|
72
|
+
hasNoContent: true,
|
73
|
+
|
74
|
+
/**
|
75
|
+
This will be set to true if the content is a single object or an array
|
76
|
+
with a single item. You can use this to disabled your UI.
|
77
|
+
|
78
|
+
@type Boolean
|
79
|
+
*/
|
80
|
+
hasSingleContent: false,
|
81
|
+
|
82
|
+
/**
|
83
|
+
This will be set to true if the content is an array with multiple objects
|
84
|
+
in it.
|
85
|
+
|
86
|
+
@type Boolean
|
87
|
+
*/
|
88
|
+
hasMultipleContent: false,
|
89
|
+
|
90
|
+
/**
|
91
|
+
Set to true if the controller has any content, even an empty array.
|
92
|
+
*/
|
93
|
+
hasContent: function() {
|
94
|
+
return this.get('content') ;
|
95
|
+
}.property('content'),
|
96
|
+
|
97
|
+
/**
|
98
|
+
Set this property to true and multiple content will be treated like a null
|
99
|
+
value. This will only impact use of get() and set().
|
100
|
+
|
101
|
+
@type Boolean
|
102
|
+
*/
|
103
|
+
allowsMultipleContent: true,
|
104
|
+
|
105
|
+
/**
|
106
|
+
Override this method to destroy the selected object.
|
107
|
+
|
108
|
+
The default just passes this call onto the content object if it supports
|
109
|
+
it, and then sets the content to null.
|
110
|
+
*/
|
111
|
+
destroy: function() {
|
112
|
+
var content = this.get('content') ;
|
113
|
+
if (content && SC.typeOf(content.destroy) === SC.T_FUNCTION) content.destroy();
|
114
|
+
this.set('content', null) ;
|
115
|
+
},
|
116
|
+
|
117
|
+
// ...............................
|
118
|
+
// INTERNAL SUPPORT
|
119
|
+
//
|
120
|
+
|
121
|
+
/**
|
122
|
+
When this controller commits changes, it will copy its changed values
|
123
|
+
to the content object and then call "commitChanges" on the content
|
124
|
+
object if that object implements the method.
|
125
|
+
*/
|
126
|
+
performCommitChanges: function() {
|
127
|
+
|
128
|
+
var content = this.get('content') ;
|
129
|
+
var ret = true ;
|
130
|
+
var key, loc;
|
131
|
+
|
132
|
+
// empty arrays are treated like null values, arrays.len=1 treated like
|
133
|
+
// single objects.
|
134
|
+
var isArray = false ;
|
135
|
+
if (SC.isArray(content)) {
|
136
|
+
var len = this._lengthFor(content) ;
|
137
|
+
if (len === 0) {
|
138
|
+
content = null ;
|
139
|
+
} else if (len === 1) {
|
140
|
+
content = this._objectAt(0, content) ;
|
141
|
+
} else if (this.get('allowsMultipleContent')) {
|
142
|
+
isArray = true ;
|
143
|
+
} else content = null ;
|
144
|
+
}
|
145
|
+
|
146
|
+
if (!this._changes) this._changes = {} ;
|
147
|
+
|
148
|
+
// cannot commit changes to empty content. Return an error.
|
149
|
+
if (!content) {
|
150
|
+
return SC.$error("No Content") ;
|
151
|
+
|
152
|
+
// if content is an array, then loop through each item in the array and
|
153
|
+
// get the changed values.
|
154
|
+
} else if (isArray) {
|
155
|
+
|
156
|
+
loc = this._lengthFor(content) ;
|
157
|
+
while(--loc >= 0) {
|
158
|
+
var object = this._objectAt(loc, content) ;
|
159
|
+
if (!object) continue ;
|
160
|
+
|
161
|
+
if (object.beginPropertyChanges) object.beginPropertyChanges();
|
162
|
+
|
163
|
+
// loop through all the keys in changes and get the values...
|
164
|
+
for(key in this._changes) {
|
165
|
+
if (!this._changes.hasOwnProperty(key)) continue ;
|
166
|
+
var value = this._changes[key];
|
167
|
+
|
168
|
+
// if the value is an array, get the idx matching the content
|
169
|
+
// object. Otherwise, just use the value of the item.
|
170
|
+
if(SC.isArray(value)) {
|
171
|
+
value = this._objectAt(loc, value) ;
|
172
|
+
}
|
173
|
+
|
174
|
+
if (object.set) {
|
175
|
+
object.set(key,value) ;
|
176
|
+
} else object[key] = value ;
|
177
|
+
}
|
178
|
+
|
179
|
+
if (object.endPropertyChanges) object.endPropertyChanges() ;
|
180
|
+
if (object.commitChanges) ret = object.commitChanges() ;
|
181
|
+
}
|
182
|
+
|
183
|
+
// if the content is not an array, then just loop through each changed
|
184
|
+
// value and copy it to the object.
|
185
|
+
} else {
|
186
|
+
|
187
|
+
if (content.beginPropertyChanges) content.beginPropertyChanges() ;
|
188
|
+
|
189
|
+
// save the set of changes to apply them. Nothing should clear it but
|
190
|
+
// just in case.
|
191
|
+
var changes = this._changes ;
|
192
|
+
for(key in changes) {
|
193
|
+
if (!changes.hasOwnProperty(key)) continue;
|
194
|
+
|
195
|
+
var oldValue = content.get ? content.get(key) : content[key];
|
196
|
+
var newValue = changes[key];
|
197
|
+
|
198
|
+
if (SC.none(oldValue) && newValue === '') newValue = null;
|
199
|
+
if (newValue != oldValue) {
|
200
|
+
if (content.set) {
|
201
|
+
content.set('isDirty', YES);
|
202
|
+
} else {
|
203
|
+
content.isDirty=YES;
|
204
|
+
}
|
205
|
+
}
|
206
|
+
|
207
|
+
if (content.set) {
|
208
|
+
content.set(key, newValue);
|
209
|
+
} else {
|
210
|
+
content[key] = newValue;
|
211
|
+
}
|
212
|
+
}
|
213
|
+
|
214
|
+
if (content.endPropertyChanges) content.endPropertyChanges() ;
|
215
|
+
if (content.commitChanges) ret = content.commitChanges() ;
|
216
|
+
}
|
217
|
+
|
218
|
+
// if commit was successful, dump changes hash and clear editor.
|
219
|
+
if (SC.$ok(ret)) {
|
220
|
+
this._changes = {} ;
|
221
|
+
//this._valueControllers = {};
|
222
|
+
this.editorDidClearChanges() ;
|
223
|
+
}
|
224
|
+
|
225
|
+
return ret ;
|
226
|
+
},
|
227
|
+
|
228
|
+
/** @private */
|
229
|
+
performDiscardChanges: function() {
|
230
|
+
this._changes = {};
|
231
|
+
this._valueControllers = {};
|
232
|
+
this.editorDidClearChanges();
|
233
|
+
this.allPropertiesDidChange();
|
234
|
+
return true ;
|
235
|
+
},
|
236
|
+
|
237
|
+
/** @private */
|
238
|
+
unknownProperty: function(key,value)
|
239
|
+
{
|
240
|
+
if (key == "content")
|
241
|
+
{
|
242
|
+
// FOR CONTENT KEY:
|
243
|
+
// avoid circular references. If you try to set content, just save the
|
244
|
+
// value. The propertyObserver will be triggered below to do the rest of
|
245
|
+
// the setup as needed.
|
246
|
+
if (!(value === undefined)) this[key] = value;
|
247
|
+
return this[key];
|
248
|
+
}
|
249
|
+
else
|
250
|
+
{
|
251
|
+
// FOR ALL OTHER KEYS:
|
252
|
+
// Save the value in our temporary hash and note the changes in the
|
253
|
+
// editor.
|
254
|
+
|
255
|
+
if (!this._changes) this._changes = {} ;
|
256
|
+
if (!this._valueControllers) this._valueControllers = {};
|
257
|
+
|
258
|
+
if (value !== undefined)
|
259
|
+
{
|
260
|
+
// for changes, save in _changes hash and note that a change is required.
|
261
|
+
this._changes[key] = value;
|
262
|
+
if (this._valueControllers[key])
|
263
|
+
{
|
264
|
+
this._valueControllers[key] = null;
|
265
|
+
}
|
266
|
+
// notifying observers regarless if a controller had been created since they're lazy loaded
|
267
|
+
this.propertyWillChange(key + "Controller");
|
268
|
+
this.propertyDidChange(key + "Controller");
|
269
|
+
this.editorDidChange();
|
270
|
+
}
|
271
|
+
else
|
272
|
+
{
|
273
|
+
// are we requesting the controller for a value?
|
274
|
+
if (key.slice(key.length-10,key.length) == "Controller")
|
275
|
+
{
|
276
|
+
// the actual value...
|
277
|
+
key = key.slice(0,-10);
|
278
|
+
if ( !this._valueControllers[key] )
|
279
|
+
{
|
280
|
+
this._valueControllers[key] = this.controllerForValue(this._getValueForPropertyKey(key));
|
281
|
+
}
|
282
|
+
value = this._valueControllers[key];
|
283
|
+
}
|
284
|
+
else
|
285
|
+
{
|
286
|
+
// otherwise, get the value.
|
287
|
+
// first check the _changes hash, then check the content object.
|
288
|
+
value = this._getValueForPropertyKey(key);
|
289
|
+
}
|
290
|
+
}
|
291
|
+
return value;
|
292
|
+
}
|
293
|
+
},
|
294
|
+
|
295
|
+
_getValueForPropertyKey: function( key )
|
296
|
+
{
|
297
|
+
// first check the changes hash for a uncommited value...
|
298
|
+
var value = this._changes[key];
|
299
|
+
// sweet, no need to proceed.
|
300
|
+
if ( value !== undefined ) return value;
|
301
|
+
|
302
|
+
// ok, we'll need to get the value from the content object
|
303
|
+
var obj = this.get('content');
|
304
|
+
// no content object... return null.
|
305
|
+
if (!obj) return null;
|
306
|
+
|
307
|
+
if (SC.isArray(obj))
|
308
|
+
{
|
309
|
+
value = [];
|
310
|
+
var len = this._lengthFor(obj);
|
311
|
+
if (len > 1)
|
312
|
+
{
|
313
|
+
// if content is an array with more than one item, collect
|
314
|
+
// content from array.
|
315
|
+
if (this.get('allowsMultipleContent')) {
|
316
|
+
for(var idx=0; idx < len; idx++) {
|
317
|
+
var item = this._objectAt(idx, obj) ;
|
318
|
+
value.push(item ? (item.get ? item.get(key) : item[key]) : null) ;
|
319
|
+
}
|
320
|
+
} else {
|
321
|
+
value = null;
|
322
|
+
}
|
323
|
+
}
|
324
|
+
else if (len == 1)
|
325
|
+
{
|
326
|
+
// if content is array with one item, collect from first obj.
|
327
|
+
obj = this._objectAt(0,obj) ;
|
328
|
+
value = obj.get ? obj.get(key) : obj[key] ;
|
329
|
+
}
|
330
|
+
else
|
331
|
+
{
|
332
|
+
// if content is empty array, act as if null.
|
333
|
+
value = null;
|
334
|
+
}
|
335
|
+
}
|
336
|
+
else
|
337
|
+
{
|
338
|
+
// content is a single item. Just get the property.
|
339
|
+
value = obj.get ? obj.get(key) : obj[key] ;
|
340
|
+
}
|
341
|
+
return value;
|
342
|
+
},
|
343
|
+
|
344
|
+
_lastContentPropertyRevision: 0,
|
345
|
+
|
346
|
+
/** @private */
|
347
|
+
_contentDidChange: function(target,key,value,propertyRevision) {
|
348
|
+
|
349
|
+
// handle changes to the content...
|
350
|
+
if ((value = this.get('content')) != this._content) {
|
351
|
+
|
352
|
+
if (this.get('hasChanges')) {
|
353
|
+
// if we have uncommitted changes, then discard the changes or raise
|
354
|
+
// an exception.
|
355
|
+
var er = this.discardChanges() ;
|
356
|
+
if (!SC.$ok(er)) throw(er) ;
|
357
|
+
} else {
|
358
|
+
// no changes, but we want to ensure that we flush the cache
|
359
|
+
// of any SC.Controllers we have for the content
|
360
|
+
this._valueControllers = {} ;
|
361
|
+
}
|
362
|
+
|
363
|
+
// get the handler method
|
364
|
+
var f = this._contentPropertyDidChange ;
|
365
|
+
|
366
|
+
// stop listening to old content.
|
367
|
+
if (this._content) {
|
368
|
+
if (SC.isArray(this._content)) {
|
369
|
+
this._content.invoke('removeObserver', '*', this, f) ;
|
370
|
+
} else if (this._content.removeObserver) {
|
371
|
+
this._content.removeObserver('*', this, f) ;
|
372
|
+
}
|
373
|
+
}
|
374
|
+
|
375
|
+
// start listening for changes on the new content object.
|
376
|
+
this._content = value ;
|
377
|
+
if (value) {
|
378
|
+
if (SC.isArray(value)) {
|
379
|
+
value.invoke('addObserver', '*', this, f) ;
|
380
|
+
} else if (value.addObserver) {
|
381
|
+
value.addObserver('*', this, f) ;
|
382
|
+
}
|
383
|
+
}
|
384
|
+
|
385
|
+
// determine the content type.
|
386
|
+
var count = !value ? 0 : (SC.isArray(value) ? this._lengthFor(value) : 1) ;
|
387
|
+
|
388
|
+
// New content is configured, update controller stats
|
389
|
+
this.beginPropertyChanges() ;
|
390
|
+
this.set('hasNoContent',count === 0) ;
|
391
|
+
this.set('hasSingleContent',count === 1) ;
|
392
|
+
this.set('hasMultipleContent',count > 1) ;
|
393
|
+
|
394
|
+
// notify everyone that everything is different now.
|
395
|
+
this.allPropertiesDidChange() ;
|
396
|
+
this.endPropertyChanges() ;
|
397
|
+
}
|
398
|
+
}.observes('content'),
|
399
|
+
|
400
|
+
// invoked when properties on the content object change. Just forward
|
401
|
+
// to controller.
|
402
|
+
_contentPropertyDidChange: function(target,key,value, propertyRevision) {
|
403
|
+
this._changeFromContent = true ;
|
404
|
+
if (key === '*') {
|
405
|
+
this.allPropertiesDidChange() ;
|
406
|
+
} else {
|
407
|
+
this.propertyWillChange(key) ;
|
408
|
+
this.propertyDidChange(key,value) ;
|
409
|
+
}
|
410
|
+
this._changeFromContent = false ;
|
411
|
+
},
|
412
|
+
|
413
|
+
_lengthFor: function(obj) {
|
414
|
+
return (obj.get ? obj.get('length') : obj.length) || 0;
|
415
|
+
},
|
416
|
+
|
417
|
+
_objectAt: function(idx, obj) {
|
418
|
+
return obj.objectAt ? obj.objectAt(idx) : (obj.get ? obj.get(idx) : obj[idx]) ;
|
419
|
+
}
|
420
|
+
|
421
|
+
}) ;
|
@@ -0,0 +1,111 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
SC.mixin(/** @scope SC */ {
|
9
|
+
|
10
|
+
/**
|
11
|
+
Reads or writes data from a global cache. You can use this facility to
|
12
|
+
store information about an object without actually adding properties to
|
13
|
+
the object itself. This is needed especially when working with DOM,
|
14
|
+
which can leak easily in IE.
|
15
|
+
|
16
|
+
To read data, simply pass in the reference element (used as a key) and
|
17
|
+
the name of the value to read. To write, also include the data.
|
18
|
+
|
19
|
+
You can also just pass an object to retrieve the entire cache.
|
20
|
+
|
21
|
+
@param elem {Object} An object or Element to use as scope
|
22
|
+
@param name {String} Optional name of the value to read/write
|
23
|
+
@param data {Object} Optional data. If passed, write.
|
24
|
+
@returns {Object} the value of the named data
|
25
|
+
*/
|
26
|
+
data: function(elem, name, data) {
|
27
|
+
elem = (elem === window) ? "@window" : elem ;
|
28
|
+
var hash = SC.hashFor(elem) ; // get the hash key
|
29
|
+
|
30
|
+
// Generate the data cache if needed
|
31
|
+
var cache = SC._data_cache ;
|
32
|
+
if (!cache) SC._data_cache = cache = {} ;
|
33
|
+
|
34
|
+
// Now get cache for element
|
35
|
+
var elemCache = cache[hash] ;
|
36
|
+
if (name && !elemCache) cache[hash] = elemCache = {} ;
|
37
|
+
|
38
|
+
// Write data if provided
|
39
|
+
if (elemCache && (data !== undefined)) elemCache[name] = data ;
|
40
|
+
|
41
|
+
return (name) ? elemCache[name] : elemCache ;
|
42
|
+
},
|
43
|
+
|
44
|
+
/**
|
45
|
+
Removes data from the global cache. This is used throughout the
|
46
|
+
framework to hold data without creating memory leaks.
|
47
|
+
|
48
|
+
You can remove either a single item on the cache or all of the cached
|
49
|
+
data for an object.
|
50
|
+
|
51
|
+
@param elem {Object} An object or Element to use as scope
|
52
|
+
@param name {String} optional name to remove.
|
53
|
+
@returns {Object} the value or cache that was removed
|
54
|
+
*/
|
55
|
+
removeData: function(elem, name) {
|
56
|
+
elem = (elem === window) ? "@window" : elem ;
|
57
|
+
var hash = SC.hashFor(elem) ;
|
58
|
+
|
59
|
+
// return undefined if no cache is defined
|
60
|
+
var cache = SC._data_cache ;
|
61
|
+
if (!cache) return undefined ;
|
62
|
+
|
63
|
+
// return undefined if the elem cache is undefined
|
64
|
+
var elemCache = cache[hash] ;
|
65
|
+
if (!elemCache) return undefined;
|
66
|
+
|
67
|
+
// get the return value
|
68
|
+
var ret = (name) ? elemCache[name] : elemCache ;
|
69
|
+
|
70
|
+
// and delete as appropriate
|
71
|
+
if (name) {
|
72
|
+
delete elemCache[name] ;
|
73
|
+
} else {
|
74
|
+
delete cache[hash] ;
|
75
|
+
}
|
76
|
+
|
77
|
+
return ret ;
|
78
|
+
}
|
79
|
+
}) ;
|
80
|
+
|
81
|
+
SC.mixin(Function.prototype, {
|
82
|
+
/**
|
83
|
+
Creates a timer that will execute the function after a specified
|
84
|
+
period of time.
|
85
|
+
|
86
|
+
If you pass an optional set of arguments, the arguments will be passed
|
87
|
+
to the function as well. Otherwise the function should have the
|
88
|
+
signature:
|
89
|
+
|
90
|
+
{{{
|
91
|
+
function functionName(timer)
|
92
|
+
}}}
|
93
|
+
|
94
|
+
@param target {Object} optional target object to use as this
|
95
|
+
@param interval {Number} the time to wait, in msec
|
96
|
+
@returns {SC.Timer} scheduled timer
|
97
|
+
*/
|
98
|
+
invokeLater: function(target, interval) {
|
99
|
+
if (interval === undefined) interval = 1 ;
|
100
|
+
var f = this;
|
101
|
+
if (arguments.length > 2) {
|
102
|
+
var args = SC.$A(arguments).slice(2,arguments.length);
|
103
|
+
args.unshift(target);
|
104
|
+
// f = f.bind.apply(f, args) ;
|
105
|
+
var that = this, func = f ;
|
106
|
+
f = function() { return func.apply(that, args.slice(1)); } ;
|
107
|
+
}
|
108
|
+
return SC.Timer.schedule({ target: target, action: f, interval: interval });
|
109
|
+
}
|
110
|
+
|
111
|
+
});
|
@@ -0,0 +1,172 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: �2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// portions copyright @2009 Apple, Inc.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
sc_require('panes/pane');
|
9
|
+
|
10
|
+
/*global test */
|
11
|
+
|
12
|
+
// TODO: IMPROVE CODE QUALITY. This code was put together quickly in order to
|
13
|
+
// test the SproutCore framework. It does not match up to the project's
|
14
|
+
// normal documentation, design and coding standards. Do not rely on this
|
15
|
+
// code as an example of how to build your own applications.
|
16
|
+
|
17
|
+
/** @class
|
18
|
+
Generates a pane that will display vertically stacked views for testing.
|
19
|
+
You can use this class in test mode to easily create a palette with views
|
20
|
+
configured in different ways.
|
21
|
+
|
22
|
+
h1. Example
|
23
|
+
|
24
|
+
{{{
|
25
|
+
var pane = SC.ControlTestPane.design()
|
26
|
+
.add('basic', SC.CheckboxView.design({ title: "Hello World" }))
|
27
|
+
.add('disabled', SC.CheckboxView.design({
|
28
|
+
title: "Hello World", isEnabled: NO
|
29
|
+
}));
|
30
|
+
|
31
|
+
module("CheckboxView UI", pane);
|
32
|
+
|
33
|
+
test("basic", function() {
|
34
|
+
var view = pane.view('basic');
|
35
|
+
ok(view.get('isEnabled'), 'should be enabled');
|
36
|
+
});
|
37
|
+
}}}
|
38
|
+
|
39
|
+
@extends SC.Pane
|
40
|
+
@since SproutCore 1.0
|
41
|
+
*/
|
42
|
+
SC.ControlTestPane = SC.Pane.extend(
|
43
|
+
/** @scope SC.ControlTestPane.prototype */ {
|
44
|
+
|
45
|
+
classNames: ['sc-control-test-pane'],
|
46
|
+
layout: { right: 20, width: 480, top: 75, bottom: 20 },
|
47
|
+
|
48
|
+
/**
|
49
|
+
The starting top location for the first row. This will increment as
|
50
|
+
views are added to the pane.
|
51
|
+
*/
|
52
|
+
top: 0,
|
53
|
+
|
54
|
+
/**
|
55
|
+
The default height of each row. This will be used for a view unless you
|
56
|
+
manually specify a height in the view's layout.
|
57
|
+
*/
|
58
|
+
height: 20,
|
59
|
+
|
60
|
+
/**
|
61
|
+
The default padding added to the edges and between each row.
|
62
|
+
*/
|
63
|
+
padding: 4,
|
64
|
+
|
65
|
+
/**
|
66
|
+
Retrieves the test sample view that was added with the passed key name.
|
67
|
+
|
68
|
+
@param {String} keyName the key used to register the view.
|
69
|
+
@returns {SC.View} view instance
|
70
|
+
*/
|
71
|
+
view: function(keyName) {
|
72
|
+
var idx = this._views[keyName];
|
73
|
+
if (!idx) throw "SC.ControlTestPane does not have a view named %@".fmt(keyName);
|
74
|
+
return this.childViews[idx].childViews[0];
|
75
|
+
},
|
76
|
+
|
77
|
+
init: function() {
|
78
|
+
sc_super();
|
79
|
+
if (!this._views) this._views = {};
|
80
|
+
this.append(); // auto-add to screen
|
81
|
+
}
|
82
|
+
});
|
83
|
+
|
84
|
+
/**
|
85
|
+
Adds a test view to the control pane design. The passed label will be used
|
86
|
+
as the key which you can use to find the view layer. You can either pass
|
87
|
+
a view that is already designed or pass an array of attributes that will be
|
88
|
+
used to create a design on the view.
|
89
|
+
|
90
|
+
@param {String} label the view key name
|
91
|
+
@param {SC.View} view a view class or view design
|
92
|
+
@param {Hash} attrs optional attrs to use when designing the view
|
93
|
+
@returns {SC.ControlTestPane} receiver
|
94
|
+
*/
|
95
|
+
SC.ControlTestPane.add = function(label, view, attrs) {
|
96
|
+
if (attrs === undefined) attrs = {};
|
97
|
+
if (!view.isDesign) view = view.design(attrs);
|
98
|
+
|
99
|
+
// compute layout.
|
100
|
+
var padding = this.prototype.padding, height = this.prototype.height;
|
101
|
+
var top = this.prototype.top + padding*2, layout;
|
102
|
+
if (top === padding*2) top = padding; // reduce padding @ top
|
103
|
+
|
104
|
+
// if the passed in view has a layout property and the layout has an
|
105
|
+
// explicit, numerical height, then use that instead.
|
106
|
+
if (view.prototype.layout && (typeof view.prototype.layout.height === SC.T_NUMBER)) height = view.prototype.layout.height;
|
107
|
+
|
108
|
+
this.prototype.top = top + height; // make room
|
109
|
+
|
110
|
+
// calculate labelView and add it
|
111
|
+
layout = { left: padding, width: 150, top: top, height: height };
|
112
|
+
var labelView = SC.LabelView.design({
|
113
|
+
value: label + ':',
|
114
|
+
layout: { left: 0, right: 0, centerY: 0, height: 14 },
|
115
|
+
textAlign: SC.ALIGN_RIGHT,
|
116
|
+
fontWeight: SC.BOLD_WEIGHT
|
117
|
+
});
|
118
|
+
|
119
|
+
// wrap label in parent view in order to center text vertically
|
120
|
+
labelView = SC.View.design().layout(layout).childView(labelView);
|
121
|
+
this.childView(labelView);
|
122
|
+
|
123
|
+
// now layout view itself...
|
124
|
+
var wrapper = SC.View.design({
|
125
|
+
classNames: ['wrapper'],
|
126
|
+
layout: { left: 150+padding*2, top: top, right: padding, height: height },
|
127
|
+
childViews: [view]
|
128
|
+
});
|
129
|
+
var idx = this.prototype.childViews.length ;
|
130
|
+
this.childView(wrapper);
|
131
|
+
|
132
|
+
var views = this.prototype._views;
|
133
|
+
if (!views) views = this.prototype._views = {};
|
134
|
+
views[label] = idx ;
|
135
|
+
|
136
|
+
return this;
|
137
|
+
};
|
138
|
+
|
139
|
+
/**
|
140
|
+
Returns a standard setup/teardown object for use by the module() method.
|
141
|
+
*/
|
142
|
+
SC.ControlTestPane.standardSetup = function() {
|
143
|
+
var pane = this ;
|
144
|
+
return {
|
145
|
+
setup: function() { pane._pane = pane.create(); },
|
146
|
+
teardown: function() {
|
147
|
+
if (pane._pane) pane._pane.remove();
|
148
|
+
pane._pane = null ;
|
149
|
+
}
|
150
|
+
} ;
|
151
|
+
};
|
152
|
+
|
153
|
+
/**
|
154
|
+
Convenience method. Returns the view with the given name on the current
|
155
|
+
pane instance if there is one.
|
156
|
+
*/
|
157
|
+
SC.ControlTestPane.view = function(viewKey) {
|
158
|
+
var pane = this._pane || this._showPane ;
|
159
|
+
if (!pane) throw "view() cannot be called on a class";
|
160
|
+
return pane.view(viewKey);
|
161
|
+
};
|
162
|
+
|
163
|
+
/**
|
164
|
+
Registers a final test that will instantiate the control test pane and
|
165
|
+
display it. This allows the developer to interact with the controls once
|
166
|
+
the test has completed.
|
167
|
+
*/
|
168
|
+
SC.ControlTestPane.show = function() {
|
169
|
+
var pane = this ;
|
170
|
+
test("show control test pane", function() { pane._showPane = pane.create(); });
|
171
|
+
};
|
172
|
+
|
Binary file
|