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,352 @@
|
|
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
|
+
/** Indicates a value has a mixed state of both on and off. */
|
9
|
+
SC.MIXED_STATE = '__MIXED__' ;
|
10
|
+
|
11
|
+
/** Option for HUGE control size. */
|
12
|
+
SC.HUGE_CONTROL_SIZE = 'sc-huge-size' ;
|
13
|
+
|
14
|
+
/** Option for large control size. */
|
15
|
+
SC.LARGE_CONTROL_SIZE = 'sc-large-size' ;
|
16
|
+
|
17
|
+
/** Option for standard control size. */
|
18
|
+
SC.REGULAR_CONTROL_SIZE = 'sc-regular-size' ;
|
19
|
+
|
20
|
+
/** Option for small control size. */
|
21
|
+
SC.SMALL_CONTROL_SIZE = 'sc-small-size' ;
|
22
|
+
|
23
|
+
/** Option for tiny control size */
|
24
|
+
SC.TINY_CONTROL_SIZE = 'sc-tiny-size' ;
|
25
|
+
|
26
|
+
/**
|
27
|
+
@namespace
|
28
|
+
|
29
|
+
A Control is a view that also implements some basic state functionality.
|
30
|
+
Apply this mixin to any view that you want to have standard control
|
31
|
+
functionality including showing a selected state, enabled state, focus
|
32
|
+
state, etc.
|
33
|
+
|
34
|
+
h2. About Values and Content
|
35
|
+
|
36
|
+
Controls typically are used to represent a single value, such as a number,
|
37
|
+
boolean or string. The value a control is managing is typically stored in
|
38
|
+
a "value" property. You will typically use the value property when working
|
39
|
+
with controls such as buttons and text fields in a form.
|
40
|
+
|
41
|
+
An alternative way of working with a control is to use it to manage some
|
42
|
+
specific aspect of a content object. For example, you might use a label
|
43
|
+
view control to display the "name" property of a Contact record. This
|
44
|
+
approach is often necessary when using the control as part of a collection
|
45
|
+
view.
|
46
|
+
|
47
|
+
You can use the content-approach to work with a control by setting the
|
48
|
+
"content" and "contentValueKey" properties of the control. The
|
49
|
+
"content" property is the content object you want to manage, while the
|
50
|
+
"contentValueKey" is the name of the property on the content object
|
51
|
+
you want the control to display.
|
52
|
+
|
53
|
+
The default implementation of the Control mixin will essentially map the
|
54
|
+
contentValueKey of a content object to the value property of the
|
55
|
+
control. Thus if you are writing a custom control yourself, you can simply
|
56
|
+
work with the value property and the content object support will come for
|
57
|
+
free. Just write an observer for the value property and update your
|
58
|
+
view accordingly.
|
59
|
+
|
60
|
+
If you are working with a control that needs to display multiple aspects
|
61
|
+
of a single content object (for example showing an icon and label), then
|
62
|
+
you can override the contentValueDidChange() method instead of observing
|
63
|
+
the value property. This method will be called anytime _any_ property
|
64
|
+
on the content object changes. You should use this method to check the
|
65
|
+
properties you care about on the content object and update your view if
|
66
|
+
anything you care about has changed.
|
67
|
+
|
68
|
+
h2. Delegate Support
|
69
|
+
|
70
|
+
Controls can optionally get the contentDisplayProperty from a
|
71
|
+
displayDelegate, if it is set. The displayDelegate is often used to
|
72
|
+
delegate common display-related configurations such as which content value
|
73
|
+
to show. Anytime your control is shown as part of a collection view, the
|
74
|
+
collection view will be automatically set as its displayDelegate.
|
75
|
+
|
76
|
+
@since SproutCore 1.0
|
77
|
+
*/
|
78
|
+
SC.Control = {
|
79
|
+
|
80
|
+
initMixin: function() {
|
81
|
+
this._control_contentDidChange() ; // setup content observing if needed.
|
82
|
+
},
|
83
|
+
|
84
|
+
/**
|
85
|
+
The selected state of this control. Possible options are YES, NO or
|
86
|
+
SC.MIXED_STATE.
|
87
|
+
|
88
|
+
@type Boolean or SC.MIXED_STATE
|
89
|
+
*/
|
90
|
+
isSelected: NO,
|
91
|
+
|
92
|
+
/** @private */
|
93
|
+
isSelectedBindingDefault: SC.Binding.oneWay().bool(),
|
94
|
+
|
95
|
+
/**
|
96
|
+
Set to YES when the item is currently active. Usually this means the
|
97
|
+
mouse is current pressed and hovering over the control, however the
|
98
|
+
specific implementation my vary depending on the control.
|
99
|
+
|
100
|
+
Changing this property value by default will cause the Control mixin to
|
101
|
+
add/remove an 'active' class name to the root element.
|
102
|
+
|
103
|
+
@type Boolean
|
104
|
+
*/
|
105
|
+
isActive: NO,
|
106
|
+
|
107
|
+
/** @private */
|
108
|
+
isActiveBindingDefault: SC.Binding.oneWay().bool(),
|
109
|
+
|
110
|
+
/**
|
111
|
+
The value represented by this control.
|
112
|
+
|
113
|
+
Most controls represent a value of some type, such as a number, string
|
114
|
+
or image URL. This property should hold that value. It is bindable
|
115
|
+
and observable. Changing this value will immediately change the
|
116
|
+
appearance of the control. Likewise, editing the control
|
117
|
+
will immediately change this value.
|
118
|
+
|
119
|
+
If instead of setting a single value on a control, you would like to
|
120
|
+
set a content object and have the control display a single property
|
121
|
+
of that control, then you should use the content property instead.
|
122
|
+
*/
|
123
|
+
value: null,
|
124
|
+
|
125
|
+
/**
|
126
|
+
The content object represented by this control.
|
127
|
+
|
128
|
+
Often you need to use a control to display some single aspect of an
|
129
|
+
object, especially if you are using the control as an item view in a
|
130
|
+
collection view.
|
131
|
+
|
132
|
+
In those cases, you can set the content and contentValueKey for the
|
133
|
+
control. This will cause the control to observe the content object for
|
134
|
+
changes to the value property and then set the value of that property
|
135
|
+
on the "value" property of this object.
|
136
|
+
|
137
|
+
Note that unless you are using this control as part of a form or
|
138
|
+
collection view, then it would be better to instead bind the value of
|
139
|
+
the control directly to a controller property.
|
140
|
+
|
141
|
+
@type SC.Object
|
142
|
+
*/
|
143
|
+
content: null,
|
144
|
+
|
145
|
+
/**
|
146
|
+
The property on the content object that would want to represent the
|
147
|
+
value of this control. This property should only be set before the
|
148
|
+
content object is first set. If you have a displayDelegate, then
|
149
|
+
you can also use the contentValueKey of the displayDelegate.
|
150
|
+
|
151
|
+
@type String
|
152
|
+
*/
|
153
|
+
contentValueKey: null,
|
154
|
+
|
155
|
+
/**
|
156
|
+
Invoked whenever any property on the content object changes.
|
157
|
+
|
158
|
+
The default implementation will update the value property of the view
|
159
|
+
if the contentValueKey property has changed. You can override this
|
160
|
+
method to implement whatever additional changes you would like.
|
161
|
+
|
162
|
+
The key will typically contain the name of the property that changed or
|
163
|
+
'*' if the content object itself has changed. You should generally do
|
164
|
+
a total reset of '*' is changed.
|
165
|
+
|
166
|
+
@param {Object} target the content object
|
167
|
+
@param {String} key the property that changes
|
168
|
+
@test in content
|
169
|
+
*/
|
170
|
+
contentPropertyDidChange: function(target, key) {
|
171
|
+
return this.updatePropertyFromContent('value', key, 'contentValueKey');
|
172
|
+
},
|
173
|
+
|
174
|
+
/**
|
175
|
+
Helper method you can use from your own implementation of
|
176
|
+
contentPropertyDidChange(). This method will look up the content key to
|
177
|
+
extract a property and then update the property if needed. If you do
|
178
|
+
not pass the content key or the content object, they will be computed
|
179
|
+
for you. It is more efficient, however, for you to compute these values
|
180
|
+
yourself if you expect this method to be called frequently.
|
181
|
+
|
182
|
+
@param {String} prop local property to update
|
183
|
+
@param {String} key the contentproperty that changed
|
184
|
+
@param {String} contentKey the local property that contains the key
|
185
|
+
@param {Object} content
|
186
|
+
@returns {SC.Control} receiver
|
187
|
+
*/
|
188
|
+
updatePropertyFromContent: function(prop, key, contentKey, content) {
|
189
|
+
var all = key === '*';
|
190
|
+
if (contentKey === undefined) {
|
191
|
+
contentKey = "content%@Key".fmt(prop.capitalize());
|
192
|
+
}
|
193
|
+
if (content === undefined) content = this.get('content');
|
194
|
+
|
195
|
+
// get actual content key
|
196
|
+
contentKey = this[contentKey] ?
|
197
|
+
this.get(contentKey) :
|
198
|
+
this.getDelegateProperty(this.displayDelegate, contentKey) ;
|
199
|
+
|
200
|
+
if (contentKey && (all || key === contentKey)) {
|
201
|
+
var v = (content) ?
|
202
|
+
(content.get ? content.get(contentKey) : content[contentKey]) :
|
203
|
+
null ;
|
204
|
+
this.set(prop, v) ;
|
205
|
+
}
|
206
|
+
return this ;
|
207
|
+
},
|
208
|
+
|
209
|
+
/**
|
210
|
+
Relays changes to the value back to the content object if you are using
|
211
|
+
a content object.
|
212
|
+
|
213
|
+
This observer is triggered whenever the value changes. It will only do
|
214
|
+
something if it finds you are using the content property and
|
215
|
+
contentValueKey and the new value does not match the old value of the
|
216
|
+
content object.
|
217
|
+
|
218
|
+
If you are using contentValueKey in some other way than typically
|
219
|
+
implemented by this mixin, then you may want to override this method as
|
220
|
+
well.
|
221
|
+
*/
|
222
|
+
updateContentWithValueObserver: function() {
|
223
|
+
var key = this.contentValueKey ?
|
224
|
+
this.get('contentValueKey') :
|
225
|
+
this.getDelegateProperty(this.displayDelegate, 'contentValueKey') ;
|
226
|
+
|
227
|
+
var content = this.get('content') ;
|
228
|
+
if (!key || !content) return ; // do nothing if disabled
|
229
|
+
|
230
|
+
// get value -- set on content if changed
|
231
|
+
var value = this.get('value');
|
232
|
+
if (typeof content.setIfChanged === SC.T_FUNCTION) {
|
233
|
+
content.setIfChanged(key, value);
|
234
|
+
} else {
|
235
|
+
// avoid re-writing inherited props
|
236
|
+
if (content[key] !== value) content[key] = value ;
|
237
|
+
}
|
238
|
+
}.observes('value'),
|
239
|
+
|
240
|
+
/**
|
241
|
+
The name of the property this control should display if it is part of an
|
242
|
+
SC.FormView.
|
243
|
+
|
244
|
+
If you add a control as part of an SC.FormView, then the form view will
|
245
|
+
automatically bind the value to the property key you name here on the
|
246
|
+
content object.
|
247
|
+
|
248
|
+
@type String
|
249
|
+
*/
|
250
|
+
fieldKey: null,
|
251
|
+
|
252
|
+
/**
|
253
|
+
The human readable label you want shown for errors. May be a loc string.
|
254
|
+
|
255
|
+
If your field fails validation, then this is the name that will be shown
|
256
|
+
in the error explanation. If you do not set this property, then the
|
257
|
+
fieldKey or the class name will be used to generate a human readable name.
|
258
|
+
|
259
|
+
@type String
|
260
|
+
*/
|
261
|
+
fieldLabel: null,
|
262
|
+
|
263
|
+
/**
|
264
|
+
The human readable label for this control for use in error strings. This
|
265
|
+
property is computed dynamically using the following rules:
|
266
|
+
|
267
|
+
# If the fieldLabel is defined, that property is localized and returned.
|
268
|
+
# Otherwise, if the keyField is defined, try to localize using the string
|
269
|
+
# "ErrorLabel.{fieldKeyName}". If a localized name cannot be found, use a
|
270
|
+
# humanized form of the fieldKey.
|
271
|
+
# Try to localize using the string "ErrorLabel.{ClassName}"
|
272
|
+
# Return a humanized form of the class name.
|
273
|
+
|
274
|
+
@type String
|
275
|
+
*/
|
276
|
+
errorLabel: function() {
|
277
|
+
var ret, fk, def ;
|
278
|
+
if (ret = this.get('fieldLabel')) return ret ;
|
279
|
+
|
280
|
+
// if field label is not provided, compute something...
|
281
|
+
fk = this.get('fieldKey') || this.constructor.toString() ;
|
282
|
+
def = (fk || '').humanize().capitalize() ;
|
283
|
+
return "ErrorLabel.%@".fmt(fk)
|
284
|
+
.locWithDefault("FieldKey.%@".fmt(fk).locWithDefault(def)) ;
|
285
|
+
|
286
|
+
}.property('fieldLabel','fieldKey').cacheable(),
|
287
|
+
|
288
|
+
/**
|
289
|
+
The control size. This will set a CSS style on the element that can be
|
290
|
+
used by the current theme to vary the appearance of the control.
|
291
|
+
*/
|
292
|
+
controlSize: SC.REGULAR_CONTROL_SIZE,
|
293
|
+
|
294
|
+
displayProperties: 'isEnabled isSelected isFirstResponder isActive'.w(),
|
295
|
+
|
296
|
+
/** @private */
|
297
|
+
_CONTROL_TMP_CLASSNAMES: {},
|
298
|
+
|
299
|
+
/**
|
300
|
+
Invoke this method in your updateDisplay() method to update any basic
|
301
|
+
control CSS classes.
|
302
|
+
*/
|
303
|
+
renderMixin: function(context, firstTime) {
|
304
|
+
var sel = this.get('isSelected'), disabled = !this.get('isEnabled');
|
305
|
+
|
306
|
+
// update the CSS classes for the control. note we reuse the same hash
|
307
|
+
// to avoid consuming more memory
|
308
|
+
var names = this._CONTROL_TMP_CLASSNAMES ; // temporary object
|
309
|
+
names.mixed = sel === SC.MIXED_STATE;
|
310
|
+
names.sel = sel && (sel !== SC.MIXED_STATE) ;
|
311
|
+
names.disabled = disabled ;
|
312
|
+
names.focus = this.get('isFirstResponder') ;
|
313
|
+
names.active = this.get('isActive') ;
|
314
|
+
context.setClass(names).addClass(this.get('controlSize'));
|
315
|
+
|
316
|
+
// if the control implements the $input() helper, then fixup the input
|
317
|
+
// tags
|
318
|
+
if (!firstTime && this.$input) {
|
319
|
+
this.$input().attr('disabled', disabled);
|
320
|
+
}
|
321
|
+
},
|
322
|
+
|
323
|
+
/** @private
|
324
|
+
This should be null so that if content is also null, the
|
325
|
+
_contentDidChange won't do anything on init.
|
326
|
+
*/
|
327
|
+
_control_content: null,
|
328
|
+
|
329
|
+
/** @private
|
330
|
+
Observes when a content object has changed and handles notifying
|
331
|
+
changes to the value of the content object.
|
332
|
+
*/
|
333
|
+
_control_contentDidChange: function() {
|
334
|
+
var content = this.get('content') ;
|
335
|
+
if (this._control_content === content) return; // nothing changed
|
336
|
+
|
337
|
+
var f = this.contentPropertyDidChange ;
|
338
|
+
|
339
|
+
// remove an observer from the old content if necessary
|
340
|
+
var old = this._control_content ;
|
341
|
+
if (old && old.removeObserver) old.removeObserver('*', this, f) ;
|
342
|
+
|
343
|
+
// add observer to new content if necessary.
|
344
|
+
this._control_content = content ;
|
345
|
+
if (content && content.addObserver) content.addObserver('*', this, f) ;
|
346
|
+
|
347
|
+
// notify that value did change.
|
348
|
+
this.contentPropertyDidChange(content, '*') ;
|
349
|
+
|
350
|
+
}.observes('content')
|
351
|
+
|
352
|
+
};
|
@@ -0,0 +1,146 @@
|
|
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
|
+
/**
|
9
|
+
@namespace
|
10
|
+
|
11
|
+
The Editable mixin is a standard protocol used to activate keyboard editing
|
12
|
+
on views that are editable such as text fields, label views and item views.
|
13
|
+
|
14
|
+
You should apply this mixin, or implement the methods, if you are
|
15
|
+
designing an item view for a collection and you want to automatically
|
16
|
+
trigger editing.
|
17
|
+
|
18
|
+
h2. Using Editable Views
|
19
|
+
|
20
|
+
To use a view that includes the Editable mixin, you simply call three
|
21
|
+
methods on the view:
|
22
|
+
|
23
|
+
- To begin editing, call beginEditing(). This will make the view first responder and allow the user to make changes to it. If the view cannot begin editing for some reason, it will return NO.
|
24
|
+
|
25
|
+
- If you want to cancel editing, you should try calling discardEditing(). This will cause the editor to discard its changed value and resign first responder. Some editors do not support cancelling editing and will return NO. If this is the case, you may optionally try calling commitEditing() instead to force the view to resign first responder, even though this will commit the changes.
|
26
|
+
|
27
|
+
- If you want to end editing, while saving any changes that were made, try calling commitEditing(). This will cause the editor to validate and apply its changed value and resign first responder. If the editor cannot validate its contents for some reason, it will return NO. In this case you may optionally try calling discardEditing() instead to force the view to resign first responder, even though this will discard the changes.
|
28
|
+
|
29
|
+
|
30
|
+
h2. Implementing an Editable View
|
31
|
+
|
32
|
+
To implement a new view that is editable, you should implement the three
|
33
|
+
methods defined below: beginEditing(), discardEditing(), and
|
34
|
+
commitEditing(). If you already allow editing when your view becomes first
|
35
|
+
responder and commit your changes when the view loses first responder status
|
36
|
+
then you can simply apply this mixin and not override any methods.
|
37
|
+
|
38
|
+
|
39
|
+
@since SproutCore 1.0
|
40
|
+
|
41
|
+
*/
|
42
|
+
SC.Editable = {
|
43
|
+
|
44
|
+
/**
|
45
|
+
Indicates whether a view is editable or not. You can optionally
|
46
|
+
implement the methods in this mixin to disallow editing is isEditable is
|
47
|
+
NO.
|
48
|
+
*/
|
49
|
+
isEditable: NO,
|
50
|
+
|
51
|
+
/**
|
52
|
+
Indicates whether editing is currently in progress. The methods you
|
53
|
+
implement should generally up this property as appropriate when you
|
54
|
+
begin and end editing.
|
55
|
+
*/
|
56
|
+
isEditing: NO,
|
57
|
+
|
58
|
+
/**
|
59
|
+
Begins editing on the view.
|
60
|
+
|
61
|
+
This method is called by other views when they want you to begin editing.
|
62
|
+
You should write this method to become first responder, perform any
|
63
|
+
additional setup needed to begin editing and then return YES.
|
64
|
+
|
65
|
+
If for some reason you do not want to allow editing right now, you can
|
66
|
+
also return NO. If your view is already editing, then you should not
|
67
|
+
restart editing again but just return YES.
|
68
|
+
|
69
|
+
The default implementation checks to see if editing is allowed, then
|
70
|
+
becomes first responder and updates the isEditing property if appropriate.
|
71
|
+
Generally you will want to replace this method with your own
|
72
|
+
implementation and not call the default.
|
73
|
+
|
74
|
+
@returns {Boolean} YES if editing began or is in progress, NO otherwise
|
75
|
+
*/
|
76
|
+
beginEditing: function() {
|
77
|
+
if (!this.get('isEditable')) return NO ;
|
78
|
+
if (this.get('isEditing')) return YES ;
|
79
|
+
|
80
|
+
// begin editing
|
81
|
+
this.set('isEditing', YES) ;
|
82
|
+
this.becomeFirstResponder() ;
|
83
|
+
return YES ;
|
84
|
+
},
|
85
|
+
|
86
|
+
/**
|
87
|
+
Ends editing on the view, discarding any changes that were made to the
|
88
|
+
view value in the meantime.
|
89
|
+
|
90
|
+
This method is called by other views when they want to cancel editing
|
91
|
+
that began earlier. When this method is called you should resign first
|
92
|
+
responder, restore the original value of the view and return YES.
|
93
|
+
|
94
|
+
If your view cannot revert back to its original state before editing began
|
95
|
+
then you can implement this method to simply return NO. A properly
|
96
|
+
implemented client may try to call commitEditing() instead to force your
|
97
|
+
view to end editing anyway.
|
98
|
+
|
99
|
+
If this method is called on a view that is not currently editing, you
|
100
|
+
should always just return YES.
|
101
|
+
|
102
|
+
The default implementation does not support discarding changes and always
|
103
|
+
returns NO.
|
104
|
+
|
105
|
+
@returns {Boolean} YES if changes were discarded and editing ended.
|
106
|
+
*/
|
107
|
+
discardEditing: function() {
|
108
|
+
// if we are not editing, return YES, otherwise NO.
|
109
|
+
return !this.get('isEditing') ;
|
110
|
+
},
|
111
|
+
|
112
|
+
/**
|
113
|
+
Ends editing on the view, committing any changes that were made to the
|
114
|
+
view value in the meantime.
|
115
|
+
|
116
|
+
This method is called by other views when they want to end editing,
|
117
|
+
saving any changes that were made to the view in the meantime. When this
|
118
|
+
method is called you should resign first responder, save the latest
|
119
|
+
value of the view and return YES.
|
120
|
+
|
121
|
+
If your view cannot save the current state of the view for some reason
|
122
|
+
(for example if validation fails), then you should return NO. Properly
|
123
|
+
implemented clients may then try to call discardEditing() to force your
|
124
|
+
view to resign first responder anyway.
|
125
|
+
|
126
|
+
Some views apply changes to their value immediately during an edit instead
|
127
|
+
of waiting for the view to end editing. If this is the case, you should
|
128
|
+
still implement commitEditing but you simply may not save any value
|
129
|
+
changes.
|
130
|
+
|
131
|
+
If this method is called on a view that is not currently editing, you
|
132
|
+
should always just reutrn YES.
|
133
|
+
|
134
|
+
The default implementation sets isEditing to NO, resigns first responder
|
135
|
+
and returns YES.
|
136
|
+
|
137
|
+
@returns {Boolean} YES if changes were discarded and editing ended.
|
138
|
+
*/
|
139
|
+
commitEditing: function() {
|
140
|
+
if (!this.get('isEditing')) return YES;
|
141
|
+
this.set('isEditing', NO) ;
|
142
|
+
this.resignFirstResponder() ;
|
143
|
+
return YES ;
|
144
|
+
}
|
145
|
+
|
146
|
+
} ;
|
@@ -0,0 +1,156 @@
|
|
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
|
+
/** @static
|
9
|
+
|
10
|
+
The Responder mixin provides common methods needed to respond to user-interface events in SproutCore.
|
11
|
+
|
12
|
+
@namespace
|
13
|
+
@since SproutCore 1.0
|
14
|
+
*/
|
15
|
+
SC.Responder = {
|
16
|
+
|
17
|
+
/** @property
|
18
|
+
The pane this responder belongs to. This is used to determine where you
|
19
|
+
belong to in the responder chain.
|
20
|
+
*/
|
21
|
+
pane: null,
|
22
|
+
|
23
|
+
/** @property
|
24
|
+
This is the nextResponder in the responder chain. If the receiver does
|
25
|
+
not implement a particular event handler, it will bubble to the next
|
26
|
+
responder.
|
27
|
+
*/
|
28
|
+
nextResponder: null,
|
29
|
+
|
30
|
+
/** @property
|
31
|
+
YES if the view is currently first responder. This property is always
|
32
|
+
edited by the pane during its makeFirstResponder() method.
|
33
|
+
*/
|
34
|
+
isFirstResponder: NO,
|
35
|
+
|
36
|
+
/** @property
|
37
|
+
YES if the view is currently first responder and the pane the view belongs
|
38
|
+
to is also key pane. While this property is set, you should expect to
|
39
|
+
receive keyboard events.
|
40
|
+
*/
|
41
|
+
isKeyResponder: NO,
|
42
|
+
|
43
|
+
/** @property
|
44
|
+
Set to YES if your view is willing to accept first responder status. This is used when calculcating key responder loop.
|
45
|
+
*/
|
46
|
+
acceptsFirstResponder: NO,
|
47
|
+
|
48
|
+
/**
|
49
|
+
Call this method on your view or responder to make it become first responder.
|
50
|
+
|
51
|
+
@returns {SC.Responder} receiver
|
52
|
+
*/
|
53
|
+
becomeFirstResponder: function() {
|
54
|
+
var pane = this.get('pane');
|
55
|
+
if (pane && this.get('acceptsFirstResponder')) {
|
56
|
+
if (pane.get('firstResponder') !== this) pane.makeFirstResponder(this);
|
57
|
+
}
|
58
|
+
return this ;
|
59
|
+
},
|
60
|
+
|
61
|
+
/**
|
62
|
+
Call this method on your view or responder to resign your first responder status. Normally this is not necessary since you will lose first responder status automatically when another view becomes first responder.
|
63
|
+
|
64
|
+
@returns {SC.Responder} receiver
|
65
|
+
*/
|
66
|
+
resignFirstResponder: function() {
|
67
|
+
var pane = this.get('pane');
|
68
|
+
if (pane && (pane.get('firstResponder') === this)) {
|
69
|
+
pane.makeFirstResponder(null);
|
70
|
+
}
|
71
|
+
return YES;
|
72
|
+
},
|
73
|
+
|
74
|
+
/**
|
75
|
+
This method will be called just before you lose first responder status.
|
76
|
+
*/
|
77
|
+
willLoseFirstResponder: function() {},
|
78
|
+
|
79
|
+
/**
|
80
|
+
This method is invoked just before you lost the key responder status. The passed view is the view that is about to gain keyResponder status. This gives you a chance to do any early setup.
|
81
|
+
|
82
|
+
Remember that you can gain/lose key responder status either because another view in the same pane is becoming first responder or because another pane is about to become key.
|
83
|
+
|
84
|
+
@param {SC.Responder} responder
|
85
|
+
*/
|
86
|
+
willLoseKeyResponderTo: function(responder) {},
|
87
|
+
|
88
|
+
/**
|
89
|
+
This method is invoked just before you become the key responder. The passed view is the view that is about to lose keyResponder status. You can use this to do any setup before the view changes.
|
90
|
+
|
91
|
+
Remember that you can gain/lose key responder status either because another view in the same pane is becoming first responder or because another pane is about to become key.
|
92
|
+
|
93
|
+
@param {SC.Responder} responder
|
94
|
+
*/
|
95
|
+
willBecomeKeyResponderFrom: function(responder) {},
|
96
|
+
|
97
|
+
/**
|
98
|
+
Invokved just after the responder loses key responder status.
|
99
|
+
*/
|
100
|
+
didLoseKeyResponderTo: function(responder) {},
|
101
|
+
|
102
|
+
/**
|
103
|
+
Invoked just after the responder gains key responder status.
|
104
|
+
*/
|
105
|
+
didBecomeKeyResponderFrom: function(responder) {},
|
106
|
+
|
107
|
+
/**
|
108
|
+
This method will be called just before you become the first responder
|
109
|
+
so you can make changes.
|
110
|
+
*/
|
111
|
+
didBecomeFirstResponder: function() {},
|
112
|
+
|
113
|
+
/**
|
114
|
+
This method will process a key input event, attempting to convert it to an appropriate action method and sending it up the responder chain. The event is converted using the SC.KEY_BINDINGS hash, which maps key events into method names. If no key binding is found, then the key event will be passed along using an insertText() method.
|
115
|
+
|
116
|
+
@param {SC.Event} event
|
117
|
+
@returns {Object} object that handled event, if any
|
118
|
+
*/
|
119
|
+
interpretKeyEvents: function(event) {
|
120
|
+
var codes = event.commandCodes(), cmd = codes[0], chr = codes[1];
|
121
|
+
|
122
|
+
if (!cmd && !chr) return null ; //nothing to do.
|
123
|
+
|
124
|
+
// if this is a command key, try to do something about it.
|
125
|
+
if (cmd) {
|
126
|
+
var methodName = SC.MODIFIED_KEY_BINDINGS[cmd] || SC.BASE_KEY_BINDINGS[cmd.match(/[^_]+$/)[0]];
|
127
|
+
if (methodName) {
|
128
|
+
var target = this, pane = this.get('pane'), handler = null;
|
129
|
+
while(target && !(handler = target.tryToPerform(methodName, event))){
|
130
|
+
target = (target===pane)? null: target.get('nextResponder') ;
|
131
|
+
}
|
132
|
+
return handler ;
|
133
|
+
}
|
134
|
+
}
|
135
|
+
|
136
|
+
if (chr && this.respondsTo('insertText')) {
|
137
|
+
// if we haven't returned yet and there is plain text, then do an insert
|
138
|
+
// of the text. Since this is not an action, do not send it up the
|
139
|
+
// responder chain.
|
140
|
+
return this.insertText(chr);
|
141
|
+
}
|
142
|
+
|
143
|
+
return null ; //nothing to do.
|
144
|
+
},
|
145
|
+
|
146
|
+
/**
|
147
|
+
This method is invoked by interpretKeyEvents() when you receive a key event matching some plain text. You can use this to actually insert the text into your application, if needed.
|
148
|
+
|
149
|
+
@param {SC.Event} event
|
150
|
+
@returns {Object} receiver or object that handled event
|
151
|
+
*/
|
152
|
+
insertText: function(chr) {
|
153
|
+
return this ;
|
154
|
+
}
|
155
|
+
|
156
|
+
};
|