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
@@ -99,7 +99,7 @@ SC.SourceListGroupView = SC.View.extend(SC.Control, SC.CollectionGroup,
|
|
99
99
|
}
|
100
100
|
|
101
101
|
// set the title if that changed.
|
102
|
-
var groupTitleKey = this.getDelegateProperty(this.displayDelegate
|
102
|
+
var groupTitleKey = this.getDelegateProperty('groupTitleKey', this.displayDelegate) ;
|
103
103
|
if ((key == '*') || (groupTitleKey && (key == groupTitleKey))) {
|
104
104
|
var title = (content && content.get && groupTitleKey) ? content.get(groupTitleKey) : content;
|
105
105
|
if (title != this._title) {
|
@@ -110,7 +110,7 @@ SC.SourceListGroupView = SC.View.extend(SC.Control, SC.CollectionGroup,
|
|
110
110
|
}
|
111
111
|
|
112
112
|
// set the group visibility if changed
|
113
|
-
var groupVisibleKey = this.getDelegateProperty(this.displayDelegate
|
113
|
+
var groupVisibleKey = this.getDelegateProperty('groupVisibleKey', this.displayDelegate) ;
|
114
114
|
if ((key == '*') || (groupVisibleKey && (key == groupVisibleKey))) {
|
115
115
|
if (groupVisibleKey) {
|
116
116
|
labelView.removeClassName('no-disclosure') ;
|
@@ -134,7 +134,7 @@ SC.SourceListGroupView = SC.View.extend(SC.Control, SC.CollectionGroup,
|
|
134
134
|
|
135
135
|
// update group if necessary
|
136
136
|
var group = this.get('content') ;
|
137
|
-
var groupVisibleKey = this.getDelegateProperty(this.displayDelegate
|
137
|
+
var groupVisibleKey = this.getDelegateProperty('groupVisibleKey', this.displayDelegate) ;
|
138
138
|
if (group && group.set && groupVisibleKey) {
|
139
139
|
group.set(groupVisibleKey, newValue) ;
|
140
140
|
}
|
@@ -119,9 +119,11 @@ SC.SplitView = SC.View.extend(
|
|
119
119
|
A number less than one will be treated as a percentage, while a number
|
120
120
|
greater than one will be treated as a pixel width.
|
121
121
|
|
122
|
+
The thickness will be applied to the opposite view defined by autoresizeBehavior.
|
123
|
+
|
122
124
|
@property {Number}
|
123
125
|
*/
|
124
|
-
|
126
|
+
defaultThickness: 0.5,
|
125
127
|
|
126
128
|
/**
|
127
129
|
Yes, we're a split view.
|
@@ -133,6 +135,22 @@ SC.SplitView = SC.View.extend(
|
|
133
135
|
dividerView: SC.SplitDividerView,
|
134
136
|
bottomRightView: SC.View,
|
135
137
|
|
138
|
+
/**
|
139
|
+
The current thickness for the topLeftView
|
140
|
+
*/
|
141
|
+
topLeftThickness: function() {
|
142
|
+
var view = this.get('topLeftView');
|
143
|
+
return view ? this.thicknessForView(view) : 0;
|
144
|
+
}.property('topLeftView').cacheable(),
|
145
|
+
|
146
|
+
/**
|
147
|
+
The current thickness for the bottomRightView
|
148
|
+
*/
|
149
|
+
bottomRightThickness: function() {
|
150
|
+
var view = this.get('bottomRightView');
|
151
|
+
return view ? this.thicknessForView(view) : 0;
|
152
|
+
}.property('bottomRightView').cacheable(),
|
153
|
+
|
136
154
|
/**
|
137
155
|
@property {SC.Cursor} the cursor thumb view should use for themselves
|
138
156
|
*/
|
@@ -355,6 +373,8 @@ SC.SplitView = SC.View.extend(
|
|
355
373
|
// topLeftView.updateDisplayLayout();
|
356
374
|
// dividerView.updateDisplayLayout();
|
357
375
|
// bottomRightView.updateDisplayLayout();
|
376
|
+
this.notifyPropertyChange('topLeftThickness')
|
377
|
+
.notifyPropertyChange('bottomRightThickness');
|
358
378
|
},
|
359
379
|
|
360
380
|
/** @private */
|
@@ -366,15 +386,21 @@ SC.SplitView = SC.View.extend(
|
|
366
386
|
this.set('thumbViewCursor', SC.Cursor.create()) ;
|
367
387
|
}
|
368
388
|
|
369
|
-
var
|
370
|
-
var splitViewThickness = (
|
389
|
+
var layoutDirection = this.get('layoutDirection') ;
|
390
|
+
var splitViewThickness = (layoutDirection == SC.LAYOUT_HORIZONTAL) ? this.get('frame').width : this.get('frame').height ;
|
391
|
+
var desiredThickness = this.get('defaultThickness') ;
|
392
|
+
var autoResizeBehavior = this.get('autoresizeBehavior') ;
|
371
393
|
|
372
|
-
// if
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
394
|
+
// if default thickness is < 1, convert from percentage to absolute
|
395
|
+
if (SC.none(desiredThickness) || (desiredThickness > 0 && desiredThickness < 1)) {
|
396
|
+
desiredThickness = Math.floor(splitViewThickness * (desiredThickness || 0.5)) ;
|
397
|
+
}
|
398
|
+
if (autoResizeBehavior === SC.RESIZE_BOTTOM_RIGHT) {
|
399
|
+
this._desiredTopLeftThickness = desiredThickness ;
|
400
|
+
} else { // (autoResizeBehavior === SC.RESIZE_TOP_LEFT)
|
401
|
+
var dividerThickness = this.get('dividerThickness') || 7 ;
|
402
|
+
this._desiredTopLeftThickness = splitViewThickness - dividerThickness - desiredThickness ;
|
403
|
+
}
|
378
404
|
|
379
405
|
// make sure we don't exceed our min and max values, and that collapse
|
380
406
|
// settings are respected
|
@@ -0,0 +1,101 @@
|
|
1
|
+
// ==========================================================================
|
2
|
+
// Project: SproutCore - JavaScript Application Framework
|
3
|
+
// Copyright: ©2006-2009 Sprout Systems, Inc. and contributors.
|
4
|
+
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
|
+
// License: Licened under MIT license (see license.js)
|
6
|
+
// ==========================================================================
|
7
|
+
|
8
|
+
sc_require('views/collection') ;
|
9
|
+
|
10
|
+
/**
|
11
|
+
@class
|
12
|
+
|
13
|
+
A StackedView is a CollectionView that expects its content to use static
|
14
|
+
layout to stack vertically. This type of collection view is not designed
|
15
|
+
for use with large size collections, but it can be very useful for
|
16
|
+
collections with complex displays and variable heights such as comments or
|
17
|
+
small notification queues.
|
18
|
+
|
19
|
+
h2. Static Layout
|
20
|
+
|
21
|
+
This view makes no attempt to size or position your child views. It assumes
|
22
|
+
you are using StaticLayout for your child views. If you don't enable static
|
23
|
+
layout your views will probably overlay on top of eachother and will look
|
24
|
+
incorrect.
|
25
|
+
|
26
|
+
Note also that the default layout for this view set's the height to "auto".
|
27
|
+
This is usually the behavior you will want.
|
28
|
+
|
29
|
+
@extends SC.CollectionView
|
30
|
+
@since SproutCore 0.9
|
31
|
+
*/
|
32
|
+
SC.StackedView = SC.CollectionView.extend(
|
33
|
+
/** SC.StackedView.prototype */ {
|
34
|
+
|
35
|
+
classNames: ['sc-stacked-view'],
|
36
|
+
|
37
|
+
/**
|
38
|
+
Default layout for a stacked view will fill the parent view but auto-
|
39
|
+
adjust the height of the view.
|
40
|
+
*/
|
41
|
+
layout: { top: 0, left: 0, right: 0, height: 1 },
|
42
|
+
|
43
|
+
/**
|
44
|
+
Updates the height of the stacked view to reflect the current content of
|
45
|
+
the view. This is called automatically whenever an item view is reloaded.
|
46
|
+
You can also call this method directly if the height of one of your views
|
47
|
+
has changed.
|
48
|
+
|
49
|
+
The height will be recomputed based on the actual location and dimensions
|
50
|
+
of the last child view.
|
51
|
+
|
52
|
+
Note that normally this method will defer actually updating the height
|
53
|
+
of the view until the end of the run loop. You can force an immediate
|
54
|
+
update by passing YES to the "immediately" parameter.
|
55
|
+
|
56
|
+
@param {Boolean} immediately YES to update immedately
|
57
|
+
@returns {SC.StackedView} receiver
|
58
|
+
*/
|
59
|
+
updateHeight: function(immediately) {
|
60
|
+
if (immediately) this._updateHeight();
|
61
|
+
else this.invokeLast(this._updateHeight);
|
62
|
+
// ^ use invokeLast() here because we need to wait until all rendering has
|
63
|
+
// completed.
|
64
|
+
|
65
|
+
return this;
|
66
|
+
},
|
67
|
+
|
68
|
+
_updateHeight: function() {
|
69
|
+
|
70
|
+
var childViews = this.get('childViews'),
|
71
|
+
len = childViews.get('length'),
|
72
|
+
view, layer, height;
|
73
|
+
|
74
|
+
if (len === 0) {
|
75
|
+
height = 1;
|
76
|
+
} else {
|
77
|
+
view = childViews.objectAt(len-1);
|
78
|
+
layer = view ? view.get('layer') : null ;
|
79
|
+
height = layer ? (layer.offsetTop + layer.offsetHeight) : 1 ;
|
80
|
+
layer = null ; // avoid memory leaks
|
81
|
+
}
|
82
|
+
this.adjust('height', height);
|
83
|
+
},
|
84
|
+
|
85
|
+
// ..........................................................
|
86
|
+
// INTERNAL SUPPORT
|
87
|
+
//
|
88
|
+
|
89
|
+
/** @private
|
90
|
+
Whenever the collection view reloads some views, reset the cache on the
|
91
|
+
frame as well so that it will recalculate.
|
92
|
+
*/
|
93
|
+
didReload: function(set) { return this.updateHeight(); },
|
94
|
+
|
95
|
+
/** @private
|
96
|
+
When layer is first created, make sure we update the height using the
|
97
|
+
newly calculated value.
|
98
|
+
*/
|
99
|
+
didCreateLayer: function() { return this.updateHeight(); }
|
100
|
+
|
101
|
+
});
|
@@ -99,8 +99,19 @@ SC.TabView = SC.View.extend(
|
|
99
99
|
},
|
100
100
|
|
101
101
|
createChildViews: function() {
|
102
|
-
var childViews = [], view;
|
103
|
-
|
102
|
+
var childViews = [], view, ContainerView ;
|
103
|
+
|
104
|
+
if (this.get('tabLocation') === SC.TOP_LOCATION) {
|
105
|
+
ContainerView = this.containerView.extend({
|
106
|
+
layout: { top:12, left:0, right:0, bottom: 0 }
|
107
|
+
});
|
108
|
+
} else {
|
109
|
+
ContainerView = this.containerView.extend({
|
110
|
+
layout: { top:0, left:0, right:0, bottom: 12 }
|
111
|
+
});
|
112
|
+
}
|
113
|
+
|
114
|
+
view = this.containerView = this.createChildView(ContainerView, {
|
104
115
|
rootElementPath: [0]
|
105
116
|
}) ;
|
106
117
|
childViews.push(view);
|
@@ -109,7 +120,7 @@ SC.TabView = SC.View.extend(
|
|
109
120
|
rootElementPath: [1]
|
110
121
|
}) ;
|
111
122
|
childViews.push(view);
|
112
|
-
|
123
|
+
|
113
124
|
this.set('childViews', childViews);
|
114
125
|
return this;
|
115
126
|
},
|
@@ -123,23 +134,7 @@ SC.TabView = SC.View.extend(
|
|
123
134
|
custom container view. You can access this view but you cannot change
|
124
135
|
it.
|
125
136
|
*/
|
126
|
-
containerView: SC.ContainerView
|
127
|
-
|
128
|
-
/** @private
|
129
|
-
When we need to actually create a container, look for the tab loc from
|
130
|
-
the parent view and adjust the internal frame accordingly.
|
131
|
-
*/
|
132
|
-
render: function(context, firstTime) {
|
133
|
-
var pv = this.get('parentView');
|
134
|
-
var tabLoc = (pv) ? pv.get('tabLocation') : SC.TOP_LOCATION ;
|
135
|
-
if (tabLoc === SC.TOP_LOCATION) {
|
136
|
-
context.addStyle('top', '11px');
|
137
|
-
} else {
|
138
|
-
context.addStyle('bottom', '11px');
|
139
|
-
}
|
140
|
-
this.renderChildViews(context, firstTime);
|
141
|
-
}
|
142
|
-
}),
|
137
|
+
containerView: SC.ContainerView,
|
143
138
|
|
144
139
|
/**
|
145
140
|
The segmentedView managed by this tab view. Note that this TabView uses
|
@@ -147,14 +142,20 @@ SC.TabView = SC.View.extend(
|
|
147
142
|
it.
|
148
143
|
*/
|
149
144
|
segmentedView: SC.SegmentedView.extend({
|
150
|
-
layout: { left: 0, right: 0, height:
|
145
|
+
layout: { left: 0, right: 0, height: 24 },
|
151
146
|
|
152
147
|
/** @private
|
153
148
|
When the value changes, update the parentView's value as well.
|
154
149
|
*/
|
155
|
-
|
150
|
+
_sc_tab_segmented_valueDidChange: function() {
|
156
151
|
var pv = this.get('parentView');
|
157
152
|
if (pv) pv.set('nowShowing', this.get('value'));
|
153
|
+
|
154
|
+
// FIXME: why is this necessary? 'value' is a displayProperty and should
|
155
|
+
// automatically cause displayDidChange() to fire, which should cause
|
156
|
+
// the two lines below to execute in the normal course of things...
|
157
|
+
this.set('layerNeedsUpdate', YES) ;
|
158
|
+
this.invokeOnce(this.updateLayerIfNeeded) ;
|
158
159
|
}.observes('value'),
|
159
160
|
|
160
161
|
/** @private
|
@@ -9,150 +9,95 @@ require('mixins/selection_support');
|
|
9
9
|
|
10
10
|
/**
|
11
11
|
@class
|
12
|
+
|
13
|
+
An ArrayController provides a way for you to publish an array of objects
|
14
|
+
for CollectionView or other controllers to work with. To work with an
|
15
|
+
ArrayController, set the content property to the array you want the
|
16
|
+
controller to manage. Then work directly with the controller object as if
|
17
|
+
it were the array itself.
|
12
18
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
19
|
+
When you want to display an array of objects in a CollectionView, bind the
|
20
|
+
"arrangedObjects" of the array controller to the CollectionView's "content"
|
21
|
+
property. This will automatically display the array in the collection view.
|
22
|
+
|
18
23
|
@extends SC.Controller
|
19
24
|
@extends SC.Array
|
20
25
|
@extends SC.SelectionSupport
|
21
26
|
@author Charles Jolley
|
22
|
-
@author Erich Ocean
|
23
|
-
@version 1.0
|
24
27
|
@since SproutCore 1.0
|
25
28
|
*/
|
26
29
|
SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
|
27
30
|
/** @scope SC.ArrayController.prototype */ {
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
If you want to use an array controller to edit an array contents directly
|
33
|
-
but you do not want to wrap the values of the array in controller objects
|
34
|
-
then you should set this property to NO.
|
35
|
-
|
36
|
-
@type Boolean
|
37
|
-
*/
|
38
|
-
useControllersForContent: NO,
|
39
|
-
|
40
|
-
/**
|
41
|
-
Provides compatibility with collection controllers.
|
42
|
-
|
43
|
-
@property
|
44
|
-
@type SC.ArrayController
|
45
|
-
*/
|
46
|
-
arrangedObjects: function() { return this; }.property('content'),
|
31
|
+
|
32
|
+
// ..........................................................
|
33
|
+
// PROPERTIES
|
34
|
+
//
|
47
35
|
|
48
36
|
/**
|
49
37
|
The content array managed by this controller.
|
50
38
|
|
51
|
-
|
52
|
-
|
53
|
-
that
|
54
|
-
|
39
|
+
You can set the content of the ArrayController to any object that
|
40
|
+
implements SC.Array or SC.Enumerable. If you set the content to an object
|
41
|
+
that implements SC.Enumerable only, you must also set the orderBy property
|
42
|
+
so that the ArrayController can order the enumerable for you.
|
55
43
|
|
56
|
-
|
57
|
-
|
44
|
+
If you set the content to a non-enumerable and non-array object, then the
|
45
|
+
ArrayController will wrap the item in an array in an attempt to normalize
|
46
|
+
the result.
|
58
47
|
|
59
48
|
@type SC.Array
|
60
49
|
*/
|
61
50
|
content: null,
|
62
|
-
|
63
|
-
/** @private */
|
64
|
-
contentBindingDefault: SC.Binding.multiple(),
|
65
|
-
|
51
|
+
|
66
52
|
/**
|
67
|
-
|
53
|
+
Makes the array editable or not. If this is set to NO, then any attempts
|
54
|
+
at changing the array content itself will throw an exception.
|
68
55
|
|
69
56
|
@property
|
70
57
|
@type Boolean
|
71
58
|
*/
|
72
|
-
|
73
|
-
return !SC.none(this.get('content')) ;
|
74
|
-
}.property('content'),
|
59
|
+
isEditable: YES,
|
75
60
|
|
76
61
|
/**
|
77
|
-
|
62
|
+
Used to sort the array.
|
78
63
|
|
79
|
-
If
|
80
|
-
|
81
|
-
the
|
82
|
-
|
64
|
+
If you set this property to a key name, array of key names, or a function,
|
65
|
+
then then ArrayController will automatically reorder your content array
|
66
|
+
to match the sort order. (If you set a function, the function will be
|
67
|
+
used to sort).
|
68
|
+
|
69
|
+
Normally, you should only use this property if you set the content of the
|
70
|
+
controller to an unordered enumerable such as SC.Set or SC.SelectionSet.
|
71
|
+
In this case the orderBy property is required in order for the controller
|
72
|
+
to property order the content for display.
|
83
73
|
|
84
|
-
If
|
85
|
-
|
86
|
-
|
74
|
+
If you set the content to an array, it is usually best to maintain the
|
75
|
+
array in the proper order that you want to display things rather than
|
76
|
+
using this method to order the array since it requires an extra processing
|
77
|
+
step. You can use this orderBy property, however, for displaying smaller
|
78
|
+
arrays of content.
|
87
79
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
/**
|
93
|
-
When grouping, create objects using this class. SC.ArrayController will
|
94
|
-
set 'value' to the value of the groupByKey, and 'itemRange' to an
|
95
|
-
SC.Range of the item indexes in the group, and 'owner' to this array
|
96
|
-
controller.
|
80
|
+
Note that you can only to use addObject() to insert new objects into an
|
81
|
+
array that is ordered. You cannot manually reorder or insert new objects
|
82
|
+
into specific locations because the order is managed by this property
|
83
|
+
instead.
|
97
84
|
|
98
|
-
|
99
|
-
*/
|
100
|
-
exampleGroup: SC.Object,
|
101
|
-
|
102
|
-
/**
|
103
|
-
The groups, if any, for the current content array.
|
85
|
+
If you pass a function, it should be suitable for use in compare().
|
104
86
|
|
105
|
-
@readOnly
|
106
87
|
@property
|
107
|
-
@type
|
88
|
+
@type String|Array|Function
|
108
89
|
*/
|
109
|
-
|
110
|
-
if (val) throw "The SC.ArrayController groups property is read-only." ;
|
111
|
-
|
112
|
-
var groupByKey = this.get('groupByKey') ;
|
113
|
-
if (!groupByKey) return SC.EMPTY_ARRAY ; // no groups
|
114
|
-
|
115
|
-
var content = this.get('content') ;
|
116
|
-
if (!content || content.get('length') === 0) {
|
117
|
-
return SC.EMPTY_ARRAY ; // no groups...
|
118
|
-
}
|
119
|
-
|
120
|
-
// okay, calculate the groups...
|
121
|
-
var previousGroup, currentGroup, groupStart = 0 ;
|
122
|
-
var obj, groups = [], GroupClass = this.get('exampleGroup') ;
|
123
|
-
|
124
|
-
// initialize the discover groups loop
|
125
|
-
previousGroup = content.objectAt(0).get(groupByKey) ;
|
126
|
-
|
127
|
-
// discover groups...
|
128
|
-
for (var idx=0, len=content.get('length'); idx<len; ++idx) {
|
129
|
-
obj = content.objectAt(idx) ;
|
130
|
-
currentGroup = obj.get(groupByKey) ;
|
131
|
-
|
132
|
-
// did our group change?
|
133
|
-
if (previousGroup !== currentGroup) {
|
134
|
-
// save the current group
|
135
|
-
groups.push(GroupClass.create({
|
136
|
-
value: previousGroup,
|
137
|
-
itemRange: { start: groupStart, length: idx - groupStart },
|
138
|
-
owner: this
|
139
|
-
}));
|
140
|
-
|
141
|
-
// and move on to the next group
|
142
|
-
previousGroup = currentGroup ;
|
143
|
-
groupStart = idx ;
|
144
|
-
}
|
145
|
-
}
|
90
|
+
orderBy: null,
|
146
91
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
owner: this
|
152
|
-
}));
|
92
|
+
/**
|
93
|
+
Set to YES if you want the controller to wrap non-enumerable content
|
94
|
+
in an array and publish it. Otherwise, it will treat single content like
|
95
|
+
null content.
|
153
96
|
|
154
|
-
|
155
|
-
|
97
|
+
@property
|
98
|
+
@type Boolean
|
99
|
+
*/
|
100
|
+
allowsSingleContent: YES,
|
156
101
|
|
157
102
|
/**
|
158
103
|
Set to YES if you want objects removed from the array to also be
|
@@ -166,325 +111,399 @@ SC.ArrayController = SC.Controller.extend(SC.Array, SC.SelectionSupport,
|
|
166
111
|
@type {Boolean}
|
167
112
|
*/
|
168
113
|
destroyOnRemoval: NO,
|
114
|
+
|
115
|
+
/**
|
116
|
+
Returns an SC.Array object suitable for use in a CollectionView.
|
117
|
+
Depending on how you have your ArrayController configured, this property
|
118
|
+
may be one of several different values.
|
119
|
+
|
120
|
+
@property
|
121
|
+
@type SC.Array
|
122
|
+
*/
|
123
|
+
arrangedObjects: function() {
|
124
|
+
return this;
|
125
|
+
}.property().cacheable(),
|
169
126
|
|
170
127
|
/**
|
171
|
-
|
128
|
+
Computed property indicates whether or not the array controller can
|
129
|
+
remove content. You can delete content only if the content is not single
|
130
|
+
content and isEditable is YES.
|
172
131
|
|
173
|
-
|
174
|
-
|
132
|
+
@property
|
133
|
+
@type Boolean
|
134
|
+
*/
|
135
|
+
canRemoveContent: function() {
|
136
|
+
var content = this.get('content'), ret;
|
137
|
+
ret = !!content && this.get('isEditable') && this.get('hasContent');
|
138
|
+
if (ret) {
|
139
|
+
return !content.isEnumerable ||
|
140
|
+
(SC.typeOf(content.removeObject) === SC.T_FUNCTION);
|
141
|
+
} else return NO ;
|
142
|
+
}.property('content', 'isEditable', 'hasContent'),
|
143
|
+
|
144
|
+
/**
|
145
|
+
Computed property indicates whether you can reorder content. You can
|
146
|
+
reorder content as long a the controller isEditable and the content is a
|
147
|
+
real SC.Array-like object. You cannot reorder content when orderBy is
|
148
|
+
non-null.
|
175
149
|
|
176
|
-
@
|
150
|
+
@property
|
151
|
+
@type Boolean
|
177
152
|
*/
|
178
|
-
|
153
|
+
canReorderContent: function() {
|
154
|
+
var content = this.get('content'), ret;
|
155
|
+
ret = !!content && this.get('isEditable') && !this.get('orderBy');
|
156
|
+
return ret && !!content.isSCArray;
|
157
|
+
}.property('content', 'isEditable', 'orderBy'),
|
179
158
|
|
180
159
|
/**
|
181
|
-
|
160
|
+
Computed property insides whether you can add content. You can add
|
161
|
+
content as long as the controller isEditable and the content is not a
|
162
|
+
single object.
|
182
163
|
|
183
|
-
|
164
|
+
Note that the only way to simply add object to an ArrayController is to
|
165
|
+
use the addObject() or pushObject() methods. All other methods imply
|
166
|
+
reordering and will fail.
|
184
167
|
|
185
|
-
@
|
186
|
-
@
|
187
|
-
@returns {Object} the newly created object (also added to the array)
|
168
|
+
@property
|
169
|
+
@type Boolean
|
188
170
|
*/
|
189
|
-
|
190
|
-
|
191
|
-
|
171
|
+
canAddContent: function() {
|
172
|
+
var content = this.get('content'), ret ;
|
173
|
+
ret = content && this.get('isEditable') && content.isEnumerable;
|
174
|
+
if (ret) {
|
175
|
+
return (SC.typeOf(content.addObject) === SC.T_FUNCTION) ||
|
176
|
+
(SC.typeOf(content.pushObject) === SC.T_FUNCTION);
|
177
|
+
} else return NO ;
|
178
|
+
}.property('content', 'isEditable'),
|
192
179
|
|
193
180
|
/**
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
This method takes an optional hash of attributes which will be set on
|
198
|
-
the new record. You can also pass an optional objectType. If you do
|
199
|
-
not pass the objectType, you must instead set the exampleContentObject to
|
200
|
-
the class of the object you want to use. The object can be of any type
|
201
|
-
but it must respond to the newRecord() method.
|
202
|
-
|
203
|
-
Objects created using this method will be destroyed automatically if you
|
204
|
-
have set commitsChangesImmediately to false and call discardChanges().
|
205
|
-
|
206
|
-
@param index {Number} the index to insert at or null to append.
|
207
|
-
@param attributes {Hash} optional hash of attributes to pass to the new obejct.
|
208
|
-
@param objectType {Class} optional class of object to create.
|
209
|
-
@returns {Object} the newly created object (also added to the array)
|
210
|
-
*/
|
211
|
-
insertNewObjectAt: function(index, attributes, objectType) {
|
181
|
+
Set to YES if the controller has valid content that can be displayed,
|
182
|
+
even an empty array. Returns NO if the content is null or not enumerable
|
183
|
+
and allowsSingleContent is NO.
|
212
184
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
185
|
+
@property
|
186
|
+
@type Boolean
|
187
|
+
*/
|
188
|
+
hasContent: function() {
|
189
|
+
var content = this.get('content');
|
190
|
+
return !!content &&
|
191
|
+
(!!content.isEnumerable || !!this.get('allowsSingleContent'));
|
192
|
+
}.property('content', 'allowSingleContent'),
|
193
|
+
|
194
|
+
/**
|
195
|
+
The current load state of the RecordArray. If the storeKeys has a state
|
196
|
+
property, then this property will return that value. Otherwise it returns
|
197
|
+
SC.Record.READY.
|
198
|
+
*/
|
199
|
+
state: function() {
|
200
|
+
var content = this.get('content'),
|
201
|
+
ret = content ? content.get('state') : null;
|
202
|
+
return ret ? ret : SC.Record.READY;
|
203
|
+
}.property().cacheable(),
|
204
|
+
|
205
|
+
// ..........................................................
|
206
|
+
// METHODS
|
207
|
+
//
|
208
|
+
|
209
|
+
/**
|
210
|
+
Adds an object to the array. If the content is ordered, this will add the
|
211
|
+
object to the end of the content array. The content is not ordered, the
|
212
|
+
location depends on the implementation of the content.
|
221
213
|
|
222
|
-
|
223
|
-
|
224
|
-
}
|
214
|
+
If the source content does not support adding an object, then this method
|
215
|
+
will throw an exception.
|
225
216
|
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
217
|
+
@param {Object} object the object to add
|
218
|
+
@returns {SC.ArrayController} receiver
|
219
|
+
*/
|
220
|
+
addObject: function(object) {
|
221
|
+
if (!this.get('canAddContent')) throw "%@ cannot add content".fmt(this);
|
230
222
|
|
231
|
-
|
232
|
-
if (
|
233
|
-
|
234
|
-
|
223
|
+
var content = this.get('content');
|
224
|
+
if (content.isSCArray) content.pushObject(object);
|
225
|
+
else if (content.addObject) content.addObject(object);
|
226
|
+
else throw "%@.content does not support addObject".fmt(this);
|
235
227
|
|
236
|
-
return
|
228
|
+
return this;
|
237
229
|
},
|
238
230
|
|
239
|
-
/**
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
*/
|
244
|
-
_contentDidChange: function() {
|
245
|
-
var content = this.get('content') ;
|
246
|
-
if (SC.isEqual(content, this._content)) return ; // nothing to do
|
247
|
-
|
248
|
-
var func = this._contentPropertyDidChange ;
|
231
|
+
/**
|
232
|
+
Removes the passed object from the array. If the underyling content
|
233
|
+
is a single object, then this simply sets the content to null. Otherwise
|
234
|
+
it will call removeObject() on the content.
|
249
235
|
|
250
|
-
|
251
|
-
if (this._content && this._content.removeObserver) {
|
252
|
-
this._content.removeObserver('[]', this, func) ;
|
253
|
-
}
|
236
|
+
Also, if destroyOnRemoval is YES, this will actually destroy the object.
|
254
237
|
|
255
|
-
|
256
|
-
|
238
|
+
@param {Object} object the object to remove
|
239
|
+
@returns {SC.ArrayController} receiver
|
240
|
+
*/
|
241
|
+
removeObject: function(object) {
|
242
|
+
if (!this.get('canRemoveContent')) {
|
243
|
+
throw "%@ cannot remove content".fmt(this);
|
257
244
|
}
|
258
245
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
}.observes('content'),
|
265
|
-
|
266
|
-
_contentPropertyDidChange: function(target, key, value, rev) {
|
267
|
-
if (!this._updatingContent && (!rev || (rev != this._contentPropertyRevision))) {
|
268
|
-
this._contentPropertyRevision = rev ;
|
269
|
-
|
270
|
-
this._updatingContent = true ;
|
271
|
-
|
272
|
-
this.beginPropertyChanges();
|
273
|
-
this.contentCloneReset();
|
274
|
-
this.enumerableContentDidChange() ;
|
275
|
-
this.notifyPropertyChange('length') ;
|
276
|
-
this.updateSelectionAfterContentChange();
|
277
|
-
this.endPropertyChanges() ;
|
278
|
-
|
279
|
-
this._updatingContent = false ;
|
246
|
+
var content = this.get('content');
|
247
|
+
if (content.isEnumerable) content.removeObject(object);
|
248
|
+
else {
|
249
|
+
this.set('content', null);
|
250
|
+
this.enumerableContentDidChange();
|
280
251
|
}
|
252
|
+
|
253
|
+
if (this.get('destroyOnRemoval') && object.destroy) object.destroy();
|
254
|
+
return this;
|
281
255
|
},
|
282
256
|
|
257
|
+
// ..........................................................
|
258
|
+
// SC.ARRAY SUPPORT
|
259
|
+
//
|
260
|
+
|
283
261
|
/**
|
284
|
-
|
285
|
-
content property. All array methods will take place on this object.
|
286
|
-
|
287
|
-
@property
|
288
|
-
@type SC.Array
|
262
|
+
Compute the length of the array based on the observable content
|
289
263
|
*/
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
264
|
+
length: function() {
|
265
|
+
var content = this._scac_observableContent();
|
266
|
+
return content ? content.get('length') : 0;
|
267
|
+
}.property().cacheable(),
|
268
|
+
|
269
|
+
/**
|
270
|
+
Returns the object at the specified index based on the observable content
|
294
271
|
*/
|
295
|
-
|
296
|
-
|
297
|
-
|
272
|
+
objectAt: function(idx) {
|
273
|
+
var content = this._scac_observableContent();
|
274
|
+
return content ? content.objectAt(idx) : undefined ;
|
298
275
|
},
|
299
|
-
|
276
|
+
|
300
277
|
/**
|
301
|
-
|
302
|
-
|
303
|
-
@param idx {Number} Starting index in the array to replace. If idx >=
|
304
|
-
length, then append to the end of the array.
|
305
|
-
|
306
|
-
@param amt {Number} Number of elements that should be removed from the
|
307
|
-
array, starting at *idx*.
|
308
|
-
|
309
|
-
@param objects {Array} An array of zero or more objects that should be
|
310
|
-
inserted into the array at *idx*
|
278
|
+
Forwards a replace on to the content, but only if reordering is allowed.
|
311
279
|
*/
|
312
|
-
replace: function(
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
var sourceObjects = objects ;
|
318
|
-
if (copyIdx > 0) {
|
319
|
-
sourceObjects = [] ;
|
320
|
-
while(--copyIdx >= 0) {
|
321
|
-
sourceObjects[copyIdx] = this._sourceObjectFor(objects[copyIdx]) ;
|
280
|
+
replace: function(start, amt, objects) {
|
281
|
+
// check for various conditions before a replace is allowed
|
282
|
+
if (!objects || objects.get('length')===0) {
|
283
|
+
if (!this.get('canRemoveContent')) {
|
284
|
+
throw "%@ cannot remove objects from the current content".fmt(this);
|
322
285
|
}
|
323
|
-
}
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
if
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
for (var i=0; i < amt; i++) {
|
335
|
-
this._deletions.push(content.objectAt(idx + i));
|
286
|
+
} else if (!this.get('canReorderContent')) {
|
287
|
+
throw "%@ cannot add or reorder the current content".fmt(this);
|
288
|
+
}
|
289
|
+
|
290
|
+
// if we can do this, then just forward the change. This should fire
|
291
|
+
// updates back up the stack, updating rangeObservers, etc.
|
292
|
+
var content = this.get('content'); // note: use content, not observable
|
293
|
+
var objsToDestroy = [], i;
|
294
|
+
if (this.get('destroyOnRemoval')){
|
295
|
+
for(i=0; i<amt; i++){
|
296
|
+
objsToDestroy.push(content.objectAt(i+start));
|
336
297
|
}
|
337
298
|
}
|
338
299
|
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
this.editorDidChange() ;
|
347
|
-
this.enumerableContentDidChange();
|
348
|
-
this.updateSelectionAfterContentChange();
|
300
|
+
if (content) content.replace(start, amt, objects);
|
301
|
+
for(i=0; i<objsToDestroy.length; i++){
|
302
|
+
|
303
|
+
objsToDestroy[i].destroy();
|
304
|
+
}
|
305
|
+
objsToDestroy = null;
|
349
306
|
|
350
|
-
return this;
|
307
|
+
return this;
|
351
308
|
},
|
352
309
|
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
obj = (obj && obj.objectAt) ? obj.objectAt(idx) : null;
|
361
|
-
return this._objectControllerFor(obj) ;
|
310
|
+
// ..........................................................
|
311
|
+
// INTERNAL SUPPORT
|
312
|
+
//
|
313
|
+
|
314
|
+
init: function() {
|
315
|
+
sc_super();
|
316
|
+
this._scac_contentDidChange();
|
362
317
|
},
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
318
|
+
|
319
|
+
/** @private
|
320
|
+
Cached observable content property. Set to NO to indicate cache is
|
321
|
+
invalid.
|
367
322
|
*/
|
368
|
-
|
369
|
-
var ret = this._getSourceContent() ;
|
370
|
-
return (ret && ret.get) ? (ret.get('length') || 0) : 0 ;
|
371
|
-
}.property(),
|
323
|
+
_scac_cached: NO,
|
372
324
|
|
373
325
|
/**
|
374
|
-
|
326
|
+
@private
|
375
327
|
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
_getSourceContent: function() {
|
383
|
-
return this.get('contentClone') || this.get('content') || [];
|
384
|
-
},
|
328
|
+
Returns the current array this controller is actually managing. Usually
|
329
|
+
this should be the same as the content property, but sometimes we need to
|
330
|
+
generate something different because the content is not a regular array.
|
331
|
+
|
332
|
+
Passing YES to the force parameter will force this value to be recomputed.
|
385
333
|
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
var ret
|
390
|
-
|
334
|
+
@returns {SC.Array} observable or null
|
335
|
+
*/
|
336
|
+
_scac_observableContent: function() {
|
337
|
+
var ret = this._scac_cached;
|
338
|
+
if (ret !== NO) return ret;
|
391
339
|
|
392
|
-
|
393
|
-
|
394
|
-
return SC.$error("No Content");
|
395
|
-
}
|
340
|
+
var content = this.get('content'),
|
341
|
+
orderBy, func, t, len;
|
396
342
|
|
397
|
-
|
343
|
+
// empty content
|
344
|
+
if (SC.none(content)) return this._scac_cached = [];
|
345
|
+
|
346
|
+
// wrap non-enumerables
|
347
|
+
if (!content.isEnumerable) {
|
348
|
+
ret = this.get('allowsSingleContent') ? [content] : [];
|
349
|
+
return (this._scac_cached = ret);
|
350
|
+
}
|
398
351
|
|
399
|
-
//
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
for(
|
404
|
-
var change = changelog[idx];
|
405
|
-
content.replace(change.idx, change.amt, change.objects) ;
|
406
|
-
}
|
407
|
-
this._changelog.length = 0 ; // reset changelog
|
352
|
+
// no-wrap
|
353
|
+
orderBy = this.get('orderBy');
|
354
|
+
if (!orderBy) {
|
355
|
+
if (content.isSCArray) return (this._scac_cached = content) ;
|
356
|
+
else throw "%@.orderBy is required for unordered content".fmt(this);
|
408
357
|
}
|
409
358
|
|
410
|
-
//
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
359
|
+
// all remaining enumerables must be sorted.
|
360
|
+
|
361
|
+
// build array - then sort it
|
362
|
+
switch(SC.typeOf(orderBy)) {
|
363
|
+
case SC.T_STRING:
|
364
|
+
orderBy = [orderBy];
|
365
|
+
break;
|
366
|
+
case SC.T_FUNCTION:
|
367
|
+
func = orderBy ;
|
368
|
+
break;
|
369
|
+
case SC.T_ARRAY:
|
370
|
+
break;
|
371
|
+
default:
|
372
|
+
throw "%@.orderBy must be Array, String, or Function".fmt(this);
|
421
373
|
}
|
422
374
|
|
423
|
-
|
424
|
-
if (this._createdObjects) this._createdObjects.length = 0 ;
|
425
|
-
|
426
|
-
// finish commiting changes.
|
427
|
-
if (content.endPropertyChanges) content.endPropertyChanges();
|
428
|
-
if (content.commitChanges) ret = content.commitChanges();
|
375
|
+
len = orderBy.get('length');
|
429
376
|
|
430
|
-
if
|
431
|
-
|
432
|
-
|
377
|
+
// generate comparison function if needed - use orderBy
|
378
|
+
if (!func) {
|
379
|
+
func = function(a,b) {
|
380
|
+
var idx=0, status=0, key, aValue, bValue;
|
381
|
+
for(idx=0;(idx<len)&&(status===0);idx++) {
|
382
|
+
key = orderBy.objectAt(idx);
|
383
|
+
|
384
|
+
if (!a) aValue = a ;
|
385
|
+
else if (a.isObservable) aValue = a.get(key);
|
386
|
+
else aValue = a[key];
|
387
|
+
|
388
|
+
if (!b) bValue = b ;
|
389
|
+
else if (b.isObservable) bValue = b.get(key);
|
390
|
+
else bValue = b[key];
|
391
|
+
|
392
|
+
status = SC.compare(aValue, bValue);
|
393
|
+
}
|
394
|
+
return status ;
|
395
|
+
};
|
433
396
|
}
|
397
|
+
|
398
|
+
ret = [];
|
399
|
+
content.forEach(function(o) { ret.push(o); });
|
400
|
+
ret.sort(func);
|
434
401
|
|
435
|
-
|
402
|
+
func = null ; // avoid memory leaks
|
403
|
+
return (this._scac_cached = ret) ;
|
436
404
|
},
|
437
405
|
|
438
|
-
/**
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
//
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
406
|
+
/**
|
407
|
+
Whenever content changes, setup and teardown observers on the content
|
408
|
+
as needed.
|
409
|
+
*/
|
410
|
+
_scac_contentDidChange: function() {
|
411
|
+
|
412
|
+
this._scac_cached = NO; // invalidate observable content
|
413
|
+
|
414
|
+
var cur = this.get('content'),
|
415
|
+
orders = !!this.get('orderBy'),
|
416
|
+
last = this._scac_content,
|
417
|
+
oldlen = this._scac_length || 0,
|
418
|
+
ro = this._scac_rangeObserver,
|
419
|
+
func = this._scac_rangeDidChange,
|
420
|
+
efunc = this._scac_enumerableDidChange,
|
421
|
+
sfunc = this._scac_contentStateDidChange,
|
422
|
+
newlen;
|
423
|
+
|
424
|
+
if (last === cur) return this; // nothing to do
|
425
|
+
|
426
|
+
// teardown old observer
|
427
|
+
if (last) {
|
428
|
+
if (ro && last.isSCArray) last.removeRangeObserver(ro);
|
429
|
+
else if (last.isEnumerable) last.removeObserver('[]', this, efunc);
|
430
|
+
last.removeObserver('state', this, sfunc);
|
452
431
|
}
|
453
432
|
|
454
|
-
|
455
|
-
|
433
|
+
ro = null;
|
434
|
+
|
435
|
+
// save new cached values
|
436
|
+
this._scac_cached = NO;
|
437
|
+
this._scac_content = cur ;
|
438
|
+
|
439
|
+
// setup new observers
|
440
|
+
// also, calculate new length. do it manually instead of using
|
441
|
+
// get(length) because we want to avoid computed an ordered array.
|
442
|
+
if (cur) {
|
443
|
+
if (!orders && cur.isSCArray) ro = cur.addRangeObserver(null,this,func);
|
444
|
+
else if (cur.isEnumerable) cur.addObserver('[]', this, efunc);
|
445
|
+
newlen = cur.isEnumerable ? cur.get('length') : 1;
|
446
|
+
cur.addObserver('state', this, sfunc);
|
447
|
+
|
448
|
+
} else newlen = SC.none(cur) ? 0 : 1;
|
449
|
+
|
450
|
+
this._scac_rangeObserver = ro;
|
451
|
+
|
452
|
+
|
453
|
+
// finally, notify enumerable content has changed.
|
454
|
+
this._scac_length = newlen;
|
455
|
+
this._scac_contentStateDidChange();
|
456
|
+
this.enumerableContentDidChange(0, newlen, newlen - oldlen);
|
457
|
+
this.updateSelectionAfterContentChange();
|
458
|
+
}.observes('content'),
|
456
459
|
|
457
|
-
/**
|
458
|
-
|
460
|
+
/**
|
461
|
+
Whenever enumerable content changes, need to regenerate the
|
462
|
+
observableContent and notify that the range has changed.
|
463
|
+
|
464
|
+
IMPORTANT: Assumes content is not null and is enumerable
|
459
465
|
*/
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
466
|
+
_scac_enumerableDidChange: function() {
|
467
|
+
var content = this.get('content'), // use content directly
|
468
|
+
newlen = content.get('length'),
|
469
|
+
oldlen = this._scac_length;
|
470
|
+
|
471
|
+
this._scac_length = newlen;
|
472
|
+
this.beginPropertyChanges();
|
473
|
+
this._scac_cached = NO; // invalidate
|
474
|
+
this.enumerableContentDidChange(0, newlen, newlen-oldlen);
|
475
|
+
this.endPropertyChanges();
|
476
|
+
this.updateSelectionAfterContentChange();
|
471
477
|
},
|
472
478
|
|
473
|
-
/**
|
474
|
-
|
475
|
-
|
476
|
-
|
479
|
+
/**
|
480
|
+
Whenever array content changes, need to simply forward notification.
|
481
|
+
|
482
|
+
Assumes that content is not null and is SC.Array.
|
477
483
|
*/
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
484
|
+
_scac_rangeDidChange: function(array, objects, key, indexes) {
|
485
|
+
if (key !== '[]') return ; // nothing to do
|
486
|
+
|
487
|
+
var content = this.get('content');
|
488
|
+
this._scac_length = content.get('length');
|
489
|
+
this._scac_cached = NO; // invalidate
|
490
|
+
|
491
|
+
// if array length has changed, just notify every index from min up
|
492
|
+
if (indexes) {
|
493
|
+
this.beginPropertyChanges();
|
494
|
+
indexes.forEachRange(function(start, length) {
|
495
|
+
this.enumerableContentDidChange(start, length, 0);
|
496
|
+
}, this);
|
497
|
+
this.endPropertyChanges();
|
498
|
+
this.updateSelectionAfterContentChange();
|
499
|
+
}
|
482
500
|
},
|
483
501
|
|
484
|
-
/**
|
485
|
-
|
486
|
-
|
487
|
-
|
502
|
+
/**
|
503
|
+
Whenver the content "state" property changes, relay out.
|
504
|
+
*/
|
505
|
+
_scac_contentStateDidChange: function() {
|
506
|
+
this.notifyPropertyChange('state');
|
488
507
|
}
|
489
508
|
|
490
509
|
});
|