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,159 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
/**
|
9
|
+
@namespace
|
10
|
+
|
11
|
+
A tree item is a model object that acts as a node in a tree-like data
|
12
|
+
structure such as a hierarchy of folders or outline of items. This mixin
|
13
|
+
can be applied to tree item model objects to customize the way the tree
|
14
|
+
information is extracted from the object.
|
15
|
+
|
16
|
+
h2. Basic Implementation
|
17
|
+
|
18
|
+
If you add this mixin, you must implement the treeItemChildren property so
|
19
|
+
that it returns the current array of child tree items for the receiver. If
|
20
|
+
you do not implement this property the tree item will not function.
|
21
|
+
|
22
|
+
h2. Optimizing Branches
|
23
|
+
|
24
|
+
The most common use of this mixin is to override the treeItemBranchIndexes
|
25
|
+
property to return an index set of child items that are themselves branches
|
26
|
+
in the tree. Normally the TreeController will need to walk every item in
|
27
|
+
your list to determine these branch items. However by implementing this
|
28
|
+
method yourself, you can provide a result faster.
|
29
|
+
|
30
|
+
If none of your child items are branches, override this property to return
|
31
|
+
null or an empty index set.
|
32
|
+
|
33
|
+
@since SproutCore 1.0
|
34
|
+
*/
|
35
|
+
SC.TreeItemContent = {
|
36
|
+
|
37
|
+
/** Walk like a duck. */
|
38
|
+
isTreeItemContent: YES,
|
39
|
+
|
40
|
+
/**
|
41
|
+
Property returns the children for this tree item. The default simply
|
42
|
+
returns null. If you implement this mixin, you MUST implement this
|
43
|
+
property to return the actual tree item children for the item.
|
44
|
+
|
45
|
+
@property
|
46
|
+
@type {SC.Array}
|
47
|
+
*/
|
48
|
+
treeItemChildren: null,
|
49
|
+
|
50
|
+
/**
|
51
|
+
The default property used to determine if the tree item is expanded. You
|
52
|
+
can implement you model object to update this property or you can override
|
53
|
+
treeItemDisclosureState() to compute the disclosure state however you
|
54
|
+
want.
|
55
|
+
|
56
|
+
@property
|
57
|
+
@type {Boolean}
|
58
|
+
*/
|
59
|
+
treeItemIsExpanded: YES,
|
60
|
+
|
61
|
+
/**
|
62
|
+
Indicates whether the tree item should be rendered as a group or not.
|
63
|
+
This property is only useful on the root item in your tree. Setting it to
|
64
|
+
YES on any other item will be ignored.
|
65
|
+
|
66
|
+
@property
|
67
|
+
@type {Boolean}
|
68
|
+
*/
|
69
|
+
treeItemIsGrouped: NO,
|
70
|
+
|
71
|
+
/**
|
72
|
+
Returns the disclosure state for the tree item, which appears at the
|
73
|
+
index of the parent's treeItemChildren array. The response must be one of
|
74
|
+
SC.BRANCH_OPEN, SC.BRANCH_CLOSED or SC.LEAF_NODE.
|
75
|
+
|
76
|
+
If the parent parameter is null, then this item is part of the root
|
77
|
+
children array.
|
78
|
+
|
79
|
+
This method will only be called for tree items that have children. Tree
|
80
|
+
items with no children are assumed to be leaf nodes.
|
81
|
+
|
82
|
+
The default implementation uses the treeItemIsExpanded property to
|
83
|
+
determine if the item should be open or closed.
|
84
|
+
|
85
|
+
@param {Object} parent the parent item containing this item
|
86
|
+
@param {Number} idx the index of the item in the parent
|
87
|
+
@returns {Number} branch state
|
88
|
+
*/
|
89
|
+
treeItemDisclosureState: function(parent, idx) {
|
90
|
+
return this.get('treeItemIsExpanded') ? SC.BRANCH_OPEN : SC.BRANCH_CLOSED;
|
91
|
+
},
|
92
|
+
|
93
|
+
/**
|
94
|
+
Collapse the tree item. The default implementation will change the
|
95
|
+
treeItemIsExpanded property, but you can override this method to handle
|
96
|
+
collapsing anyway you like.
|
97
|
+
|
98
|
+
@param {Object} parent the parent item containing this item
|
99
|
+
@param {Number} idx the index of the item in the parent
|
100
|
+
@returns {void}
|
101
|
+
*/
|
102
|
+
treeItemCollapse: function(parent, idx) {
|
103
|
+
this.setIfChanged('treeItemIsExpanded', NO);
|
104
|
+
},
|
105
|
+
|
106
|
+
/**
|
107
|
+
Expand the tree item. The default implementation will change the
|
108
|
+
treeItemIsExpanded property, but you can override this method to handle
|
109
|
+
collapsing anyway you like.
|
110
|
+
|
111
|
+
@param {Object} parent the parent item containing this item
|
112
|
+
@param {Number} idx the index of the item in the parent
|
113
|
+
@returns {void}
|
114
|
+
*/
|
115
|
+
treeItemExpand: function(parent, idx) {
|
116
|
+
this.setIfChanged('treeItemIsExpanded', YES);
|
117
|
+
},
|
118
|
+
|
119
|
+
/**
|
120
|
+
Returns an index set containing the child indexes of the item that are
|
121
|
+
themselves branches. This will only be called on tree items with a branch
|
122
|
+
disclosure state.
|
123
|
+
|
124
|
+
If the passed parent and index are both null, then the receiver is the
|
125
|
+
root node in the tree.
|
126
|
+
|
127
|
+
The default implementation iterates over the item's children to get the
|
128
|
+
disclosure state of each one. Child items with a branch disclosure state
|
129
|
+
will have their index added to the return index set.
|
130
|
+
|
131
|
+
You may want to override this method to provide a more efficient
|
132
|
+
implementation if you are working with large data sets and can infer which
|
133
|
+
children are branches without iterating over each one.
|
134
|
+
|
135
|
+
If you know for sure that all of the child items for this item are leaf
|
136
|
+
nodes and not branches, simply override this method to return null.
|
137
|
+
|
138
|
+
@param {Object} parent the parent item containing this item
|
139
|
+
@param {Number} index the index of the item in the parent
|
140
|
+
@param {SC.IndexSet} branch indexes
|
141
|
+
*/
|
142
|
+
treeItemBranchIndexes: function(parent, index) {
|
143
|
+
var children = this.get('treeItemChildren'),
|
144
|
+
ret, lim, idx, item;
|
145
|
+
|
146
|
+
if (!children) return null ; // nothing to do
|
147
|
+
|
148
|
+
ret = SC.IndexSet.create();
|
149
|
+
lim = children.get('length');
|
150
|
+
for(idx=0;idx<lim;idx++) {
|
151
|
+
if (!(item = children.objectAt(idx))) continue;
|
152
|
+
if (!item.get('treeItemChildren')) continue;
|
153
|
+
if (item.treeItemDisclosureState(this,idx)!==SC.LEAF_NODE) ret.add(idx);
|
154
|
+
}
|
155
|
+
|
156
|
+
return ret.get('length')>0 ? ret : null;
|
157
|
+
}
|
158
|
+
|
159
|
+
};
|
@@ -0,0 +1,176 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
/**
|
9
|
+
@namespace
|
10
|
+
|
11
|
+
Views that include the Validatable mixin can be used with validators to
|
12
|
+
ensure their values are valid.
|
13
|
+
|
14
|
+
*/
|
15
|
+
SC.Validatable = {
|
16
|
+
|
17
|
+
initMixin: function() {
|
18
|
+
this._validatable_validatorDidChange() ;
|
19
|
+
},
|
20
|
+
|
21
|
+
/**
|
22
|
+
The validator for this field.
|
23
|
+
|
24
|
+
Set to a validator class or instance. If this points to a class, it will
|
25
|
+
be instantiated when the validator is first used.
|
26
|
+
*/
|
27
|
+
validator: null,
|
28
|
+
|
29
|
+
/**
|
30
|
+
This property must return the human readable name you want used when
|
31
|
+
describing an error condition. For example, if set this property to
|
32
|
+
"Your Email", then the returned error string might be something like
|
33
|
+
"Your Email is not valid".
|
34
|
+
|
35
|
+
You can return a loc string here if you like. It will be localized when
|
36
|
+
it is placed into the error string.
|
37
|
+
*/
|
38
|
+
errorLabel: null,
|
39
|
+
|
40
|
+
/**
|
41
|
+
YES if the receiver is currently valid.
|
42
|
+
|
43
|
+
This property watches the value property by default. You can override
|
44
|
+
this property if you want to use some other method to calculate the
|
45
|
+
current valid state.
|
46
|
+
|
47
|
+
@field
|
48
|
+
*/
|
49
|
+
isValid: function() {
|
50
|
+
return SC.typeOf(this.get('value')) !== SC.T_ERROR;
|
51
|
+
}.property('value'),
|
52
|
+
|
53
|
+
/**
|
54
|
+
The form that the view belongs to. May be null if the view does not
|
55
|
+
belong to a form. This property is usually set automatically by an
|
56
|
+
owner form view.
|
57
|
+
*/
|
58
|
+
ownerForm: null,
|
59
|
+
|
60
|
+
/**
|
61
|
+
Attempts to validate the receiver.
|
62
|
+
|
63
|
+
Runs the validator and returns SC.VALIDATE_OK, SC.VALIDATE_NO_CHANGE,
|
64
|
+
or an error object. If no validator is installed, this method will
|
65
|
+
always return SC.VALIDATE_OK.
|
66
|
+
|
67
|
+
@param {Boolean} partialChange YES if this is a partial edit.
|
68
|
+
@returns SC.VALIDATE_OK, error, or SC.VALIDATE_NO_CHANGE
|
69
|
+
*/
|
70
|
+
performValidate: function(partialChange) {
|
71
|
+
var ret = SC.VALIDATE_OK ;
|
72
|
+
|
73
|
+
if (this._validator) {
|
74
|
+
var form = this.get('ownerForm') ;
|
75
|
+
if (partialChange) {
|
76
|
+
ret = this._validator.validatePartial(form,this) ;
|
77
|
+
|
78
|
+
// if the partial returned NO_CHANGE, then check to see if the
|
79
|
+
// field is valid anyway. If it is not valid, then don't update the
|
80
|
+
// value. This way the user can have partially constructed values
|
81
|
+
// without the validator trying to convert it to an object.
|
82
|
+
if ((ret == SC.VALIDATE_NO_CHANGE) && (this._validator.validateChange(form, this) == SC.VALIDATE_OK)) {
|
83
|
+
ret = SC.VALIDATE_OK;
|
84
|
+
}
|
85
|
+
} else ret = this._validator.validateChange(form, this) ;
|
86
|
+
}
|
87
|
+
return ret ;
|
88
|
+
},
|
89
|
+
|
90
|
+
/**
|
91
|
+
Runs validateSubmit. You should use this in your implementation of
|
92
|
+
validateSubmit. If no validator is installed, this always returns
|
93
|
+
SC.VALIDATE_OK
|
94
|
+
*/
|
95
|
+
performValidateSubmit: function() {
|
96
|
+
return this._validator ? this._validator.validateSubmit(this.get('ownerForm'), this) : SC.VALIDATE_OK;
|
97
|
+
},
|
98
|
+
|
99
|
+
/**
|
100
|
+
Runs a keypress validation. Returns YES if the keypress should be
|
101
|
+
allowed, NO otherwise. If no validator is defined, always returns YES.
|
102
|
+
|
103
|
+
@param {String} charStr the key string
|
104
|
+
@returns {Boolean}
|
105
|
+
*/
|
106
|
+
performValidateKeyDown: function(evt) {
|
107
|
+
// ignore anything with ctrl or meta key press
|
108
|
+
var charStr = evt.getCharString();
|
109
|
+
if (!charStr) return YES ;
|
110
|
+
return this._validator ? this._validator.validateKeyDown(this.get('ownerForm'), this, charStr) : YES;
|
111
|
+
},
|
112
|
+
|
113
|
+
/**
|
114
|
+
Returns the validator object, if one has been created.
|
115
|
+
|
116
|
+
@property {SC.Validator} the object
|
117
|
+
*/
|
118
|
+
validatorObject: function() {
|
119
|
+
return this._validator;
|
120
|
+
}.property(),
|
121
|
+
|
122
|
+
/**
|
123
|
+
Invoked by the owner form just before submission. Override with your
|
124
|
+
own method to commit any final changes after you perform validation.
|
125
|
+
|
126
|
+
The default implementation simply calls performValidateSubmit() and
|
127
|
+
returns that value.
|
128
|
+
*/
|
129
|
+
validateSubmit: function() { return this.performValidateSubmit(); },
|
130
|
+
|
131
|
+
/**
|
132
|
+
Convert the field value string into an object.
|
133
|
+
|
134
|
+
This method will call the validators objectForFieldValue if it exists.
|
135
|
+
|
136
|
+
@param fieldValue the raw value from the field.
|
137
|
+
@returns converted object
|
138
|
+
*/
|
139
|
+
objectForFieldValue: function(fieldValue, partialChange) {
|
140
|
+
return this._validator ? this._validator.objectForFieldValue(fieldValue, this.get('ownerForm'), this) : fieldValue ;
|
141
|
+
},
|
142
|
+
|
143
|
+
/**
|
144
|
+
Convert the object into a field value.
|
145
|
+
|
146
|
+
This method will call the validator's fieldValueForObject if it exists.
|
147
|
+
|
148
|
+
@param object the objec to convert
|
149
|
+
@returns converted field value
|
150
|
+
*/
|
151
|
+
fieldValueForObject: function(object) {
|
152
|
+
return this._validator ? this._validator.fieldValueForObject(object, this.get('ownerForm'), this) : object ;
|
153
|
+
},
|
154
|
+
|
155
|
+
_validatable_displayObserver: function() {
|
156
|
+
this.displayDidChange();
|
157
|
+
}.observes('isValid'),
|
158
|
+
|
159
|
+
updateLayerMixin: function(context) {
|
160
|
+
context.setClass('invalid', !this.get('isValid'));
|
161
|
+
},
|
162
|
+
|
163
|
+
// invoked whenever the attached validator changes.
|
164
|
+
_validatable_validatorDidChange: function() {
|
165
|
+
var form = this.get('ownerForm') ;
|
166
|
+
var val = SC.Validator.findFor(form, this, this.get('validator')) ;
|
167
|
+
if (val != this._validator) {
|
168
|
+
this.propertyWillChange('validatorObject');
|
169
|
+
if (this._validator) this._validator.detachFrom(form, this) ;
|
170
|
+
this._validator = val;
|
171
|
+
if (this._validator) this._validator.attachTo(form, this) ;
|
172
|
+
this.propertyDidChange('validatorObject');
|
173
|
+
}
|
174
|
+
}.observes('validator', 'ownerForm')
|
175
|
+
|
176
|
+
};
|
@@ -0,0 +1,47 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
require('panes/pane');
|
9
|
+
|
10
|
+
/** @class
|
11
|
+
|
12
|
+
Most SproutCore applications have a main pane, which dominates the
|
13
|
+
application page. You can extend from this view to implement your own main
|
14
|
+
pane. This class will automatically make itself main whenever you append it
|
15
|
+
to a document, removing any other main pane that might be currently in
|
16
|
+
place. If you do have another already focused as the keyPane, this view
|
17
|
+
will also make itself key automatically. The default way to use the main
|
18
|
+
pane is to simply add it to your page like this:
|
19
|
+
|
20
|
+
{{{
|
21
|
+
SC.MainPane.create().append();
|
22
|
+
}}}
|
23
|
+
|
24
|
+
This will cause your root view to display. The default layout for a
|
25
|
+
MainPane is to cover the entire document window and to resize with the
|
26
|
+
window.
|
27
|
+
|
28
|
+
@extends SC.Pane
|
29
|
+
@since SproutCore 1.0
|
30
|
+
*/
|
31
|
+
SC.MainPane = SC.Pane.extend({
|
32
|
+
|
33
|
+
layout: { left:0, right:0, top:0, bottom:0 },
|
34
|
+
|
35
|
+
/** @private - extends SC.Pane's method */
|
36
|
+
paneDidAttach: function() {
|
37
|
+
var ret = sc_super();
|
38
|
+
var responder = this.rootResponder;
|
39
|
+
responder.makeMainPane(this);
|
40
|
+
if (!responder.get('keyRootView')) responder.makeKeyPane(this);
|
41
|
+
return ret ;
|
42
|
+
},
|
43
|
+
|
44
|
+
acceptsKeyPane: YES,
|
45
|
+
|
46
|
+
classNames: ['sc-main']
|
47
|
+
});
|
@@ -0,0 +1,584 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
require('views/view');
|
9
|
+
|
10
|
+
/** @class
|
11
|
+
A Pane is like a regular view except that it does not need to live within a
|
12
|
+
parent view. You usually use a Pane to form the root of a view hierarchy in
|
13
|
+
your application, such as your main application view or for floating
|
14
|
+
palettes, popups, menus, etc.
|
15
|
+
|
16
|
+
Usually you will not work directly with the SC.Pane class, but with one of
|
17
|
+
its subclasses such as SC.MainPane, SC.Panel, or SC.PopupPane.
|
18
|
+
|
19
|
+
h1. Showing a Pane
|
20
|
+
|
21
|
+
To make a pane visible, you need to add it to your HTML document. The
|
22
|
+
simplest way to do this is to call the append() method:
|
23
|
+
|
24
|
+
{{{
|
25
|
+
myPane = SC.Pane.create();
|
26
|
+
myPane.append(); // adds the pane to the document
|
27
|
+
}}}
|
28
|
+
|
29
|
+
This will insert your pane into the end of your HTML document body, causing
|
30
|
+
it to display on screen. It will also register your pane with the
|
31
|
+
SC.RootResponder for the document so you can start to receive keyboard,
|
32
|
+
mouse, and touch events.
|
33
|
+
|
34
|
+
If you need more specific control for where you pane appears in the
|
35
|
+
document, you can use several other insertion methods such as appendTo(),
|
36
|
+
prependTo(), before() and after(). These methods all take a an element to
|
37
|
+
indicate where in your HTML document you would like you pane to be inserted.
|
38
|
+
|
39
|
+
Once a pane is inserted into the document, it will be sized and positioned
|
40
|
+
according to the layout you have specified. It will then automatically
|
41
|
+
resize with the window if needed, relaying resize notifications to children
|
42
|
+
as well.
|
43
|
+
|
44
|
+
h1. Hiding a Pane
|
45
|
+
|
46
|
+
When you are finished with a pane, you can hide the pane by calling the
|
47
|
+
remove() method. This method will actually remove the Pane from the
|
48
|
+
document body, as well as deregistering it from the RootResponder so that it
|
49
|
+
no longer receives events.
|
50
|
+
|
51
|
+
The isVisibleInWindow method will also change to NO for the Pane and all of
|
52
|
+
its childViews and the views will no longer have their updateDisplay methods
|
53
|
+
called.
|
54
|
+
|
55
|
+
You can readd a pane to the document again any time in the future by using
|
56
|
+
any of the insertion methods defined in the previous section.
|
57
|
+
|
58
|
+
h1. Receiving Events
|
59
|
+
|
60
|
+
Your pane and its child views will automatically receive any mouse or touch
|
61
|
+
events as long as it is on the screen. To receive keyboard events, however,
|
62
|
+
you must focus the keyboard on your pane by calling makeKeyPane() on the
|
63
|
+
pane itself. This will cause the RootResponder to route keyboard events to
|
64
|
+
your pane. The pane, in turn, will route those events to its current
|
65
|
+
keyView, if there is any.
|
66
|
+
|
67
|
+
Note that all SC.Views (anything that implements SC.ClassicResponder,
|
68
|
+
really) will be notified when it is about or gain or lose keyboard focus.
|
69
|
+
These notifications are sent both when the view is made keyView of a
|
70
|
+
particular pane and when the pane is made keyPane for the entire
|
71
|
+
application.
|
72
|
+
|
73
|
+
You can prevent your Pane from becoming key by setting the acceptsKeyPane
|
74
|
+
to NO on the pane. This is useful when creating palettes and other popups
|
75
|
+
that should not steal keyboard control from another view.
|
76
|
+
|
77
|
+
@extends SC.View
|
78
|
+
@extends SC.ResponderContext
|
79
|
+
@since SproutCore 1.0
|
80
|
+
*/
|
81
|
+
SC.Pane = SC.View.extend({
|
82
|
+
|
83
|
+
/**
|
84
|
+
Returns YES for easy detection of when you reached the pane.
|
85
|
+
@property {Boolean}
|
86
|
+
*/
|
87
|
+
isPane: YES,
|
88
|
+
|
89
|
+
/**
|
90
|
+
Set to the current page when the pane is instantiated from a page object.
|
91
|
+
@property {SC.Page}
|
92
|
+
*/
|
93
|
+
page: null,
|
94
|
+
|
95
|
+
// .......................................................
|
96
|
+
// ROOT RESPONDER SUPPORT
|
97
|
+
//
|
98
|
+
|
99
|
+
/**
|
100
|
+
The rootResponder for this pane. Whenever you add a pane to a document,
|
101
|
+
this property will be set to the rootResponder that is now forwarding
|
102
|
+
events to the pane.
|
103
|
+
|
104
|
+
@property {SC.Responder}
|
105
|
+
*/
|
106
|
+
rootResponder: null,
|
107
|
+
|
108
|
+
/** Last known window size. */
|
109
|
+
currentWindowSize: null,
|
110
|
+
|
111
|
+
/** The parent dimensions are always the last known window size. */
|
112
|
+
computeParentDimensions: function(frame) {
|
113
|
+
var pframe = this.get('currentWindowSize');
|
114
|
+
return {
|
115
|
+
width: (pframe) ? pframe.width : 1000,
|
116
|
+
height: (pframe) ? pframe.height : 1000
|
117
|
+
} ;
|
118
|
+
},
|
119
|
+
|
120
|
+
/** @private Disable caching due to an known bug in SC. */
|
121
|
+
frame: function() {
|
122
|
+
return this.computeFrameWithParentFrame(null) ;
|
123
|
+
}.property(),
|
124
|
+
|
125
|
+
/**
|
126
|
+
Invoked by the root responder whenever the window resizes. This should
|
127
|
+
simply begin the process of notifying children that the view size has
|
128
|
+
changed, if needed.
|
129
|
+
*/
|
130
|
+
windowSizeDidChange: function(oldSize, newSize) {
|
131
|
+
this.set('currentWindowSize', newSize) ;
|
132
|
+
this.parentViewDidResize(); // start notifications.
|
133
|
+
},
|
134
|
+
|
135
|
+
/**
|
136
|
+
Attempts to send the event down the responder chain for this pane. If you
|
137
|
+
pass a target, this method will begin with the target and work up the
|
138
|
+
responder chain. Otherwise, it will begin with the current firstResponder
|
139
|
+
and walk up the chain looking for any responder that implements a handler
|
140
|
+
for the passed method and returns YES when executed.
|
141
|
+
|
142
|
+
@param {String} action
|
143
|
+
@param {SC.Event} evt
|
144
|
+
@param {Object} target
|
145
|
+
@returns {Object} object that handled the event
|
146
|
+
*/
|
147
|
+
sendEvent: function(action, evt, target) {
|
148
|
+
var handler ;
|
149
|
+
|
150
|
+
// walk up the responder chain looking for a method to handle the event
|
151
|
+
if (!target) target = this.get('firstResponder') ;
|
152
|
+
while(target && !target.tryToPerform(action, evt)) {
|
153
|
+
|
154
|
+
// even if someone tries to fill in the nextResponder on the pane, stop
|
155
|
+
// searching when we hit the pane.
|
156
|
+
target = (target === this) ? null : target.get('nextResponder') ;
|
157
|
+
}
|
158
|
+
|
159
|
+
// if no handler was found in the responder chain, try the default
|
160
|
+
if (!target && (target = this.get('defaultResponder'))) {
|
161
|
+
if (typeof target === SC.T_STRING) {
|
162
|
+
target = SC.objectForPropertyPath(target);
|
163
|
+
}
|
164
|
+
|
165
|
+
if (!target) target = null;
|
166
|
+
else if (target.isResponderContext) {
|
167
|
+
target = target.sendAction(action, this, evt);
|
168
|
+
} else target = target.tryToPerform(action, evt) ? target : null ;
|
169
|
+
}
|
170
|
+
|
171
|
+
return evt.mouseHandler || target ;
|
172
|
+
},
|
173
|
+
|
174
|
+
// .......................................................
|
175
|
+
// HANDLE FIRST RESPONDER AND KEY RESPONDER STATUS
|
176
|
+
//
|
177
|
+
|
178
|
+
/** @property
|
179
|
+
The default responder. Set this to point to a responder object that can
|
180
|
+
respond to events when no other view in the hierarchy handles them.
|
181
|
+
*/
|
182
|
+
defaultResponder: null,
|
183
|
+
|
184
|
+
/** @property
|
185
|
+
Pane's never have a next responder
|
186
|
+
*/
|
187
|
+
nextResponder: function() {
|
188
|
+
return null;
|
189
|
+
}.property().cacheable(),
|
190
|
+
|
191
|
+
/** @property
|
192
|
+
The first responder. This is the first view that should receive action
|
193
|
+
events. Whenever you click on a view, it will usually become firstResponder.
|
194
|
+
*/
|
195
|
+
firstResponder: null,
|
196
|
+
|
197
|
+
/** @property
|
198
|
+
If YES, this pane can become the key pane. You may want to set this to NO
|
199
|
+
for certain types of panes. For example, a palette may never want to
|
200
|
+
become key. The default value is YES.
|
201
|
+
*/
|
202
|
+
acceptsKeyPane: YES,
|
203
|
+
|
204
|
+
/** @property
|
205
|
+
This is set to YES when your pane is currently the target of key events.
|
206
|
+
*/
|
207
|
+
isKeyPane: NO,
|
208
|
+
|
209
|
+
/**
|
210
|
+
Make the pane receive key events. Until you call this method, the
|
211
|
+
keyView set for this pane will not receive key events.
|
212
|
+
|
213
|
+
@returns {SC.Pane} receiver
|
214
|
+
*/
|
215
|
+
becomeKeyPane: function() {
|
216
|
+
if (this.get('isKeyPane')) return this ;
|
217
|
+
if (this.rootResponder) this.rootResponder.makeKeyPane(this) ;
|
218
|
+
return this ;
|
219
|
+
},
|
220
|
+
|
221
|
+
/**
|
222
|
+
Remove the pane view status from the pane. This will simply set the
|
223
|
+
keyPane on the rootResponder to null.
|
224
|
+
|
225
|
+
@returns {SC.Pane} receiver
|
226
|
+
*/
|
227
|
+
resignKeyPane: function() {
|
228
|
+
if (!this.get('isKeyPane')) return this ;
|
229
|
+
if (this.rootResponder) this.rootResponder.makeKeyPane(null);
|
230
|
+
return this ;
|
231
|
+
},
|
232
|
+
|
233
|
+
/**
|
234
|
+
Makes the passed view (or any object that implements SC.Responder) into
|
235
|
+
the new firstResponder for this pane. This will cause the current first
|
236
|
+
responder to lose its responder status and possibly keyResponder status as
|
237
|
+
well.
|
238
|
+
|
239
|
+
@param {SC.View} view
|
240
|
+
@returns {SC.Pane} receiver
|
241
|
+
*/
|
242
|
+
makeFirstResponder: function(view) {
|
243
|
+
var current=this.get('firstResponder'), isKeyPane=this.get('isKeyPane');
|
244
|
+
if (current === view) return this ; // nothing to do
|
245
|
+
|
246
|
+
// notify current of firstResponder change
|
247
|
+
if (current) current.willLoseFirstResponder(current);
|
248
|
+
|
249
|
+
// if we are currently key pane, then notify key views of change also
|
250
|
+
if (isKeyPane) {
|
251
|
+
if (current) current.willLoseKeyResponderTo(view) ;
|
252
|
+
if (view) view.willBecomeKeyResponderFrom(current) ;
|
253
|
+
}
|
254
|
+
|
255
|
+
// change setting
|
256
|
+
if (current) {
|
257
|
+
current.beginPropertyChanges()
|
258
|
+
.set('isFirstResponder', NO).set('isKeyResponder', NO)
|
259
|
+
.endPropertyChanges();
|
260
|
+
}
|
261
|
+
|
262
|
+
this.set('firstResponder', view) ;
|
263
|
+
|
264
|
+
if (view) {
|
265
|
+
view.beginPropertyChanges()
|
266
|
+
.set('isFirstResponder', YES).set('isKeyResponder', isKeyPane)
|
267
|
+
.endPropertyChanges();
|
268
|
+
}
|
269
|
+
|
270
|
+
// and notify again if needed.
|
271
|
+
if (isKeyPane) {
|
272
|
+
if (view) view.didBecomeKeyResponderFrom(current) ;
|
273
|
+
if (current) current.didLoseKeyResponderTo(view) ;
|
274
|
+
}
|
275
|
+
|
276
|
+
if (view) view.didBecomeFirstResponder(view);
|
277
|
+
return this ;
|
278
|
+
},
|
279
|
+
|
280
|
+
/** @private method forwards status changes in a generic way. */
|
281
|
+
_forwardKeyChange: function(shouldForward, methodName, pane, isKey) {
|
282
|
+
var keyView, responder, newKeyView;
|
283
|
+
if (shouldForward && (responder = this.get('firstResponder'))) {
|
284
|
+
newKeyView = (pane) ? pane.get('firstResponder') : null ;
|
285
|
+
keyView = this.get('firstResponder') ;
|
286
|
+
if (keyView) keyView[methodName](newKeyView);
|
287
|
+
|
288
|
+
if ((isKey !== undefined) && responder) {
|
289
|
+
responder.set('isKeyResponder', isKey);
|
290
|
+
}
|
291
|
+
}
|
292
|
+
},
|
293
|
+
|
294
|
+
/**
|
295
|
+
Called just before the pane loses it's keyPane status. This will notify
|
296
|
+
the current keyView, if there is one, that it is about to lose focus,
|
297
|
+
giving it one last opportunity to save its state.
|
298
|
+
|
299
|
+
@param {SC.Pane} pane
|
300
|
+
@returns {SC.Pane} reciever
|
301
|
+
*/
|
302
|
+
willLoseKeyPaneTo: function(pane) {
|
303
|
+
this._forwardKeyChange(this.get('isKeyPane'), 'willLoseKeyResponderTo', pane, NO);
|
304
|
+
return this ;
|
305
|
+
},
|
306
|
+
|
307
|
+
/**
|
308
|
+
Called just before the pane becomes keyPane. Notifies the current keyView
|
309
|
+
that it is about to gain focus. The keyView can use this opportunity to
|
310
|
+
prepare itself, possibly stealing any value it might need to steal from the
|
311
|
+
current key view.
|
312
|
+
|
313
|
+
@param {SC.Pane} pane
|
314
|
+
@returns {SC.Pane} receiver
|
315
|
+
*/
|
316
|
+
willBecomeKeyPaneFrom: function(pane) {
|
317
|
+
this._forwardKeyChange(!this.get('isKeyPane'), 'willBecomeKeyResponderFrom', pane, YES);
|
318
|
+
return this ;
|
319
|
+
},
|
320
|
+
|
321
|
+
|
322
|
+
/**
|
323
|
+
Called just after the pane has lost its keyPane status. Notifies the
|
324
|
+
current keyView of the change. The keyView can use this method to do any
|
325
|
+
final cleanup and changes its own display value if needed.
|
326
|
+
|
327
|
+
@param {SC.Pane} pane
|
328
|
+
@returns {SC.Pane} reciever
|
329
|
+
*/
|
330
|
+
didLoseKeyPaneTo: function(pane) {
|
331
|
+
var isKeyPane = this.get('isKeyPane');
|
332
|
+
this.set('isKeyPane', NO);
|
333
|
+
this._forwardKeyChange(isKeyPane, 'didLoseKeyResponderTo', pane);
|
334
|
+
return this ;
|
335
|
+
},
|
336
|
+
|
337
|
+
/**
|
338
|
+
Called just after the keyPane focus has changed to the receiver. Notifies
|
339
|
+
the keyView of its new status. The keyView should use this method to
|
340
|
+
update its display and actually set focus on itself at the browser level
|
341
|
+
if needed.
|
342
|
+
|
343
|
+
@param {SC.Pane} pane
|
344
|
+
@returns {SC.Pane} receiver
|
345
|
+
|
346
|
+
*/
|
347
|
+
didBecomeKeyPaneFrom: function(pane) {
|
348
|
+
var isKeyPane = this.get('isKeyPane');
|
349
|
+
this.set('isKeyPane', YES);
|
350
|
+
this._forwardKeyChange(!isKeyPane, 'didBecomeKeyResponderFrom', pane, YES);
|
351
|
+
return this ;
|
352
|
+
},
|
353
|
+
|
354
|
+
// .......................................................
|
355
|
+
// MAIN PANE SUPPORT
|
356
|
+
//
|
357
|
+
|
358
|
+
isMainPane: NO,
|
359
|
+
|
360
|
+
/**
|
361
|
+
Invoked when the pane is about to become the focused pane.
|
362
|
+
|
363
|
+
@param {SC.Pane} pane the pane that currently have focus
|
364
|
+
*/
|
365
|
+
focusFrom: function(pane) {},
|
366
|
+
|
367
|
+
/**
|
368
|
+
Invoked when the the pane is about to lose its focused pane status.
|
369
|
+
|
370
|
+
@param {SC.Pane} pane the pane that will receive focus next
|
371
|
+
*/
|
372
|
+
blurTo: function(pane) {},
|
373
|
+
|
374
|
+
/**
|
375
|
+
Invoked when the view is about to lose its mainPane status. The default
|
376
|
+
implementation will also remove the pane from the document since you can't
|
377
|
+
have more than one mainPane in the document at a time.
|
378
|
+
*/
|
379
|
+
blurMainTo: function(pane) {
|
380
|
+
this.set('isMainPane', NO) ;
|
381
|
+
},
|
382
|
+
|
383
|
+
/**
|
384
|
+
Invokes when the view is about to become the new mainPane. The default
|
385
|
+
implementation simply updates the isMainPane property. In your subclass,
|
386
|
+
you should make sure your pane has been added to the document before
|
387
|
+
trying to make it the mainPane. See SC.MainPane for more information.
|
388
|
+
*/
|
389
|
+
focusMainFrom: function(pane) {
|
390
|
+
this.set('isMainPane', YES);
|
391
|
+
},
|
392
|
+
|
393
|
+
// .......................................................
|
394
|
+
// ADDING/REMOVE PANES TO SCREEN
|
395
|
+
//
|
396
|
+
|
397
|
+
/**
|
398
|
+
Inserts the pane at the end of the document. This will also add the pane
|
399
|
+
to the rootResponder.
|
400
|
+
|
401
|
+
@param {SC.RootResponder} rootResponder
|
402
|
+
@returns {SC.Pane} receiver
|
403
|
+
|
404
|
+
*/
|
405
|
+
append: function() {
|
406
|
+
return this.appendTo(document.body) ;
|
407
|
+
},
|
408
|
+
|
409
|
+
/**
|
410
|
+
Removes the pane from the document. This will remove the
|
411
|
+
DOM node and deregister you from the document window.
|
412
|
+
*/
|
413
|
+
remove: function() {
|
414
|
+
if (!this.get('isVisibleInWindow')) return this ; // nothing to do
|
415
|
+
if (!this.get('isPaneAttached')) return this ; // nothing to do
|
416
|
+
|
417
|
+
// remove layer...
|
418
|
+
var dom = this.get('layer') ;
|
419
|
+
if (dom.parentNode) dom.parentNode.removeChild(dom) ;
|
420
|
+
dom = null ;
|
421
|
+
|
422
|
+
// remove from the RootResponder also
|
423
|
+
var responder = this.rootResponder ;
|
424
|
+
if (this.get('isKeyPane')) responder.makeKeyPane(null) ; // orders matter, remove keyPane first
|
425
|
+
if (this.get('isMainPane')) responder.makeMainPane(null) ;
|
426
|
+
responder.panes.remove(this) ;
|
427
|
+
this.rootResponder = responder = null ;
|
428
|
+
|
429
|
+
// clean up some of my own properties
|
430
|
+
this.set('isPaneAttached', NO) ;
|
431
|
+
this.parentViewDidChange() ;
|
432
|
+
return this ;
|
433
|
+
},
|
434
|
+
|
435
|
+
/**
|
436
|
+
Inserts the pane into the DOM as the last child of the passed DOM element.
|
437
|
+
You can pass in either a CoreQuery object or a selector, which will be
|
438
|
+
converted to a CQ object. You can optionally pass in the rootResponder
|
439
|
+
to use for this operation. Normally you will not need to pass this as
|
440
|
+
the default responder is suitable.
|
441
|
+
|
442
|
+
@param {DOMElement} elem the element to append to
|
443
|
+
@returns {SC.Pane} receiver
|
444
|
+
*/
|
445
|
+
appendTo: function(elem) {
|
446
|
+
var layer = this.get('layer');
|
447
|
+
if (!layer) layer =this.createLayer().get('layer');
|
448
|
+
elem.insertBefore(layer, null); // add to DOM
|
449
|
+
elem = layer = null ;
|
450
|
+
|
451
|
+
return this.paneDidAttach(); // do the rest of the setup
|
452
|
+
},
|
453
|
+
|
454
|
+
/**
|
455
|
+
inserts the pane's rootElement into the top of the passed DOM element.
|
456
|
+
|
457
|
+
@param {DOMElement} elem the element to append to
|
458
|
+
@returns {SC.Pane} receiver
|
459
|
+
*/
|
460
|
+
prependTo: function(elem) {
|
461
|
+
var layer = this.get('layer');
|
462
|
+
if (!layer) layer =this.createLayer().get('layer');
|
463
|
+
elem.insertBefore(layer, elem.firstChild); // add to DOM
|
464
|
+
elem = layer = null ;
|
465
|
+
|
466
|
+
return this.paneDidAttach(); // do the rest of the setup
|
467
|
+
},
|
468
|
+
|
469
|
+
/**
|
470
|
+
inserts the pane's rootElement into the hierarchy before the passed element.
|
471
|
+
|
472
|
+
@param {DOMElement} elem the element to append to
|
473
|
+
@returns {SC.Pane} receiver
|
474
|
+
*/
|
475
|
+
before: function(elem) {
|
476
|
+
var layer = this.get('layer');
|
477
|
+
if (!layer) layer =this.createLayer().get('layer');
|
478
|
+
|
479
|
+
var parent = elem.parentNode ;
|
480
|
+
parent.insertBefore(layer, elem); // add to DOM
|
481
|
+
parent = elem = layer = null ;
|
482
|
+
|
483
|
+
return this.paneDidAttach(); // do the rest of the setup
|
484
|
+
},
|
485
|
+
|
486
|
+
/**
|
487
|
+
inserts the pane's rootElement into the hierarchy after the passed
|
488
|
+
element.
|
489
|
+
|
490
|
+
@param {DOMElement} elem the element to append to
|
491
|
+
@returns {SC.Pane} receiver
|
492
|
+
*/
|
493
|
+
after: function(elem) {
|
494
|
+
var layer = this.get('layer');
|
495
|
+
if (!layer) layer =this.createLayer().get('layer');
|
496
|
+
|
497
|
+
var parent = elem.parentNode ;
|
498
|
+
elem.insertBefore(layer, elem.nextSibling); // add to DOM
|
499
|
+
parent = elem = layer = null ;
|
500
|
+
|
501
|
+
return this.paneDidAttach(); // do the rest of the setup
|
502
|
+
},
|
503
|
+
|
504
|
+
/**
|
505
|
+
This method has no effect in the pane. Instead use remove().
|
506
|
+
*/
|
507
|
+
removeFromParent: function() { },
|
508
|
+
|
509
|
+
/** @private
|
510
|
+
Called when the pane is attached to a DOM element in a window, this will
|
511
|
+
change the view status to be visible in the window and also register
|
512
|
+
with the rootResponder.
|
513
|
+
*/
|
514
|
+
paneDidAttach: function() {
|
515
|
+
|
516
|
+
// hook into root responder
|
517
|
+
var responder = (this.rootResponder = SC.RootResponder.responder);
|
518
|
+
responder.panes.add(this);
|
519
|
+
|
520
|
+
// set currentWindowSize
|
521
|
+
this.set('currentWindowSize', responder.computeWindowSize()) ;
|
522
|
+
|
523
|
+
// update my own location
|
524
|
+
this.set('isPaneAttached', YES) ;
|
525
|
+
this.parentViewDidChange() ;
|
526
|
+
return this ;
|
527
|
+
},
|
528
|
+
|
529
|
+
/** @property
|
530
|
+
YES when the pane is currently attached to a document DOM. Read only.
|
531
|
+
*/
|
532
|
+
isPaneAttached: NO,
|
533
|
+
|
534
|
+
/**
|
535
|
+
Updates the isVisibleInWindow state on the pane and its childViews if
|
536
|
+
necessary. This works much like SC.View's default implementation, but it
|
537
|
+
does not need a parentView to function.
|
538
|
+
|
539
|
+
@param {Boolean} parentViewIsVisible (ignored)
|
540
|
+
@returns {SC.Pane} receiver
|
541
|
+
*/
|
542
|
+
recomputeIsVisibleInWindow: function(parentViewIsVisible) {
|
543
|
+
var last = this.get('isVisibleInWindow') ;
|
544
|
+
var cur = this.get('isPaneAttached') && this.get('isVisible') ;
|
545
|
+
|
546
|
+
// if the state has changed, update it and notify children
|
547
|
+
if (last !== cur) {
|
548
|
+
this.set('isVisibleInWindow', cur) ;
|
549
|
+
|
550
|
+
// if we just became visible, update layer + layout if needed...
|
551
|
+
if (cur && this.get('layerNeedsUpdate')) this.updateLayerIfNeeded();
|
552
|
+
if (cur && this.get('childViewsNeedLayout')) this.layoutChildViewsIfNeeded();
|
553
|
+
|
554
|
+
var childViews = this.get('childViews'), len = childViews.length, idx;
|
555
|
+
for(idx=0;idx<len;idx++) {
|
556
|
+
childViews[idx].recomputeIsVisibleInWindow(cur);
|
557
|
+
}
|
558
|
+
|
559
|
+
// if we were firstResponder, resign firstResponder also if no longer
|
560
|
+
// visible.
|
561
|
+
if (!cur && this.get('isFirstResponder')) this.resignFirstResponder();
|
562
|
+
}
|
563
|
+
|
564
|
+
return this ;
|
565
|
+
},
|
566
|
+
|
567
|
+
updateLayerLocation: function() {
|
568
|
+
// note: the normal code here to update node location is removed
|
569
|
+
// because we don't need it for panes.
|
570
|
+
return this ;
|
571
|
+
},
|
572
|
+
|
573
|
+
init: function() {
|
574
|
+
// if a layer was set manually then we will just attach to existing
|
575
|
+
// HTML.
|
576
|
+
var hasLayer = !!this.get('layer') ;
|
577
|
+
sc_super() ;
|
578
|
+
if (hasLayer) this.paneDidAttach();
|
579
|
+
},
|
580
|
+
|
581
|
+
classNames: 'sc-pane'.w()
|
582
|
+
|
583
|
+
}) ;
|
584
|
+
|