sproutit-sproutcore 1.0.0.20090416161445 → 1.0.0.20090720093355
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/Buildfile +4 -2
- data/frameworks/sproutcore/Buildfile +3 -2
- data/frameworks/sproutcore/README +2 -1
- data/frameworks/sproutcore/apps/docs/core.js +27 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Preview.pdf +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/data.plist +14378 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image10.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image11.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image13.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image14.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image8.png +0 -0
- data/frameworks/sproutcore/apps/docs/design/Doc Viewer.graffle/image9.tiff +0 -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/{sc_jsdoc → docs}/english.lproj/strings.js +7 -7
- 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 +65 -26
- data/frameworks/sproutcore/apps/tests/controllers/tests.js +14 -19
- data/frameworks/sproutcore/apps/tests/core.js +114 -16
- data/frameworks/sproutcore/apps/tests/data_source.js +96 -0
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.css +22 -2
- data/frameworks/sproutcore/apps/tests/english.lproj/main_page.js +168 -22
- data/frameworks/sproutcore/apps/tests/english.lproj/strings.js +14 -5
- data/frameworks/sproutcore/apps/tests/fixtures/target.js +81 -37
- data/frameworks/sproutcore/apps/tests/fixtures/test.js +38 -37
- data/frameworks/sproutcore/apps/tests/main.js +9 -20
- data/frameworks/sproutcore/apps/tests/models/target.js +74 -31
- data/frameworks/sproutcore/apps/tests/models/test.js +30 -2
- data/frameworks/sproutcore/{frameworks/desktop/mixins/collection_item.js → apps/tests/states/no_targets.js} +16 -12
- 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/{test.js → detail.js} +3 -3
- 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 +3 -3
- 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/design/CollectionView State Charts.graffle +4848 -0
- data/frameworks/sproutcore/design/Design Charts.graffle +8788 -6375
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Preview.pdf +0 -0
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/data.plist +1452 -0
- data/frameworks/sproutcore/design/SproutCore Design Template.graffle/image8.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Preview.pdf +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/QuickLook/Thumbnail.tiff +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/data.plist +24187 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image10.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image11.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image13.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image15.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image16.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image17.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image18.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image19.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image22.tiff +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image23.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image24.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image25.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image30.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image31.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image8.png +0 -0
- data/frameworks/sproutcore/design/TestRunner Design.graffle/image9.png +0 -0
- data/frameworks/sproutcore/frameworks/datastore/data_sources/cascade.js +2 -2
- data/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +66 -49
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures.js +146 -31
- data/frameworks/sproutcore/frameworks/datastore/data_sources/fixtures_with_queries.js +238 -0
- data/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +27 -11
- data/frameworks/sproutcore/frameworks/datastore/models/record.js +163 -32
- data/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +67 -5
- data/frameworks/sproutcore/frameworks/datastore/system/many_array.js +157 -0
- data/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +202 -19
- data/frameworks/sproutcore/frameworks/datastore/system/query.js +929 -78
- data/frameworks/sproutcore/frameworks/datastore/system/record_array.js +143 -5
- data/frameworks/sproutcore/frameworks/datastore/system/store.js +443 -125
- data/frameworks/sproutcore/frameworks/datastore/tests/data_sources/fixtures.js +38 -3
- 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/normalize.js +238 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +105 -16
- 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 +1 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +9 -8
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +6 -6
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/dataHashDidChange.js +6 -6
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +3 -3
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +7 -7
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readEditableDataHash.js +4 -4
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/removeDataHash.js +7 -7
- data/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/writeDataHash.js +7 -7
- 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 +2 -13
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +3 -4
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/core_methods.js +73 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +15 -0
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/dataSourceCallbacks.js +4 -2
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +1 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +2 -2
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +1 -1
- data/frameworks/sproutcore/frameworks/datastore/tests/system/store/retrieveRecord.js +2 -2
- data/frameworks/sproutcore/frameworks/debug/core.js +60 -0
- data/frameworks/sproutcore/frameworks/deprecated/core.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/server/server.js +0 -1
- data/frameworks/sproutcore/frameworks/deprecated/system/browser.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/classic_responder.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/event.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/misc.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/object.js +0 -2
- data/frameworks/sproutcore/frameworks/deprecated/system/path_module.js +0 -1
- data/frameworks/sproutcore/frameworks/deprecated/system/string.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/coders/design.js +1 -2
- data/frameworks/sproutcore/frameworks/designer/coders/localization.js +1 -2
- data/frameworks/sproutcore/frameworks/designer/coders/object.js +1 -1
- data/frameworks/sproutcore/frameworks/designer/controllers/page_design.js +1 -1
- data/frameworks/sproutcore/frameworks/designer/ext/page.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/views/controls/button.js +2 -3
- data/frameworks/sproutcore/frameworks/designer/views/designer.js +24 -8
- data/frameworks/sproutcore/frameworks/designer/views/label.js +1 -2
- data/frameworks/sproutcore/frameworks/designer/views/mixins/button.js +0 -2
- data/frameworks/sproutcore/frameworks/designer/views/tab.js +1 -2
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/alert.css +2 -2
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/drag.css +6 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/list_item.css +63 -10
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu_item_view.css +5 -4
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/modal.css +5 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/panel.css +1 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +5 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/split_divider.css +1 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/tab.css +1 -1
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +61 -0
- data/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +136 -79
- data/frameworks/sproutcore/frameworks/desktop/panes/alert.js +55 -24
- data/frameworks/sproutcore/frameworks/desktop/panes/menu.js +295 -147
- data/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/panes/panel.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/panes/picker.js +18 -20
- data/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +2 -2
- data/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +4 -4
- data/frameworks/sproutcore/frameworks/desktop/system/drag.js +337 -231
- data/frameworks/sproutcore/frameworks/desktop/system/root_responder.js +3 -3
- data/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +2 -2
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +46 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +4 -2
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/palette/ui.js +5 -6
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +11 -11
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +11 -7
- data/frameworks/sproutcore/frameworks/desktop/tests/panes/sheet/ui.js +9 -9
- data/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +19 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +0 -1
- 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 -39
- 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/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 +30 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/menu_item/ui.js +8 -8
- data/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +9 -9
- data/frameworks/sproutcore/frameworks/desktop/tests/views/scroller/methods.js +45 -6
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +2 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +17 -1
- data/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +44 -29
- data/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +231 -0
- data/frameworks/sproutcore/frameworks/desktop/tests/views/web/ui.js +1 -1
- data/frameworks/sproutcore/frameworks/desktop/views/button.js +15 -4
- data/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +8 -1
- data/frameworks/sproutcore/frameworks/desktop/views/collection.js +1739 -1123
- data/frameworks/sproutcore/frameworks/desktop/views/form.js +0 -1
- data/frameworks/sproutcore/frameworks/desktop/views/grid.js +13 -11
- data/frameworks/sproutcore/frameworks/desktop/views/list.js +405 -571
- data/frameworks/sproutcore/frameworks/desktop/views/list_item.js +211 -74
- data/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +319 -169
- data/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +57 -51
- data/frameworks/sproutcore/frameworks/desktop/views/progress.js +2 -2
- data/frameworks/sproutcore/frameworks/desktop/views/scene.js +150 -2
- data/frameworks/sproutcore/frameworks/desktop/views/scroll.js +92 -50
- data/frameworks/sproutcore/frameworks/desktop/views/scroller.js +86 -63
- data/frameworks/sproutcore/frameworks/desktop/views/segmented.js +38 -22
- data/frameworks/sproutcore/frameworks/desktop/views/select_field.js +51 -12
- data/frameworks/sproutcore/frameworks/desktop/views/slider.js +2 -0
- data/frameworks/sproutcore/frameworks/desktop/views/source_list.js +17 -1087
- data/frameworks/sproutcore/frameworks/desktop/views/source_list_group.js +3 -3
- data/frameworks/sproutcore/frameworks/desktop/views/split.js +35 -9
- data/frameworks/sproutcore/frameworks/desktop/views/stacked.js +101 -0
- data/frameworks/sproutcore/frameworks/desktop/views/tab.js +23 -22
- data/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/controllers/array.js +382 -363
- data/frameworks/sproutcore/frameworks/foundation/controllers/controller.js +7 -279
- data/frameworks/sproutcore/frameworks/foundation/controllers/object.js +212 -310
- data/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +109 -0
- data/frameworks/sproutcore/frameworks/foundation/core.js +25 -0
- data/frameworks/sproutcore/frameworks/foundation/debug/control_test_pane.js +30 -8
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +19 -4
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/core.css +219 -3
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/debug/control-test-pane.css +1 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/label.css +30 -0
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/strings.js +15 -0
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/english.lproj/text_field.css +19 -3
- data/frameworks/sproutcore/frameworks/foundation/english.lproj/view.css +6 -1
- data/frameworks/sproutcore/frameworks/foundation/license.js +19 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/button.js +15 -7
- data/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +171 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/control.js +5 -5
- data/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +462 -0
- data/frameworks/sproutcore/frameworks/foundation/mixins/selection_support.js +162 -84
- data/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +33 -2
- data/frameworks/sproutcore/frameworks/foundation/mixins/string.js +17 -3
- data/frameworks/sproutcore/frameworks/foundation/mixins/tree_item_content.js +159 -0
- data/frameworks/sproutcore/frameworks/foundation/panes/pane.js +49 -20
- data/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +887 -0
- data/frameworks/sproutcore/frameworks/foundation/system/application.js +36 -0
- data/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +310 -62
- data/frameworks/sproutcore/frameworks/foundation/system/datetime.js +729 -0
- data/frameworks/sproutcore/frameworks/foundation/system/event.js +57 -21
- data/frameworks/sproutcore/frameworks/foundation/system/ready.js +11 -5
- data/frameworks/sproutcore/frameworks/foundation/system/render_context.js +55 -16
- data/frameworks/sproutcore/frameworks/foundation/system/request.js +152 -27
- 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 +29 -6
- data/frameworks/sproutcore/frameworks/foundation/system/routes.js +143 -102
- data/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +9 -2
- data/frameworks/sproutcore/frameworks/foundation/system/utils.js +104 -9
- 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/mixins/button/keyEquivalents.js +35 -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/core_query/jquery_core.js +28 -28
- data/frameworks/sproutcore/frameworks/foundation/tests/system/core_query/jquery_selector.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/datetime.js +151 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/get.js +2 -2
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_attr.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_basic.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_className.js +12 -12
- data/frameworks/sproutcore/frameworks/foundation/tests/system/render_context/helpers_style.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/system/request.js +52 -14
- data/frameworks/sproutcore/frameworks/foundation/tests/system/root_responder/root_responder.js +27 -23
- data/frameworks/sproutcore/frameworks/foundation/tests/system/timer/schedule.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/validators/date.js +12 -10
- data/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +148 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/pane/append_remove.js +1 -1
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/methods.js +0 -0
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/tests/views/text_field/ui.js +53 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/clippingFrame.js +1 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/convertFrames.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/createChildViews.js +35 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/findLayerInParentLayer.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisible.js +51 -0
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/isVisibleInWindow.js +12 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/layoutStyle.js +83 -3
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/prepareContext.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/tests/views/view/updateLayer.js +4 -0
- data/frameworks/sproutcore/frameworks/foundation/views/container.js +1 -1
- data/frameworks/sproutcore/frameworks/foundation/views/field.js +27 -16
- data/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -1
- data/frameworks/sproutcore/frameworks/foundation/views/label.js +16 -6
- data/frameworks/sproutcore/frameworks/{desktop → foundation}/views/text_field.js +39 -15
- data/frameworks/sproutcore/frameworks/foundation/views/view.js +328 -83
- data/frameworks/sproutcore/frameworks/runtime/README +1 -0
- data/frameworks/sproutcore/frameworks/runtime/core.js +110 -31
- 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/mixins/array.js +320 -110
- data/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +64 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/delegate_support.js +44 -6
- data/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +142 -77
- data/frameworks/sproutcore/frameworks/runtime/mixins/freezable.js +104 -0
- data/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +298 -142
- data/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +17 -11
- data/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +55 -15
- data/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +29 -5
- data/frameworks/sproutcore/frameworks/runtime/protocols/observable_protocol.js +40 -0
- data/frameworks/sproutcore/frameworks/runtime/system/binding.js +39 -15
- data/frameworks/sproutcore/frameworks/runtime/system/index_set.js +1166 -0
- data/frameworks/sproutcore/frameworks/runtime/system/object.js +33 -15
- data/frameworks/sproutcore/frameworks/runtime/system/range_observer.js +201 -35
- data/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +42 -15
- data/frameworks/sproutcore/frameworks/runtime/system/selection_set.js +649 -0
- data/frameworks/sproutcore/frameworks/runtime/system/set.js +183 -54
- data/frameworks/sproutcore/frameworks/runtime/system/sparse_array.js +20 -11
- data/frameworks/sproutcore/frameworks/runtime/tests/core/clone.js +2 -2
- 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/keys.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/core/makeArray.js +1 -1
- data/frameworks/sproutcore/frameworks/runtime/tests/core/objectForPropertyPath.js +5 -5
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +57 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable.js +21 -2
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +249 -129
- data/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/propertyChanges.js +11 -2
- data/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue/isObservingSuspended.js +55 -0
- data/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +81 -6
- 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 +1 -1
- 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 +3 -3
- 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 +4 -25
- data/frameworks/sproutcore/frameworks/runtime/tests/system/sparse_array.js +39 -1
- data/frameworks/sproutcore/frameworks/testing/core.js +183 -0
- data/frameworks/sproutcore/frameworks/testing/english.lproj/runner.css +126 -0
- data/frameworks/sproutcore/frameworks/testing/extras.js +0 -26
- data/frameworks/sproutcore/frameworks/testing/qunit.js +33 -25
- 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 +8 -1
- data/frameworks/sproutcore/lib/index.rhtml +4 -1
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/100.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/102.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/110.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/120.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/127.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/24.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/26.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/27.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/28.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/29.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/30.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/31.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/33.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/37.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/41.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/16/99.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/100.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/102.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/110.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/120.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/127.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/24.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/26.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/27.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/28.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/29.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/30.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/31.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/33.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/37.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/41.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/24/99.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/100.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/102.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/110.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/120.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/127.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/24.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/26.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/27.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/28.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/29.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/30.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/31.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/33.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/37.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/41.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/32/99.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/10.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/18.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/19.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/icons/48/2.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x-2.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-repeat-x.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-sprite.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sc-theme-ysprite.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/shared-icons.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sproutcore-logo.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/Source/sticky-note.psd +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/button.css +191 -193
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/checkbox.css +11 -10
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/collection.css +85 -4
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/core.css +15 -2
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/images/sc-theme-repeat-x.png +0 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/label.css +0 -26
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/list_item.css +30 -0
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/progress.css +9 -6
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/radio.css +20 -11
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/segmented.css +192 -54
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/slider.css +56 -24
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/tab.css +13 -7
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/text_field.css +1 -4
- data/frameworks/sproutcore/themes/standard_theme/english.lproj/toolbar.css +4 -1
- data/lib/sproutcore/builders/minify.rb +2 -2
- data/lib/sproutcore/builders/test.rb +1 -1
- data/lib/sproutcore/buildfile.rb +1 -0
- data/lib/sproutcore/rack/dev.rb +1 -1
- data/lib/sproutcore/rack/filesystem.rb +265 -0
- data/lib/sproutcore/rack/proxy.rb +11 -3
- data/lib/sproutcore/rack/service.rb +11 -1
- data/lib/sproutcore/tools.rb +11 -1
- data/lib/sproutcore/tools/server.rb +6 -4
- data/vendor/jsdoc/README.txt +151 -0
- data/vendor/jsdoc/changes.txt +47 -0
- metadata +263 -308
- data/frameworks/sproutcore/apps/sc_jsdoc/controllers/docs.js +0 -149
- data/frameworks/sproutcore/apps/sc_jsdoc/core.js +0 -16
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.css +0 -17
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/body.js +0 -99
- data/frameworks/sproutcore/apps/sc_jsdoc/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_jsdoc/main.js +0 -27
- data/frameworks/sproutcore/apps/sc_jsdoc/models/doc.js +0 -21
- data/frameworks/sproutcore/apps/sc_qunit/controllers/runner.js +0 -209
- data/frameworks/sproutcore/apps/sc_qunit/core.js +0 -16
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.css +0 -17
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/body.js +0 -107
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/images/sproutcore-logo.png +0 -0
- data/frameworks/sproutcore/apps/sc_qunit/english.lproj/strings.js +0 -15
- data/frameworks/sproutcore/apps/sc_qunit/main.js +0 -18
- data/frameworks/sproutcore/apps/sc_qunit/models/test.js +0 -24
- data/frameworks/sproutcore/apps/sc_qunit/views/test_iframe.js +0 -52
- data/frameworks/sproutcore/apps/tests/controllers/test.js +0 -20
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/images/blank.gif +0 -0
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/menu.css +0 -83
- data/frameworks/sproutcore/frameworks/desktop/english.lproj/palette.css +0 -3
- data/frameworks/sproutcore/frameworks/desktop/tests/views/collection/methods.js +0 -10
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/methods.js +0 -10
- data/frameworks/sproutcore/frameworks/desktop/tests/views/list/ui.js +0 -110
- data/frameworks/sproutcore/frameworks/foundation/mixins/responder.js +0 -156
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/array.js +0 -118
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/controller.js +0 -268
- data/frameworks/sproutcore/frameworks/foundation/tests/controllers/object.js +0 -433
- data/frameworks/sproutcore/frameworks/runtime/tests/system/array.js +0 -263
- data/frameworks/sproutcore/frameworks/testing/tests/debug/qunit.js +0 -25
- 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/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/real_world/generators/sample_custom/templates/{filename}.js +0 -1
- 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/vendor/github_gem_lint.rb +0 -22
- data/vendor/yui-compressor/yuicompressor-2.4.2.jar +0 -0
@@ -0,0 +1,120 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
/** @class
|
9
|
+
|
10
|
+
Provides common methods for sending events down a responder chain.
|
11
|
+
Responder chains are used most often to deliver events to user interface
|
12
|
+
elements in your application, but you can also use them to deliver generic
|
13
|
+
events to any part of your application, including controllers.
|
14
|
+
|
15
|
+
@extends SC.Object
|
16
|
+
@since SproutCore 1.0
|
17
|
+
*/
|
18
|
+
SC.Responder = SC.Object.extend( /** SC.Responder.prototype */ {
|
19
|
+
|
20
|
+
isResponder: YES,
|
21
|
+
|
22
|
+
/** @property
|
23
|
+
The pane this responder belongs to. This is used to determine where you
|
24
|
+
belong to in the responder chain. Normally you should leave this property
|
25
|
+
set to null.
|
26
|
+
*/
|
27
|
+
pane: null,
|
28
|
+
|
29
|
+
/** @property
|
30
|
+
The app this responder belongs to. For non-user-interface responder
|
31
|
+
chains, this is used to determine the context. Usually this
|
32
|
+
is the property you will want to work with.
|
33
|
+
*/
|
34
|
+
responderContext: null,
|
35
|
+
|
36
|
+
/** @property
|
37
|
+
This is the nextResponder in the responder chain. If the receiver does
|
38
|
+
not implement a particular event handler, it will bubble to the next
|
39
|
+
responder.
|
40
|
+
|
41
|
+
This can point to an object directly or it can be a string, in which case
|
42
|
+
the path will be resolved from the responderContext root.
|
43
|
+
*/
|
44
|
+
nextResponder: null,
|
45
|
+
|
46
|
+
/** @property
|
47
|
+
YES if the view is currently first responder. This property is always
|
48
|
+
edited by the pane during its makeFirstResponder() method.
|
49
|
+
*/
|
50
|
+
isFirstResponder: NO,
|
51
|
+
|
52
|
+
/** @property
|
53
|
+
|
54
|
+
YES the responder is somewhere in the responder chain. This currently
|
55
|
+
only works when used with a ResponderContext.
|
56
|
+
|
57
|
+
@type {Boolean}
|
58
|
+
*/
|
59
|
+
hasFirstResponder: NO,
|
60
|
+
|
61
|
+
/** @property
|
62
|
+
Set to YES if your view is willing to accept first responder status. This is used when calculcating key responder loop.
|
63
|
+
*/
|
64
|
+
acceptsFirstResponder: YES,
|
65
|
+
|
66
|
+
/**
|
67
|
+
Call this method on your view or responder to make it become first
|
68
|
+
responder.
|
69
|
+
|
70
|
+
@returns {SC.Responder} receiver
|
71
|
+
*/
|
72
|
+
becomeFirstResponder: function() {
|
73
|
+
var pane = this.get('pane') || this.get('responderContext');
|
74
|
+
if (pane && this.get('acceptsFirstResponder')) {
|
75
|
+
if (pane.get('firstResponder') !== this) pane.makeFirstResponder(this);
|
76
|
+
}
|
77
|
+
return this ;
|
78
|
+
},
|
79
|
+
|
80
|
+
/**
|
81
|
+
Call this method on your view or responder to resign your first responder
|
82
|
+
status. Normally this is not necessary since you will lose first responder
|
83
|
+
status automatically when another view becomes first responder.
|
84
|
+
|
85
|
+
@returns {SC.Responder} receiver
|
86
|
+
*/
|
87
|
+
resignFirstResponder: function() {
|
88
|
+
var pane = this.get('pane') || this.get('responderContext');
|
89
|
+
if (pane && (pane.get('firstResponder') === this)) {
|
90
|
+
pane.makeFirstResponder(null);
|
91
|
+
}
|
92
|
+
return YES;
|
93
|
+
},
|
94
|
+
|
95
|
+
/**
|
96
|
+
Called just before the responder or any of its subresponder's are about to
|
97
|
+
lose their first responder status. The passed responder is the responder
|
98
|
+
that is about to lose its status.
|
99
|
+
|
100
|
+
Override this method to provide any standard teardown when the first
|
101
|
+
responder changes.
|
102
|
+
|
103
|
+
@param {SC.Responder} responder the responder that is about to change
|
104
|
+
@returns {void}
|
105
|
+
*/
|
106
|
+
willLoseFirstResponder: function(responder) {},
|
107
|
+
|
108
|
+
/**
|
109
|
+
Called just after the responder or any of its subresponder's becomes a
|
110
|
+
first responder.
|
111
|
+
|
112
|
+
Override this method to provide any standard setup when the first
|
113
|
+
responder changes.
|
114
|
+
|
115
|
+
@param {SC.Responder} responder the responder that changed
|
116
|
+
@returns {void}
|
117
|
+
*/
|
118
|
+
didBecomeFirstResponder: function(responder) {}
|
119
|
+
|
120
|
+
});
|
@@ -0,0 +1,243 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
sc_require('system/responder');
|
9
|
+
|
10
|
+
/** @class
|
11
|
+
|
12
|
+
The root object for a responder chain. A responder context can dispatch
|
13
|
+
actions directly to a first responder; walking up the responder chain until
|
14
|
+
it finds a responder that can handle the action.
|
15
|
+
|
16
|
+
If no responder can be found to handle the action, it will attempt to send
|
17
|
+
the action to the defaultResponder.
|
18
|
+
|
19
|
+
You can have as many ResponderContext's as you want within your application.
|
20
|
+
Every SC.Pane and SC.Application automatically implements this mixin.
|
21
|
+
|
22
|
+
Note that to implement this you must be a responder yourself.
|
23
|
+
|
24
|
+
@extends SC.Responder
|
25
|
+
@since SproutCore 1.0
|
26
|
+
*/
|
27
|
+
SC.ResponderContext = SC.Responder.extend({
|
28
|
+
|
29
|
+
// ..........................................................
|
30
|
+
// PROPERTIES
|
31
|
+
//
|
32
|
+
|
33
|
+
isResponderContext: YES,
|
34
|
+
|
35
|
+
/** @property
|
36
|
+
|
37
|
+
When set to YES, logs tracing information about all actions sent and
|
38
|
+
responder changes.
|
39
|
+
*/
|
40
|
+
trace: NO,
|
41
|
+
|
42
|
+
/** @property
|
43
|
+
The default responder. Set this to point to a responder object that can
|
44
|
+
respond to events when no other view in the hierarchy handles them.
|
45
|
+
|
46
|
+
You can also implement actions directly on the application object if you
|
47
|
+
prefer.
|
48
|
+
*/
|
49
|
+
defaultResponder: null,
|
50
|
+
|
51
|
+
/** @property
|
52
|
+
The next responder for an app is always its defaultResponder.
|
53
|
+
*/
|
54
|
+
nextResponder: function() {
|
55
|
+
return this.get('defaultResponder');
|
56
|
+
}.property('defaultResponder').cacheable(),
|
57
|
+
|
58
|
+
/** @property
|
59
|
+
The first responder. This is the first responder that should receive
|
60
|
+
actions.
|
61
|
+
*/
|
62
|
+
firstResponder: null,
|
63
|
+
|
64
|
+
// ..........................................................
|
65
|
+
// METHODS
|
66
|
+
//
|
67
|
+
|
68
|
+
/**
|
69
|
+
Finds the next responder for the passed responder based on the responder's
|
70
|
+
nextResponder property. If the property is a string, then lookup the path
|
71
|
+
in the receiver.
|
72
|
+
*/
|
73
|
+
nextResponderFor: function(responder) {
|
74
|
+
var next = responder.get('nextResponder');
|
75
|
+
if (typeof next === SC.T_STRING) {
|
76
|
+
next = SC.objectForPropertyPath(next, this);
|
77
|
+
} else if (!next && (responder !== this)) next = this ;
|
78
|
+
return next ;
|
79
|
+
},
|
80
|
+
|
81
|
+
/**
|
82
|
+
Finds the responder name by searching the responders one time.
|
83
|
+
*/
|
84
|
+
responderNameFor: function(responder) {
|
85
|
+
if (!responder) return "(No Responder)";
|
86
|
+
else if (responder._scrc_name) return responder._scrc_name;
|
87
|
+
|
88
|
+
// none found, let's go hunting...look three levels deep
|
89
|
+
var n = this.NAMESPACE;
|
90
|
+
this._findResponderNamesFor(this, 3, n ? [this.NAMESPACE] : []);
|
91
|
+
|
92
|
+
return responder._scrc_name || responder.toString(); // try again
|
93
|
+
},
|
94
|
+
|
95
|
+
_findResponderNamesFor: function(responder, level, path) {
|
96
|
+
var key, value;
|
97
|
+
|
98
|
+
for(key in responder) {
|
99
|
+
if (key === 'nextResponder') continue ;
|
100
|
+
value = responder[key];
|
101
|
+
if (value && value.isResponder) {
|
102
|
+
if (value._scrc_name) continue ;
|
103
|
+
path.push(key);
|
104
|
+
value._scrc_name = path.join('.');
|
105
|
+
if (level>0) this._findResponderNamesFor(value, level-1, path);
|
106
|
+
path.pop();
|
107
|
+
}
|
108
|
+
}
|
109
|
+
},
|
110
|
+
|
111
|
+
/**
|
112
|
+
Makes the passed responder into the new firstResponder for this
|
113
|
+
responder context. This will cause the current first responder to lose
|
114
|
+
its responder status and possibly keyResponder status as well.
|
115
|
+
|
116
|
+
When you change the first responder, this will send callbacks to
|
117
|
+
responders up the chain until you reach a shared responder, at which point
|
118
|
+
it will stop notifying.
|
119
|
+
|
120
|
+
@param {SC.Responder} responder
|
121
|
+
@returns {SC.ResponderContext} receiver
|
122
|
+
*/
|
123
|
+
makeFirstResponder: function(responder) {
|
124
|
+
var current = this.get('firstResponder'),
|
125
|
+
last = this.get('nextResponder'),
|
126
|
+
trace = this.get('trace'),
|
127
|
+
common ;
|
128
|
+
|
129
|
+
if (this._locked) {
|
130
|
+
if (trace) {
|
131
|
+
console.log('%@: AFTER ACTION: makeFirstResponder => %@'.fmt(this, this.responderNameFor(responder)));
|
132
|
+
}
|
133
|
+
|
134
|
+
this._pendingResponder = responder;
|
135
|
+
return ;
|
136
|
+
}
|
137
|
+
|
138
|
+
if (trace) {
|
139
|
+
console.log('%@: makeFirstResponder => %@'.fmt(this, this.responderNameFor(responder)));
|
140
|
+
}
|
141
|
+
|
142
|
+
this._locked = YES;
|
143
|
+
this._pendingResponder = null;
|
144
|
+
|
145
|
+
// Find the nearest common responder in the responder chain for the new
|
146
|
+
// responder. If there are no common responders, use last responder.
|
147
|
+
common = responder ? this.nextResponderFor(responder) : null;
|
148
|
+
while (common) {
|
149
|
+
if (common.get('hasFirstResponder')) break;
|
150
|
+
common = (common===last) ? null : this.nextResponderFor(common);
|
151
|
+
}
|
152
|
+
if (!common) common = last;
|
153
|
+
|
154
|
+
// Cleanup old first responder
|
155
|
+
this._notifyWillLoseFirstResponder(current, current, common);
|
156
|
+
if (current) current.set('isFirstResponder', NO);
|
157
|
+
|
158
|
+
// Set new first responder. If new firstResponder does not have its
|
159
|
+
// responderContext property set, then set it.
|
160
|
+
this.set('firstResponder', responder) ;
|
161
|
+
if (responder) responder.set('isFirstResponder', YES);
|
162
|
+
|
163
|
+
this._notifyDidBecomeFirstResponder(responder, responder, common);
|
164
|
+
|
165
|
+
this._locked = NO ;
|
166
|
+
if (responder = this._pendingResponder) {
|
167
|
+
this._pendingResponder= null ;
|
168
|
+
this.makeFirstResponder(this._pendingResponder);
|
169
|
+
}
|
170
|
+
|
171
|
+
return this ;
|
172
|
+
},
|
173
|
+
|
174
|
+
_notifyWillLoseFirstResponder: function(responder, cur, root) {
|
175
|
+
if (cur === root) return ; // nothing to do
|
176
|
+
|
177
|
+
cur.willLoseFirstResponder(responder);
|
178
|
+
cur.set('hasFirstResponder', NO);
|
179
|
+
|
180
|
+
var next = this.nextResponderFor(cur);
|
181
|
+
if (next) this._notifyWillLoseFirstResponder(responder, next, root);
|
182
|
+
},
|
183
|
+
|
184
|
+
_notifyDidBecomeFirstResponder: function(responder, cur, root) {
|
185
|
+
if (cur === root) return ; // nothing to do
|
186
|
+
|
187
|
+
var next = this.nextResponderFor(cur);
|
188
|
+
if (next) this._notifyDidBecomeFirstResponder(responder, next, root);
|
189
|
+
|
190
|
+
cur.set('hasFirstResponder', YES);
|
191
|
+
cur.didBecomeFirstResponder(responder);
|
192
|
+
},
|
193
|
+
|
194
|
+
/**
|
195
|
+
Send the passed action down the responder chain, starting with the
|
196
|
+
current first responder. This will look for the first responder that
|
197
|
+
actually implements the action method and returns YES or no value when
|
198
|
+
called.
|
199
|
+
|
200
|
+
@param {String} action name of action
|
201
|
+
@param {Object} sender object sending the action
|
202
|
+
@param {Object} context optional additonal context info
|
203
|
+
@returns {SC.Responder} the responder that handled it or null
|
204
|
+
*/
|
205
|
+
sendAction: function(action, sender, context) {
|
206
|
+
var working = this.get('firstResponder'),
|
207
|
+
last = this.get('nextResponder'),
|
208
|
+
trace = this.get('trace'),
|
209
|
+
handled = NO,
|
210
|
+
responder;
|
211
|
+
|
212
|
+
this._locked = YES;
|
213
|
+
if (trace) {
|
214
|
+
console.log("%@: begin action '%@' (%@, %@)".fmt(this, action, sender, context));
|
215
|
+
}
|
216
|
+
|
217
|
+
while (!handled && working) {
|
218
|
+
if (working.tryToPerform) {
|
219
|
+
handled = working.tryToPerform(action, sender, context);
|
220
|
+
}
|
221
|
+
|
222
|
+
if (!handled) {
|
223
|
+
working = (working===last) ? null : this.nextResponderFor(working);
|
224
|
+
}
|
225
|
+
}
|
226
|
+
|
227
|
+
if (trace) {
|
228
|
+
if (!handled) console.log("%@: action '%@' NOT HANDLED".fmt(this,action));
|
229
|
+
else console.log("%@: action '%@' handled by %@".fmt(this, action, this.responderNameFor(working)));
|
230
|
+
}
|
231
|
+
|
232
|
+
this._locked = NO ;
|
233
|
+
|
234
|
+
if (responder = this._pendingResponder) {
|
235
|
+
this._pendingResponder= null ;
|
236
|
+
this.makeFirstResponder(responder);
|
237
|
+
}
|
238
|
+
|
239
|
+
|
240
|
+
return working ;
|
241
|
+
}
|
242
|
+
|
243
|
+
});
|
@@ -177,28 +177,51 @@ SC.RootResponder = SC.Object.extend({
|
|
177
177
|
the action name you pass to this method. Set 'tagret' to null to search
|
178
178
|
the responder chain.
|
179
179
|
|
180
|
+
IMPORTANT: This method's API and implementation will likely change
|
181
|
+
significantly after SproutCore 1.0 to match the version found in
|
182
|
+
SC.ResponderContext.
|
183
|
+
|
184
|
+
You generally should not call or override this method in your own
|
185
|
+
applications.
|
186
|
+
|
180
187
|
@param {String} action The action to perform - this is a method name.
|
181
188
|
@param {SC.Responder} target object to set method to (can be null)
|
182
189
|
@param {Object} sender The sender of the action
|
183
190
|
@param {SC.Pane} pane optional pane to start search with
|
191
|
+
@param {Object} context optional. only passed to ResponderContexts
|
184
192
|
@returns {Boolean} YES if action was performed, NO otherwise
|
185
193
|
@test in targetForAction
|
186
194
|
*/
|
187
|
-
sendAction: function( action, target, sender, pane) {
|
195
|
+
sendAction: function( action, target, sender, pane, context) {
|
188
196
|
target = this.targetForAction(action, target, sender, pane) ;
|
189
|
-
|
197
|
+
|
198
|
+
// HACK: If the target is a ResponderContext, forward the action.
|
199
|
+
if (target && target.isResponderContext) {
|
200
|
+
return !!target.sendAction(action, sender, context);
|
201
|
+
} else return target && target.tryToPerform(action, sender);
|
190
202
|
},
|
191
203
|
|
192
204
|
_responderFor: function(target, methodName) {
|
205
|
+
var defaultResponder = target ? target.get('defaultResponder') : null;
|
206
|
+
|
193
207
|
if (target) {
|
194
|
-
target = target.get('firstResponder') ||
|
195
|
-
target.get('defaultResponder') ||
|
196
|
-
target ;
|
208
|
+
target = target.get('firstResponder') || target;
|
197
209
|
do {
|
198
210
|
if (target.respondsTo(methodName)) return target ;
|
199
211
|
} while (target = target.get('nextResponder')) ;
|
200
212
|
}
|
201
|
-
|
213
|
+
|
214
|
+
// HACK: Eventually we need to normalize the sendAction() method between
|
215
|
+
// this and the ResponderContext, but for the moment just look for a
|
216
|
+
// ResponderContext as the defaultResponder and return it if present.
|
217
|
+
if (typeof defaultResponder === SC.T_STRING) {
|
218
|
+
defaultResponder = SC.objectForPropertyPath(defaultResponder);
|
219
|
+
}
|
220
|
+
|
221
|
+
if (!defaultResponder) return null;
|
222
|
+
else if (defaultResponder.isResponderContext) return defaultResponder;
|
223
|
+
else if (defaultResponder.respondsTo(methodName)) return defaultResponder;
|
224
|
+
else return null;
|
202
225
|
},
|
203
226
|
|
204
227
|
/**
|
@@ -9,7 +9,7 @@
|
|
9
9
|
@class
|
10
10
|
|
11
11
|
Routes makes it possible to load a location in the browser.
|
12
|
-
|
12
|
+
|
13
13
|
This is useful when application need to change state depending upon the URL
|
14
14
|
change. Applications can support deep-linking using routes, which means user
|
15
15
|
can type specific URL to see certain state of the app e.g.
|
@@ -36,11 +36,11 @@
|
|
36
36
|
the location.
|
37
37
|
|
38
38
|
h2. Example
|
39
|
-
|
39
|
+
|
40
40
|
{{{
|
41
41
|
SC.routes.add(':', RoutesDemo, 'routeHandler');
|
42
42
|
}}}
|
43
|
-
|
43
|
+
|
44
44
|
This route would match any URL change. Whatever comes after # would get
|
45
45
|
passed as parameter. RouteDemo is the object that contains method
|
46
46
|
'routeHandler'.
|
@@ -56,8 +56,9 @@
|
|
56
56
|
@extends SC.Object
|
57
57
|
@since SproutCore 1.0
|
58
58
|
*/
|
59
|
-
SC.routes = SC.Object.create(
|
60
|
-
|
59
|
+
SC.routes = SC.Object.create(
|
60
|
+
/** @scope SC.routes.prototype */ {
|
61
|
+
|
61
62
|
// set this property to your current app lication
|
62
63
|
location: function(key,value) {
|
63
64
|
if (value !== undefined) {
|
@@ -65,18 +66,18 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
65
66
|
|
66
67
|
// convert an object hash to a string, if it was passed.
|
67
68
|
if (typeof(value) == "object") {
|
68
|
-
|
69
|
+
|
69
70
|
// get the original route and any params
|
70
|
-
var parts =
|
71
|
+
var parts = value.route ? value.route.split('&') : [''] ;
|
71
72
|
var route = parts.shift() ;
|
72
73
|
var params = {} ;
|
73
74
|
parts.forEach(function(p) {
|
74
75
|
var bits = p.split('=') ;
|
75
76
|
params[bits[0]] = bits[1] ;
|
76
77
|
}) ;
|
77
|
-
|
78
|
+
|
78
79
|
// overlay any params passed in the object.
|
79
|
-
for(
|
80
|
+
for(key in value) {
|
80
81
|
if (!value.hasOwnProperty(key)) continue ;
|
81
82
|
if (key != 'route') {
|
82
83
|
params[key] = encodeURIComponent(''+value[key]) ;
|
@@ -85,7 +86,7 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
85
86
|
|
86
87
|
// now build params.
|
87
88
|
parts = [route] ;
|
88
|
-
for(
|
89
|
+
for(key in params) {
|
89
90
|
if (!params.hasOwnProperty(key)) continue ;
|
90
91
|
parts.push([key,params[key]].join('=')) ;
|
91
92
|
}
|
@@ -103,7 +104,9 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
103
104
|
return this._location ;
|
104
105
|
}.property(),
|
105
106
|
|
106
|
-
|
107
|
+
/**
|
108
|
+
Ensures we are at the current route location.
|
109
|
+
*/
|
107
110
|
ping: function() {
|
108
111
|
if (!this._didSetupHistory) {
|
109
112
|
this._didSetupHistory = true ;
|
@@ -112,38 +115,49 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
112
115
|
this._checkWindowLocation();
|
113
116
|
},
|
114
117
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
118
|
+
/**
|
119
|
+
Register a route here. Routes have the following format:
|
120
|
+
|
121
|
+
static/route/path -- matches this path only.
|
122
|
+
static/route/:path -- matches any static/route, :path passed as param.
|
123
|
+
static/ *route -- matches any static, route gets rest of URL.
|
124
|
+
|
125
|
+
parameters can also be passed using &.
|
126
|
+
static/route¶m1=value¶m2=value2
|
127
|
+
|
128
|
+
@param {string} route
|
129
|
+
@param {Object} target
|
130
|
+
@param {Function or String} method or method name on target
|
131
|
+
@returns {SC.routes} receiver
|
132
|
+
*/
|
123
133
|
add: function(route, target, method) {
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
134
|
+
// normalize the target/method
|
135
|
+
if (method===undefined && SC.typeOf(target) === SC.T_FUNCTION) {
|
136
|
+
method = target; target = null ;
|
137
|
+
} else if (SC.typeOf(method) === SC.T_STRING) {
|
138
|
+
method = target[method] ;
|
139
|
+
}
|
140
|
+
|
131
141
|
var parts = route.split('/') ;
|
132
|
-
if (!this._routes) this._routes = SC.
|
142
|
+
if (!this._routes) this._routes = SC.routes._Route.create() ;
|
133
143
|
this._routes.addRoute(parts, target, method) ;
|
134
|
-
|
144
|
+
return this;
|
135
145
|
},
|
136
|
-
|
137
146
|
|
138
|
-
|
147
|
+
/**
|
148
|
+
Eval routes.
|
149
|
+
|
150
|
+
@param {String} route
|
151
|
+
*/
|
139
152
|
gotoRoute: function(route) {
|
140
|
-
var params = {}
|
141
|
-
|
153
|
+
var params = {},
|
154
|
+
parts, routeHandler, target, method ;
|
155
|
+
|
142
156
|
// save this route for window location sensing
|
143
157
|
this._lastRoute = route ;
|
144
158
|
|
145
159
|
// step 1: split out parameters
|
146
|
-
|
160
|
+
parts = route.split('&') ;
|
147
161
|
if (parts && parts.length > 0) {
|
148
162
|
route = parts.shift() ;
|
149
163
|
parts.forEach(function(part) {
|
@@ -156,20 +170,19 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
156
170
|
parts = route.split('/') ;
|
157
171
|
|
158
172
|
// step 3: evaluate route.
|
159
|
-
if (!this._routes) this._routes = SC.
|
160
|
-
|
173
|
+
if (!this._routes) this._routes = SC.routes._Route.create() ;
|
174
|
+
|
161
175
|
routeHandler = this._routes.functionForRoute(parts,params) ;
|
162
176
|
|
163
177
|
if (routeHandler) {
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
//else console.log('could not find route for: "'+route+'"') ;
|
178
|
+
target = routeHandler._target;
|
179
|
+
method = routeHandler._method;
|
180
|
+
method.call(target, params);
|
181
|
+
}
|
182
|
+
//else console.log('could not find route for: "'+route+'"') ;
|
170
183
|
},
|
171
184
|
|
172
|
-
|
185
|
+
/** @private */
|
173
186
|
init: function() {
|
174
187
|
arguments.callee.base.call(this) ;
|
175
188
|
if (SC.browser.isSafari && !(SC.browser.safari >= 3)) {
|
@@ -180,28 +193,42 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
180
193
|
this._didSetupHistory = false ;
|
181
194
|
},
|
182
195
|
|
183
|
-
//
|
184
|
-
//
|
196
|
+
// use this method instead of invokeLater() to check windowLocation since
|
197
|
+
// we don't want to trigger runLoops.
|
198
|
+
invokeCheckWindowLocation: function(after) {
|
199
|
+
var f = this.__checkWindowLocation, that = this;
|
200
|
+
if (!f) {
|
201
|
+
f = this.__checkWindowLocation = function() {
|
202
|
+
that._checkWindowLocation();
|
203
|
+
};
|
204
|
+
}
|
205
|
+
setTimeout(f, after);
|
206
|
+
},
|
207
|
+
|
208
|
+
/** @private
|
209
|
+
_checkWindowLocation and _setWindowLocation are implemented separately for
|
210
|
+
each browser. Below are the implementations, which get copied during init.
|
211
|
+
*/
|
185
212
|
browserFuncs: {
|
186
213
|
|
187
214
|
// for Safari2 and earlier.
|
188
215
|
safari: {
|
189
|
-
|
216
|
+
|
190
217
|
_setupHistory: function() {
|
191
218
|
// get initial cloc.
|
192
219
|
var cloc = location.hash ;
|
193
220
|
cloc = (cloc && cloc.length > 0) ? cloc.slice(1,cloc.length) : '' ;
|
194
221
|
this._cloc = cloc ;
|
195
|
-
|
222
|
+
|
196
223
|
// create back stack.
|
197
224
|
this._backStack = [] ;
|
198
225
|
this._backStack.length = history.length ;
|
199
226
|
this._backStack.push(cloc) ;
|
200
|
-
|
227
|
+
|
201
228
|
// create forward stack.
|
202
229
|
this._forwardStack = [] ;
|
203
|
-
|
204
|
-
this.
|
230
|
+
|
231
|
+
this.invokeCheckWindowLocation(1000) ;
|
205
232
|
},
|
206
233
|
|
207
234
|
_checkWindowLocation: function() {
|
@@ -211,10 +238,10 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
211
238
|
// takes a little while for Safari to catch up. So what we do instead
|
212
239
|
// is first check to see if Safari's length has changed from its last
|
213
240
|
// known length and only then check for a delta.
|
214
|
-
var historyDidChange = (history.length - this._lastLength)
|
241
|
+
var historyDidChange = (history.length - this._lastLength) !== 0;
|
215
242
|
var delta = (historyDidChange) ? (history.length - this._backStack.length) : 0 ;
|
216
243
|
this._lastLength = history.length ;
|
217
|
-
|
244
|
+
|
218
245
|
if (historyDidChange) console.log('historyDidChange') ;
|
219
246
|
|
220
247
|
// if the history length has changed, then we need to move forward or
|
@@ -239,13 +266,13 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
239
266
|
// shift out the current loc.
|
240
267
|
this._backStack.push(this._cloc) ;
|
241
268
|
|
242
|
-
for(
|
269
|
+
for(i=0; i < (delta-1); i++) {
|
243
270
|
this._backStack.push(this._forwardStack.pop()) ;
|
244
271
|
}
|
245
272
|
|
246
273
|
this._cloc = this._forwardStack.pop() ;
|
247
274
|
}
|
248
|
-
|
275
|
+
|
249
276
|
// if the history has changed but the delta hasn't, then that means
|
250
277
|
// a new location was set via _setWindowLocation(). Normally we would
|
251
278
|
// call gotoRoute in that method, but doing so will crash Safari.
|
@@ -255,7 +282,7 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
255
282
|
this.gotoRoute(this._cloc) ;
|
256
283
|
this._locationDidChange = false ;
|
257
284
|
}
|
258
|
-
|
285
|
+
|
259
286
|
var cloc = this._cloc ;
|
260
287
|
var loc = this.get('location') ;
|
261
288
|
if (cloc != loc) {
|
@@ -263,10 +290,10 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
263
290
|
this.gotoRoute(cloc) ;
|
264
291
|
}
|
265
292
|
|
266
|
-
this.
|
293
|
+
this.invokeCheckWindowLocation(50) ;
|
267
294
|
},
|
268
|
-
|
269
|
-
_setWindowLocation: function(loc) {
|
295
|
+
|
296
|
+
_setWindowLocation: function(loc) {
|
270
297
|
var cloc = this._cloc ;
|
271
298
|
if (cloc != loc) {
|
272
299
|
this._backStack.push(this._cloc) ;
|
@@ -275,24 +302,24 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
275
302
|
location.hash = (loc && loc.length > 0) ? loc : '' ;
|
276
303
|
this._locationDidChange = true ;
|
277
304
|
}
|
278
|
-
}
|
305
|
+
}
|
279
306
|
|
280
307
|
},
|
281
308
|
|
282
309
|
// for IE.
|
283
310
|
ie: {
|
284
311
|
_setupHistory: function() {
|
285
|
-
this.
|
312
|
+
this.invokeCheckWindowLocation(1000) ;
|
286
313
|
},
|
287
|
-
|
314
|
+
|
288
315
|
_checkWindowLocation: function() {
|
289
316
|
var loc = this.get('location') ;
|
290
317
|
var cloc = location.hash ;
|
291
318
|
cloc = (cloc && cloc.length > 0) ? cloc.slice(1,cloc.length) : '' ;
|
292
319
|
if (cloc != loc) this.set('location',(cloc) ? cloc : '') ;
|
293
|
-
this.
|
320
|
+
this.invokeCheckWindowLocation(100) ;
|
294
321
|
},
|
295
|
-
|
322
|
+
|
296
323
|
_setWindowLocation: function(loc) {
|
297
324
|
//console.log('_setWindowLocation('+loc+')') ;
|
298
325
|
var cloc = location.hash ;
|
@@ -305,23 +332,27 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
305
332
|
}
|
306
333
|
},
|
307
334
|
|
335
|
+
/** @private */
|
308
336
|
_setupHistory: function() {
|
309
337
|
var that = this ;
|
310
|
-
this.
|
338
|
+
this.invokeCheckWindowLocation(1000) ;
|
311
339
|
},
|
312
340
|
|
341
|
+
/** @private */
|
313
342
|
_checkWindowLocation: function() {
|
314
343
|
var loc = this.get('location') ;
|
315
344
|
var cloc = location.hash ;
|
316
345
|
cloc = (cloc && cloc.length > 0) ? cloc.slice(1,cloc.length) : '' ;
|
317
346
|
if (cloc != loc) {
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
347
|
+
SC.RunLoop.begin();
|
348
|
+
this.set('location',(cloc) ? cloc : '') ;
|
349
|
+
SC.RunLoop.end();
|
350
|
+
}
|
351
|
+
|
352
|
+
this.invokeCheckWindowLocation(150) ;
|
323
353
|
},
|
324
354
|
|
355
|
+
/** @private */
|
325
356
|
_setWindowLocation: function(loc) {
|
326
357
|
//console.log('_setWindowLocation('+loc+')') ;
|
327
358
|
var cloc = location.hash ;
|
@@ -332,16 +363,17 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
332
363
|
this.gotoRoute(loc) ;
|
333
364
|
},
|
334
365
|
|
366
|
+
/** @private */
|
335
367
|
_routes: null,
|
336
368
|
|
337
|
-
|
369
|
+
/** @private This object handles a single route level. */
|
338
370
|
_Route: SC.Object.extend({
|
339
371
|
|
340
372
|
// route handler class.
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
373
|
+
_target: null,
|
374
|
+
|
375
|
+
// route handler
|
376
|
+
_method: null,
|
345
377
|
|
346
378
|
// staticly named routes.
|
347
379
|
_static: null,
|
@@ -353,11 +385,11 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
353
385
|
_wildcard: null,
|
354
386
|
|
355
387
|
addRoute: function(parts, target, method) {
|
356
|
-
|
357
|
-
if (!parts || parts.length
|
358
|
-
|
359
|
-
|
360
|
-
|
388
|
+
|
389
|
+
if (!parts || parts.length === 0) {
|
390
|
+
this._target = target;
|
391
|
+
this._method = method;
|
392
|
+
|
361
393
|
// add to route table.
|
362
394
|
} else {
|
363
395
|
var part = parts.shift() ; // get next route.
|
@@ -368,7 +400,7 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
368
400
|
case ':':
|
369
401
|
part = part.slice(1,part.length) ;
|
370
402
|
var routes = this._dynamic[part] || [] ;
|
371
|
-
nextRoute = SC.
|
403
|
+
nextRoute = SC.routes._Route.create() ;
|
372
404
|
routes.push(nextRoute) ;
|
373
405
|
this._dynamic[part] = routes ;
|
374
406
|
break ;
|
@@ -377,14 +409,14 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
377
409
|
case '*':
|
378
410
|
part = part.slice(1,part.length) ;
|
379
411
|
this._wildcard = part ;
|
380
|
-
|
381
|
-
|
412
|
+
this._target = target;
|
413
|
+
this._method = method;
|
382
414
|
break ;
|
383
415
|
|
384
416
|
// setup a normal static route.
|
385
417
|
default:
|
386
|
-
|
387
|
-
nextRoute = SC.
|
418
|
+
routes = this._static[part] || [] ;
|
419
|
+
nextRoute = SC.routes._Route.create() ;
|
388
420
|
routes.push(nextRoute) ;
|
389
421
|
this._static[part] = routes ;
|
390
422
|
}
|
@@ -396,41 +428,50 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
396
428
|
|
397
429
|
// process the next level of the route and pass on.
|
398
430
|
functionForRoute: function(parts, params) {
|
399
|
-
|
431
|
+
|
400
432
|
// if parts it empty, then we are here, so return func
|
401
|
-
if (!parts || parts.length
|
402
|
-
return this ;
|
433
|
+
if (!parts || parts.length === 0) {
|
434
|
+
return this ;
|
403
435
|
|
404
436
|
// process the next part
|
405
437
|
} else {
|
406
|
-
var part = parts.shift()
|
407
|
-
|
438
|
+
var part = parts.shift(),
|
439
|
+
ret = null,
|
440
|
+
routes, nextRoute, loc ;
|
408
441
|
|
409
442
|
// try to match to static
|
410
443
|
routes = this._static[part] ;
|
411
|
-
if (routes)
|
412
|
-
|
413
|
-
|
444
|
+
if (routes) {
|
445
|
+
for(loc=0;(loc < routes.length) && (ret===null);loc++) {
|
446
|
+
var clone = parts.slice() ;
|
447
|
+
ret = routes[loc].functionForRoute(clone, params) ;
|
448
|
+
}
|
414
449
|
}
|
415
450
|
|
416
451
|
// try to match dynamic if no static match was found.
|
417
|
-
if (ret
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
452
|
+
if (ret === null) {
|
453
|
+
for(var key in this._dynamic) {
|
454
|
+
routes = this._dynamic[key] ;
|
455
|
+
if (routes) {
|
456
|
+
for(loc=0;(loc<routes.length) && (ret === null);loc++) {
|
457
|
+
clone = parts.slice() ;
|
458
|
+
ret = routes[loc].functionForRoute(clone,params) ;
|
422
459
|
|
423
|
-
|
424
|
-
|
460
|
+
// if a route was found, save the current part in params.
|
461
|
+
if (ret && params) params[key] = part ;
|
462
|
+
}
|
463
|
+
}
|
464
|
+
|
465
|
+
if (ret) break ;
|
425
466
|
}
|
426
|
-
if (ret) break ;
|
427
467
|
}
|
428
468
|
|
469
|
+
|
429
470
|
// if nothing still found, and there is a wildcard, match that.
|
430
|
-
if ((ret
|
471
|
+
if ((ret === null) && this._wildcard) {
|
431
472
|
parts.unshift(part) ;
|
432
473
|
if (params) params[this._wildcard] = parts.join('/') ;
|
433
|
-
|
474
|
+
ret = this;
|
434
475
|
}
|
435
476
|
|
436
477
|
return ret ;
|
@@ -443,4 +484,4 @@ SC.routes = SC.Object.create(/** @scope SC.routes.prototype */ {
|
|
443
484
|
}
|
444
485
|
})
|
445
486
|
|
446
|
-
})
|
487
|
+
});
|