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
@@ -5,8 +5,6 @@
|
|
5
5
|
// License: Licened under MIT license (see license.js)
|
6
6
|
// ==========================================================================
|
7
7
|
|
8
|
-
sc_require('mixins/collection_item');
|
9
|
-
|
10
8
|
SC.LIST_ITEM_ACTION_CANCEL = 'sc-list-item-cancel-action';
|
11
9
|
SC.LIST_ITEM_ACTION_REFRESH = 'sc-list-item-cancel-refresh';
|
12
10
|
SC.LIST_ITEM_ACTION_EJECT = 'sc-list-item-cancel-eject';
|
@@ -25,14 +23,14 @@ SC.LIST_ITEM_ACTION_EJECT = 'sc-list-item-cancel-eject';
|
|
25
23
|
@extends SC.View
|
26
24
|
@extends SC.Control
|
27
25
|
@extends SC.InlineEditorDelegate
|
28
|
-
@extends SC.CollectionItem
|
29
26
|
@extends SC.Editable
|
27
|
+
@extends SC.StaticLayout
|
30
28
|
@since SproutCore 1.0
|
31
29
|
*/
|
32
30
|
SC.ListItemView = SC.View.extend(
|
31
|
+
SC.StaticLayout,
|
33
32
|
SC.Control,
|
34
33
|
SC.InlineEditorDelegate,
|
35
|
-
SC.CollectionItem,
|
36
34
|
/** @scope SC.ListItemView.prototype */ {
|
37
35
|
|
38
36
|
classNames: ['sc-list-item-view'],
|
@@ -120,6 +118,24 @@ SC.ListItemView = SC.View.extend(
|
|
120
118
|
*/
|
121
119
|
isEditing: NO,
|
122
120
|
|
121
|
+
/**
|
122
|
+
Indent to use when rendering a list item with an outline level > 0. The
|
123
|
+
left edge of the list item will be indented by this amount for each
|
124
|
+
outline level.
|
125
|
+
*/
|
126
|
+
outlineIndent: 16,
|
127
|
+
|
128
|
+
/**
|
129
|
+
Outline level for this list item. Usually set by the collection view.
|
130
|
+
*/
|
131
|
+
outlineLevel: 0,
|
132
|
+
|
133
|
+
/**
|
134
|
+
Disclosure state for this list item. Usually set by the collection view
|
135
|
+
when the list item is created.
|
136
|
+
*/
|
137
|
+
disclosureState: SC.LEAF_NODE,
|
138
|
+
|
123
139
|
contentPropertyDidChange: function() {
|
124
140
|
if (this.get('isEditing')) this.discardEditing() ;
|
125
141
|
this.displayDidChange();
|
@@ -135,54 +151,94 @@ SC.ListItemView = SC.View.extend(
|
|
135
151
|
@returns {void}
|
136
152
|
*/
|
137
153
|
render: function(context, firstTime) {
|
138
|
-
var content = this.get('content')
|
139
|
-
|
140
|
-
|
154
|
+
var content = this.get('content'),
|
155
|
+
del = this.displayDelegate,
|
156
|
+
level = this.get('outlineLevel'),
|
157
|
+
indent = this.get('outlineIndent'),
|
158
|
+
key, value, working ;
|
159
|
+
|
160
|
+
// outline level wrapper
|
161
|
+
working = context.begin("div").addClass("sc-outline");
|
162
|
+
if (level>=0 && indent>0) working.addStyle("left", indent*(level+1));
|
163
|
+
|
164
|
+
// handle disclosure triangle
|
165
|
+
value = this.get('disclosureState');
|
166
|
+
if (value !== SC.LEAF_NODE) {
|
167
|
+
this.renderDisclosure(working, value);
|
168
|
+
context.addClass('has-disclosure');
|
169
|
+
}
|
170
|
+
|
141
171
|
|
142
172
|
// handle checkbox
|
143
|
-
key = this.getDelegateProperty(
|
173
|
+
key = this.getDelegateProperty('contentCheckboxKey', del) ;
|
144
174
|
if (key) {
|
145
175
|
value = content ? (content.get ? content.get(key) : content[key]) : NO ;
|
146
|
-
this.renderCheckbox(
|
176
|
+
this.renderCheckbox(working, value);
|
147
177
|
context.addClass('has-checkbox');
|
148
178
|
}
|
149
179
|
|
150
180
|
// handle icon
|
151
|
-
if (this.getDelegateProperty(
|
152
|
-
key = this.getDelegateProperty(
|
181
|
+
if (this.getDelegateProperty('hasContentIcon', del)) {
|
182
|
+
key = this.getDelegateProperty('contentIconKey', del) ;
|
153
183
|
value = (key && content) ? (content.get ? content.get(key) : content[key]) : null ;
|
154
184
|
|
155
|
-
this.renderIcon(
|
185
|
+
this.renderIcon(working, value);
|
156
186
|
context.addClass('has-icon');
|
157
187
|
}
|
158
188
|
|
159
189
|
// handle label -- always invoke
|
160
|
-
key = this.getDelegateProperty(
|
190
|
+
key = this.getDelegateProperty('contentValueKey', del) ;
|
161
191
|
value = (key && content) ? (content.get ? content.get(key) : content[key]) : content ;
|
162
192
|
if (value && SC.typeOf(value) !== SC.T_STRING) value = value.toString();
|
163
193
|
if (this.get('escapeHTML')) value = SC.RenderContext.escapeHTML(value);
|
164
|
-
this.renderLabel(
|
194
|
+
this.renderLabel(working, value);
|
165
195
|
|
166
196
|
// handle unread count
|
167
|
-
key = this.getDelegateProperty(
|
197
|
+
key = this.getDelegateProperty('contentUnreadCountKey', del) ;
|
168
198
|
value = (key && content) ? (content.get ? content.get(key) : content[key]) : null ;
|
169
|
-
if (!SC.none(value) && (value !== 0)) this.renderCount(
|
199
|
+
if (!SC.none(value) && (value !== 0)) this.renderCount(working, value) ;
|
170
200
|
|
171
201
|
// handle action
|
172
|
-
key = this.getDelegateProperty(
|
202
|
+
key = this.getDelegateProperty('listItemActionProperty', del) ;
|
173
203
|
value = (key && content) ? (content.get ? content.get(key) : content[key]) : null ;
|
174
204
|
if (value) {
|
175
|
-
this.renderAction(
|
205
|
+
this.renderAction(working, value);
|
176
206
|
context.addClass('has-action');
|
177
207
|
}
|
178
208
|
|
179
209
|
// handle branch
|
180
|
-
if (this.getDelegateProperty(
|
181
|
-
key = this.getDelegateProperty(
|
210
|
+
if (this.getDelegateProperty('hasContentBranch', del)) {
|
211
|
+
key = this.getDelegateProperty('contentIsBranchKey', del);
|
182
212
|
value = (key && content) ? (content.get ? content.get(key) : content[key]) : NO ;
|
183
|
-
this.renderBranch(
|
213
|
+
this.renderBranch(working, value);
|
184
214
|
context.addClass('has-branch');
|
185
215
|
}
|
216
|
+
|
217
|
+
context = working.end();
|
218
|
+
},
|
219
|
+
|
220
|
+
/**
|
221
|
+
Adds a disclosure triangle with the appropriate display to the content.
|
222
|
+
This method will only be called if the disclosure state of the view is
|
223
|
+
something other than SC.LEAF_NODE.
|
224
|
+
|
225
|
+
@param {SC.RenderContext} context the render context
|
226
|
+
@param {Boolean} state YES, NO or SC.MIXED_STATE
|
227
|
+
@returns {void}
|
228
|
+
*/
|
229
|
+
renderDisclosure: function(context, state) {
|
230
|
+
var key = (state === SC.BRANCH_OPEN) ? "open" : "closed",
|
231
|
+
cache = this._scli_disclosureHtml,
|
232
|
+
html, tmp;
|
233
|
+
|
234
|
+
if (!cache) cache = this.constructor.prototype._scli_disclosureHtml = {};
|
235
|
+
html = cache[key];
|
236
|
+
|
237
|
+
if (!html) {
|
238
|
+
html = cache[key] = '<img src="%@" class="disclosure button %@" />'.fmt(SC.BLANK_IMAGE_URL, key);
|
239
|
+
}
|
240
|
+
|
241
|
+
context.push(html);
|
186
242
|
},
|
187
243
|
|
188
244
|
/**
|
@@ -195,20 +251,31 @@ SC.ListItemView = SC.View.extend(
|
|
195
251
|
@returns {void}
|
196
252
|
*/
|
197
253
|
renderCheckbox: function(context, state) {
|
198
|
-
context = context.begin('a').attr('href', 'javascript:;')
|
199
|
-
.classNames(SC.CheckboxView.prototype.classNames);
|
200
254
|
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
255
|
+
var key = (state === SC.MIXED_STATE) ? "mixed" : state ? "sel" : "nosel",
|
256
|
+
cache = this._scli_checkboxHtml,
|
257
|
+
html, tmp;
|
258
|
+
|
259
|
+
if (!cache) cache = this.constructor.prototype._scli_checkboxHtml = {};
|
260
|
+
html = cache[key];
|
205
261
|
|
206
|
-
|
207
|
-
|
208
|
-
|
262
|
+
if (!html) {
|
263
|
+
tmp = SC.RenderContext('a').attr('href', 'javascript:;')
|
264
|
+
.classNames(SC.CheckboxView.prototype.classNames);
|
265
|
+
|
266
|
+
// set state on html
|
267
|
+
if (state === SC.MIXED_STATE) tmp.addClass('mixed');
|
268
|
+
else tmp.setClass('sel', state);
|
269
|
+
|
270
|
+
// now add inner content. note we do not add a real checkbox because
|
271
|
+
// we don't want to have to setup a change observer on it.
|
272
|
+
tmp.push('<img src="', SC.BLANK_IMAGE_URL, '" class="button" />');
|
273
|
+
|
274
|
+
// apply edit
|
275
|
+
html = cache[key] = tmp.join();
|
276
|
+
}
|
209
277
|
|
210
|
-
|
211
|
-
context.end();
|
278
|
+
context.push(html);
|
212
279
|
},
|
213
280
|
|
214
281
|
/**
|
@@ -324,10 +391,20 @@ SC.ListItemView = SC.View.extend(
|
|
324
391
|
*/
|
325
392
|
_isInsideCheckbox: function(evt) {
|
326
393
|
var del = this.displayDelegate ;
|
327
|
-
var checkboxKey = this.getDelegateProperty(
|
394
|
+
var checkboxKey = this.getDelegateProperty('contentCheckboxKey', del) ;
|
328
395
|
return checkboxKey && this._isInsideElementWithClassName('sc-checkbox-view', evt);
|
329
396
|
},
|
330
397
|
|
398
|
+
/** @private
|
399
|
+
Returns YES if the list item has a disclosure triangle and the event
|
400
|
+
occurred inside of it.
|
401
|
+
*/
|
402
|
+
_isInsideDisclosure: function(evt) {
|
403
|
+
if (this.get('disclosureSate')===SC.LEAF_NODE) return NO;
|
404
|
+
return this._isInsideElementWithClassName('disclosure', evt);
|
405
|
+
},
|
406
|
+
|
407
|
+
|
331
408
|
/** @private
|
332
409
|
mouseDown is handled only for clicks on the checkbox view or or action
|
333
410
|
button.
|
@@ -339,43 +416,81 @@ SC.ListItemView = SC.View.extend(
|
|
339
416
|
this._isMouseDownOnCheckbox = YES ;
|
340
417
|
this._isMouseInsideCheckbox = YES ;
|
341
418
|
return YES ; // listItem should handle this event
|
342
|
-
|
419
|
+
|
420
|
+
} else if (this._isInsideDisclosure(evt)) {
|
421
|
+
this._addDisclosureActiveState();
|
422
|
+
this._isMouseDownOnDisclosure = YES;
|
423
|
+
this._isMouseInsideDisclosure = YES ;
|
424
|
+
return YES;
|
425
|
+
|
426
|
+
}
|
427
|
+
|
343
428
|
return NO ; // let the collection view handle this event
|
344
429
|
},
|
345
430
|
|
346
431
|
mouseUp: function(evt) {
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
432
|
+
var ret= NO, del, checkboxKey, content, state, idx, set;
|
433
|
+
|
434
|
+
// if mouse was down in checkbox -- then handle mouse up, otherwise
|
435
|
+
// allow parent view to handle event.
|
436
|
+
if (this._isMouseDownOnCheckbox) {
|
351
437
|
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
438
|
+
// update only if mouse inside on mouse up...
|
439
|
+
if (this._isInsideCheckbox(evt)) {
|
440
|
+
del = this.displayDelegate ;
|
441
|
+
checkboxKey = this.getDelegateProperty('contentCheckboxKey', del);
|
442
|
+
content = this.get('content') ;
|
443
|
+
if (content && content.get) {
|
444
|
+
var value = content.get(checkboxKey) ;
|
445
|
+
value = (value === SC.MIXED_STATE) ? YES : !value ;
|
446
|
+
content.set(checkboxKey, value) ; // update content
|
447
|
+
this.displayDidChange(); // repaint view...
|
448
|
+
}
|
449
|
+
}
|
450
|
+
|
451
|
+
this._removeCheckboxActiveState() ;
|
452
|
+
ret = YES ;
|
453
|
+
|
454
|
+
// if mouse as down on disclosure -- handle mosue up. otherwise pass on
|
455
|
+
// to parent.
|
456
|
+
} else if (this._isMouseDownOnDisclosure) {
|
457
|
+
if (this._isInsideDisclosure(evt)) {
|
458
|
+
state = this.get('disclosureState');
|
459
|
+
idx = this.get('contentIndex');
|
460
|
+
set = (!SC.none(idx)) ? SC.IndexSet.create(idx) : null;
|
461
|
+
del = this.get('displayDelegate');
|
462
|
+
|
463
|
+
if (state === SC.BRANCH_OPEN) {
|
464
|
+
if (set && del && del.collapse) del.collapse(set);
|
465
|
+
else this.set('disclosureState', SC.BRANCH_CLOSED);
|
466
|
+
this.displayDidChange();
|
467
|
+
|
468
|
+
} else if (state === SC.BRANCH_CLOSED) {
|
469
|
+
if (set && del && del.expand) del.expand(set);
|
470
|
+
else this.set('disclosureState', SC.BRANCH_OPEN);
|
471
|
+
this.displayDidChange();
|
472
|
+
}
|
473
|
+
}
|
364
474
|
|
365
|
-
|
366
|
-
|
367
|
-
|
475
|
+
this._removeDisclosureActiveState();
|
476
|
+
ret = YES ;
|
477
|
+
}
|
368
478
|
|
369
|
-
|
370
|
-
|
371
|
-
|
479
|
+
// clear cached info
|
480
|
+
this._isMouseInsideCheckbox = this._isMouseDownOnCheckbox = NO ;
|
481
|
+
this._isMouseDownOnDisclosure = this._isMouseInsideDisclosure = NO ;
|
482
|
+
return ret ;
|
372
483
|
},
|
373
484
|
|
374
485
|
mouseExited: function(evt) {
|
375
486
|
if (this._isMouseDownOnCheckbox) {
|
376
487
|
this._removeCheckboxActiveState() ;
|
377
488
|
this._isMouseInsideCheckbox = NO ;
|
378
|
-
|
489
|
+
|
490
|
+
} else if (this._isMouseDownOnDisclosure) {
|
491
|
+
this._removeDisclosureActiveState();
|
492
|
+
this._isMouseInsideDisclosure = NO ;
|
493
|
+
}
|
379
494
|
return NO ;
|
380
495
|
},
|
381
496
|
|
@@ -383,7 +498,11 @@ SC.ListItemView = SC.View.extend(
|
|
383
498
|
if (this._isMouseDownOnCheckbox) {
|
384
499
|
this._addCheckboxActiveState() ;
|
385
500
|
this._isMouseInsideCheckbox = YES ;
|
386
|
-
|
501
|
+
|
502
|
+
} else if (this._isMouseDownOnDisclosure) {
|
503
|
+
this._addDisclosureActiveState();
|
504
|
+
this._isMouseInsideDisclosure = YES;
|
505
|
+
}
|
387
506
|
return NO ;
|
388
507
|
},
|
389
508
|
|
@@ -395,20 +514,30 @@ SC.ListItemView = SC.View.extend(
|
|
395
514
|
_removeCheckboxActiveState: function() {
|
396
515
|
this.$('.sc-checkbox-view').removeClass('active');
|
397
516
|
},
|
517
|
+
|
518
|
+
_addDisclosureActiveState: function() {
|
519
|
+
var enabled = this.get('isEnabled');
|
520
|
+
this.$('img.disclosure').setClass('active', enabled);
|
521
|
+
},
|
522
|
+
|
523
|
+
_removeDisclosureActiveState: function() {
|
524
|
+
this.$('img.disclosure').removeClass('active');
|
525
|
+
},
|
398
526
|
|
399
527
|
/**
|
400
|
-
|
528
|
+
Returns true if a click is on the label text itself to enable editing.
|
401
529
|
|
402
|
-
|
403
|
-
|
530
|
+
Note that if you override renderLabel(), you probably need to override
|
531
|
+
this as well, or just $label() if you only want to control the element
|
532
|
+
returned.
|
404
533
|
|
405
|
-
|
406
|
-
|
534
|
+
@param evt {Event} the mouseUp event.
|
535
|
+
@returns {Boolean} YES if the mouse was on the content element itself.
|
407
536
|
*/
|
408
537
|
contentHitTest: function(evt) {
|
409
538
|
// if not content value is returned, not much to do.
|
410
539
|
var del = this.displayDelegate ;
|
411
|
-
var labelKey = this.getDelegateProperty(
|
540
|
+
var labelKey = this.getDelegateProperty('contentValueKey', del) ;
|
412
541
|
if (!labelKey) return NO ;
|
413
542
|
|
414
543
|
// get the element to check for.
|
@@ -429,17 +558,24 @@ SC.ListItemView = SC.View.extend(
|
|
429
558
|
|
430
559
|
var content = this.get('content') ;
|
431
560
|
var del = this.displayDelegate ;
|
432
|
-
var labelKey = this.getDelegateProperty(
|
561
|
+
var labelKey = this.getDelegateProperty('contentValueKey', del) ;
|
433
562
|
var v = (labelKey && content && content.get) ? content.get(labelKey) : null ;
|
434
563
|
|
435
|
-
var f
|
564
|
+
var f= this.computeFrameWithParentFrame(null);
|
565
|
+
var parent = this.get('parentView');
|
566
|
+
var pf = parent.get('frame');
|
567
|
+
|
436
568
|
var el = this.$label() ;
|
437
|
-
|
569
|
+
var offset = SC.viewportOffset(el[0]);
|
570
|
+
if (!el || el.get('length')===0) return NO ;
|
438
571
|
|
439
572
|
// if the label has a large line height, try to adjust it to something
|
440
573
|
// more reasonable so that it looks right when we show the popup editor.
|
441
574
|
var oldLineHeight = el.css('lineHeight');
|
442
575
|
var fontSize = el.css('fontSize');
|
576
|
+
var top = this.$().css('top');
|
577
|
+
if(top) top = parseInt(top.substring(0,top.length-2),00);
|
578
|
+
else top =0;
|
443
579
|
var lineHeight = oldLineHeight;
|
444
580
|
var lineHeightShift = 0;
|
445
581
|
|
@@ -451,17 +587,18 @@ SC.ListItemView = SC.View.extend(
|
|
451
587
|
} else oldLineHeight = null ;
|
452
588
|
}
|
453
589
|
|
454
|
-
f.x
|
455
|
-
f.y
|
456
|
-
f.height = el.offsetHeight ;
|
457
|
-
f.width = (f.width - 30 - el.offsetLeft) ;
|
458
|
-
f = this.convertFrameToView(f, null) ;
|
590
|
+
f.x = offset.x;
|
591
|
+
f.y = offset.y+top + lineHeightShift ;
|
592
|
+
f.height = el[0].offsetHeight ;
|
593
|
+
f.width = (f.width - 30 - el[0].offsetLeft) ;
|
459
594
|
|
460
595
|
var ret = SC.InlineTextFieldView.beginEditing({
|
461
596
|
frame: f,
|
462
597
|
exampleElement: el,
|
463
598
|
delegate: this,
|
464
|
-
value: v
|
599
|
+
value: v,
|
600
|
+
multiline: NO,
|
601
|
+
isCollection: YES
|
465
602
|
}) ;
|
466
603
|
|
467
604
|
// restore old line height for original item if the old line height
|
@@ -513,7 +650,7 @@ SC.ListItemView = SC.View.extend(
|
|
513
650
|
|
514
651
|
var content = this.get('content') ;
|
515
652
|
var del = this.displayDelegate ;
|
516
|
-
var labelKey = this.getDelegateProperty(
|
653
|
+
var labelKey = this.getDelegateProperty('contentValueKey', del) ;
|
517
654
|
if (labelKey && content && content.set) {
|
518
655
|
content.set(labelKey, finalValue) ;
|
519
656
|
}
|
@@ -4,21 +4,36 @@
|
|
4
4
|
// Portions ©2008-2009 Apple, Inc. All rights reserved.
|
5
5
|
// License: Licened under MIT license (see license.js)
|
6
6
|
// ==========================================================================
|
7
|
-
sc_require('views/button');
|
8
|
-
sc_require('views/separator');
|
7
|
+
sc_require('views/button') ;
|
8
|
+
sc_require('views/separator') ;
|
9
|
+
|
10
|
+
// Constants
|
11
|
+
SC.BENCHMARK_MENU_ITEM_RENDER = YES ;
|
9
12
|
|
10
13
|
/**
|
11
14
|
@class SC.MenuItemView
|
12
15
|
@extends SC.ButtonView
|
13
16
|
@since SproutCore 1.0
|
14
17
|
*/
|
15
|
-
SC.MenuItemView = SC.ButtonView.extend(
|
18
|
+
SC.MenuItemView = SC.ButtonView.extend( SC.ContentDisplay,
|
16
19
|
/** @scope SC.MenuItemView.prototype */{
|
20
|
+
|
21
|
+
|
17
22
|
classNames: ['sc-menu-item'],
|
18
23
|
tagName: 'div',
|
19
|
-
|
20
|
-
|
21
|
-
|
24
|
+
|
25
|
+
/**
|
26
|
+
This provides the parentPane for the current MenuItemView
|
27
|
+
*/
|
28
|
+
parentPane: null,
|
29
|
+
|
30
|
+
/**
|
31
|
+
@private
|
32
|
+
@property
|
33
|
+
@type {Boolean}
|
34
|
+
*/
|
35
|
+
acceptsFirstResponder: YES,
|
36
|
+
|
22
37
|
// ..........................................................
|
23
38
|
// KEY PROPERTIES
|
24
39
|
//
|
@@ -29,21 +44,6 @@ SC.MenuItemView = SC.ButtonView.extend(
|
|
29
44
|
*/
|
30
45
|
content: null,
|
31
46
|
|
32
|
-
/**
|
33
|
-
The cached Content to verify that the content has changed or not
|
34
|
-
|
35
|
-
@type Object
|
36
|
-
*/
|
37
|
-
cachedContent:null,
|
38
|
-
|
39
|
-
/**
|
40
|
-
This returns true if the child view is a menu list view.
|
41
|
-
This property can be over written to have other child views as well.
|
42
|
-
|
43
|
-
@type View
|
44
|
-
*/
|
45
|
-
childView: null,
|
46
|
-
|
47
47
|
/**
|
48
48
|
This returns true if the child view is a menu list view.
|
49
49
|
This property can be over written to have other child views as well.
|
@@ -53,16 +53,17 @@ SC.MenuItemView = SC.ButtonView.extend(
|
|
53
53
|
isSubMenuViewVisible: null,
|
54
54
|
|
55
55
|
/**
|
56
|
-
This will return true if the menu item is a
|
56
|
+
This will return true if the menu item is a separator.
|
57
57
|
|
58
58
|
@type Boolean
|
59
59
|
*/
|
60
|
-
|
60
|
+
isSeparator: NO,
|
61
61
|
|
62
62
|
/**
|
63
63
|
(displayDelegate) The name of the property used for label itself
|
64
64
|
If null, then the content object itself will be used.
|
65
|
-
|
65
|
+
|
66
|
+
@readOnly
|
66
67
|
@type String
|
67
68
|
*/
|
68
69
|
contentValueKey: null,
|
@@ -70,9 +71,10 @@ SC.MenuItemView = SC.ButtonView.extend(
|
|
70
71
|
/**
|
71
72
|
(displayDelegate) The name of the property used to determine if the menu
|
72
73
|
item is a branch or leaf (i.e. if the branch arow should be displayed to
|
73
|
-
|
74
|
+
the right edge.)
|
74
75
|
If this is null, then the branch arrow will be collapsed.
|
75
76
|
|
77
|
+
@readOnly
|
76
78
|
@type String
|
77
79
|
*/
|
78
80
|
contentIsBranchKey: null,
|
@@ -80,6 +82,7 @@ SC.MenuItemView = SC.ButtonView.extend(
|
|
80
82
|
/**
|
81
83
|
The name of the property which will set the image for the short cut keys
|
82
84
|
|
85
|
+
@readOnly
|
83
86
|
@type String
|
84
87
|
*/
|
85
88
|
shortCutKey: null,
|
@@ -87,29 +90,32 @@ SC.MenuItemView = SC.ButtonView.extend(
|
|
87
90
|
/**
|
88
91
|
The name of the property which will set the icon image for the menu item.
|
89
92
|
|
93
|
+
@readOnly
|
90
94
|
@type String
|
91
95
|
*/
|
92
96
|
contentIconKey: null,
|
93
97
|
|
94
|
-
|
98
|
+
/**
|
95
99
|
The name of the property which will set the checkbox image for the menu
|
96
100
|
item.
|
97
101
|
|
102
|
+
@readOnly
|
98
103
|
@type String
|
99
104
|
*/
|
100
105
|
contentCheckboxKey: null,
|
101
106
|
|
102
|
-
|
107
|
+
/**
|
103
108
|
The name of the property which will set the checkbox image for the menu
|
104
109
|
item.
|
105
110
|
|
111
|
+
@readOnly
|
106
112
|
@type String
|
107
113
|
*/
|
108
114
|
contentActionKey: null,
|
109
115
|
|
110
116
|
/**
|
111
117
|
The name of the property which will set the checkbox state
|
112
|
-
|
118
|
+
|
113
119
|
@type Boolean
|
114
120
|
*/
|
115
121
|
isCheckboxChecked: NO,
|
@@ -141,18 +147,31 @@ SC.MenuItemView = SC.ButtonView.extend(
|
|
141
147
|
Sub Menu Items
|
142
148
|
If this is null then there is no branching
|
143
149
|
|
144
|
-
@type
|
150
|
+
@type MenuPane
|
151
|
+
*/
|
152
|
+
subMenu: null,
|
153
|
+
|
154
|
+
/**
|
155
|
+
This property specifies whether this menu item is currently in focus
|
156
|
+
|
157
|
+
@type Boolean
|
145
158
|
*/
|
146
|
-
|
159
|
+
hasMouseExited: NO,
|
160
|
+
|
161
|
+
/**
|
162
|
+
Anchor for the Parent Menu of which the Menu Item is part of
|
163
|
+
|
164
|
+
@type ButtonView/MenuItemView
|
165
|
+
*/
|
166
|
+
anchor: null,
|
147
167
|
|
148
|
-
hasMouseExited:NO,
|
149
168
|
/**
|
150
169
|
This will hold the properties that can trigger a change in the diplay
|
151
170
|
*/
|
152
171
|
displayProperties: ['contentValueKey', 'contentIconKey', 'shortCutKey',
|
153
172
|
'contentIsBranchKey','isCheckboxChecked','itemHeight',
|
154
|
-
'subMenu'],
|
155
|
-
|
173
|
+
'subMenu','isEnabled','content'],
|
174
|
+
contentDisplayProperties: 'title value icon separator action checkbox shortcut branchItem subMenu'.w(),
|
156
175
|
/**
|
157
176
|
Fills the passed html-array with strings that can be joined to form the
|
158
177
|
innerHTML of the receiver element. Also populates an array of classNames
|
@@ -163,86 +182,81 @@ SC.MenuItemView = SC.ButtonView.extend(
|
|
163
182
|
@returns {void}
|
164
183
|
*/
|
165
184
|
render: function(context, firstTime) {
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
SC.Benchmark.start(bkey);
|
185
|
+
var bkey ;
|
186
|
+
if (SC.BENCHMARK_MENU_ITEM_RENDER) {
|
187
|
+
bkey = '%@.render'.fmt(this) ;
|
188
|
+
SC.Benchmark.start(bkey) ;
|
170
189
|
}
|
171
|
-
|
172
190
|
var content = this.get('content') ;
|
173
|
-
if (this.cachedContent && this.cachedContent == content) return;
|
174
|
-
this.cachedContent = content ;
|
175
|
-
|
176
191
|
var del = this.displayDelegate ;
|
177
|
-
var key,
|
192
|
+
var key, val ;
|
178
193
|
var ic ;
|
179
|
-
var menu = this.parentMenu();
|
194
|
+
var menu = this.parentMenu() ;
|
180
195
|
var itemWidth = this.get('itemWidth') || menu.layout.width ;
|
181
|
-
var itemHeight = this.get('itemHeight') ||
|
182
|
-
this.set('itemWidth',itemWidth);
|
183
|
-
this.set('itemHeight',itemHeight);
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
ic
|
193
|
-
|
196
|
+
var itemHeight = this.get('itemHeight') || 20 ;
|
197
|
+
this.set('itemWidth',itemWidth) ;
|
198
|
+
this.set('itemHeight',itemHeight) ;
|
199
|
+
|
200
|
+
if(!this.get('isEnabled')) context.addClass('disabled') ;
|
201
|
+
|
202
|
+
//handle separator
|
203
|
+
ic = context.begin('a').attr('href', 'javascript: ;') ;
|
204
|
+
key = this.getDelegateProperty('isSeparatorKey', del) ;
|
205
|
+
val = (key && content) ? (content.get ? content.get(key) : content[key]) : null ;
|
206
|
+
if (val) {
|
207
|
+
//ic.begin('span').addClass('separator').end() ;
|
208
|
+
ic.push("<span class='separator'></span>") ;
|
194
209
|
} else {
|
195
|
-
//handle checkbox
|
196
|
-
key = this.getDelegateProperty(
|
210
|
+
// handle checkbox
|
211
|
+
key = this.getDelegateProperty('contentCheckboxKey', del) ;
|
197
212
|
if (key) {
|
198
|
-
|
199
|
-
if (
|
200
|
-
|
213
|
+
val = content ? (content.get ? content.get(key) : content[key]) : NO ;
|
214
|
+
if (val) {
|
215
|
+
ic.begin('div').addClass('checkbox').end() ;
|
201
216
|
}
|
202
217
|
}
|
203
218
|
|
204
219
|
// handle image -- always invoke
|
205
|
-
key = this.getDelegateProperty(
|
206
|
-
|
207
|
-
if(
|
208
|
-
if(
|
220
|
+
key = this.getDelegateProperty('contentIconKey', del) ;
|
221
|
+
val = (key && content) ? (content.get ? content.get(key) : content[key]) : null ;
|
222
|
+
if(val && SC.typeOf(val) !== SC.T_STRING) val = val.toString() ;
|
223
|
+
if(val) this.renderImage(ic, val) ;
|
209
224
|
|
210
225
|
// handle label -- always invoke
|
211
|
-
key = this.getDelegateProperty(
|
212
|
-
|
213
|
-
if (
|
214
|
-
this.renderLabel(ic,
|
226
|
+
key = this.getDelegateProperty('contentValueKey', del) ;
|
227
|
+
val = (key && content) ? (content.get ? content.get(key) : content[key]) : content ;
|
228
|
+
if (val && SC.typeOf(val) !== SC.T_STRING) val = val.toString() ;
|
229
|
+
this.renderLabel(ic, val||'') ;
|
215
230
|
|
216
231
|
// handle branch
|
217
|
-
key = this.getDelegateProperty(
|
218
|
-
|
219
|
-
if (
|
220
|
-
this.renderBranch(ic,
|
232
|
+
key = this.getDelegateProperty('contentIsBranchKey', del) ;
|
233
|
+
val = (key && content) ? (content.get ? content.get(key) : content[key]) : NO ;
|
234
|
+
if (val) {
|
235
|
+
this.renderBranch(ic, val) ;
|
221
236
|
ic.addClass('has-branch') ;
|
222
237
|
} else { // handle action
|
223
238
|
|
224
|
-
key = this.getDelegateProperty(
|
225
|
-
|
226
|
-
if (
|
239
|
+
key = this.getDelegateProperty('action', del) ;
|
240
|
+
val = (key && content) ? (content.get ? content.get(key) : content[key]) : null ;
|
241
|
+
if (val && isNaN(val)) this.set('action', val) ;
|
227
242
|
|
228
|
-
key = this.getDelegateProperty(
|
229
|
-
|
230
|
-
if (
|
243
|
+
key = this.getDelegateProperty('target', del) ;
|
244
|
+
val = (key && content) ? (content.get ? content.get(key) : content[key]) : null ;
|
245
|
+
if (val && isNaN(val)) this.set('target', val) ;
|
231
246
|
|
232
247
|
// handle short cut keys
|
233
|
-
if (this.getDelegateProperty(
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
this.renderShortcut(ic, value) ;
|
248
|
+
if (this.getDelegateProperty('shortCutKey', del)) {
|
249
|
+
key = this.getDelegateProperty('shortCutKey', del) ;
|
250
|
+
val = (key && content) ? (content.get ? content.get(key) : content[key]) : null ;
|
251
|
+
if (val) {
|
252
|
+
this.renderShortcut(ic, val) ;
|
239
253
|
ic.addClass('shortcutkey') ;
|
240
254
|
}
|
241
255
|
}
|
242
256
|
}
|
243
257
|
}
|
244
|
-
ic.end();
|
245
|
-
if (SC.
|
258
|
+
ic.end() ;
|
259
|
+
if (SC.BENCHMARK_MENU_ITEM_RENDER) SC.Benchmark.end(bkey) ;
|
246
260
|
},
|
247
261
|
|
248
262
|
/**
|
@@ -250,13 +264,13 @@ SC.MenuItemView = SC.ButtonView.extend(
|
|
250
264
|
return your own custom HTML
|
251
265
|
|
252
266
|
@param {SC.RenderContext} context the render context
|
253
|
-
@param {
|
267
|
+
@param {String} the source path of the image
|
254
268
|
@returns {void}
|
255
269
|
*/
|
256
270
|
renderImage: function(context, image) {
|
257
271
|
// get a class name and url to include if relevant
|
258
272
|
|
259
|
-
var url
|
273
|
+
var url, className ;
|
260
274
|
if (image && SC.ImageView.valueIsUrl(image)) {
|
261
275
|
url = image ;
|
262
276
|
className = '' ;
|
@@ -268,6 +282,15 @@ SC.MenuItemView = SC.ButtonView.extend(
|
|
268
282
|
context.begin('img').addClass('image').addClass(className).attr('src', url).end() ;
|
269
283
|
},
|
270
284
|
|
285
|
+
/**
|
286
|
+
Generates the label used to represent the menu item. override this to
|
287
|
+
return your own custom HTML
|
288
|
+
|
289
|
+
@param {SC.RenderContext} context the render context
|
290
|
+
@param {String} menu item name
|
291
|
+
@returns {void}
|
292
|
+
*/
|
293
|
+
|
271
294
|
renderLabel: function(context, label) {
|
272
295
|
context.push("<span class='value'>"+label+"</span>") ;
|
273
296
|
},
|
@@ -293,27 +316,120 @@ SC.MenuItemView = SC.ButtonView.extend(
|
|
293
316
|
return your own custom HTML
|
294
317
|
|
295
318
|
@param {SC.RenderContext} context the render context
|
296
|
-
@param {
|
319
|
+
@param {String} the shortcut key string to be displayed with menu item name
|
297
320
|
@returns {void}
|
298
321
|
*/
|
299
322
|
renderShortcut: function(context, shortcut) {
|
300
|
-
context.push('<span class = "
|
323
|
+
context.push('<span class = "shortcut">' + shortcut + '</span>') ;
|
301
324
|
},
|
302
325
|
|
303
|
-
|
326
|
+
/**
|
327
|
+
This method is used to fetch the Menu Item View to which the
|
328
|
+
Parent Menu Pane is anchored
|
329
|
+
to
|
304
330
|
|
331
|
+
@param {}
|
332
|
+
@returns MenuPane
|
333
|
+
*/
|
305
334
|
getAnchor: function() {
|
306
|
-
var anchor = this.get('anchor');
|
307
|
-
if(anchor.kindOf(SC.MenuItemView)) return anchor;
|
308
|
-
return null;
|
335
|
+
var anchor = this.get('anchor') ;
|
336
|
+
if(anchor && anchor.kindOf(SC.MenuItemView)) return anchor ;
|
337
|
+
return null ;
|
338
|
+
},
|
339
|
+
|
340
|
+
isCurrent: NO,
|
341
|
+
|
342
|
+
/**
|
343
|
+
This method checks if the menu item is a separator.
|
344
|
+
|
345
|
+
@param {}
|
346
|
+
@returns Boolean
|
347
|
+
*/
|
348
|
+
isSeparator: function() {
|
349
|
+
var content = this.get('content') ;
|
350
|
+
var del = this.displayDelegate ;
|
351
|
+
var key = this.getDelegateProperty('isSeparatorKey', del) ;
|
352
|
+
var val = (key && content) ? (content.get ? content.get(key) : content[key]) : null ;
|
353
|
+
if (val) return YES ;
|
354
|
+
return NO ;
|
355
|
+
},
|
356
|
+
|
357
|
+
/**
|
358
|
+
Checks if a menu is a sub menu, during branching.
|
359
|
+
|
360
|
+
@param {}
|
361
|
+
@returns MenuPane
|
362
|
+
*/
|
363
|
+
isSubMenuAMenuPane: function() {
|
364
|
+
var content = this.get('content') ;
|
365
|
+
var subMenu = content.get('subMenu') ;
|
366
|
+
if(subMenu && subMenu.kindOf(SC.MenuPane)) return subMenu ;
|
367
|
+
return NO ;
|
309
368
|
},
|
369
|
+
|
370
|
+
|
371
|
+
/**
|
372
|
+
This method will check whether the current Menu Item is still
|
373
|
+
selected and then create a submenu accordignly.
|
374
|
+
|
375
|
+
@param {}
|
376
|
+
@returns void
|
377
|
+
*/
|
378
|
+
branching: function() {
|
379
|
+
if(this.get('hasMouseExited')) {
|
380
|
+
this.set('hasMouseExited',NO) ;
|
381
|
+
return ;
|
382
|
+
}
|
383
|
+
this.createSubMenu() ;
|
384
|
+
},
|
385
|
+
|
386
|
+
/**
|
387
|
+
This method will remove the focus of the current selected menu item.
|
388
|
+
|
389
|
+
@param {}
|
390
|
+
*/
|
391
|
+
loseFocus: function() {
|
392
|
+
if(!this.isSubMenuAMenuPane()) {
|
393
|
+
this.set('hasMouseExited',YES) ;
|
394
|
+
this.set('isSelected',NO) ;
|
395
|
+
this.$().removeClass('focus') ;
|
396
|
+
}
|
397
|
+
},
|
398
|
+
|
399
|
+
/**
|
400
|
+
This method will create the sub Menu with the current Menu Item as anchor
|
401
|
+
|
402
|
+
@param {}
|
403
|
+
@returns void
|
404
|
+
*/
|
405
|
+
createSubMenu: function() {
|
406
|
+
var subMenu = this.isSubMenuAMenuPane() ;
|
407
|
+
if(subMenu) {
|
408
|
+
subMenu.set('anchor', this) ;
|
409
|
+
subMenu.popup(this,[0,0,0]) ;
|
410
|
+
var context = SC.RenderContext(this) ;
|
411
|
+
context = context.begin(subMenu.get('tagName')) ;
|
412
|
+
subMenu.prepareContext(context, YES) ;
|
413
|
+
context = context.end() ;
|
414
|
+
var menuItemViews = subMenu.get('menuItemViews') ;
|
415
|
+
if(menuItemViews && menuItemViews.length>0) {
|
416
|
+
subMenu.set('currentSelectedMenuItem',menuItemViews[0]) ;
|
417
|
+
subMenu.set('keyPane',YES) ;
|
418
|
+
}
|
419
|
+
}
|
420
|
+
},
|
421
|
+
|
422
|
+
parentMenu: function() {
|
423
|
+
return this.get('parentPane') ;
|
424
|
+
},
|
425
|
+
|
310
426
|
//..........................................
|
311
427
|
//Mouse Events Handling
|
312
428
|
//..........................................
|
313
429
|
|
314
430
|
mouseUp: function(evt) {
|
315
|
-
if (!this.isEnabled) return YES ;
|
316
|
-
this.set('hasMouseExited',NO);
|
431
|
+
if (!this.get('isEnabled')) return YES ;
|
432
|
+
this.set('hasMouseExited',NO) ;
|
317
433
|
this.isSelected = YES ;
|
318
434
|
var key = this.get('contentCheckboxKey') ;
|
319
435
|
var content = this.get('content') ;
|
@@ -326,112 +442,146 @@ SC.MenuItemView = SC.ButtonView.extend(
|
|
326
442
|
content.set(key, YES) ;
|
327
443
|
}
|
328
444
|
}
|
329
|
-
this._action(evt);
|
330
|
-
var anchor = this.getAnchor();
|
331
|
-
if(anchor) anchor.mouseUp(evt);
|
332
|
-
|
333
|
-
|
445
|
+
this._action(evt) ;
|
446
|
+
var anchor = this.getAnchor() ;
|
447
|
+
if(anchor) anchor.mouseUp(evt) ;
|
448
|
+
else {
|
449
|
+
this.resignFirstResponder() ;
|
450
|
+
}
|
451
|
+
this.closeParent() ;
|
452
|
+
return YES ;
|
453
|
+
},
|
454
|
+
|
455
|
+
/** @private*/
|
456
|
+
mouseDown: function(evt) {
|
334
457
|
return YES ;
|
335
458
|
},
|
336
459
|
|
337
|
-
isCurrent: NO,
|
338
|
-
|
339
460
|
/** @private
|
340
461
|
This has been over ridden from button view to prevent calling of render
|
341
462
|
method (When isActive property is changed).
|
463
|
+
Also based on whether the menu item has a sub Branch we create a sub Menu
|
464
|
+
|
465
|
+
@returns Boolean
|
342
466
|
*/
|
343
467
|
mouseEntered: function(evt) {
|
344
|
-
if (!this.isEnabled) return YES ;
|
345
|
-
this.becomeFirstResponder();
|
468
|
+
if (!this.get('isEnabled') && !this.isSeparator()) return YES ;
|
346
469
|
this.isSelected = YES ;
|
347
470
|
|
348
471
|
var parentPane = this.parentMenu() ;
|
349
|
-
if(parentPane) parentPane.set('
|
472
|
+
if(parentPane) parentPane.set('currentSelectedMenuItem', this) ;
|
350
473
|
|
351
474
|
var key = this.get('contentIsBranchKey') ;
|
352
|
-
if(key){
|
353
|
-
var content = this.get('content');
|
354
|
-
var
|
355
|
-
if(
|
475
|
+
if(key) {
|
476
|
+
var content = this.get('content') ;
|
477
|
+
var val = (key && content) ? (content.get ? content.get(key) : content[key]) : NO ;
|
478
|
+
if(val) this.invokeLater(this.branching(),100) ;
|
356
479
|
}
|
357
|
-
|
358
|
-
return YES;
|
359
|
-
},
|
360
|
-
|
361
|
-
isSubMenuAMenuPane: function(subMenu) {
|
362
|
-
if(subMenu.kindOf(SC.MenuPane)) return YES;
|
363
|
-
return NO;
|
364
|
-
},
|
365
|
-
|
366
|
-
hasSubMenu: function(){
|
367
|
-
var content = this.get('content') ;
|
368
|
-
var subMenu = content.get('subMenu') ;
|
369
|
-
if(subMenu) return subMenu;
|
370
|
-
return null;
|
371
|
-
},
|
372
|
-
|
373
|
-
branching: function() {
|
374
|
-
if(this.get('hasMouseExited')) {
|
375
|
-
this.set('hasMouseExited',NO);
|
376
|
-
return;
|
377
|
-
}
|
378
|
-
var subMenu = this.hasSubMenu();
|
379
|
-
if(subMenu) {
|
380
|
-
subMenu.set('anchor', this);
|
381
|
-
if(this.isSubMenuAMenuPane(subMenu)) {
|
382
|
-
subMenu.popup(this,[0,0,0]) ;
|
383
|
-
var context = SC.RenderContext(this) ;
|
384
|
-
context = context.begin(subMenu.get('tagName')) ;
|
385
|
-
subMenu.prepareContext(context, YES) ;
|
386
|
-
context = context.end() ;
|
387
|
-
}
|
388
|
-
}
|
389
|
-
},
|
390
|
-
|
391
|
-
parentMenu: function() {
|
392
|
-
return this.get('parentPane');
|
480
|
+
return YES ;
|
393
481
|
},
|
394
482
|
|
483
|
+
/** @private
|
484
|
+
Set the focus based on whether the current Menu item is selected or not.
|
485
|
+
|
486
|
+
@returns Boolean
|
487
|
+
*/
|
395
488
|
mouseExited: function(evt) {
|
396
|
-
this.loseFocus();
|
489
|
+
this.loseFocus() ;
|
490
|
+
var parentMenu = this.parentMenu() ;
|
491
|
+
if(parentMenu) {
|
492
|
+
parentMenu.set('previousSelectedMenuItem', this) ;
|
493
|
+
this.resignFirstResponder() ;
|
494
|
+
}
|
397
495
|
return YES ;
|
398
496
|
},
|
399
|
-
|
400
|
-
mouseDown: function(evt) {
|
401
|
-
return YES;
|
402
|
-
},
|
403
497
|
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
this.set('isSelected',NO) ;
|
408
|
-
var menu = this.parentMenu();
|
409
|
-
if(menu) menu.set('currentItemSelected', null) ;
|
410
|
-
},
|
498
|
+
|
499
|
+
/** @private
|
500
|
+
Call the moveUp function on the parent Menu
|
411
501
|
|
502
|
+
@returns Boolean
|
503
|
+
*/
|
412
504
|
moveUp: function(sender,evt) {
|
413
|
-
var menu = this.parentMenu();
|
505
|
+
var menu = this.parentMenu() ;
|
414
506
|
if(menu) {
|
415
|
-
menu.moveUp(this);
|
507
|
+
menu.moveUp(this) ;
|
416
508
|
}
|
417
|
-
return YES;
|
509
|
+
return YES ;
|
418
510
|
},
|
419
511
|
|
512
|
+
/** @private
|
513
|
+
Call the moveDown function on the parent Menu
|
514
|
+
|
515
|
+
@returns Boolean
|
516
|
+
*/
|
420
517
|
moveDown: function(sender,evt) {
|
421
|
-
var menu = this.parentMenu();
|
518
|
+
var menu = this.parentMenu() ;
|
422
519
|
if(menu) {
|
423
|
-
menu.moveDown(this);
|
520
|
+
menu.moveDown(this) ;
|
424
521
|
}
|
425
|
-
return YES;
|
522
|
+
return YES ;
|
523
|
+
},
|
524
|
+
|
525
|
+
/** @private
|
526
|
+
Call the function to create a branch
|
527
|
+
|
528
|
+
@returns Boolean
|
529
|
+
*/
|
530
|
+
moveRight: function(sender,evt) {
|
531
|
+
this.createSubMenu() ;
|
532
|
+
return YES ;
|
426
533
|
},
|
427
534
|
|
535
|
+
/** @private*/
|
428
536
|
keyDown: function(evt) {
|
429
|
-
// console.log('keyDown called on %@'.fmt(this));
|
430
537
|
return this.interpretKeyEvents(evt) ;
|
431
538
|
},
|
432
539
|
|
540
|
+
/** @private*/
|
433
541
|
keyUp: function(evt) {
|
434
|
-
return YES;
|
435
|
-
}
|
542
|
+
return YES ;
|
543
|
+
},
|
544
|
+
|
545
|
+
/** @private*/
|
546
|
+
cancel: function(evt) {
|
547
|
+
this.loseFocus() ;
|
548
|
+
return YES ;
|
549
|
+
},
|
550
|
+
|
551
|
+
/** @private*/
|
552
|
+
didBecomeFirstResponder: function(responder) {
|
553
|
+
if (responder !== this) return;
|
554
|
+
if(!this.isSeparator()) this.$().addClass('focus') ;
|
555
|
+
},
|
556
|
+
|
557
|
+
/** @private*/
|
558
|
+
willLoseFirstResponder: function(responder) {
|
559
|
+
if (responder !== this) return;
|
560
|
+
this.$().removeClass('focus') ;
|
561
|
+
},
|
562
|
+
|
563
|
+
/** @private*/
|
564
|
+
insertNewline: function(sender, evt) {
|
565
|
+
this.mouseUp(evt) ;
|
566
|
+
},
|
436
567
|
|
437
|
-
|
568
|
+
/**
|
569
|
+
Close the parent Menu and remove the focus of the current Selected
|
570
|
+
Menu Item
|
571
|
+
|
572
|
+
@returns void
|
573
|
+
*/
|
574
|
+
closeParent: function() {
|
575
|
+
this.$().removeClass('focus') ;
|
576
|
+
var menu = this.parentMenu() ;
|
577
|
+
if(menu) {
|
578
|
+
menu.remove() ;
|
579
|
+
}
|
580
|
+
},
|
581
|
+
|
582
|
+
/** @private*/
|
583
|
+
clickInside: function(frame, evt) {
|
584
|
+
return SC.pointInRect({ x: evt.pageX, y: evt.pageY }, frame) ;
|
585
|
+
}
|
586
|
+
|
587
|
+
}) ;
|