sproutit-sproutcore 1.0.20090721145236 → 1.0.20090721145251
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/Rakefile +189 -54
- data/VERSION.yml +5 -0
- data/frameworks/sproutcore/Buildfile +64 -0
- data/frameworks/sproutcore/HISTORY +682 -0
- data/frameworks/sproutcore/README +23 -0
- data/frameworks/sproutcore/apps/docs/core.js +27 -0
- data/frameworks/sproutcore/apps/docs/english.lproj/loading.rhtml +9 -0
- data/frameworks/sproutcore/apps/docs/english.lproj/main_page.js +22 -0
- data/frameworks/sproutcore/apps/docs/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/apps/docs/main.js +30 -0
- data/frameworks/sproutcore/apps/tests/controllers/detail.js +16 -0
- data/frameworks/sproutcore/apps/tests/controllers/source.js +29 -0
- data/frameworks/sproutcore/apps/tests/controllers/target.js +26 -0
- data/frameworks/sproutcore/apps/tests/controllers/targets.js +86 -0
- data/frameworks/sproutcore/apps/tests/controllers/tests.js +33 -0
- data/frameworks/sproutcore/apps/tests/core.js +133 -0
- data/frameworks/sproutcore/apps/tests/data_source.js +96 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/loading.rhtml +9 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +39 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +232 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +26 -0
- data/frameworks/sproutcore/apps/tests/fixtures/target.js +87 -0
- data/frameworks/sproutcore/apps/tests/fixtures/test.js +44 -0
- data/frameworks/sproutcore/apps/tests/main.js +28 -0
- data/frameworks/sproutcore/apps/tests/models/target.js +92 -0
- data/frameworks/sproutcore/apps/tests/models/test.js +48 -0
- data/frameworks/sproutcore/apps/tests/states/no_targets.js +26 -0
- data/frameworks/sproutcore/apps/tests/states/ready.js +56 -0
- data/frameworks/sproutcore/apps/tests/states/ready_detail.js +41 -0
- data/frameworks/sproutcore/apps/tests/states/ready_empty.js +48 -0
- data/frameworks/sproutcore/apps/tests/states/ready_list.js +41 -0
- data/frameworks/sproutcore/apps/tests/states/ready_loading.js +44 -0
- data/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +31 -0
- data/frameworks/sproutcore/apps/tests/states/start.js +39 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/detail.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/source.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/target.js +15 -0
- data/frameworks/sproutcore/apps/tests/tests/controllers/targets.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/tests/tests/views/offset_checkbox.js +15 -0
- data/frameworks/sproutcore/apps/tests/views/offset_checkbox.js +26 -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/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 +273 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +311 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures_with_queries.js +238 -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 +54 -0
- data/frameworks/sproutcore/frameworks/datastore/models/record.js +561 -0
- data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +423 -0
- data/frameworks/sproutcore/frameworks/datastore/system/many_array.js +158 -0
- data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +488 -0
- data/frameworks/sproutcore/frameworks/datastore/system/query.js +979 -0
- data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +287 -0
- data/frameworks/sproutcore/frameworks/datastore/system/store.js +2007 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +121 -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/many_attribute.js +94 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/core_methods.js +30 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +73 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +238 -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 +204 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/many_array/core_methods.js +178 -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 +117 -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/query/compare_records.js +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +165 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation_of_records.js +82 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/find_all.js +362 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/parsing.js +170 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +43 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +60 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +67 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +164 -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 +126 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +73 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +72 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataHashDidChange.js +78 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +249 -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 +61 -0
- data/frameworks/sproutcore/frameworks/deprecated/core.js +59 -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 +673 -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 +75 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +312 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/event.js +58 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/globals.js +20 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +58 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/node_descriptor.js +72 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/object.js +122 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +432 -0
- data/frameworks/sproutcore/frameworks/deprecated/system/string.js +107 -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 +29 -0
- data/frameworks/sproutcore/frameworks/designer/coders/localization.js +27 -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 +86 -0
- data/frameworks/sproutcore/frameworks/designer/ext/view.js +38 -0
- data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +17 -0
- data/frameworks/sproutcore/frameworks/designer/views/designer.js +569 -0
- data/frameworks/sproutcore/frameworks/designer/views/label.js +16 -0
- data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +11 -0
- data/frameworks/sproutcore/frameworks/designer/views/tab.js +16 -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/drag.css +6 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/icons.css +943 -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 +209 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +100 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/modal.css +5 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +95 -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 +62 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split.css +70 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +9 -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/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_row_delegate.js +61 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +283 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +247 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +408 -0
- data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +651 -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 +400 -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 +827 -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 +55 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +59 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/methods.js +10 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +35 -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 +84 -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 +159 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +144 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +99 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/content.js +249 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deleteSelection.js +82 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/deselect.js +199 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/itemViewForContentIndex.js +288 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/layerIdFor.js +65 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/length.js +88 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +165 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/nowShowing.js +121 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +177 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/select.js +240 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectNextItem.js +191 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selectPreviousItem.js +197 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/selection.js +141 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +182 -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/rowDelegate.js +183 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowHeightForContentIndex.js +133 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowOffsetForContentIndex.js +132 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_outline.js +56 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_row_heights.js +167 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui_simple.js +127 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +284 -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 +102 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/ui.js +70 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +95 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +222 -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 +100 -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/stacked/ui_comments.js +231 -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/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 +331 -0
- data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +105 -0
- data/frameworks/sproutcore/frameworks/desktop/views/collection.js +2757 -0
- data/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +44 -0
- data/frameworks/sproutcore/frameworks/desktop/views/form.js +594 -0
- data/frameworks/sproutcore/frameworks/desktop/views/grid.js +201 -0
- data/frameworks/sproutcore/frameworks/desktop/views/list.js +540 -0
- data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +660 -0
- data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +587 -0
- data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +68 -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 +204 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +690 -0
- data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +226 -0
- data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +525 -0
- data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +331 -0
- data/frameworks/sproutcore/frameworks/desktop/views/separator.js +37 -0
- data/frameworks/sproutcore/frameworks/desktop/views/slider.js +180 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +47 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +169 -0
- data/frameworks/sproutcore/frameworks/desktop/views/split.js +677 -0
- data/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +55 -0
- data/frameworks/sproutcore/frameworks/desktop/views/stacked.js +101 -0
- data/frameworks/sproutcore/frameworks/desktop/views/tab.js +191 -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 +509 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +45 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +323 -0
- data/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +109 -0
- data/frameworks/sproutcore/frameworks/foundation/core.js +136 -0
- data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +194 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +68 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/button_view.css +55 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +221 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +9 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +30 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/static_layout.css +5 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/text_field.css +45 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +45 -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/license.js +19 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +299 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +171 -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/inline_text_field.js +462 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +232 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +132 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +251 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +159 -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 +584 -0
- data/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +887 -0
- data/frameworks/sproutcore/frameworks/foundation/protocols/inline_editor_delegate.js +84 -0
- data/frameworks/sproutcore/frameworks/foundation/system/application.js +36 -0
- data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +492 -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/datetime.js +729 -0
- data/frameworks/sproutcore/frameworks/foundation/system/error.js +93 -0
- data/frameworks/sproutcore/frameworks/foundation/system/event.js +853 -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 +195 -0
- data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +904 -0
- data/frameworks/sproutcore/frameworks/foundation/system/request.js +380 -0
- data/frameworks/sproutcore/frameworks/foundation/system/responder.js +120 -0
- data/frameworks/sproutcore/frameworks/foundation/system/responder_context.js +243 -0
- data/frameworks/sproutcore/frameworks/foundation/system/root_responder.js +391 -0
- data/frameworks/sproutcore/frameworks/foundation/system/routes.js +487 -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 +165 -0
- data/frameworks/sproutcore/frameworks/foundation/system/utils.js +425 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/array_case.js +182 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/enum_case.js +193 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/null_case.js +64 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array/single_case.js +136 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/empty_case.js +82 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/multiple_case.js +111 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_case.js +193 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object/single_enumerable_case.js +179 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/outline_case.js +108 -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/button/keyEquivalents.js +35 -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/mixins/staticLayout.js +128 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/mixins/string.js +17 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/flat_case.js +325 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/group_case.js +718 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/private/tree_item_observer/outline_case.js +484 -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/datetime.js +151 -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 +127 -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 +101 -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 +23 -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/label/ui.js +148 -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/text_field/methods.js +76 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +250 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +133 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +246 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +122 -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/isVisible.js +51 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +113 -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 +328 -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 +146 -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 +287 -0
- data/frameworks/sproutcore/frameworks/foundation/views/image.js +161 -0
- data/frameworks/sproutcore/frameworks/foundation/views/label.js +271 -0
- data/frameworks/sproutcore/frameworks/foundation/views/text_field.js +257 -0
- data/frameworks/sproutcore/frameworks/foundation/views/view.js +2405 -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 +12 -0
- data/frameworks/sproutcore/frameworks/runtime/core.js +856 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +238 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/indexOf.js +33 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/insertAt.js +121 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/objectAt.js +34 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/popObject.js +50 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/pushObject.js +46 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/rangeObserver.js +371 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeAt.js +100 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/removeObject.js +49 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +94 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/shiftObject.js +50 -0
- data/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/unshiftObject.js +47 -0
- data/frameworks/sproutcore/frameworks/runtime/license.js +28 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/array.js +613 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +64 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +108 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1258 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +104 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +1305 -0
- data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +141 -0
- data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +148 -0
- data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +152 -0
- data/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +40 -0
- data/frameworks/sproutcore/frameworks/runtime/protocols/sparse_array_delegate.js +131 -0
- data/frameworks/sproutcore/frameworks/runtime/system/binding.js +915 -0
- data/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +107 -0
- data/frameworks/sproutcore/frameworks/runtime/system/index_set.js +1166 -0
- data/frameworks/sproutcore/frameworks/runtime/system/object.js +801 -0
- data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +265 -0
- data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +241 -0
- data/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +649 -0
- data/frameworks/sproutcore/frameworks/runtime/system/set.js +375 -0
- data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +295 -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/compare.js +44 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +16 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/core/guidFor.js +147 -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/array.js +57 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +611 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +587 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +132 -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/private/observer_queue/isObservingSuspended.js +55 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +265 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/add.js +195 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/clone.js +43 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +74 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/create.js +42 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexAfter.js +38 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/indexBefore.js +38 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +74 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/max.js +40 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/min.js +40 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +36 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +189 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/without.js +89 -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/range_observer/create.js +59 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/destroy.js +75 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/objectPropertyDidChange.js +117 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/rangeDidChange.js +110 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/range_observer/update.js +65 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +120 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/add.js +92 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/copy.js +17 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/indexSetForSource.js +85 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/isEqual.js +60 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/selection_set/remove.js +87 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/set.js +292 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +122 -0
- data/frameworks/sproutcore/frameworks/testing/core.js +196 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/additions.css +8 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/runner.css +126 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/testsuite.css +131 -0
- data/frameworks/sproutcore/frameworks/testing/extras.js +17 -0
- data/frameworks/sproutcore/frameworks/testing/jquery.js +3559 -0
- data/frameworks/sproutcore/frameworks/testing/qunit.js +827 -0
- data/frameworks/sproutcore/frameworks/testing/system/dump.js +205 -0
- data/frameworks/sproutcore/frameworks/testing/system/equiv.js +201 -0
- data/frameworks/sproutcore/frameworks/testing/system/plan.js +691 -0
- data/frameworks/sproutcore/frameworks/testing/system/runner.js +209 -0
- data/frameworks/sproutcore/frameworks/testing/system/suite.js +228 -0
- data/frameworks/sproutcore/frameworks/testing/utils.js +62 -0
- data/frameworks/sproutcore/lib/index.rhtml +121 -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/english.lproj/button.css +331 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +91 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +134 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +60 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/disclosure.css +55 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -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 +11 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/list_item.css +30 -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 +26 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +122 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +279 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +94 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/split_view.css +27 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +18 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +10 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +7 -0
- data/lib/sproutcore.rb +9 -1
- data/lib/sproutcore/tools/build.rb +1 -1
- 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.rb +170 -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.rb +77 -0
- data/lib/thor/lib/thor/tasks/package.rb +18 -0
- data/lib/thor/lib/thor/util.rb +75 -0
- data/lib/thor/script/destroy +14 -0
- data/lib/thor/script/generate +14 -0
- data/lib/thor/task.thor +15 -0
- metadata +664 -351
- data/VERSION +0 -1
- data/spec/buildtasks/build/copy_spec.rb +0 -60
- data/spec/buildtasks/build/spec_helper.rb +0 -36
- data/spec/buildtasks/manifest/catalog_spec.rb +0 -48
- data/spec/buildtasks/manifest/hide_buildfiles_spec.rb +0 -125
- data/spec/buildtasks/manifest/localize_spec.rb +0 -97
- data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +0 -246
- data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +0 -87
- data/spec/buildtasks/manifest/prepare_build_tasks/html_spec.rb +0 -175
- data/spec/buildtasks/manifest/prepare_build_tasks/javascript_spec.rb +0 -65
- data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +0 -70
- data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +0 -152
- data/spec/buildtasks/manifest/prepare_build_tasks/sass_spec.rb +0 -98
- data/spec/buildtasks/manifest/prepare_build_tasks/strings_spec.rb +0 -64
- data/spec/buildtasks/manifest/prepare_build_tasks/tests_spec.rb +0 -163
- data/spec/buildtasks/manifest/prepare_spec.rb +0 -43
- data/spec/buildtasks/manifest/spec_helper.rb +0 -35
- data/spec/buildtasks/target_spec.rb +0 -214
- data/spec/fixtures/builder_tests/Buildfile +0 -15
- data/spec/fixtures/builder_tests/apps/combine_test/a.js +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/b.js +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/c.js +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/a.css +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/b.css +0 -1
- data/spec/fixtures/builder_tests/apps/combine_test/english.lproj/c.css +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/bar1_sample.rhtml +0 -2
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/erb_sample.html.erb +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/icons/image.png +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/image.jpg +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/rhtml_sample.rhtml +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/strings.js +0 -4
- data/spec/fixtures/builder_tests/apps/html_test/english.lproj/style.css +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/french.lproj/french-icons/fr.png +0 -0
- data/spec/fixtures/builder_tests/apps/html_test/french.lproj/strings.js +0 -4
- data/spec/fixtures/builder_tests/apps/html_test/lib/layout_template.rhtml +0 -1
- data/spec/fixtures/builder_tests/apps/html_test/scripts.js +0 -0
- data/spec/fixtures/builder_tests/apps/javascript_test/sc_static.js +0 -15
- data/spec/fixtures/builder_tests/apps/javascript_test/sc_super.js +0 -4
- data/spec/fixtures/builder_tests/apps/javascript_test/strings.js +0 -7
- data/spec/fixtures/builder_tests/apps/sass_test/sample.sass +0 -3
- data/spec/fixtures/builder_tests/apps/strings_test/lproj/strings.js +0 -8
- data/spec/fixtures/builder_tests/apps/stylesheet_test/build_directives.css +0 -9
- data/spec/fixtures/builder_tests/apps/stylesheet_test/sc_static.css +0 -12
- data/spec/fixtures/builder_tests/apps/test_test/lib/alt_layout.rhtml +0 -1
- data/spec/fixtures/builder_tests/apps/test_test/lib/test_layout.rhtml +0 -3
- data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test.js +0 -1
- data/spec/fixtures/builder_tests/apps/test_test/tests/qunit_test2.js +0 -1
- data/spec/fixtures/builder_tests/apps/test_test/tests/rhtml_test.rhtml +0 -4
- data/spec/fixtures/builder_tests/frameworks/debug/core.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/debug/english.lproj/dummy.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/qunit/core.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/qunit/english.lproj/dummy.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/strings.js +0 -4
- data/spec/fixtures/builder_tests/frameworks/req_target_1/english.lproj/test.rhtml +0 -1
- data/spec/fixtures/builder_tests/frameworks/req_target_1/req_js_1.js +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/req_style_2.css +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/english.lproj/test.rhtml +0 -1
- data/spec/fixtures/builder_tests/frameworks/req_target_2/javascript.js +0 -1
- data/spec/fixtures/builder_tests/frameworks/req_target_2/lib/alt_layout.rhtml +0 -0
- data/spec/fixtures/builder_tests/frameworks/req_target_2/req_js_2.js +0 -0
- data/spec/fixtures/builder_tests/themes/sample_theme/Buildfile +0 -1
- data/spec/fixtures/buildfiles/basic/Buildfile +0 -16
- data/spec/fixtures/buildfiles/basic/task_module.rake +0 -6
- data/spec/fixtures/buildfiles/installed/Buildfile +0 -7
- data/spec/fixtures/buildfiles/installed/Buildfile2 +0 -5
- data/spec/fixtures/buildfiles/project_test/Buildfile +0 -4
- data/spec/fixtures/buildfiles/project_test/not_project/Buildfile +0 -2
- data/spec/fixtures/buildfiles/project_test/not_project/child/PLACEHOLDER +0 -0
- data/spec/fixtures/entry_for_project/Buildfile +0 -1
- data/spec/fixtures/entry_for_project/apps/test_app/entry.txt +0 -0
- data/spec/fixtures/entry_for_project/apps/test_app/frameworks/nested/PLACEHOLDER +0 -0
- data/spec/fixtures/entry_for_project/frameworks/shared/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/Buildfile +0 -8
- data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/bars/bar2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/bars/bar1/foos/foo2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/Buildfile +0 -5
- data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/custom_foodir/foo2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/custom_foos/foos/not_foo1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/custom/foos/foo1/bars/bar2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/nested/Buildfile +0 -8
- data/spec/fixtures/find_targets/nested/apps/app1/Buildfile +0 -1
- data/spec/fixtures/find_targets/nested/apps/app1/apps/nested_app/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/Apps/app1/frameworks/framework2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/clients/client1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/frameworks/framework1/frameworks/framework1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/frameworks/framework2/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/themes/theme1/PLACEHOLDER +0 -0
- data/spec/fixtures/find_targets/standard/themes/theme2/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/English.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/FreNCH.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/caps_long_names/UnknOWN.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/english.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/french.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/german.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/italian.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/japanese.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/spanish.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/long_names/unknown.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/no_names/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/de.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-CA.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-GB.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en-US.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/en.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/es.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/foo.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/fr.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/it.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/languages/apps/short_names/ja.lproj/PLACEHOLDER +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/1.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/B.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/a.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/a/a.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/a/b.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/b/a.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/c.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/core.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/B.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/a/b.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/b/a.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/english.lproj/c.css +0 -0
- data/spec/fixtures/ordered_entries/apps/no_requires/lproj/strings.js +0 -1
- data/spec/fixtures/ordered_entries/apps/no_requires/utils.js +0 -1
- data/spec/fixtures/ordered_entries/apps/with_requires/a.js +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/b.js +0 -3
- data/spec/fixtures/ordered_entries/apps/with_requires/c.js +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/a.css +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/b.css +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/c.css +0 -2
- data/spec/fixtures/ordered_entries/apps/with_requires/english.lproj/d.js +0 -1
- data/spec/fixtures/real_world/Buildfile +0 -12
- data/spec/fixtures/real_world/apps/account/README +0 -1
- data/spec/fixtures/real_world/apps/calendar/README +0 -1
- data/spec/fixtures/real_world/apps/contacts/README_BEFORE_EDITING +0 -1
- data/spec/fixtures/real_world/apps/files/README +0 -1
- data/spec/fixtures/real_world/apps/mail/README +0 -1
- data/spec/fixtures/real_world/apps/mobile_photos/README +0 -1
- data/spec/fixtures/real_world/apps/photos/README +0 -1
- data/spec/fixtures/real_world/apps/uploader/README +0 -1
- data/spec/fixtures/real_world/frameworks/core_files/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/core_photos/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/shared/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/Buildfile +0 -26
- data/spec/fixtures/real_world/frameworks/sproutcore/README +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/apps/docs/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/apps/test_runner/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/core.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/debug/debug-resource.html +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/debug/sample_debug.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/demo2.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/debug/sample_debug-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.css +0 -4
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo.html +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/demo2.sass +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.haml +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.html.erb +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/file_extension_test.rhtml +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/fixtures/sample_fixtures-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/has_require.css +0 -4
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_require.css +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/no_sc_resource.rhtml +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/protocols/sample-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.css +0 -6
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/sc_resource.rhtml +0 -3
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/strings.js +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/english.lproj/tests/sample-loc.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample-json-fixture.json +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/fixtures/sample_fixtures.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/application/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/costello/core.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/data_store/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/debug/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/desktop/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/empty_theme/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/foundation/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/mobile/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/qunit/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/frameworks/uploader/PLACEHOLDER +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/french-resource.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/french.lproj/strings.js +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/german-resource.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/german.lproj/strings.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/has_require.js +0 -4
- data/spec/fixtures/real_world/frameworks/sproutcore/lib/index.html +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/no_require.js +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/protocols/sample.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/sc_resource.js +0 -6
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample1.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/nested/sample2.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.js +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/tests/sample.rhtml +0 -1
- data/spec/fixtures/real_world/frameworks/sproutcore/themes/standard_theme/README +0 -0
- data/spec/fixtures/real_world/frameworks/sproutcore/views/view.js +0 -1
- data/spec/fixtures/real_world/generators/sample_custom/Buildfile +0 -0
- data/spec/fixtures/recursive_project/Buildfile +0 -8
- data/spec/fixtures/recursive_project/frameworks/sproutcore/frameworks/costello/PLACEHOLDER +0 -0
- data/spec/lib/builders/combine_spec.rb +0 -67
- data/spec/lib/builders/html_spec.rb +0 -577
- data/spec/lib/builders/javascript_spec.rb +0 -81
- data/spec/lib/builders/sass_spec.rb +0 -43
- data/spec/lib/builders/spec_helper.rb +0 -30
- data/spec/lib/builders/strings_spec.rb +0 -52
- data/spec/lib/builders/stylesheet_spec.rb +0 -63
- data/spec/lib/builders/test_index_spec.rb +0 -44
- data/spec/lib/builders/test_spec.rb +0 -135
- data/spec/lib/buildfile/config_for_spec.rb +0 -81
- data/spec/lib/buildfile/define_spec.rb +0 -59
- data/spec/lib/buildfile/dup_spec.rb +0 -65
- data/spec/lib/buildfile/invoke_spec.rb +0 -130
- data/spec/lib/buildfile/load_spec.rb +0 -49
- data/spec/lib/buildfile/task/dup_spec.rb +0 -55
- data/spec/lib/buildfile/task_defined_spec.rb +0 -17
- data/spec/lib/buildfile_commands/build_task_spec.rb +0 -19
- data/spec/lib/buildfile_commands/config_spec.rb +0 -97
- data/spec/lib/buildfile_commands/import_spec.rb +0 -17
- data/spec/lib/buildfile_commands/namespace_spec.rb +0 -18
- data/spec/lib/buildfile_commands/proxies_spec.rb +0 -38
- data/spec/lib/buildfile_commands/replace_task_spec.rb +0 -29
- data/spec/lib/buildfile_commands/task_spec.rb +0 -36
- data/spec/lib/helpers/packing_optimizer/optimize_spec.rb +0 -26
- data/spec/lib/models/hash_struct/deep_clone_spec.rb +0 -27
- data/spec/lib/models/hash_struct/has_options_spec.rb +0 -32
- data/spec/lib/models/hash_struct/hash_spec.rb +0 -64
- data/spec/lib/models/hash_struct/merge_spec.rb +0 -26
- data/spec/lib/models/hash_struct/method_missing.rb +0 -41
- data/spec/lib/models/manifest/add_entry_spec.rb +0 -36
- data/spec/lib/models/manifest/add_transform_spec.rb +0 -90
- data/spec/lib/models/manifest/build_spec.rb +0 -78
- data/spec/lib/models/manifest/entry_for_spec.rb +0 -94
- data/spec/lib/models/manifest/find_entry.rb +0 -84
- data/spec/lib/models/manifest/prepare_spec.rb +0 -62
- data/spec/lib/models/manifest_entry/cacheable_url_spec.rb +0 -31
- data/spec/lib/models/manifest_entry/prepare_spec.rb +0 -54
- data/spec/lib/models/project/add_target_spec.rb +0 -44
- data/spec/lib/models/project/buildfile_spec.rb +0 -35
- data/spec/lib/models/project/find_targets_for_spec.rb +0 -77
- data/spec/lib/models/project/load_nearest_project_spec.rb +0 -23
- data/spec/lib/models/project/target_for_spec.rb +0 -33
- data/spec/lib/models/project/targets_spec.rb +0 -62
- data/spec/lib/models/target/compute_build_number_spec.rb +0 -125
- data/spec/lib/models/target/config_spec.rb +0 -30
- data/spec/lib/models/target/expand_required_targets_spec.rb +0 -48
- data/spec/lib/models/target/installed_languages_spec.rb +0 -47
- data/spec/lib/models/target/lproj_for_spec.rb +0 -38
- data/spec/lib/models/target/manifest_for_spec.rb +0 -42
- data/spec/lib/models/target/parent_target_spec.rb +0 -21
- data/spec/lib/models/target/prepare_spec.rb +0 -53
- data/spec/lib/models/target/required_targets_spec.rb +0 -119
- data/spec/lib/models/target/target_for_spec.rb +0 -56
- data/spec/lib/tools/build_number_spec.rb +0 -28
- data/spec/lib/tools/gen_spec.rb +0 -207
- data/spec/lib/tools/tools_spec.rb +0 -78
- data/spec/spec_helper.rb +0 -138
- data/sproutcore-abbot.gemspec +0 -640
- data/vendor/jsdoc/templates/jsdoc/allclasses.tmpl +0 -17
- data/vendor/jsdoc/templates/jsdoc/allfiles.tmpl +0 -56
- data/vendor/jsdoc/templates/jsdoc/class.tmpl +0 -487
- data/vendor/jsdoc/templates/jsdoc/index.tmpl +0 -38
- data/vendor/jsdoc/templates/jsdoc/symbol.tmpl +0 -35
- data/vendor/jsdoc/templates/sproutcore/allclasses.tmpl +0 -0
- data/vendor/jsdoc/templates/sproutcore/allfiles.tmpl +0 -56
- data/vendor/jsdoc/templates/sproutcore/class.tmpl +0 -674
- data/vendor/jsdoc/templates/sproutcore/index.tmpl +0 -55
- data/vendor/jsdoc/templates/sproutcore/symbol.tmpl +0 -35
@@ -0,0 +1,204 @@
|
|
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
|
+
/** @class
|
9
|
+
|
10
|
+
Displays several views as scenes that can slide on and off the screen. The
|
11
|
+
scene view is a nice way to provide a simple effect of moving from a
|
12
|
+
higher level screen to a more detailed level screen. You will be able to
|
13
|
+
optionally choose the kind of animation used to transition the two scenes
|
14
|
+
as well if supported on the web browser.
|
15
|
+
|
16
|
+
h1. Using The View
|
17
|
+
|
18
|
+
To setup the scene view, you should define the 'scenes' property with an
|
19
|
+
array of scene names. These will be the properties on the scene view that
|
20
|
+
you can shift in an out of view as needed. You can edit the scenes property
|
21
|
+
at any time. It will only be used when you start to transition from one
|
22
|
+
scene to another.
|
23
|
+
|
24
|
+
Next you should set your nowShowing property to the name of the scene you
|
25
|
+
would like to display. This will cause the view to transition scenes if it
|
26
|
+
is visible on screen. Otherwise, it will simply make the new scene view
|
27
|
+
the current content view and that's it.
|
28
|
+
|
29
|
+
@extends SC.View
|
30
|
+
@since SproutCore 1.0
|
31
|
+
*/
|
32
|
+
SC.SceneView = SC.ContainerView.extend(
|
33
|
+
/** @scope SC.SceneView.prototype */ {
|
34
|
+
|
35
|
+
/**
|
36
|
+
Array of scene names. Scenes will slide on and off screen in the order
|
37
|
+
that you specifiy them here. That is, if you shift from a scene at index
|
38
|
+
2 to a scene at index 1, the scenes will animation backwards. If you
|
39
|
+
shift to a scene at index 3, the scenes will animate forwards.
|
40
|
+
|
41
|
+
The default scenes defined are 'master' and 'detail'. You can replace or
|
42
|
+
augment this array as you like.
|
43
|
+
|
44
|
+
@property {Array}
|
45
|
+
*/
|
46
|
+
scenes: ['master', 'detail'],
|
47
|
+
|
48
|
+
/**
|
49
|
+
The currently showing scene. Changing this property will cause the
|
50
|
+
scene view to transition to the new scene. If you set this property to
|
51
|
+
null, an empty string, or a non-existant scene, then the scene will appear
|
52
|
+
empty.
|
53
|
+
*/
|
54
|
+
nowShowing: null,
|
55
|
+
|
56
|
+
/**
|
57
|
+
Speed of transition. Should be expressed in msec.
|
58
|
+
*/
|
59
|
+
transitionDuration: 200,
|
60
|
+
|
61
|
+
_state: 'NO_VIEW', // no view
|
62
|
+
|
63
|
+
/** @private
|
64
|
+
|
65
|
+
Whenever called to change the content, save the nowShowing state and
|
66
|
+
then animate in by adjusting the layout.
|
67
|
+
|
68
|
+
*/
|
69
|
+
replaceContent: function(content) {
|
70
|
+
if (content && this._state===this.READY) this.animateScene(content);
|
71
|
+
else this.replaceScene(content);
|
72
|
+
return this ;
|
73
|
+
},
|
74
|
+
|
75
|
+
/** @private
|
76
|
+
|
77
|
+
Invoked whenever we just need to swap the scenes without playing an
|
78
|
+
animation.
|
79
|
+
*/
|
80
|
+
replaceScene: function(newContent) {
|
81
|
+
var oldContent = this._targetView,
|
82
|
+
layout = this.STANDARD_LAYOUT,
|
83
|
+
scenes = this.get('scenes'),
|
84
|
+
idx = scenes ? scenes.indexOf(this.get('nowShowing')) : -1;
|
85
|
+
|
86
|
+
// cleanup animation here too..
|
87
|
+
this._targetView = newContent ;
|
88
|
+
this._targetIndex = idx;
|
89
|
+
|
90
|
+
if (this._timer) this._timer.invalidate();
|
91
|
+
this._leftView = this._rightView = this._start = this._end = null;
|
92
|
+
this._timer = null;
|
93
|
+
|
94
|
+
|
95
|
+
this.removeAllChildren();
|
96
|
+
|
97
|
+
if (oldContent) oldContent.set('layout', layout);
|
98
|
+
if (newContent) newContent.set('layout', layout);
|
99
|
+
|
100
|
+
if (newContent) this.appendChild(newContent);
|
101
|
+
this._state = newContent ? this.READY : this.NO_VIEW ;
|
102
|
+
},
|
103
|
+
|
104
|
+
/** @private
|
105
|
+
|
106
|
+
Invoked whenever we need to animate in the new scene.
|
107
|
+
*/
|
108
|
+
animateScene: function(newContent) {
|
109
|
+
var oldContent = this._targetView,
|
110
|
+
outIdx = this._targetIndex,
|
111
|
+
scenes = this.get('scenes'),
|
112
|
+
inIdx = scenes ? scenes.indexOf(this.get('nowShowing')) : -1,
|
113
|
+
layout;
|
114
|
+
|
115
|
+
if (outIdx<0 || inIdx<0 || outIdx===inIdx) {
|
116
|
+
return this.replaceScene(newContent);
|
117
|
+
}
|
118
|
+
|
119
|
+
this._targetView = newContent ;
|
120
|
+
this._targetIndex = inIdx;
|
121
|
+
|
122
|
+
// save some info needed for animation
|
123
|
+
if (inIdx > outIdx) {
|
124
|
+
this._leftView = oldContent;
|
125
|
+
this._rightView = newContent;
|
126
|
+
this._target = -1;
|
127
|
+
} else {
|
128
|
+
this._leftView = newContent ;
|
129
|
+
this._rightView = oldContent ;
|
130
|
+
this._target = 1 ;
|
131
|
+
}
|
132
|
+
|
133
|
+
// setup views
|
134
|
+
this.removeAllChildren();
|
135
|
+
|
136
|
+
if (oldContent) this.appendChild(oldContent)
|
137
|
+
if (newContent) this.appendChild(newContent);
|
138
|
+
|
139
|
+
// setup other general state
|
140
|
+
this._start = Date.now();
|
141
|
+
this._end = this._start + this.get('transitionDuration');
|
142
|
+
this._state = this.ANIMATING;
|
143
|
+
this.tick();
|
144
|
+
},
|
145
|
+
|
146
|
+
/** @private - called while the animation runs. Compute the new layout for
|
147
|
+
the left and right views based on the portion completed. When we finish
|
148
|
+
call replaceScene().
|
149
|
+
*/
|
150
|
+
tick: function() {
|
151
|
+
this._timer = null ; // clear out
|
152
|
+
|
153
|
+
var now = Date.now(),
|
154
|
+
pct = (now-this._start)/(this._end-this._start),
|
155
|
+
target = this._target,
|
156
|
+
left = this._leftView,
|
157
|
+
right = this._rightView,
|
158
|
+
layout, adjust;
|
159
|
+
|
160
|
+
if (pct<0) pct = 0;
|
161
|
+
|
162
|
+
// if we're done or the view is no longer visible, just replace the
|
163
|
+
// scene.
|
164
|
+
if (!this.get('isVisibleInWindow') || (pct>=1)) {
|
165
|
+
return this.replaceScene(this._targetView);
|
166
|
+
}
|
167
|
+
|
168
|
+
// ok, now let's compute the new layouts for the two views and set them
|
169
|
+
layout = SC.clone(this.get('frame'));
|
170
|
+
adjust = Math.floor(layout.width * pct);
|
171
|
+
|
172
|
+
// set the layout for the views, depending on the direction
|
173
|
+
if (target>0) {
|
174
|
+
layout.left = 0-(layout.width-adjust);
|
175
|
+
left.set('layout', layout);
|
176
|
+
|
177
|
+
layout = SC.clone(layout);
|
178
|
+
layout.left = adjust ;
|
179
|
+
right.set('layout', layout);
|
180
|
+
|
181
|
+
} else {
|
182
|
+
layout.left = 0-adjust ;
|
183
|
+
left.set('layout', layout);
|
184
|
+
|
185
|
+
layout = SC.clone(layout);
|
186
|
+
layout.left = layout.width-adjust;
|
187
|
+
right.set('layout', layout);
|
188
|
+
}
|
189
|
+
|
190
|
+
this._timer = this.invokeLater(this.tick, 20);
|
191
|
+
return this;
|
192
|
+
},
|
193
|
+
|
194
|
+
|
195
|
+
// states for view animation
|
196
|
+
NO_VIEW: 'NO_VIEW',
|
197
|
+
ANIMATING: 'ANIMATING',
|
198
|
+
READY: 'READY',
|
199
|
+
|
200
|
+
/** @private - standard layout assigned to views at rest */
|
201
|
+
STANDARD_LAYOUT: { top: 0, left: 0, bottom: 0, right: 0 }
|
202
|
+
|
203
|
+
|
204
|
+
});
|
@@ -0,0 +1,690 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
sc_require('views/scroller');
|
9
|
+
sc_require('mixins/border');
|
10
|
+
|
11
|
+
/** @class
|
12
|
+
|
13
|
+
Implements a complete scroll view. This class uses a manual implementation
|
14
|
+
of scrollers in order to properly support clipping frames.
|
15
|
+
|
16
|
+
Important Events:
|
17
|
+
|
18
|
+
- contentView frame size changes (to autoshow/hide scrollbar - adjust scrollbar size)
|
19
|
+
- horizontalScrollOffset change
|
20
|
+
- verticalScrollOffsetChanges
|
21
|
+
- scroll wheel events
|
22
|
+
|
23
|
+
@extends SC.View
|
24
|
+
@since SproutCore 1.0
|
25
|
+
*/
|
26
|
+
SC.ScrollView = SC.View.extend(SC.Border, {
|
27
|
+
|
28
|
+
classNames: 'sc-scroll-view',
|
29
|
+
|
30
|
+
// ..........................................................
|
31
|
+
// PROPERTIES
|
32
|
+
//
|
33
|
+
|
34
|
+
isScrollable: YES,
|
35
|
+
|
36
|
+
/**
|
37
|
+
The content view you want the scroll view to manage. This will be assigned to the contentView of the clipView also.
|
38
|
+
*/
|
39
|
+
contentView: null,
|
40
|
+
|
41
|
+
/**
|
42
|
+
The current horizontal scroll offset. Changing this value will update both the contentView and the horizontal scroller, if there is one.
|
43
|
+
*/
|
44
|
+
horizontalScrollOffset: 0,
|
45
|
+
|
46
|
+
/**
|
47
|
+
The current vertical scroll offset. Changing this value will update both the contentView and the vertical scroller, if there is one.
|
48
|
+
*/
|
49
|
+
verticalScrollOffset: 0,
|
50
|
+
|
51
|
+
|
52
|
+
/**
|
53
|
+
The maximum horizontal scroll offset allowed given the current contentView
|
54
|
+
size and the size of the scroll view. If horizontal scrolling is
|
55
|
+
disabled, this will always return 0.
|
56
|
+
|
57
|
+
@property {Number}
|
58
|
+
*/
|
59
|
+
maximumHorizontalScrollOffset: function() {
|
60
|
+
if (!this.get('canScrollHorizontal')) return 0 ;
|
61
|
+
var view = this.get('contentView') ;
|
62
|
+
var contentWidth = view ? view.get('frame').width : 0;
|
63
|
+
var containerWidth = this.get('containerView').get('frame').width;
|
64
|
+
return Math.max(0, contentWidth-containerWidth);
|
65
|
+
}.property(),
|
66
|
+
|
67
|
+
/**
|
68
|
+
The maximum vertical scroll offset allowed given the current contentView
|
69
|
+
size and the size of the scroll view. If vertical scrolling is disabled,
|
70
|
+
this will always return 0.
|
71
|
+
|
72
|
+
@property {Number}
|
73
|
+
*/
|
74
|
+
maximumVerticalScrollOffset: function() {
|
75
|
+
if (!this.get('canScrollVertical')) return 0 ;
|
76
|
+
var view = this.get('contentView');
|
77
|
+
var contentHeight = view ? view.get('frame').height : 0;
|
78
|
+
var containerHeight = this.get('containerView').get('frame').height;
|
79
|
+
return Math.max(0, contentHeight-containerHeight);
|
80
|
+
}.property(),
|
81
|
+
|
82
|
+
/**
|
83
|
+
Amount to scroll one vertical line.
|
84
|
+
|
85
|
+
Used by the default implementation of scrollDownLine() and scrollUpLine().
|
86
|
+
Defaults to 20px.
|
87
|
+
*/
|
88
|
+
verticalLineScroll: 20,
|
89
|
+
|
90
|
+
/**
|
91
|
+
Amount to scroll one horizontal line.
|
92
|
+
|
93
|
+
Used by the default implementation of scrollLeftLine() and
|
94
|
+
scrollRightLine(). Defaults to 20px.
|
95
|
+
*/
|
96
|
+
horizontalLineScroll: 20,
|
97
|
+
|
98
|
+
/**
|
99
|
+
Amount to scroll one vertical page.
|
100
|
+
|
101
|
+
Used by the default implementation of scrollUpPage() and scrollDownPage().
|
102
|
+
Defaults to current frame height.
|
103
|
+
*/
|
104
|
+
verticalPageScroll: function() {
|
105
|
+
return this.get('frame').height ;
|
106
|
+
}.property('frame'),
|
107
|
+
|
108
|
+
/**
|
109
|
+
Amount to scroll one horizontal page.
|
110
|
+
|
111
|
+
Used by the default implementation of scrollLeftPage() and
|
112
|
+
scrollRightPage(). Defaults to current innerFrame width.
|
113
|
+
*/
|
114
|
+
horizontalPageScroll: function() {
|
115
|
+
return this.get('frame').width ;
|
116
|
+
}.property('frame'),
|
117
|
+
|
118
|
+
// ..........................................................
|
119
|
+
// SCROLLERS
|
120
|
+
//
|
121
|
+
|
122
|
+
/**
|
123
|
+
YES if the view should maintain a horizontal scroller. This property must be set when the view is created.
|
124
|
+
|
125
|
+
@property {Boolean}
|
126
|
+
*/
|
127
|
+
hasHorizontalScroller: YES,
|
128
|
+
|
129
|
+
/**
|
130
|
+
The horizontal scroller view class. This will be replaced with a view instance when the ScrollView is created unless hasHorizontalScroller is NO.
|
131
|
+
|
132
|
+
@property {SC.View}
|
133
|
+
*/
|
134
|
+
horizontalScrollerView: SC.ScrollerView,
|
135
|
+
|
136
|
+
/**
|
137
|
+
YES if the horizontal scroller should be visible. You can change this
|
138
|
+
property value anytime to show or hide the horizontal scroller. If you do
|
139
|
+
not want to use a horizontal scroller at all, you should instead set
|
140
|
+
hasHorizontalScroller to NO to avoid creating a scroller view in the first
|
141
|
+
place.
|
142
|
+
|
143
|
+
@property {Boolean}
|
144
|
+
*/
|
145
|
+
isHorizontalScrollerVisible: YES,
|
146
|
+
|
147
|
+
/**
|
148
|
+
Returns YES if the view both has a horizontal scroller, the scroller is
|
149
|
+
visible.
|
150
|
+
|
151
|
+
@property {Boolean}
|
152
|
+
*/
|
153
|
+
canScrollHorizontal: function() {
|
154
|
+
return !!(this.get('hasHorizontalScroller') &&
|
155
|
+
this.get('horizontalScrollerView') &&
|
156
|
+
this.get('isHorizontalScrollerVisible'));
|
157
|
+
}.property('isHorizontalScrollerVisible').cacheable(),
|
158
|
+
|
159
|
+
/**
|
160
|
+
If YES, the horizontal scroller will autohide if the contentView is
|
161
|
+
smaller than the visible area. You must set hasHorizontalScroller to YES
|
162
|
+
for this property to have any effect.
|
163
|
+
*/
|
164
|
+
autohidesHorizontalScroller: YES,
|
165
|
+
|
166
|
+
/**
|
167
|
+
YES if the view shuld maintain a vertical scroller. This property must be set when the view is created.
|
168
|
+
|
169
|
+
@property {Boolean}
|
170
|
+
*/
|
171
|
+
hasVerticalScroller: YES,
|
172
|
+
|
173
|
+
/**
|
174
|
+
The vertical scroller view class. This will be replaced with a view instance when the ScrollView is created unless hasVerticalScroller is NO.
|
175
|
+
|
176
|
+
@property {SC.View}
|
177
|
+
*/
|
178
|
+
verticalScrollerView: SC.ScrollerView,
|
179
|
+
|
180
|
+
/**
|
181
|
+
YES if the vertical scroller should be visible. You can change this property value anytime to show or hide the vertical scroller. If you do not want to use a vertical scroller at all, you should instead set hasVerticalScroller to NO to avoid creating a scroller view in the first place.
|
182
|
+
|
183
|
+
@property {Boolean}
|
184
|
+
*/
|
185
|
+
isVerticalScrollerVisible: YES,
|
186
|
+
|
187
|
+
/**
|
188
|
+
Returns YES if the view both has a horizontal scroller, the scroller is
|
189
|
+
visible.
|
190
|
+
|
191
|
+
@property {Boolean}
|
192
|
+
*/
|
193
|
+
canScrollVertical: function() {
|
194
|
+
return !!(this.get('hasVerticalScroller') &&
|
195
|
+
this.get('verticalScrollerView') &&
|
196
|
+
this.get('isVerticalScrollerVisible'));
|
197
|
+
}.property('isVerticalScrollerVisible').cacheable(),
|
198
|
+
|
199
|
+
/**
|
200
|
+
If YES, the vertical scroller will autohide if the contentView is
|
201
|
+
smaller than the visible area. You must set hasVerticalScroller to YES
|
202
|
+
for this property to have any effect.
|
203
|
+
*/
|
204
|
+
autohidesVerticalScroller: YES,
|
205
|
+
|
206
|
+
// ..........................................................
|
207
|
+
// CUSTOM VIEWS
|
208
|
+
//
|
209
|
+
|
210
|
+
/**
|
211
|
+
The container view that will contain your main content view. You can
|
212
|
+
replace this property with your own custom subclass if you prefer.
|
213
|
+
|
214
|
+
@type {SC.ContainerView}
|
215
|
+
*/
|
216
|
+
containerView: SC.ContainerView,
|
217
|
+
|
218
|
+
// ..........................................................
|
219
|
+
// METHODS
|
220
|
+
//
|
221
|
+
|
222
|
+
/**
|
223
|
+
Scrolls the receiver to the specified x,y coordinate. This should be the
|
224
|
+
offset into the contentView you want to appear at the top-left corner of
|
225
|
+
the scroll view.
|
226
|
+
|
227
|
+
This method will contrain the actual scroll based on whether the view
|
228
|
+
can scroll in the named direction and the maximum distance it can
|
229
|
+
scroll.
|
230
|
+
|
231
|
+
If you only want to scroll in one direction, pass null for the other
|
232
|
+
direction. You can also optionally pass a Hash for the first parameter
|
233
|
+
with x and y coordinates.
|
234
|
+
|
235
|
+
@param x {Number} the x scroll location
|
236
|
+
@param y {Number} the y scroll location
|
237
|
+
@returns {SC.ScrollView} receiver
|
238
|
+
*/
|
239
|
+
scrollTo: function(x,y) {
|
240
|
+
// normalize params
|
241
|
+
if (y===undefined && SC.typeOf(x) === SC.T_HASH) {
|
242
|
+
y = x.y; x = x.x;
|
243
|
+
}
|
244
|
+
|
245
|
+
if (!SC.none(x)) {
|
246
|
+
x = Math.max(0,Math.min(this.get('maximumHorizontalScrollOffset'), x));
|
247
|
+
this.set('horizontalScrollOffset', x) ;
|
248
|
+
}
|
249
|
+
|
250
|
+
if (!SC.none(y)) {
|
251
|
+
y = Math.max(0,Math.min(this.get('maximumVerticalScrollOffset'), y));
|
252
|
+
this.set('verticalScrollOffset', y) ;
|
253
|
+
}
|
254
|
+
|
255
|
+
return this ;
|
256
|
+
},
|
257
|
+
|
258
|
+
/**
|
259
|
+
Scrolls the receiver in the horizontal and vertical directions by the
|
260
|
+
amount specified, if allowed. The actual scroll amount will be
|
261
|
+
constrained by the current scroll view settings.
|
262
|
+
|
263
|
+
If you only want to scroll in one direction, pass null or 0 for the other
|
264
|
+
direction. You can also optionally pass a Hash for the first parameter
|
265
|
+
with x and y coordinates.
|
266
|
+
|
267
|
+
@param x {Number} change in the x direction (or hash)
|
268
|
+
@param y {Number} change in the y direction
|
269
|
+
@returns {SC.ScrollView} receiver
|
270
|
+
*/
|
271
|
+
scrollBy: function(x , y) {
|
272
|
+
// normalize params
|
273
|
+
if (y===undefined && SC.typeOf(x) === SC.T_HASH) {
|
274
|
+
y = x.y; x = x.x;
|
275
|
+
}
|
276
|
+
|
277
|
+
// if null, undefined, or 0, pass null; otherwise just add current offset
|
278
|
+
x = (x) ? this.get('horizontalScrollOffset')+x : null;
|
279
|
+
y = (y) ? this.get('verticalScrollOffset')+y : null ;
|
280
|
+
return this.scrollTo(x,y);
|
281
|
+
},
|
282
|
+
|
283
|
+
/**
|
284
|
+
Scroll the view to make the view's frame visible. For this to make sense,
|
285
|
+
the view should be a subview of the contentView. Otherwise the results
|
286
|
+
will be undefined.
|
287
|
+
|
288
|
+
@param {SC.ScrollView} receiver
|
289
|
+
*/
|
290
|
+
scrollToVisible: function(view) {
|
291
|
+
var contentView = this.get('contentView') ;
|
292
|
+
if (!contentView) return this; // nothing to do if no contentView.
|
293
|
+
|
294
|
+
// get the viewportOffset for the view layer the convert that. this will
|
295
|
+
// work even with views using static layout.
|
296
|
+
var layer = view.get('layer'), vf;
|
297
|
+
if(!layer) return this ; // nothing to do
|
298
|
+
vf = SC.viewportOffset(layer);
|
299
|
+
vf.width = layer.offsetWidth;
|
300
|
+
vf.height = layer.offsetHeight;
|
301
|
+
|
302
|
+
// convert view's frame to an offset from the contentView origin. This
|
303
|
+
// will become the new scroll offset after some adjustment.
|
304
|
+
vf = contentView.convertFrameFromView(vf, null);
|
305
|
+
var cf = contentView.get('frame');
|
306
|
+
vf.x -= cf.x;
|
307
|
+
vf.y -= cf.y;
|
308
|
+
|
309
|
+
// find current visible frame.
|
310
|
+
var vo = this.get('containerView').get('frame');
|
311
|
+
vo.x = this.get('horizontalScrollOffset');
|
312
|
+
vo.y = this.get('verticalScrollOffset');
|
313
|
+
|
314
|
+
// if top edge is not visible, shift origin
|
315
|
+
vo.y -= Math.max(0, SC.minY(vo) - SC.minY(vf)) ;
|
316
|
+
vo.x -= Math.max(0, SC.minX(vo) - SC.minX(vf)) ;
|
317
|
+
|
318
|
+
// if bottom edge is not visible, shift origin
|
319
|
+
vo.y += Math.max(0, SC.maxY(vf) - SC.maxY(vo)) ;
|
320
|
+
vo.x += Math.max(0, SC.maxX(vf) - SC.maxX(vo)) ;
|
321
|
+
|
322
|
+
// scroll to that origin.
|
323
|
+
return this.scrollTo(vo.x, vo.y) ;
|
324
|
+
},
|
325
|
+
|
326
|
+
/**
|
327
|
+
Scrolls the receiver down one or more lines if allowed. If number of
|
328
|
+
lines is not specified, scrolls one line.
|
329
|
+
|
330
|
+
@param lines {Number} options number of lines
|
331
|
+
@returns {SC.ScrollView} receiver
|
332
|
+
*/
|
333
|
+
scrollDownLine: function(lines) {
|
334
|
+
if (lines === undefined) lines = 1 ;
|
335
|
+
return this.scrollBy(null, this.get('verticalLineScroll')*lines) ;
|
336
|
+
},
|
337
|
+
|
338
|
+
/**
|
339
|
+
Scrolls the receiver up one or more lines if allowed. If number of
|
340
|
+
lines is not specified, scrolls one line.
|
341
|
+
|
342
|
+
@param lines {Number} options number of lines
|
343
|
+
@returns {SC.ScrollView} receiver
|
344
|
+
*/
|
345
|
+
scrollUpLine: function(lines) {
|
346
|
+
if (lines === undefined) lines = 1 ;
|
347
|
+
return this.scrollBy(null, 0-this.get('verticalLineScroll')*lines) ;
|
348
|
+
},
|
349
|
+
|
350
|
+
/**
|
351
|
+
Scrolls the receiver right one or more lines if allowed. If number of
|
352
|
+
lines is not specified, scrolls one line.
|
353
|
+
|
354
|
+
@param lines {Number} options number of lines
|
355
|
+
@returns {SC.ScrollView} receiver
|
356
|
+
*/
|
357
|
+
scrollRightLine: function(lines) {
|
358
|
+
if (lines === undefined) lines = 1 ;
|
359
|
+
return this.scrollTo(this.get('horizontalLineScroll')*lines, null) ;
|
360
|
+
},
|
361
|
+
|
362
|
+
/**
|
363
|
+
Scrolls the receiver left one or more lines if allowed. If number of
|
364
|
+
lines is not specified, scrolls one line.
|
365
|
+
|
366
|
+
@param lines {Number} options number of lines
|
367
|
+
@returns {SC.ScrollView} receiver
|
368
|
+
*/
|
369
|
+
scrollLeftLine: function(lines) {
|
370
|
+
if (lines === undefined) lines = 1 ;
|
371
|
+
return this.scrollTo(0-this.get('horizontalLineScroll')*lines, null) ;
|
372
|
+
},
|
373
|
+
|
374
|
+
/**
|
375
|
+
Scrolls the receiver down one or more page if allowed. If number of
|
376
|
+
pages is not specified, scrolls one page. The page size is determined by
|
377
|
+
the verticalPageScroll value. By default this is the size of the current
|
378
|
+
scrollable area.
|
379
|
+
|
380
|
+
@param pages {Number} options number of pages
|
381
|
+
@returns {SC.ScrollView} receiver
|
382
|
+
*/
|
383
|
+
scrollDownPage: function(pages) {
|
384
|
+
if (pages === undefined) pages = 1 ;
|
385
|
+
return this.scrollBy(null, this.get('verticalPageScroll')*pages) ;
|
386
|
+
},
|
387
|
+
|
388
|
+
/**
|
389
|
+
Scrolls the receiver up one or more page if allowed. If number of
|
390
|
+
pages is not specified, scrolls one page. The page size is determined by
|
391
|
+
the verticalPageScroll value. By default this is the size of the current
|
392
|
+
scrollable area.
|
393
|
+
|
394
|
+
@param pages {Number} options number of pages
|
395
|
+
@returns {SC.ScrollView} receiver
|
396
|
+
*/
|
397
|
+
scrollUpPage: function(pages) {
|
398
|
+
if (pages === undefined) pages = 1 ;
|
399
|
+
return this.scrollBy(null, 0-(this.get('verticalPageScroll')*pages)) ;
|
400
|
+
},
|
401
|
+
|
402
|
+
/**
|
403
|
+
Scrolls the receiver right one or more page if allowed. If number of
|
404
|
+
pages is not specified, scrolls one page. The page size is determined by
|
405
|
+
the verticalPageScroll value. By default this is the size of the current
|
406
|
+
scrollable area.
|
407
|
+
|
408
|
+
@param pages {Number} options number of pages
|
409
|
+
@returns {SC.ScrollView} receiver
|
410
|
+
*/
|
411
|
+
scrollRightPage: function(pages) {
|
412
|
+
if (pages === undefined) pages = 1 ;
|
413
|
+
return this.scrollBy(this.get('horizontalPageScroll')*pages, null) ;
|
414
|
+
},
|
415
|
+
|
416
|
+
/**
|
417
|
+
Scrolls the receiver left one or more page if allowed. If number of
|
418
|
+
pages is not specified, scrolls one page. The page size is determined by
|
419
|
+
the verticalPageScroll value. By default this is the size of the current
|
420
|
+
scrollable area.
|
421
|
+
|
422
|
+
@param pages {Number} options number of pages
|
423
|
+
@returns {SC.ScrollView} receiver
|
424
|
+
*/
|
425
|
+
scrollLeftPage: function(pages) {
|
426
|
+
if (pages === undefined) pages = 1 ;
|
427
|
+
return this.scrollBy(0-(this.get('horizontalPageScroll')*pages), null) ;
|
428
|
+
},
|
429
|
+
|
430
|
+
/**
|
431
|
+
Adjusts the layout for the various internal views. This method is called
|
432
|
+
once when the scroll view is first configured and then anytime a scroller
|
433
|
+
is shown or hidden. You can call this method yourself as well to retile.
|
434
|
+
|
435
|
+
You may also want to override this method to handle layout for any
|
436
|
+
additional controls you have added to the view.
|
437
|
+
*/
|
438
|
+
tile: function() {
|
439
|
+
// get horizontal scroller/determine if we should have a scroller
|
440
|
+
var hscroll = this.get('hasHorizontalScroller') ? this.get('horizontalScrollerView') : null;
|
441
|
+
var hasHorizontal = hscroll && this.get('isHorizontalScrollerVisible');
|
442
|
+
|
443
|
+
// get vertical scroller/determine if we should have a scroller
|
444
|
+
var vscroll = this.get('hasVerticalScroller') ? this.get('verticalScrollerView') : null;
|
445
|
+
var hasVertical = vscroll && this.get('isVerticalScrollerVisible');
|
446
|
+
|
447
|
+
// get the containerView
|
448
|
+
var clip = this.get('containerView') ;
|
449
|
+
var clipLayout = { left: 0, top: 0 };
|
450
|
+
var t ;
|
451
|
+
|
452
|
+
var ht = (hasHorizontal) ? hscroll.get('scrollerThickness') : 0 ;
|
453
|
+
var vt = (hasVertical) ? vscroll.get('scrollerThickness') : 0 ;
|
454
|
+
|
455
|
+
if (hasHorizontal) {
|
456
|
+
hscroll.set('layout', { left: 0, bottom: 0, right: vt, height: ht });
|
457
|
+
clipLayout.bottom = ht-1;
|
458
|
+
} else {
|
459
|
+
clipLayout.bottom = 0 ;
|
460
|
+
}
|
461
|
+
if (hscroll) hscroll.set('isVisible', hasHorizontal);
|
462
|
+
|
463
|
+
if (hasVertical) {
|
464
|
+
vscroll.set('layout', { top: 0, bottom: ht, right: 0, width: vt });
|
465
|
+
clipLayout.right = vt-1;
|
466
|
+
} else {
|
467
|
+
clipLayout.bottom = 0 ;
|
468
|
+
}
|
469
|
+
if (vscroll) vscroll.set('isVisible', hasVertical);
|
470
|
+
|
471
|
+
clip.set('layout', clipLayout);
|
472
|
+
},
|
473
|
+
|
474
|
+
/** @private
|
475
|
+
Called whenever a scroller visibility changes. Calls the tile() method.
|
476
|
+
*/
|
477
|
+
scrollerVisibilityDidChange: function() {
|
478
|
+
this.tile();
|
479
|
+
}.observes('isVerticalScrollerVisible', 'isHorizontalScrollerVisible'),
|
480
|
+
|
481
|
+
// ..........................................................
|
482
|
+
// SCROLL WHEEL SUPPORT
|
483
|
+
//
|
484
|
+
|
485
|
+
_scroll_wheelDeltaX: 0,
|
486
|
+
_scroll_wheelDeltaY: 0,
|
487
|
+
|
488
|
+
// save adjustment and then invoke the actual scroll code later. This will
|
489
|
+
// keep the view feeling smooth.
|
490
|
+
mouseWheel: function(evt) {
|
491
|
+
this._scroll_wheelDeltaX += evt.wheelDeltaX;
|
492
|
+
this._scroll_wheelDeltaY += evt.wheelDeltaY;
|
493
|
+
this.invokeLater(this._scroll_mouseWheel, 10) ;
|
494
|
+
return YES ;
|
495
|
+
},
|
496
|
+
|
497
|
+
_scroll_mouseWheel: function() {
|
498
|
+
this.scrollBy(this._scroll_wheelDeltaX, this._scroll_wheelDeltaY);
|
499
|
+
this._scroll_wheelDeltaX = this._scroll_wheelDeltaY = 0;
|
500
|
+
},
|
501
|
+
|
502
|
+
|
503
|
+
// ..........................................................
|
504
|
+
// INTERNAL SUPPORT
|
505
|
+
//
|
506
|
+
|
507
|
+
/** @private
|
508
|
+
Instantiate scrollers & container views as needed. Replace their classes
|
509
|
+
in the regular properties.
|
510
|
+
*/
|
511
|
+
createChildViews: function() {
|
512
|
+
// debugger ;
|
513
|
+
var childViews = [] ;
|
514
|
+
var view ;
|
515
|
+
|
516
|
+
// create the containerView. We must always have a container view.
|
517
|
+
// also, setup the contentView as the child of the containerView...
|
518
|
+
if (SC.none(view = this.containerView)) view = SC.ContainerView;
|
519
|
+
|
520
|
+
childViews.push(this.containerView = this.createChildView(view, {
|
521
|
+
contentView: this.contentView
|
522
|
+
}));
|
523
|
+
|
524
|
+
// and replace our own contentView...
|
525
|
+
this.contentView = this.containerView.get('contentView');
|
526
|
+
|
527
|
+
// create a horizontal scroller view if needed...
|
528
|
+
if (view=this.horizontalScrollerView) {
|
529
|
+
if (this.get('hasHorizontalScroller')) {
|
530
|
+
view = this.horizontalScrollerView = this.createChildView(view, {
|
531
|
+
layoutDirection: SC.LAYOUT_HORIZONTAL
|
532
|
+
}) ;
|
533
|
+
childViews.push(view);
|
534
|
+
} else this.horizontalScrollerView = null ;
|
535
|
+
}
|
536
|
+
|
537
|
+
// create a vertical scroller view if needed...
|
538
|
+
if (view=this.verticalScrollerView) {
|
539
|
+
if (this.get('hasVerticalScroller')) {
|
540
|
+
view = this.verticalScrollerView = this.createChildView(view, {
|
541
|
+
layoutDirection: SC.LAYOUT_VERTICAL
|
542
|
+
}) ;
|
543
|
+
childViews.push(view);
|
544
|
+
} else this.verticalScrollerView = null ;
|
545
|
+
}
|
546
|
+
|
547
|
+
// set childViews array.
|
548
|
+
this.childViews = childViews ;
|
549
|
+
|
550
|
+
this.contentViewFrameDidChange() ; // setup initial display...
|
551
|
+
this.tile() ; // set up initial tiling
|
552
|
+
},
|
553
|
+
|
554
|
+
// didCreateLayer: function() {
|
555
|
+
// window.scrollView = this ;
|
556
|
+
// },
|
557
|
+
|
558
|
+
init: function() {
|
559
|
+
sc_super();
|
560
|
+
|
561
|
+
// start observing initial content view. The content view's frame has
|
562
|
+
// already been setup in prepareDisplay so we don't need to call
|
563
|
+
// viewFrameDidChange...
|
564
|
+
var contentView = this.get('contentView') ;
|
565
|
+
this._scroll_contentView = contentView ;
|
566
|
+
if (contentView) {
|
567
|
+
contentView.addObserver('frame', this, this.contentViewFrameDidChange) ;
|
568
|
+
}
|
569
|
+
|
570
|
+
if (this.get('isVisibleInWindow')) this._scsv_registerAutoscroll();
|
571
|
+
},
|
572
|
+
|
573
|
+
/**
|
574
|
+
@private
|
575
|
+
|
576
|
+
Registers/deregisters view with SC.Drag for autoscrolling
|
577
|
+
*/
|
578
|
+
_scsv_registerAutoscroll: function() {
|
579
|
+
if (this.get('isVisibleInWindow')) SC.Drag.addScrollableView(this);
|
580
|
+
else SC.Drag.removeScrollableView(this);
|
581
|
+
}.observes('isVisibleInWindow'),
|
582
|
+
|
583
|
+
/** @private
|
584
|
+
Whenever the contentView is changed, we need to observe the content view's
|
585
|
+
frame to be notified whenever it's size changes.
|
586
|
+
*/
|
587
|
+
contentViewDidChange: function() {
|
588
|
+
var newView = this.get('contentView'), oldView = this._scroll_contentView;
|
589
|
+
var f = this.contentViewFrameDidChange ;
|
590
|
+
if (newView !== oldView) {
|
591
|
+
|
592
|
+
// stop observing old content view
|
593
|
+
if (oldView) oldView.removeObserver('frame', this, f);
|
594
|
+
|
595
|
+
// update cache
|
596
|
+
this._scroll_contentView = newView;
|
597
|
+
if (newView) newView.addObserver('frame', this, f);
|
598
|
+
|
599
|
+
// replace container
|
600
|
+
this.containerView.set('content', newView);
|
601
|
+
|
602
|
+
this.contentViewFrameDidChange();
|
603
|
+
}
|
604
|
+
},
|
605
|
+
|
606
|
+
/** @private
|
607
|
+
Invoked whenever the contentView's frame changes. This will update the
|
608
|
+
scroller maxmimum and optionally update the scroller visibility if the
|
609
|
+
size of the contentView changes. We don't care about the origin since
|
610
|
+
that is tracked separately from the offset values.
|
611
|
+
*/
|
612
|
+
contentViewFrameDidChange: function() {
|
613
|
+
var view = this.get('contentView'),
|
614
|
+
f = (view) ? view.get('frame') : null,
|
615
|
+
width = (f) ? f.width : 0,
|
616
|
+
height = (f) ? f.height : 0,
|
617
|
+
dim = this.get('frame') ;
|
618
|
+
|
619
|
+
// cache out scroll settings...
|
620
|
+
if ((width === this._scroll_contentWidth) && (height === this._scroll_contentHeight)) return ;
|
621
|
+
this._scroll_contentWidth = width;
|
622
|
+
this._scroll_contentHeight = height ;
|
623
|
+
|
624
|
+
// horizontal scroller is visible if contentView.width > visibleWidth
|
625
|
+
// visibleWidth = this.frame.width - verticalScroller if scroller visible
|
626
|
+
|
627
|
+
// vertical scroll is visible if contentView.height > visibleHeight
|
628
|
+
// visibleHeight = this.frame.height - horizontalScroller if visible
|
629
|
+
|
630
|
+
if (this.get('hasHorizontalScroller') && (view = this.get('horizontalScrollerView'))) {
|
631
|
+
|
632
|
+
// decide if it should be visible or not
|
633
|
+
if (this.get('autohidesHorizontalScroller')) {
|
634
|
+
this.set('isHorizontalScrollerVisible', width > dim.width);
|
635
|
+
}
|
636
|
+
view.set('maximum', width) ;
|
637
|
+
}
|
638
|
+
|
639
|
+
if (this.get('hasVerticalScroller') && (view = this.get('verticalScrollerView'))) {
|
640
|
+
|
641
|
+
|
642
|
+
// decide if it should be visible or not
|
643
|
+
if (this.get('autohidesVerticalScroller')) {
|
644
|
+
this.set('isVerticalScrollerVisible', height > dim.height);
|
645
|
+
}
|
646
|
+
|
647
|
+
view.set('maximum', height) ;
|
648
|
+
}
|
649
|
+
|
650
|
+
},
|
651
|
+
|
652
|
+
/**
|
653
|
+
Whenever the horizontal scroll offset changes, update the scrollers and
|
654
|
+
edit the location of the contentView.
|
655
|
+
*/
|
656
|
+
_scroll_horizontalScrollOffsetDidChange: function() {
|
657
|
+
var offset = this.get('horizontalScrollOffset');
|
658
|
+
|
659
|
+
// update the offset for the contentView...
|
660
|
+
var contentView = this.get('contentView');
|
661
|
+
if (contentView) contentView.adjust('left', 0-offset);
|
662
|
+
|
663
|
+
// update the value of the horizontal scroller...
|
664
|
+
var scroller ;
|
665
|
+
if (this.get('hasHorizontalScroller') && (scroller=this.get('horizontalScrollerView'))) {
|
666
|
+
scroller.set('value', offset);
|
667
|
+
}
|
668
|
+
|
669
|
+
}.observes('horizontalScrollOffset'),
|
670
|
+
|
671
|
+
/**
|
672
|
+
Whenever the vertical scroll offset changes, update the scrollers and
|
673
|
+
edit the location of the contentView.
|
674
|
+
*/
|
675
|
+
_scroll_verticalScrollOffsetDidChange: function() {
|
676
|
+
var offset = this.get('verticalScrollOffset');
|
677
|
+
|
678
|
+
// update the offset for the contentView...
|
679
|
+
var contentView = this.get('contentView');
|
680
|
+
if (contentView) contentView.adjust('top', 0-offset);
|
681
|
+
|
682
|
+
// update the value of the horizontal scroller...
|
683
|
+
var scroller ;
|
684
|
+
if (this.get('hasVerticalScroller') && (scroller=this.get('verticalScrollerView'))) {
|
685
|
+
scroller.set('value', offset);
|
686
|
+
}
|
687
|
+
|
688
|
+
}.observes('verticalScrollOffset')
|
689
|
+
|
690
|
+
});
|