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,128 @@
|
|
1
|
+
<% content_for('final') do %>
|
2
|
+
<script>
|
3
|
+
|
4
|
+
|
5
|
+
Test.context("A SC.PopupButtonView with no configured menu", {
|
6
|
+
|
7
|
+
"Should return null when asked for it's menu": function()
|
8
|
+
{
|
9
|
+
for (var i=0, n=this.buttons.length; i < n; i++)
|
10
|
+
{
|
11
|
+
(buttons[i].get('menu') == null).shouldEqual(true);
|
12
|
+
}
|
13
|
+
},
|
14
|
+
"Should return false if asked to trigger it's action": function()
|
15
|
+
{
|
16
|
+
for (var i=0, n=this.buttons.length; i < n; i++)
|
17
|
+
{
|
18
|
+
this.buttons[i].action().shouldEqual(false);
|
19
|
+
}
|
20
|
+
},
|
21
|
+
"Should not perform keyEquivalents": function()
|
22
|
+
{
|
23
|
+
for (var i=0, n=this.buttons.length; i < n; i++)
|
24
|
+
{
|
25
|
+
this.buttons[i].performKeyEquivalent('alt_shift_z').shouldEqual(false);
|
26
|
+
}
|
27
|
+
},
|
28
|
+
setup: function()
|
29
|
+
{
|
30
|
+
this.buttons = [
|
31
|
+
SC.PopupButtonView.viewFor(null),
|
32
|
+
SC.PopupButtonView.extend({ menuName: '' }).viewFor(null),
|
33
|
+
SC.PopupButtonView.extend({ menuName: 'foobarMenu' }).viewFor(null),
|
34
|
+
SC.PopupButtonView.extend({ menuName: false }).viewFor(null),
|
35
|
+
SC.PopupButtonView.extend({ menuName: null }).viewFor(null)
|
36
|
+
];
|
37
|
+
},
|
38
|
+
|
39
|
+
teardown: function()
|
40
|
+
{
|
41
|
+
delete this.buttons;
|
42
|
+
}
|
43
|
+
|
44
|
+
});
|
45
|
+
|
46
|
+
|
47
|
+
Test.context("A SC.PopupButtonView with a properly configured menu", {
|
48
|
+
|
49
|
+
"Should return a menu of the correct type": function()
|
50
|
+
{
|
51
|
+
(this.button.get('menu') != null).shouldEqual(true);
|
52
|
+
this.button.get('menu').kindOf(SC.PopupMenuView).shouldEqual(true);
|
53
|
+
},
|
54
|
+
"Should return true if asked to trigger it's action": function()
|
55
|
+
{
|
56
|
+
this.button.action().shouldEqual(true);
|
57
|
+
},
|
58
|
+
"Should toggle the menu's visibility when triggering the action": function()
|
59
|
+
{
|
60
|
+
// for some reason this actually equals true... not sure why...
|
61
|
+
equals(NO, this.button.get('menu').get('isVisible'), "button.menu.isVisible 1") ;
|
62
|
+
this.button.action();
|
63
|
+
SC.Binding.flushPendingChanges(); // menus use a binding...
|
64
|
+
|
65
|
+
equals(YES, this.button.get('menu').get('isVisible'), "button.menu.isVisible 2") ;
|
66
|
+
this.button.action();
|
67
|
+
SC.Binding.flushPendingChanges(); // menus use a binding...
|
68
|
+
|
69
|
+
equals(NO, this.button.get('menu').get('isVisible'), "button.menu.isVisible 3") ;
|
70
|
+
},
|
71
|
+
"Should have it's isSelected state bound to the menu's visibility": function()
|
72
|
+
{
|
73
|
+
// either by triggering the action...
|
74
|
+
this.button.get('isSelected').shouldEqual(false);
|
75
|
+
|
76
|
+
this.button.action();
|
77
|
+
SC.Binding.flushPendingChanges(); // menus use a binding...
|
78
|
+
this.button.get('isSelected').shouldEqual(true);
|
79
|
+
|
80
|
+
this.button.action();
|
81
|
+
SC.Binding.flushPendingChanges(); // menus use a binding...
|
82
|
+
this.button.get('isSelected').shouldEqual(false);
|
83
|
+
|
84
|
+
// or by showing/hiding the menu...
|
85
|
+
this.button.get('menu').set('isVisible', true);
|
86
|
+
SC.Binding.flushPendingChanges(); // menus use a binding...
|
87
|
+
this.button.get('isSelected').shouldEqual(true);
|
88
|
+
|
89
|
+
this.button.get('menu').set('isVisible', false);
|
90
|
+
SC.Binding.flushPendingChanges(); // menus use a binding...
|
91
|
+
this.button.get('isSelected').shouldEqual(false);
|
92
|
+
},
|
93
|
+
"Should send performKeyEquivalent messages to it's menu": function()
|
94
|
+
{
|
95
|
+
this.button.get('menu').performKeyEquivalent('alt_shift_z', {}).shouldEqual(true);
|
96
|
+
this.button.performKeyEquivalent('alt_shift_z', {}).shouldEqual(true);
|
97
|
+
},
|
98
|
+
"Should not send performKeyEquivalent messages to it's menu if disabled": function()
|
99
|
+
{
|
100
|
+
this.button.set('isEnabled', false);
|
101
|
+
this.button.performKeyEquivalent('alt_shift_z', {}).shouldEqual(false);
|
102
|
+
},
|
103
|
+
"Should not performKeyEquivalent for disabled menu items": function()
|
104
|
+
{
|
105
|
+
this.button.performKeyEquivalent('alt_shift_d', {}).shouldEqual(false);
|
106
|
+
},
|
107
|
+
setup: function()
|
108
|
+
{
|
109
|
+
this.menu = SC.PopupMenuView.extend({ paneType: "menu" }).create();
|
110
|
+
this.menu.appendChild( SC.MenuItemView.extend({ keyEquivalent: "alt_shift_z" }).create() );
|
111
|
+
this.menu.appendChild( SC.MenuItemView.extend({ keyEquivalent: "alt_shift_d", isEnabled: false }).create() );
|
112
|
+
|
113
|
+
this.button = SC.PopupButtonView.create();
|
114
|
+
this.button.set('menu', this.menu);
|
115
|
+
},
|
116
|
+
teardown: function()
|
117
|
+
{
|
118
|
+
delete this.menu;
|
119
|
+
delete this.button;
|
120
|
+
}
|
121
|
+
|
122
|
+
});
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
</script>
|
128
|
+
<% end %>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<% content_for('final') do %>
|
2
|
+
<script>
|
3
|
+
|
4
|
+
Test.context("A SC.TextFieldView", {
|
5
|
+
|
6
|
+
"Should allow text navigation keys when focused": function()
|
7
|
+
{
|
8
|
+
this.field.becomeFirstResponder();
|
9
|
+
this.field.get('isFirstResponder').shouldEqual(true);
|
10
|
+
|
11
|
+
var keynames = $w('backspace delete home end left right up down');
|
12
|
+
for (var i=0, n=keynames.length; i < n; i++)
|
13
|
+
{
|
14
|
+
// var event = SC.Mock.KeyEvent.create({
|
15
|
+
// type: 'keydown',
|
16
|
+
// keyCode: SC.KEY_CODES[ keynames[i] ]
|
17
|
+
// });
|
18
|
+
SC.window._onkeydown(event).shouldEqual(true);
|
19
|
+
event.stopped.shouldEqual(false);
|
20
|
+
}
|
21
|
+
},
|
22
|
+
|
23
|
+
setup: function()
|
24
|
+
{
|
25
|
+
this.field = SC.TextFieldView.create();
|
26
|
+
SC.window.appendChild(this.field);
|
27
|
+
},
|
28
|
+
teardown: function()
|
29
|
+
{
|
30
|
+
SC.window.removeChild(this.field);
|
31
|
+
delete this.field;
|
32
|
+
}
|
33
|
+
|
34
|
+
});
|
35
|
+
|
36
|
+
</script>
|
37
|
+
<% end %>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// SproutCore -- JavaScript Application Framework
|
3
|
+
// copyright 2006-2008, Sprout Systems, Inc. and contributors.
|
4
|
+
// ==========================================================================
|
5
|
+
|
6
|
+
SC.mixin( SC.CollectionView.prototype, {
|
7
|
+
|
8
|
+
// ======================================================================
|
9
|
+
// DEPRECATED APIS (Still available for compatibility)
|
10
|
+
|
11
|
+
/** @private
|
12
|
+
If set to false, this method will prevent you from deselecting all of
|
13
|
+
the items in your view. This is better implemented using a controller
|
14
|
+
that prohibits empty selection.
|
15
|
+
*/
|
16
|
+
allowDeselectAll: YES,
|
17
|
+
|
18
|
+
/** @private */
|
19
|
+
itemExistsInCollection: function(view) { return this.hasItemView(view); },
|
20
|
+
|
21
|
+
/** @private */
|
22
|
+
viewForContentRecord: function(rec) { return this.itemViewForContent(rec); }
|
23
|
+
|
24
|
+
});
|
@@ -0,0 +1,30 @@
|
|
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
|
+
/* evil:true */
|
8
|
+
|
9
|
+
require('design.mode/coders/object');
|
10
|
+
require('views/view');
|
11
|
+
|
12
|
+
/** @class
|
13
|
+
|
14
|
+
A DesignCoder encodes specifically the design for a set of views.
|
15
|
+
|
16
|
+
@extends SC.ObjectCoder
|
17
|
+
*/
|
18
|
+
SC.DesignCoder = SC.ObjectCoder.extend({
|
19
|
+
extendMethodName: 'design',
|
20
|
+
encodeMethodName: 'encodeDesign'
|
21
|
+
});
|
22
|
+
|
23
|
+
/**
|
24
|
+
Patch SC.View to respond to encodeDesign(). This will proxy to the paired
|
25
|
+
designer, if there is one. If there is no paired designer, returns NO.
|
26
|
+
*/
|
27
|
+
SC.View.prototype.encodeDesign = function(coder) {
|
28
|
+
return this.designer ? this.designer.encodeDesign(coder) : NO ;
|
29
|
+
};
|
30
|
+
|
@@ -0,0 +1,28 @@
|
|
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('design.mode/coders/object');
|
8
|
+
require('views/view');
|
9
|
+
|
10
|
+
/** @class
|
11
|
+
|
12
|
+
A LocalizationCoder encodes specifically the localization for views.
|
13
|
+
|
14
|
+
@extends SC.ObjectCoder
|
15
|
+
*/
|
16
|
+
SC.LocalizationCoder = SC.ObjectCoder.extend({
|
17
|
+
extendMethodName: 'localization',
|
18
|
+
encodeMethodName: 'encodeLoc'
|
19
|
+
});
|
20
|
+
|
21
|
+
/**
|
22
|
+
Patch SC.View to respond to encodeDesign(). This will proxy to the paired
|
23
|
+
designer, if there is one. If there is no paired designer, returns NO.
|
24
|
+
*/
|
25
|
+
SC.View.prototype.encodeLoc = function(coder) {
|
26
|
+
return this.designer ? this.designer.encodeLoc(coder) : NO ;
|
27
|
+
};
|
28
|
+
|
@@ -0,0 +1,347 @@
|
|
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
|
+
/**
|
8
|
+
|
9
|
+
Generic base class to encode a view hierarchy. ViewCoders are used to
|
10
|
+
collect the properties that may be included in a view design and then to
|
11
|
+
serialize that design to a JavaScript string that can be evaled.
|
12
|
+
|
13
|
+
To encode a view with a ViewCoder, simply call SC.ViewCoder.encode(view).
|
14
|
+
Most of the time, however, you will not initiate coding directly but instead
|
15
|
+
work with the coder while designing an SC.DesignerView subclass.
|
16
|
+
|
17
|
+
h2. Using a Coder
|
18
|
+
|
19
|
+
When you are passed an instance of a coder, you can simply write attributes
|
20
|
+
into the coder using one of the many encoding methods defined on the view.
|
21
|
+
Encoding methods are defined for most primitive view types.
|
22
|
+
|
23
|
+
coder.string("firstName" , "Charles").string('lastName', 'Jolley');
|
24
|
+
|
25
|
+
@extends SC.Object
|
26
|
+
*/
|
27
|
+
SC.ObjectCoder = SC.Object.extend({
|
28
|
+
|
29
|
+
// ..........................................................
|
30
|
+
// PROPERTIES
|
31
|
+
//
|
32
|
+
|
33
|
+
/** The className used to emit the design. */
|
34
|
+
className: 'SC.Object',
|
35
|
+
|
36
|
+
/**
|
37
|
+
The method to be used to create the class or object.
|
38
|
+
*/
|
39
|
+
extendMethodName: 'extend',
|
40
|
+
|
41
|
+
/**
|
42
|
+
The default encoding method. If an object defines this method, then a new
|
43
|
+
coder will be created to encode that object.
|
44
|
+
*/
|
45
|
+
encodeMethodName: 'encode',
|
46
|
+
|
47
|
+
/**
|
48
|
+
The attributes that will be emitted. The values all must be strings. Use
|
49
|
+
one of the encoding methods defined below to actually encode attributes.
|
50
|
+
*/
|
51
|
+
attributes: null,
|
52
|
+
|
53
|
+
// ..........................................................
|
54
|
+
// ENCODING METHODS
|
55
|
+
//
|
56
|
+
// Call these methods to encode various types of attributes. They all take
|
57
|
+
// the same basic params: (key, value)...
|
58
|
+
|
59
|
+
/**
|
60
|
+
Utility method transforms the passed value with the passed function.
|
61
|
+
Handles both Arrays and individual items.
|
62
|
+
*/
|
63
|
+
transform: function(val, func) {
|
64
|
+
|
65
|
+
// for an array, transform each value with the func and then return a
|
66
|
+
// combined array.
|
67
|
+
if (SC.typeOf(val) === SC.T_ARRAY) {
|
68
|
+
val = val.map(function(x) { return this.transform(x, func); }, this);
|
69
|
+
val = '['+val+']';
|
70
|
+
|
71
|
+
// otherwise, just call transform function on the value
|
72
|
+
} else {
|
73
|
+
val = func.call(this, val);
|
74
|
+
}
|
75
|
+
return val;
|
76
|
+
},
|
77
|
+
|
78
|
+
/**
|
79
|
+
Encodes a string of raw JavaScript. This is the most primitive method.
|
80
|
+
You are expected to prep the value yourself. You can pass an array to
|
81
|
+
this or any other method and it will be encoded as a full array.
|
82
|
+
|
83
|
+
This method also automatically handles null and undefined values. Null
|
84
|
+
values are included in the output. Undefined values are ignored.
|
85
|
+
|
86
|
+
@param key {String} the key to set
|
87
|
+
@param val {String} the JavaScript
|
88
|
+
@param transform {Function} optional transform function to apply to val
|
89
|
+
@returns {SC.ObjectCoder} receiver
|
90
|
+
*/
|
91
|
+
js: function(key, val, transform) {
|
92
|
+
|
93
|
+
// normalize
|
94
|
+
if (val===undefined) { val=key; key = undefined; }
|
95
|
+
val = this.transform(val, function(x) {
|
96
|
+
return (x===null) ? "null" : transform ? transform.call(this, x) : x ;
|
97
|
+
});
|
98
|
+
|
99
|
+
// save if needed. Undefined values are ignored
|
100
|
+
if (key !== undefined && (val !== undefined)) {
|
101
|
+
this.attributes[key] = val;
|
102
|
+
return this ;
|
103
|
+
} else return val ;
|
104
|
+
},
|
105
|
+
|
106
|
+
/**
|
107
|
+
Encodes a string, wrapping it in quotes.
|
108
|
+
|
109
|
+
@param key {String} the key to set
|
110
|
+
@param val {String} the value
|
111
|
+
@returns {SC.ObjectCoder} receiver
|
112
|
+
*/
|
113
|
+
string: function(key, val) {
|
114
|
+
return this.js(key, val, function(x) {
|
115
|
+
return '"' + x.replace(/"/g, '\\"') + '"' ;
|
116
|
+
});
|
117
|
+
},
|
118
|
+
|
119
|
+
/**
|
120
|
+
Encodes a number, wrapping it in quotes.
|
121
|
+
|
122
|
+
@param key {String} the key to set
|
123
|
+
@param val {Number} the value
|
124
|
+
@returns {SC.ObjectCoder} receiver
|
125
|
+
*/
|
126
|
+
number: function(key, val) {
|
127
|
+
return this.js(key, val, function(x) { return x.toString(); });
|
128
|
+
},
|
129
|
+
|
130
|
+
/**
|
131
|
+
Encodes a bool, mapped as YES or NO
|
132
|
+
|
133
|
+
@param key {String} the key to set
|
134
|
+
@param val {Boolean} the value
|
135
|
+
@returns {SC.ObjectCoder} receiver
|
136
|
+
*/
|
137
|
+
bool: function(key, val) {
|
138
|
+
return this.js(key, val, function(x) { return x ? "YES" : "NO"; });
|
139
|
+
},
|
140
|
+
|
141
|
+
/**
|
142
|
+
Encodes an object. This will do its best to autodetect the type of the
|
143
|
+
object. You can pass an optional processing function that will be used
|
144
|
+
on object members before processing to allow you to normalize. The
|
145
|
+
method signature must be:
|
146
|
+
|
147
|
+
function convert(value, rootObject, key);
|
148
|
+
|
149
|
+
The rootObject and key will be set to give you the context in the
|
150
|
+
hierarchy.
|
151
|
+
|
152
|
+
Generally this method will work for encoding simple value only. If your
|
153
|
+
object graph may contain SproutCore objects, you will need to encode it
|
154
|
+
yourself.
|
155
|
+
|
156
|
+
@param key {String} the key to set
|
157
|
+
@param val {Object} the value
|
158
|
+
@param func {Function} optional transform func
|
159
|
+
@returns {SC.ObjectCoder} receiver
|
160
|
+
*/
|
161
|
+
encode: function(key, val, func) {
|
162
|
+
// normalize params
|
163
|
+
if (func===undefined && val instanceof Function) {
|
164
|
+
func = val; val = key; key = undefined;
|
165
|
+
}
|
166
|
+
|
167
|
+
return this.js(key, val, function(cur) {
|
168
|
+
if (func) cur = func.call(this, cur, null, null);
|
169
|
+
switch(SC.typeOf(cur)) {
|
170
|
+
case SC.T_STRING:
|
171
|
+
cur = this.string(cur);
|
172
|
+
break;
|
173
|
+
|
174
|
+
case SC.T_NUMBER:
|
175
|
+
cur = this.number(cur);
|
176
|
+
break;
|
177
|
+
|
178
|
+
case SC.T_BOOL:
|
179
|
+
cur = this.bool(cur);
|
180
|
+
break;
|
181
|
+
|
182
|
+
case SC.T_ARRAY:
|
183
|
+
cur = this.array(cur, func) ;
|
184
|
+
break;
|
185
|
+
|
186
|
+
case SC.T_HASH:
|
187
|
+
cur = this.hash(cur, func);
|
188
|
+
break ;
|
189
|
+
|
190
|
+
default:
|
191
|
+
// otherwise, if the object has a designer attached, try to encode
|
192
|
+
// view.
|
193
|
+
cur = cur ? this.object(cur) : this.js(cur);
|
194
|
+
}
|
195
|
+
return cur ;
|
196
|
+
});
|
197
|
+
},
|
198
|
+
|
199
|
+
/**
|
200
|
+
Encodes a hash of objects. The object values must be simple objects for
|
201
|
+
this method to work. You can also optionally pass a processing function
|
202
|
+
that will be invoked for each value, giving you a chance to convert the
|
203
|
+
value first. The signature must be (key, value, rootObject).
|
204
|
+
|
205
|
+
@param key {String} the key to set
|
206
|
+
@param val {Object} the value
|
207
|
+
@param func {Function} optional transform func
|
208
|
+
@returns {SC.ObjectCoder} receiver
|
209
|
+
*/
|
210
|
+
hash: function(key, val, func) {
|
211
|
+
|
212
|
+
// normalize params
|
213
|
+
if (func===undefined && val instanceof Function) {
|
214
|
+
func = val; val = key; key = undefined;
|
215
|
+
}
|
216
|
+
|
217
|
+
return this.js(key, val, function(x) {
|
218
|
+
var ret = [] ;
|
219
|
+
for(var key in x) {
|
220
|
+
if (!x.hasOwnProperty(key)) continue; // only include added...
|
221
|
+
ret.push("%@: %@".fmt(key, this.encode(x[key], func)));
|
222
|
+
}
|
223
|
+
return "{%@}".fmt(ret.join(","));
|
224
|
+
});
|
225
|
+
},
|
226
|
+
|
227
|
+
/**
|
228
|
+
Encodes a array of objects. The object values must be simple objects for
|
229
|
+
this method to work. You can also optionally pass a processing function
|
230
|
+
that will be invoked for each value, giving you a chance to convert the
|
231
|
+
value first. The signature must be (index, value, rootObject).
|
232
|
+
|
233
|
+
@param key {String} the key to set
|
234
|
+
@param val {Object} the value
|
235
|
+
@param func {Function} optional transform func
|
236
|
+
@returns {SC.ObjectCoder} receiver
|
237
|
+
*/
|
238
|
+
array: function(key, val, func) {
|
239
|
+
|
240
|
+
// normalize params
|
241
|
+
if (func===undefined && val instanceof Function) {
|
242
|
+
func = val; val = key; key = undefined;
|
243
|
+
}
|
244
|
+
|
245
|
+
val = val.map(function(x) { return this.encode(x, func); }, this);
|
246
|
+
val = "[%@]".fmt(val.join(","));
|
247
|
+
|
248
|
+
return this.js(key, val);
|
249
|
+
},
|
250
|
+
|
251
|
+
/**
|
252
|
+
Attempts to encode an object. The object must implement the
|
253
|
+
encodeMethodName for this encoder, or else an exception will be raised.
|
254
|
+
|
255
|
+
@param key {String} the key to set
|
256
|
+
@param val {Object} the object to encode
|
257
|
+
@returns {SC.ObjectCoder} receiver
|
258
|
+
*/
|
259
|
+
object: function(key, val) {
|
260
|
+
return this.js(key, val, function(x) {
|
261
|
+
return this.constructor.encode(x, this);
|
262
|
+
});
|
263
|
+
},
|
264
|
+
|
265
|
+
// ..........................................................
|
266
|
+
// INTERNAL SUPPORT
|
267
|
+
//
|
268
|
+
|
269
|
+
spaces: function() {
|
270
|
+
var spaces = this.context ? this.context.get('spaces') : '' ;
|
271
|
+
spaces = spaces + ' ';
|
272
|
+
return spaces ;
|
273
|
+
}.property().cacheable(),
|
274
|
+
|
275
|
+
/**
|
276
|
+
Emits the final JavaScript output for this coder based on the current
|
277
|
+
attributes.
|
278
|
+
*/
|
279
|
+
emit: function() {
|
280
|
+
|
281
|
+
// return undefined if the encoding was rejected...
|
282
|
+
if (this.invalid) return undefined ;
|
283
|
+
|
284
|
+
var ret = [], attrs = this.attributes, key ;
|
285
|
+
var methodName = this.get('extendMethodName');
|
286
|
+
var spaces = this.get('spaces');
|
287
|
+
|
288
|
+
// compute attribute body...
|
289
|
+
for(key in attrs) {
|
290
|
+
if (!attrs.hasOwnProperty(key)) continue ;
|
291
|
+
ret.push("%@: %@".fmt(key, attrs[key]));
|
292
|
+
}
|
293
|
+
|
294
|
+
if (ret.length <= 0) {
|
295
|
+
return "%@1%@2.%@3({})".fmt(spaces, this.className, methodName);
|
296
|
+
} else {
|
297
|
+
// handle NO class formatting..
|
298
|
+
ret = ret.join(",");
|
299
|
+
return "%@2.%@3({%@4})".fmt(spaces, this.className, methodName, ret);
|
300
|
+
}
|
301
|
+
},
|
302
|
+
|
303
|
+
/**
|
304
|
+
Begins encoding with a particular object, setting the className to the
|
305
|
+
object's className. This is used internally by the encode() method.
|
306
|
+
*/
|
307
|
+
begin: function(object) {
|
308
|
+
var methodName = this.get('encodeMethodName');
|
309
|
+
if (SC.typeOf(object[methodName]) !== SC.T_FUNCTION) {
|
310
|
+
throw SC.$error("Cannot encode %@ because it does not respond to %@()".fmt(object, methodName)) ;
|
311
|
+
}
|
312
|
+
|
313
|
+
// save className for later coding
|
314
|
+
this.set('className', SC._object_className(object.constructor));
|
315
|
+
|
316
|
+
// then call encode method...
|
317
|
+
var ret = object[methodName](this);
|
318
|
+
|
319
|
+
// if encoding method returns NO, then encoding is not allowed.
|
320
|
+
// note that returning void should count as YES.
|
321
|
+
this.invalid = ret === NO ;
|
322
|
+
|
323
|
+
// and return this
|
324
|
+
return this ;
|
325
|
+
},
|
326
|
+
|
327
|
+
init: function() {
|
328
|
+
sc_super();
|
329
|
+
this.set('attributes', {});
|
330
|
+
},
|
331
|
+
|
332
|
+
destroy: function() {
|
333
|
+
sc_super();
|
334
|
+
this.context = this.className = this.attributes = null ; // cleanup
|
335
|
+
}
|
336
|
+
|
337
|
+
});
|
338
|
+
|
339
|
+
SC.ObjectCoder.encode = function(object, context) {
|
340
|
+
// create coder and emit code...
|
341
|
+
var coder = this.create({ context: context });
|
342
|
+
var ret = coder.begin(object).emit();
|
343
|
+
|
344
|
+
// cleanup and return
|
345
|
+
coder.destroy();
|
346
|
+
return ret ;
|
347
|
+
} ;
|
@@ -0,0 +1,102 @@
|
|
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
|
+
/** @class
|
8
|
+
An instance of this controller is created for every page where designers
|
9
|
+
are involved. The Designer's themselves will register with the
|
10
|
+
controller so that you can hook to the controller to manage the views and
|
11
|
+
their editors.
|
12
|
+
|
13
|
+
Among other things, this controller implements global selection support for
|
14
|
+
the designers.
|
15
|
+
|
16
|
+
@extends SC.Object
|
17
|
+
@since SproutCore 1.0
|
18
|
+
*/
|
19
|
+
SC.PageDesignController = SC.Object.extend({
|
20
|
+
|
21
|
+
/** The current view builder selection. */
|
22
|
+
selection: null,
|
23
|
+
|
24
|
+
/**
|
25
|
+
Updates the selection either by adding the item or by reseting the
|
26
|
+
selection. Calling this method with no parameters will reset the
|
27
|
+
selection.
|
28
|
+
|
29
|
+
The passed selection must be a Designer object.
|
30
|
+
*/
|
31
|
+
select: function(sel, extend) {
|
32
|
+
var base = (extend ? this.get('selection') : []) || [];
|
33
|
+
sel = base.concat(sel||[]).compact().uniq();
|
34
|
+
this.set('selection', sel) ;
|
35
|
+
},
|
36
|
+
|
37
|
+
/**
|
38
|
+
Removes the passed items from the current selection.
|
39
|
+
|
40
|
+
The passed selection must be a Designer object.
|
41
|
+
*/
|
42
|
+
deselect: function(sel) {
|
43
|
+
|
44
|
+
// build new selection without passed elements
|
45
|
+
var newSel = [], cur = this.get('selection')||[];
|
46
|
+
if (!sel) sel = [];
|
47
|
+
cur.forEach(function(s) {
|
48
|
+
if (sel.indexOf(s)<0) newSel.push(s)
|
49
|
+
},this);
|
50
|
+
|
51
|
+
this.set('selection', newSel) ;
|
52
|
+
},
|
53
|
+
|
54
|
+
/**
|
55
|
+
Invoked whenever the selection changes. Updates the selection states
|
56
|
+
on the old and new views.
|
57
|
+
*/
|
58
|
+
selectionDidChange: function() {
|
59
|
+
// get new and old selection. step through both and update states
|
60
|
+
var sel = this.get('selection')||[], oldSel = this._selection||[];
|
61
|
+
var set = SC.Set.create(sel);
|
62
|
+
|
63
|
+
// save old selection for next time
|
64
|
+
this._selection = sel ;
|
65
|
+
|
66
|
+
// set the isSelected state on new selection.
|
67
|
+
sel.invoke('set', 'designIsSelected', YES);
|
68
|
+
|
69
|
+
// remove the isSelected state for old selection not in new selection.
|
70
|
+
oldSel.forEach(function(s){
|
71
|
+
if (!set.contains(s)) s.set('designIsSelected', NO);
|
72
|
+
}, this);
|
73
|
+
|
74
|
+
}.observes('selection'),
|
75
|
+
|
76
|
+
|
77
|
+
// ..........................................................
|
78
|
+
// DESIGNERS
|
79
|
+
//
|
80
|
+
|
81
|
+
/** All of the designers on the current page. */
|
82
|
+
designers: null,
|
83
|
+
|
84
|
+
/**
|
85
|
+
Called by each designer when it is created to register itself with the
|
86
|
+
controller. You can use this to know which designers are currently in
|
87
|
+
the document to delete them as needed.
|
88
|
+
*/
|
89
|
+
registerDesigner: function(designer) {
|
90
|
+
this.get('designers').add(designer);
|
91
|
+
},
|
92
|
+
|
93
|
+
// ..........................................................
|
94
|
+
// INTERNAL SUPPORT
|
95
|
+
//
|
96
|
+
init: function() {
|
97
|
+
this.designers = new SC.Set();
|
98
|
+
this.sel = [];
|
99
|
+
sc_super();
|
100
|
+
}
|
101
|
+
|
102
|
+
}) ;
|