sproutcore 1.8.2.1 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +2 -2
- data/lib/buildtasks/helpers/file_rule_list.rb +3 -3
- data/lib/frameworks/sproutcore/Buildfile +1 -1
- data/lib/frameworks/sproutcore/CHANGELOG.md +235 -16
- data/lib/frameworks/sproutcore/apps/media_examples/Buildfile +13 -0
- data/lib/frameworks/sproutcore/apps/media_examples/core.js +35 -0
- data/lib/frameworks/sproutcore/apps/media_examples/resources/loading.rhtml +3 -0
- data/lib/frameworks/sproutcore/apps/media_examples/resources/main_page.js +53 -0
- data/lib/frameworks/sproutcore/apps/media_examples/views/audio_view.js +100 -0
- data/lib/frameworks/sproutcore/apps/media_examples/views/camera_view.js +39 -0
- data/lib/frameworks/sproutcore/apps/media_examples/views/capabilities_view.js +116 -0
- data/lib/frameworks/sproutcore/apps/media_examples/views/microphone_view.js +40 -0
- data/lib/frameworks/sproutcore/apps/media_examples/views/video_view.js +107 -0
- data/lib/frameworks/sproutcore/apps/showcase/Buildfile +11 -0
- data/lib/frameworks/sproutcore/apps/showcase/README +15 -0
- data/lib/frameworks/sproutcore/apps/showcase/controllers/source_controller.js +15 -0
- data/lib/frameworks/sproutcore/apps/showcase/controllers/source_tree_controller.js +212 -0
- data/lib/frameworks/sproutcore/apps/showcase/core.js +170 -0
- data/lib/frameworks/sproutcore/apps/showcase/main.js +27 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/_theme.css +18 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/api.css +80 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/favicon.ico +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/alarm-clock.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/balloon-facebook.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/balloon-twitter.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/balloon.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/bullet.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/calendar-insert.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/cross.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/example-box-bg.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit-grape.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit-lime.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit-orange.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/fruit.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/glow.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/green-dot.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/grey-dot.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/logo.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/pixels.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/red-dot.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-logo.png +0 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/images/sproutcore-startup-landscape.jpg +0 -0
- data/lib/frameworks/sproutcore/apps/{test_controls → showcase}/resources/loading.rhtml +1 -1
- data/lib/frameworks/sproutcore/apps/showcase/resources/main_page.js +61 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/stylesheet.css +365 -0
- data/lib/frameworks/sproutcore/apps/showcase/resources/views_page.js +64 -0
- data/lib/frameworks/sproutcore/apps/showcase/system/views_item_content.js +59 -0
- data/lib/frameworks/sproutcore/apps/showcase/theme.js +27 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/button_views.js +55 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/checkbox_views.js +34 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/container_views.js +29 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/date_field_views.js +30 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/disclosure_views.js +22 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/grid_views.js +28 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/image_button_views.js +22 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/image_views.js +51 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/label_views.js +53 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/list_views.js +31 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/popup_button_views.js +24 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/progress_views.js +26 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/radio_views.js +30 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/scroll_views.js +40 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/segmented_views.js +90 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/select_views.js +64 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/slider_views.js +46 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/source_list_views.js +23 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/split_views.js +22 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/stacked_views.js +23 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/static_content_views.js +23 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/tab_views.js +51 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/text_field_views.js +52 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/toolbar_views.js +23 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/views_item_view.js +91 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/views_list_view.js +67 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/web_views.js +32 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/well_views.js +29 -0
- data/lib/frameworks/sproutcore/apps/showcase/views/workspace_views.js +23 -0
- data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +91 -51
- data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +93 -27
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +196 -15
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +26 -10
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +90 -92
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +69 -39
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/color.js +769 -0
- data/lib/frameworks/sproutcore/frameworks/{desktop → core_foundation}/system/key_bindings.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/req_anim_frame.js +31 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +7 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/utils.js +8 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +49 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/selection_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/ext/object_test.js +106 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/color.js +448 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +8 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/timer/invokeLater.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +90 -30
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +14 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/touch.js +113 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +64 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +20 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +58 -38
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/touch.js +32 -39
- data/lib/frameworks/sproutcore/frameworks/core_tools/models/target.js +20 -15
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +19 -15
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_record.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +16 -16
- data/lib/frameworks/sproutcore/frameworks/datastore/models/many_attribute.js +32 -32
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +53 -38
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +9 -8
- data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +26 -26
- data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +1 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +0 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +96 -8
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/datetime_recordattribute.js +22 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/data_store.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +376 -37
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +51 -53
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +108 -66
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +33 -35
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +6 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +33 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +181 -15
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +153 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +39 -18
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +6 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +139 -50
- data/lib/frameworks/sproutcore/frameworks/{foundation → desktop}/resources/button_view.css +3 -3
- data/lib/frameworks/sproutcore/frameworks/{foundation → desktop}/resources/checkbox_view.css +4 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/disclosure.css +2 -2
- data/lib/frameworks/sproutcore/frameworks/{foundation → desktop}/resources/radio_view.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/segmented.css +23 -17
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/web.css +5 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/integration/dialog.js +4 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +3 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/collection_fast_path.js +58 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/methods.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +79 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/mouse.js +13 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/drag_and_drop.js +147 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/grid/methods.js +123 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/drag_and_drop.js +150 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list_item.js +58 -44
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/methods.js +9 -80
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +54 -130
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/observers.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +64 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/methods.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +28 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/methods.js +74 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/slider/ui.js +141 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +4 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +69 -36
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +27 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +41 -25
- data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +51 -89
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +59 -34
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +59 -49
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroll.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/controllers/tree.js +4 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +14 -14
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +8 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +13 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +4 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/colors.js +21 -22
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/controllers/tree/selection_support.js +26 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/beginEditing.js +4 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/image_queue.js +68 -44
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/user_defaults.js +10 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/methods.js +0 -10
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +24 -59
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +47 -34
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/methods.js +96 -12
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +38 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +38 -50
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +6 -2
- data/lib/frameworks/sproutcore/frameworks/media/media_capabilities.js +211 -0
- data/lib/frameworks/sproutcore/frameworks/media/render_delegates/media_slider.js +77 -0
- data/lib/frameworks/sproutcore/frameworks/media/resources/playeras3.fla +0 -0
- data/lib/frameworks/sproutcore/frameworks/media/resources/video.css +129 -115
- data/lib/frameworks/sproutcore/frameworks/media/resources/videoCanvas.swf +0 -0
- data/lib/frameworks/sproutcore/frameworks/media/tests/media_capabilities.js +194 -0
- data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +56 -173
- data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +15 -18
- data/lib/frameworks/sproutcore/frameworks/media/views/media_slider.js +63 -219
- data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/media/views/simple_controls.js +4 -8
- data/lib/frameworks/sproutcore/frameworks/media/views/video.js +51 -160
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +138 -102
- data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/array.js +8 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +32 -12
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +28 -24
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +111 -12
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/compare.js +9 -7
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +8 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/enumerable/enumerable.js +160 -115
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/enhance.js +64 -19
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/object/mixin.js +83 -0
- data/lib/frameworks/sproutcore/frameworks/template_view/ext/handlebars/bind.js +3 -0
- data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/collection.js +13 -0
- data/lib/frameworks/sproutcore/frameworks/template_view/tests/views/template/handlebars.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/template_view/views/template_collection.js +5 -5
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +5 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +13 -12
- data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list.css +9 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress.css +105 -5
- data/lib/frameworks/sproutcore/themes/ace/resources/progress/ace/progress_view_indeterminate_content.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +19 -15
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +93 -21
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_normal.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_selected.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented_vertical_selected_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +91 -15
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_normal.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_selected.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented_vertical_selected_active.png +0 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +21 -17
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +26 -25
- data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/menu_item_view.css +2 -4
- data/lib/sproutcore/helpers/minifier.rb +5 -5
- data/lib/sproutcore/tools/build.rb +1 -1
- data/sproutcore.gemspec +6 -1
- data/vendor/chance/lib/chance/instance/slicing.rb +2 -2
- metadata +143 -60
- data/lib/frameworks/sproutcore/apps/test_controls/Buildfile +0 -0
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/alert.js +0 -39
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/buttons.js +0 -21
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/categories.js +0 -125
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/category.js +0 -36
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/select.js +0 -12
- data/lib/frameworks/sproutcore/apps/test_controls/controllers/split.js +0 -74
- data/lib/frameworks/sproutcore/apps/test_controls/core.js +0 -29
- data/lib/frameworks/sproutcore/apps/test_controls/main.js +0 -14
- data/lib/frameworks/sproutcore/apps/test_controls/resources/buttons_page.js +0 -158
- data/lib/frameworks/sproutcore/apps/test_controls/resources/checkboxes_page.js +0 -53
- data/lib/frameworks/sproutcore/apps/test_controls/resources/flow_layout_page.js +0 -85
- data/lib/frameworks/sproutcore/apps/test_controls/resources/list_page.js +0 -40
- data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.css +0 -60
- data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +0 -151
- data/lib/frameworks/sproutcore/apps/test_controls/resources/panels_page.js +0 -62
- data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +0 -33
- data/lib/frameworks/sproutcore/apps/test_controls/resources/radio_page.js +0 -55
- data/lib/frameworks/sproutcore/apps/test_controls/resources/scroll_page.js +0 -77
- data/lib/frameworks/sproutcore/apps/test_controls/resources/segmented_page.js +0 -99
- data/lib/frameworks/sproutcore/apps/test_controls/resources/select_page.js +0 -75
- data/lib/frameworks/sproutcore/apps/test_controls/resources/sliders_page.js +0 -54
- data/lib/frameworks/sproutcore/apps/test_controls/resources/split_page.js +0 -141
- data/lib/frameworks/sproutcore/apps/test_controls/resources/strings.js +0 -50
- data/lib/frameworks/sproutcore/apps/test_controls/resources/tab_page.js +0 -53
- data/lib/frameworks/sproutcore/apps/test_controls/resources/text_field_page.js +0 -65
- data/lib/frameworks/sproutcore/apps/test_controls/theme.js +0 -34
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/detail.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/source.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/target.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/targets.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/controllers/tests.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/models/target.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/models/test.js +0 -15
- data/lib/frameworks/sproutcore/apps/tests/tests/views/offset_checkbox.js +0 -15
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/core/console.js +0 -21
@@ -2149,8 +2149,11 @@ SC.CollectionView = SC.View.extend(SC.CollectionViewDelegate, SC.CollectionConte
|
|
2149
2149
|
@returns {Boolean} Usually YES.
|
2150
2150
|
*/
|
2151
2151
|
mouseDown: function(ev) {
|
2152
|
+
var content = this.get('content');
|
2153
|
+
|
2154
|
+
if (!content) return this.get('isSelectable');
|
2155
|
+
|
2152
2156
|
var itemView = this.itemViewForEvent(ev),
|
2153
|
-
content = this.get('content'),
|
2154
2157
|
contentIndex = itemView ? itemView.get('contentIndex') : -1,
|
2155
2158
|
info, anchor, sel, isSelected, modifierKeyPressed, didSelect = NO,
|
2156
2159
|
allowsMultipleSel = content.get('allowsMultipleSelection');
|
@@ -4,13 +4,20 @@
|
|
4
4
|
// Portions ©2008-2011 Apple Inc. All rights reserved.
|
5
5
|
// License: Licensed under MIT license (see license.js)
|
6
6
|
// ==========================================================================
|
7
|
-
|
8
7
|
sc_require('views/list') ;
|
9
8
|
|
9
|
+
|
10
10
|
/** @class
|
11
11
|
|
12
12
|
A grid view renders a collection of items in a grid of rows and columns.
|
13
13
|
|
14
|
+
## Dropping on an Item
|
15
|
+
|
16
|
+
When the grid view is configured to accept drags and drops onto its items, it
|
17
|
+
will set the isDropTarget property on the target item accordingly. This
|
18
|
+
allows you to modify the appearance of the drop target grid item accordingly
|
19
|
+
(@see SC.ListItemView#isDropTarget).
|
20
|
+
|
14
21
|
@extends SC.ListView
|
15
22
|
@author Charles Jolley
|
16
23
|
@version 1.0
|
@@ -79,7 +86,7 @@ SC.GridView = SC.ListView.extend(
|
|
79
86
|
columnWidth = this.get('columnWidth') || 0 ;
|
80
87
|
|
81
88
|
return (columnWidth <= 0) ? 1 : Math.floor(f.width / columnWidth) ;
|
82
|
-
}.property('
|
89
|
+
}.property('frame', 'columnWidth').cacheable(),
|
83
90
|
|
84
91
|
/** @private
|
85
92
|
Find the contentIndexes to display in the passed rect. Note that we
|
@@ -97,7 +104,7 @@ SC.GridView = SC.ListView.extend(
|
|
97
104
|
/** @private */
|
98
105
|
layoutForContentIndex: function(contentIndex) {
|
99
106
|
var rowHeight = this.get('rowHeight') || 48,
|
100
|
-
frameWidth = this.get('
|
107
|
+
frameWidth = this.get('frame').width,
|
101
108
|
itemsPerRow = this.get('itemsPerRow'),
|
102
109
|
columnWidth = Math.floor(frameWidth/itemsPerRow),
|
103
110
|
row = Math.floor(contentIndex / itemsPerRow),
|
@@ -144,21 +151,29 @@ SC.GridView = SC.ListView.extend(
|
|
144
151
|
|
145
152
|
/** @private */
|
146
153
|
showInsertionPoint: function(itemView, dropOperation) {
|
147
|
-
if (!itemView) return
|
154
|
+
if (!itemView) return;
|
148
155
|
|
149
156
|
// if drop on, then just add a class...
|
150
|
-
if (dropOperation
|
151
|
-
if (itemView !== this.
|
152
|
-
this.hideInsertionPoint()
|
153
|
-
|
154
|
-
|
157
|
+
if (dropOperation & SC.DROP_ON) {
|
158
|
+
if (itemView !== this._lastDropOnView) {
|
159
|
+
this.hideInsertionPoint();
|
160
|
+
|
161
|
+
// If the drag is supposed to drop onto an item, notify the item that it
|
162
|
+
// is the current target of the drop.
|
163
|
+
itemView.set('isDropTarget', YES);
|
164
|
+
|
165
|
+
// Track the item so that we can clear isDropTarget when the drag changes;
|
166
|
+
// versus having to clear it from all items.
|
167
|
+
this._lastDropOnView = itemView;
|
155
168
|
}
|
156
169
|
|
157
170
|
} else {
|
158
171
|
|
159
|
-
if (this.
|
160
|
-
//
|
161
|
-
|
172
|
+
if (this._lastDropOnView) {
|
173
|
+
// If there was an item that was the target of the drop previously, be
|
174
|
+
// sure to clear it.
|
175
|
+
this._lastDropOnView.set('isDropTarget', NO);
|
176
|
+
this._lastDropOnView = null ;
|
162
177
|
}
|
163
178
|
|
164
179
|
if (!this._insertionPointView) {
|
@@ -184,15 +199,18 @@ SC.GridView = SC.ListView.extend(
|
|
184
199
|
|
185
200
|
},
|
186
201
|
|
187
|
-
/** @
|
202
|
+
/** @see SC.CollectionView#hideInsertionPoint */
|
188
203
|
hideInsertionPoint: function() {
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
this._dropOnInsertionPoint = null ;
|
204
|
+
// If there was an item that was the target of the drop previously, be
|
205
|
+
// sure to clear it.
|
206
|
+
if (this._lastDropOnView) {
|
207
|
+
this._lastDropOnView.set('isDropTarget', NO);
|
208
|
+
this._lastDropOnView = null;
|
195
209
|
}
|
210
|
+
|
211
|
+
var view = this._insertionPointView ;
|
212
|
+
if (view) view.removeFromParent().destroy();
|
213
|
+
this._insertionPointView = null;
|
196
214
|
},
|
197
215
|
|
198
216
|
/** @private */
|
@@ -225,21 +243,36 @@ SC.GridView = SC.ListView.extend(
|
|
225
243
|
},
|
226
244
|
|
227
245
|
/** @private
|
228
|
-
|
229
|
-
|
230
|
-
|
246
|
+
Since GridView lays out items evenly from left to right, if the width of the
|
247
|
+
frame changes, all of the item views on screen are potentially in
|
248
|
+
the wrong position.
|
249
|
+
|
250
|
+
Update all of their layouts if necessary.
|
231
251
|
*/
|
232
|
-
|
233
|
-
var
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
252
|
+
_gv_frameDidChange: function() {
|
253
|
+
var frame = this.get('frame'),
|
254
|
+
width;
|
255
|
+
|
256
|
+
// Changes to the width of the frame is the only variable that
|
257
|
+
// alters the layout of item views.
|
258
|
+
width = frame.width;
|
259
|
+
if (this._lastFrameWidth && width !== this._lastFrameWidth) {
|
260
|
+
this.notifyPropertyChange('itemsPerRow');
|
261
|
+
|
262
|
+
var idx,
|
263
|
+
itemView,
|
264
|
+
nowShowing = this.get('nowShowing');
|
265
|
+
|
266
|
+
// Only loop through the now showing indexes, if the content is sparsely
|
267
|
+
// loaded we could inadvertently trigger reloading unneeded content.
|
268
|
+
nowShowing.forEach(function(idx) {
|
269
|
+
itemView = this.itemViewForContentIndex(idx);
|
270
|
+
itemView.adjust(this.layoutForContentIndex(idx));
|
271
|
+
}, this);
|
272
|
+
}
|
273
|
+
|
274
|
+
// Cache the last width in order to check for differences.
|
275
|
+
this._lastFrameWidth = width;
|
276
|
+
}.observes('frame')
|
277
|
+
|
278
|
+
});
|
@@ -47,13 +47,19 @@ sc_require('mixins/collection_row_delegate');
|
|
47
47
|
Note that row heights and offsets are cached so once they are calculated
|
48
48
|
the list view will be able to display very quickly.
|
49
49
|
|
50
|
-
|
51
|
-
|
50
|
+
## Dropping on an Item
|
51
|
+
|
52
|
+
When the list view is configured to accept drags and drops onto its items, it
|
53
|
+
will set the isDropTarget property on the target item accordingly. This
|
54
|
+
allows you to modify the appearance of the drop target list item accordingly
|
55
|
+
(@see SC.ListItemView#isDropTarget).
|
52
56
|
|
53
57
|
@extends SC.CollectionView
|
54
58
|
@extends SC.CollectionRowDelegate
|
55
59
|
@since SproutCore 1.0
|
56
60
|
*/
|
61
|
+
// (Can we also have an 'estimate row heights' property that will simply
|
62
|
+
// cheat for very long data sets to make rendering more efficient?)
|
57
63
|
SC.ListView = SC.CollectionView.extend(SC.CollectionRowDelegate,
|
58
64
|
/** @scope SC.ListView.prototype */ {
|
59
65
|
|
@@ -433,7 +439,7 @@ SC.ListView = SC.CollectionView.extend(SC.CollectionRowDelegate,
|
|
433
439
|
|
434
440
|
|
435
441
|
// ..........................................................
|
436
|
-
// DRAG AND
|
442
|
+
// DRAG AND DROP SUPPORT
|
437
443
|
//
|
438
444
|
|
439
445
|
/**
|
@@ -486,13 +492,23 @@ SC.ListView = SC.CollectionView.extend(SC.CollectionRowDelegate,
|
|
486
492
|
if (SC.none(level)) level = -1;
|
487
493
|
|
488
494
|
if (dropOperation & SC.DROP_ON) {
|
489
|
-
this.
|
490
|
-
|
491
|
-
|
495
|
+
if (itemView !== this._lastDropOnView) {
|
496
|
+
this.hideInsertionPoint();
|
497
|
+
|
498
|
+
// If the drag is supposed to drop onto an item, notify the item that it
|
499
|
+
// is the current target of the drop.
|
500
|
+
itemView.set('isDropTarget', YES);
|
501
|
+
|
502
|
+
// Track the item so that we can clear isDropTarget when the drag changes;
|
503
|
+
// versus having to clear it from all items.
|
504
|
+
this._lastDropOnView = itemView;
|
505
|
+
}
|
492
506
|
} else {
|
493
507
|
|
494
508
|
if (this._lastDropOnView) {
|
495
|
-
|
509
|
+
// If there was an item that was the target of the drop previously, be
|
510
|
+
// sure to clear it.
|
511
|
+
this._lastDropOnView.set('isDropTarget', NO);
|
496
512
|
this._lastDropOnView = null;
|
497
513
|
}
|
498
514
|
|
@@ -508,12 +524,12 @@ SC.ListView = SC.CollectionView.extend(SC.CollectionRowDelegate,
|
|
508
524
|
}
|
509
525
|
},
|
510
526
|
|
511
|
-
/**
|
512
|
-
@see SC.CollectionView#hideInsertionPoint
|
513
|
-
*/
|
527
|
+
/** @see SC.CollectionView#hideInsertionPoint */
|
514
528
|
hideInsertionPoint: function() {
|
529
|
+
// If there was an item that was the target of the drop previously, be
|
530
|
+
// sure to clear it.
|
515
531
|
if (this._lastDropOnView) {
|
516
|
-
this._lastDropOnView.set('
|
532
|
+
this._lastDropOnView.set('isDropTarget', NO);
|
517
533
|
this._lastDropOnView = null;
|
518
534
|
}
|
519
535
|
|
@@ -56,7 +56,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
56
56
|
@default ['disclosureState', 'escapeHTML']
|
57
57
|
@see SC.View#displayProperties
|
58
58
|
*/
|
59
|
-
displayProperties: ['disclosureState', 'escapeHTML'],
|
59
|
+
displayProperties: ['disclosureState', 'escapeHTML', 'isDropTarget'],
|
60
60
|
|
61
61
|
|
62
62
|
// ..........................................................
|
@@ -89,7 +89,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
89
89
|
|
90
90
|
If false, the icon on the list item view will be hidden. Otherwise,
|
91
91
|
space will be left for the icon next to the list item view.
|
92
|
-
|
92
|
+
|
93
93
|
@type Boolean
|
94
94
|
@default NO
|
95
95
|
*/
|
@@ -100,7 +100,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
100
100
|
|
101
101
|
If false, the icon on the list item view will be hidden. Otherwise,
|
102
102
|
space will be left for the icon next to the list item view.
|
103
|
-
|
103
|
+
|
104
104
|
@type Boolean
|
105
105
|
@default NO
|
106
106
|
*/
|
@@ -111,7 +111,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
111
111
|
arrow.
|
112
112
|
|
113
113
|
If false, the space for the branch arrow will be collapsed.
|
114
|
-
|
114
|
+
|
115
115
|
@type Boolean
|
116
116
|
@default NO
|
117
117
|
*/
|
@@ -130,18 +130,31 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
130
130
|
/**
|
131
131
|
The URL or CSS class name to use for the icon. This is only used if
|
132
132
|
contentIconKey is null, or returns null from the delegate.
|
133
|
-
|
133
|
+
|
134
134
|
@type String
|
135
135
|
@default null
|
136
136
|
*/
|
137
137
|
icon: null,
|
138
138
|
|
139
|
+
/**
|
140
|
+
Whether this item is the drop target of a drag operation.
|
141
|
+
|
142
|
+
If the list view supports the SC.DROP_ON operation, it will set this
|
143
|
+
property on whichever list item view is the current target of the drop.
|
144
|
+
|
145
|
+
When true, the 'drop-target' class is added to the element.
|
146
|
+
|
147
|
+
@type Boolean
|
148
|
+
@default false
|
149
|
+
*/
|
150
|
+
isDropTarget: NO,
|
151
|
+
|
139
152
|
/**
|
140
153
|
(displayDelegate) Property key to use for the icon url
|
141
154
|
|
142
155
|
This property will be checked on the content object to determine the
|
143
156
|
icon to display. It must return either a URL or a CSS class name.
|
144
|
-
|
157
|
+
|
145
158
|
@type String
|
146
159
|
@default NO
|
147
160
|
*/
|
@@ -150,7 +163,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
150
163
|
/**
|
151
164
|
The URL or CSS class name to use for the right icon. This is only used if
|
152
165
|
contentRightIconKey is null, or returns null from the delegate.
|
153
|
-
|
166
|
+
|
154
167
|
@type String
|
155
168
|
@default null
|
156
169
|
*/
|
@@ -161,7 +174,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
161
174
|
|
162
175
|
This property will be checked on the content object to determine the
|
163
176
|
icon to display. It must return either a URL or a CSS class name.
|
164
|
-
|
177
|
+
|
165
178
|
@type String
|
166
179
|
@default null
|
167
180
|
*/
|
@@ -171,7 +184,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
171
184
|
(displayDelegate) The name of the property used for label itself
|
172
185
|
|
173
186
|
If null, then the content object itself will be used..
|
174
|
-
|
187
|
+
|
175
188
|
@type String
|
176
189
|
@default null
|
177
190
|
*/
|
@@ -182,7 +195,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
182
195
|
You should only disable this option if you are sure you will only
|
183
196
|
display content that is already escaped and you need the added
|
184
197
|
performance gain.
|
185
|
-
|
198
|
+
|
186
199
|
@type Boolean
|
187
200
|
@default YES
|
188
201
|
*/
|
@@ -194,7 +207,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
194
207
|
|
195
208
|
The count will only be visible if this property is not null and the
|
196
209
|
returned value is not 0.
|
197
|
-
|
210
|
+
|
198
211
|
@type String
|
199
212
|
@default null
|
200
213
|
*/
|
@@ -207,17 +220,17 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
207
220
|
|
208
221
|
If this is null, then the branch view will be completely hidden.
|
209
222
|
Otherwise space will be allocated for it.
|
210
|
-
|
223
|
+
|
211
224
|
@type String
|
212
225
|
@default null
|
213
226
|
*/
|
214
227
|
contentIsBranchKey: null,
|
215
|
-
|
228
|
+
|
216
229
|
/**
|
217
230
|
Indent to use when rendering a list item with an outline level > 0. The
|
218
231
|
left edge of the list item will be indented by this amount for each
|
219
232
|
outline level.
|
220
|
-
|
233
|
+
|
221
234
|
@type Number
|
222
235
|
@default 16
|
223
236
|
*/
|
@@ -225,7 +238,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
225
238
|
|
226
239
|
/**
|
227
240
|
Outline level for this list item. Usually set by the collection view.
|
228
|
-
|
241
|
+
|
229
242
|
@type Number
|
230
243
|
@default 0
|
231
244
|
*/
|
@@ -234,11 +247,11 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
234
247
|
/**
|
235
248
|
Disclosure state for this list item. Usually set by the collection view
|
236
249
|
when the list item is created. Possible values:
|
237
|
-
|
250
|
+
|
238
251
|
- SC.LEAF_NODE
|
239
252
|
- SC.BRANCH_OPEN
|
240
253
|
- SC.BRANCH_CLOSED
|
241
|
-
|
254
|
+
|
242
255
|
@type String
|
243
256
|
@default SC.LEAF_NODE
|
244
257
|
*/
|
@@ -272,7 +285,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
272
285
|
/**
|
273
286
|
Determines if content is editable or not. Checkboxes and other related
|
274
287
|
components will render disabled if an item is not editable.
|
275
|
-
|
288
|
+
|
276
289
|
@field
|
277
290
|
@type Boolean
|
278
291
|
@observes content
|
@@ -281,13 +294,13 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
281
294
|
var content = this.get('content');
|
282
295
|
return content && (content.get ? content.get('isEditable')!==NO : NO);
|
283
296
|
}.property('content').cacheable(),
|
284
|
-
|
297
|
+
|
285
298
|
/**
|
286
299
|
@type Object
|
287
300
|
@default SC.InlineTextFieldDelegate
|
288
301
|
*/
|
289
302
|
inlineEditorDelegate: SC.InlineTextFieldDelegate,
|
290
|
-
|
303
|
+
|
291
304
|
/**
|
292
305
|
Finds and retrieves the element containing the label. This is used
|
293
306
|
for inline editing. The default implementation returns a CoreQuery
|
@@ -309,7 +322,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
309
322
|
if (!layer) return NO ; // no layer yet -- nothing to do
|
310
323
|
|
311
324
|
var el = SC.$(evt.target) ;
|
312
|
-
var ret = NO
|
325
|
+
var ret = NO;
|
313
326
|
while(!ret && el.length>0 && (el[0] !== layer)) {
|
314
327
|
if (el.hasClass(className)) ret = YES ;
|
315
328
|
el = el.parent() ;
|
@@ -585,7 +598,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
585
598
|
/*
|
586
599
|
Edits the label portion of the list item. If scrollIfNeeded is YES, will
|
587
600
|
scroll to the item before editing it.
|
588
|
-
|
601
|
+
|
589
602
|
@params {Boolean} if the parent scroll view should be scrolled to this item
|
590
603
|
before editing begins
|
591
604
|
@returns {Boolean} YES if successful
|
@@ -686,7 +699,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
686
699
|
this._oldOpacity = el.css('opacity');
|
687
700
|
el.css('opacity', 0.0) ;
|
688
701
|
|
689
|
-
// restore old line height for original item if the old line height
|
702
|
+
// restore old line height for original item if the old line height
|
690
703
|
// was saved.
|
691
704
|
if (this._oldLineHeight) el.css({ lineHeight: this._oldLineHeight }) ;
|
692
705
|
}.enhance(),
|
@@ -736,6 +749,7 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
736
749
|
// add alternating row classes
|
737
750
|
classArray.push((this.get('contentIndex')%2 === 0) ? 'even' : 'odd');
|
738
751
|
context.setClass('disabled', !this.get('isEnabled'));
|
752
|
+
context.setClass('drop-target', this.get('isDropTarget'));
|
739
753
|
|
740
754
|
// outline level wrapper
|
741
755
|
working = context.begin("div").addClass("sc-outline");
|
@@ -764,8 +778,10 @@ SC.ListItemView = SC.View.extend(SC.InlineEditable, SC.Control,
|
|
764
778
|
key = this.getDelegateProperty('contentIconKey', del) ;
|
765
779
|
value = (key && content) ? (content.get ? content.get(key) : content[key]) : null ;
|
766
780
|
|
767
|
-
|
768
|
-
|
781
|
+
if (value) {
|
782
|
+
this.renderIcon(working, value);
|
783
|
+
classArray.push('has-icon');
|
784
|
+
}
|
769
785
|
} else if (this.get('icon')) {
|
770
786
|
value = this.get('icon');
|
771
787
|
this.renderIcon(working, value);
|