sproutcore 1.7.1.beta → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +44 -0
- data/README.rdoc +20 -20
- data/VERSION.yml +3 -3
- data/lib/Buildfile +1 -1
- data/lib/buildtasks/build.rake +5 -0
- data/lib/buildtasks/manifest.rake +19 -1
- data/lib/frameworks/sproutcore/Buildfile +19 -17
- data/lib/frameworks/sproutcore/CHANGELOG.md +163 -29
- data/lib/frameworks/sproutcore/README.md +29 -8
- data/lib/frameworks/sproutcore/apps/statechart_routing/Buildfile +12 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/login_controller.js +11 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/main_controller.js +7 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/controllers/statechart_controller.js +17 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/core.js +25 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/main.js +15 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/_theme.css +18 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/bar_page.js +14 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/foo_page.js +14 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/loading.rhtml +9 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/login_page.js +61 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/resources/main_page.js +46 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/statechart.js +76 -0
- data/lib/frameworks/sproutcore/apps/statechart_routing/theme.js +27 -0
- data/lib/frameworks/sproutcore/apps/tests/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/no_targets.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_detail.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_empty.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_list.js +1 -1
- data/lib/frameworks/sproutcore/apps/tests/states/ready_no_tests.js +1 -1
- data/lib/frameworks/sproutcore/apps/welcome/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +14 -1
- data/lib/frameworks/sproutcore/frameworks/ajax/system/response.js +15 -15
- data/lib/frameworks/sproutcore/frameworks/ajax/tests/system/request.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/animation/core.js +8 -5
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +302 -70
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +19 -14
- data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +471 -149
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/object.js +42 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/run_loop.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/string.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/selection_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/body_overflow.js +63 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/keyboard.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/layout.js +37 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/main.js +28 -6
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +10 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/protocols/sparse_array_delegate.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +66 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/builder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/cursor.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +58 -57
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/locale.js.orig +445 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +51 -31
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +5 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +53 -69
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/responder.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +98 -72
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +37 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/timer.js +7 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/array/array_case.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controllers/object/content_destroyed.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/string.js +23 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/browser.js +66 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/event.js +22 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/locale.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/end.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/escape_html.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_className.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/helpers_style.js +8 -8
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/render_context/update.js +17 -16
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/selection_set/remove.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/build_children.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +15 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/createChildViews.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +50 -30
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/acceleration.js +46 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +1 -43
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +8 -34
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +10 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +6 -5
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/theming.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/mixins/relationship_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +46 -19
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +23 -9
- data/lib/frameworks/sproutcore/frameworks/datastore/models/single_attribute.js +2 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/system/many_array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/system/nested_store.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +294 -302
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js.orig +1531 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +14 -11
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/integration/many_array.js +63 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/many_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array.js +50 -10
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_array_complex.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/nested_records/nested_record_complex.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/destroy.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/refresh.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record_attribute.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +114 -67
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/compare.js +54 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/evaluation.js +29 -9
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/parse.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/core_methods.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/cancelRecord.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitRecord.js +37 -45
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/find.js +127 -127
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushChanges.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/pushRelationships.js +42 -4
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/readDataHash.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +13 -7
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/resources/strings.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/localized/system/datetime.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/debug/core.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +1 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +19 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +30 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/palette.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +24 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +121 -28
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +15 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_data_source.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +39 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/collection.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/image_button.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/panel.js +14 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/popup_button.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segment.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -51
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +11 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/images/icons/sc-icon-error-48.png +0 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/resources/slider.css +0 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +9 -9
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/content.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/reload.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/date_field/ui.js +107 -81
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/list/rowDelegate.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +68 -60
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/methods.js +57 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/integration.js +21 -19
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +5 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +32 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/methods.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/methods.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +77 -132
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +5 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +16 -15
- data/lib/frameworks/sproutcore/frameworks/desktop/views/date_field.js +52 -52
- data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/grid.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list.js +147 -147
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +11 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/views/popup_button.js +22 -12
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +13 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scene.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +462 -441
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +48 -62
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segment.js +22 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +150 -32
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +104 -45
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_button.js +42 -20
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +24 -24
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +148 -154
- data/lib/frameworks/sproutcore/frameworks/desktop/views/stacked.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +8 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/files.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/library.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/targets.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/controllers/view_configs.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/mixins/drop_down.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/states/ready.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/plist_item.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/apps/greenhouse/views/web.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_design.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +21 -21
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/forms/views/form.js +59 -53
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/tests/models/polymorphism/simple.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu.js +14 -10
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/ext/menu_item.js +17 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/popup_button.js +38 -14
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/select_view/views/select.js +5 -13
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_child.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/mixins/split_thumb.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/children.js +19 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/methods.js +20 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/tests/split_thumb.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/split_view/views/split.js +35 -12
- data/lib/frameworks/sproutcore/frameworks/formatters/README +6 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/english.lproj/strings.js +174 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/formatters/date_formatter.js +351 -0
- data/lib/frameworks/sproutcore/frameworks/formatters/tests/date_formatter.js +517 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +345 -138
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/button.js +5 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/content_value_support.js +176 -42
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +137 -105
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/gestureable.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editable.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_editor.js +16 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/validatable.js +47 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/helpers/sizing.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +28 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/render_delegate.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/benchmark.css +0 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/bootstrap.rhtml +34 -19
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/button_view.css +0 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/label.css +1 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +8 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +179 -47
- data/lib/frameworks/sproutcore/frameworks/foundation/system/task_queue.js +34 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/text_selection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +26 -12
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_measurement.js +12 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/string_metric_optimization.js +202 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/content_value_support/content.js +77 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/flowed_layout/tests.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/beginEditing.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/commitEditing.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editable/discardEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/beginEditing.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/commitEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_editor/discardEditing.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +163 -149
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/credit_card.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/date_time.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/password.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/validators/validator.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +16 -43
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +67 -54
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +49 -38
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +285 -242
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +13 -13
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffered.js +19 -22
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery-sc.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/jquery/jquery.js +231 -186
- data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +145 -143
- data/lib/frameworks/sproutcore/frameworks/media/views/video.js +156 -154
- data/lib/frameworks/sproutcore/frameworks/qunit/qunit/qunit.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js.orig +540 -0
- data/lib/frameworks/sproutcore/frameworks/routing/tests/system/routes.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +15 -8
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/ext/function.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/copyable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +98 -32
- data/lib/frameworks/sproutcore/frameworks/runtime/private/chain_observer.js +7 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +14 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_set.js +98 -13
- data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +8 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/enumerator.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/system/error.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +23 -6
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +69 -18
- data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +57 -31
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +189 -14
- data/lib/frameworks/sproutcore/frameworks/runtime/system/string.js +82 -22
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/chained.js +20 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/observable/observable.js +125 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/private/observer_queue.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/rangeStartForIndex.js +37 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/remove.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/run_loop.js +75 -4
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/string.js +41 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/mixins/statechart_delegate.js +113 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/private/state_path_matcher.js +312 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/async.js +18 -22
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +508 -131
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state_route_handler_context.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +265 -44
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/basic/with_concurrent_states.js +16 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/event_handling/responder/responder_chain.js +11 -3
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/private/state_path_matcher.js +116 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/add_substate.js +108 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/with_concurrent.js +179 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/find_first_relative_current_state/without_concurrent.js +74 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_state.js +141 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/get_substate.js +340 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/route_triggered.js +161 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state/methods/try_to_handle_event.js +288 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/history_state/standard/without_concurrent_states/context.js +5 -33
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/with_concurrent_states/basic.js +213 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/routing/without_concurrent_states/basic.js +212 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/state_transitioning/standard/without_concurrent_states/core.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/{state/namespacing.js → statechart/methods/get_state.js} +3 -41
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/statechart/{invoke_state_method.js → methods/invoke_state_method.js} +1 -1
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/{event_handling/advanced → statechart}/respond_to_event.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/statechart/tests/system/state_route_handler_context/methods/retry.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/table/core.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/controls/button.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars.js +29 -5
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/bind.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/collection.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/localization.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/ext/handlebars/view.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{handlebars → template_view}/handlebars.js +493 -357
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/checkbox_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/mixins/template_helpers/text_field_support.js +13 -2
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/panes/template.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/controls/button.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/checkbox_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/mixins/template_helpers/text_field_support.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/panes/template.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/collection.js +39 -14
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/tests/views/template/handlebars.js +57 -6
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/bindable_span.js +21 -6
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template.js +9 -3
- data/lib/frameworks/sproutcore/frameworks/{core_foundation → template_view}/views/template_collection.js +55 -26
- data/lib/frameworks/sproutcore/frameworks/testing/system/equiv.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +122 -122
- data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/base.css +1 -1
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/reset.css +0 -1
- data/lib/frameworks/sproutcore/frameworks/yuireset/resources/view.css +4 -4
- data/lib/frameworks/sproutcore/lib/index.rhtml +55 -32
- data/lib/frameworks/sproutcore/license.js +2 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/body.css +5 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +21 -13
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +17 -10
- data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +4 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +20 -12
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +16 -8
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/jumbo/button.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/small/button.css +17 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/disclosure/ace/disclosure.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/master-detail/master-detail.css +2 -2
- data/lib/frameworks/sproutcore/themes/ace/resources/picker/popover/popover.css +5 -3
- data/lib/frameworks/sproutcore/themes/iphone_theme/english.lproj/core.css +1 -1
- data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/toolbar.css +1 -1
- data/lib/gen/app/USAGE +17 -4
- data/lib/gen/language/Buildfile +4 -4
- data/lib/gen/language/USAGE +4 -4
- data/lib/gen/page/templates/pages/@target_name@/Buildfile +7 -7
- data/lib/gen/{html_app → statechart_app}/Buildfile +0 -0
- data/lib/gen/{html_app → statechart_app}/README +0 -0
- data/lib/gen/statechart_app/USAGE +21 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/Buildfile +9 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/core.js +24 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/main.js +26 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/_theme.css +18 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/loading.rhtml +9 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/resources/main_page.js +21 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/statechart.js +8 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/states/ready_state.js +12 -0
- data/lib/gen/statechart_app/templates/apps/@target_name@/theme.js +24 -0
- data/lib/sproutcore/builders.rb +1 -0
- data/lib/sproutcore/builders/base.rb +19 -1
- data/lib/sproutcore/builders/chance_file.rb +6 -1
- data/lib/sproutcore/builders/handlebars.rb +1 -9
- data/lib/sproutcore/builders/javascript.rb +1 -10
- data/lib/sproutcore/builders/json.rb +25 -0
- data/lib/sproutcore/builders/less.rb +1 -1
- data/lib/sproutcore/builders/sass.rb +1 -1
- data/lib/sproutcore/builders/stylesheet.rb +1 -9
- data/lib/sproutcore/helpers/html5_manifest.rb +1 -1
- data/lib/sproutcore/helpers/static_helper.rb +42 -0
- data/lib/sproutcore/rack/proxy.rb +21 -3
- data/lib/sproutcore/rack/service.rb +3 -2
- data/lib/sproutcore/tools.rb +18 -25
- data/lib/sproutcore/tools/gen.rb +10 -3
- data/lib/sproutcore/tools/init.rb +11 -10
- data/spec/buildtasks/manifest/prepare_build_tasks/json_spec.rb +62 -0
- data/spec/fixtures/builder_tests/apps/handlebars_test/Buildfile +1 -1
- data/spec/fixtures/builder_tests/apps/json_test/sc_static.json +2 -0
- data/spec/lib/builders/json_spec.rb +53 -0
- data/sproutcore.gemspec +2 -2
- data/vendor/chance/lib/chance/parser.rb +1 -1
- metadata +222 -177
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/datetime.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +0 -259
- data/lib/frameworks/sproutcore/frameworks/documentation/core.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +0 -69
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +0 -44
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +0 -64
- data/lib/frameworks/sproutcore/frameworks/mini/license.js +0 -30
- data/lib/gen/html_app/USAGE +0 -15
- data/lib/gen/html_app/templates/apps/@target_name@/@target_name@.js +0 -11
- data/lib/gen/html_app/templates/apps/@target_name@/resources/images/.gitkeep +0 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +0 -6
- data/lib/gen/html_app/templates/apps/@target_name@/resources/templates/@target_name@.handlebars +0 -1
- data/lib/gen/html_project/Buildfile +0 -45
- data/lib/gen/html_project/INIT +0 -3
- data/lib/gen/html_project/README +0 -1
- data/lib/gen/html_project/USAGE +0 -2
- data/lib/gen/html_project/templates/@filename@/Buildfile +0 -5
- data/lib/gen/html_project/templates/@filename@/README +0 -4
@@ -142,8 +142,8 @@ SC.SliderView = SC.View.extend(SC.Control,
|
|
142
142
|
if (!this.get('isEnabled')) return YES;
|
143
143
|
var min = this.get('minimum'),
|
144
144
|
max = this.get('maximum'),
|
145
|
-
newVal = this.get('value')+((evt.wheelDeltaX+evt.wheelDeltaY)*0.01),
|
146
145
|
step = this.get('step'),
|
146
|
+
newVal = this.get('value')+((evt.wheelDeltaX+evt.wheelDeltaY)*step),
|
147
147
|
value = Math.round(newVal / step) * step ;
|
148
148
|
if (newVal< min) this.setIfChanged('value', min);
|
149
149
|
else if (newVal> max) this.setIfChanged('value', max);
|
@@ -216,7 +216,6 @@ SC.SliderView = SC.View.extend(SC.Control,
|
|
216
216
|
}.property('isEnabled'),
|
217
217
|
|
218
218
|
keyDown: function(evt) {
|
219
|
-
|
220
219
|
// handle tab key
|
221
220
|
if (evt.which === 9 || evt.keyCode === 9) {
|
222
221
|
var view = evt.shiftKey ? this.get('previousValidKeyView') : this.get('nextValidKeyView');
|
@@ -224,38 +223,43 @@ SC.SliderView = SC.View.extend(SC.Control,
|
|
224
223
|
else evt.allowDefault();
|
225
224
|
return YES ; // handled
|
226
225
|
}
|
227
|
-
|
228
|
-
if (evt.which >= 37 && evt.which <= 40){
|
226
|
+
if (evt.which >= 33 && evt.which <= 40){
|
229
227
|
var min = this.get('minimum'),max=this.get('maximum'),
|
230
228
|
step = this.get('step'),
|
231
|
-
size = max-min, val=0, calculateStep;
|
229
|
+
size = max-min, val=0, calculateStep, current=this.get('value');
|
232
230
|
|
233
|
-
if (evt.which === 37 || evt.which === 38 ){
|
231
|
+
if (evt.which === 37 || evt.which === 38 || evt.which === 34 ){
|
234
232
|
if(step === 0){
|
235
233
|
if(size<100){
|
236
|
-
val =
|
234
|
+
val = current-1;
|
237
235
|
}else{
|
238
236
|
calculateStep = Math.abs(size/100);
|
239
|
-
if(calculateStep<2) calculateStep =2;
|
240
|
-
val =
|
237
|
+
if(calculateStep<2) calculateStep = 2;
|
238
|
+
val = current-calculateStep;
|
241
239
|
}
|
242
240
|
}else{
|
243
|
-
val =
|
241
|
+
val = current-step;
|
244
242
|
}
|
245
243
|
}
|
246
|
-
if (evt.which === 39 || evt.which === 40 ){
|
244
|
+
if (evt.which === 39 || evt.which === 40 || evt.which === 33 ){
|
247
245
|
if(step === 0){
|
248
246
|
if(size<100){
|
249
|
-
val =
|
247
|
+
val = current + 2;
|
250
248
|
}else{
|
251
249
|
calculateStep = Math.abs(size/100);
|
252
250
|
if(calculateStep<2) calculateStep =2;
|
253
|
-
val =
|
251
|
+
val = current+calculateStep;
|
254
252
|
}
|
255
253
|
}else{
|
256
|
-
val =
|
254
|
+
val = current+step;
|
257
255
|
}
|
258
256
|
}
|
257
|
+
if (evt.which === 36){
|
258
|
+
val=max;
|
259
|
+
}
|
260
|
+
if (evt.which === 35){
|
261
|
+
val=min;
|
262
|
+
}
|
259
263
|
if(val>=min && val<=max) this.set('value', val);
|
260
264
|
}else{
|
261
265
|
evt.allowDefault();
|
@@ -264,14 +268,10 @@ SC.SliderView = SC.View.extend(SC.Control,
|
|
264
268
|
return YES;
|
265
269
|
},
|
266
270
|
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
.updatePropertyFromContent('isIndeterminate', key, 'contentIsIndeterminateKey', content)
|
274
|
-
.endPropertyChanges();
|
275
|
-
}
|
276
|
-
|
271
|
+
contentKeys: {
|
272
|
+
'contentValueKey': 'value',
|
273
|
+
'contentMinimumKey': 'minimum',
|
274
|
+
'contentMaximumKey': 'maximum',
|
275
|
+
'contentIsIndeterminateKey': 'isIndeterminate'
|
276
|
+
}
|
277
277
|
});
|
@@ -13,54 +13,54 @@ SC.RESIZE_BOTTOM_RIGHT = 'resize-bottom-right';
|
|
13
13
|
|
14
14
|
/**
|
15
15
|
@class
|
16
|
-
|
16
|
+
|
17
17
|
A split view is used to show views that the user can resize or collapse.
|
18
18
|
To use a split view you need to set a topLeftView, a bottomRightView and,
|
19
19
|
optionally, a splitDividerView. You can also set various other properties
|
20
20
|
to control the minimum and maximum thickness allowed for the flexible views.
|
21
|
-
|
21
|
+
|
22
22
|
## Example
|
23
|
-
|
23
|
+
|
24
24
|
SC.SplitView.design({
|
25
|
-
|
25
|
+
|
26
26
|
// the left view...
|
27
27
|
topLeftView: SC.View.design({
|
28
28
|
// view contents
|
29
29
|
}),
|
30
|
-
|
30
|
+
|
31
31
|
// the right view
|
32
32
|
bottomRightView: SC.View.design({
|
33
33
|
// view contents
|
34
34
|
})
|
35
|
-
|
35
|
+
|
36
36
|
})
|
37
|
-
|
37
|
+
|
38
38
|
When the user clicks and drags on a split divider view, it will
|
39
39
|
automatically resize the views immediately before and after the split
|
40
40
|
divider view. You can constrain the resizing allowed by the split view
|
41
41
|
either by setting a minThickness and maxThickness property on the views
|
42
42
|
themselves or by implementing the method splitViewConstrainThickness on
|
43
43
|
a delegate object.
|
44
|
-
|
44
|
+
|
45
45
|
In addition to resizing views, users can also collapse views by double
|
46
46
|
clicking on a split divider view. When a view is collapsed, it's isVisible
|
47
47
|
property is set to NO and its space it removed from the view. Double
|
48
48
|
clicking on a divider again will restore a collapsed view. A user can also
|
49
49
|
start to drag the divider to show the collapsed view.
|
50
|
-
|
51
|
-
You can programmatically control collapsing behavior using various
|
52
|
-
properties on either the split view or its child views, and/or by
|
50
|
+
|
51
|
+
You can programmatically control collapsing behavior using various
|
52
|
+
properties on either the split view or its child views, and/or by
|
53
53
|
implementing the method splitViewCanCollapse on a delegate object.
|
54
|
-
|
54
|
+
|
55
55
|
Finally, SplitViews can layout their child views either horizontally or
|
56
56
|
vertically. To choose the direction of layout set the layoutDirection
|
57
57
|
property on the view (or the :direction option with the view helper).
|
58
58
|
This property should be set when the view is created. Changing it
|
59
59
|
dynamically will have an unknown effect.
|
60
|
-
|
60
|
+
|
61
61
|
In addition, the top/left and bottom/right child views can have these
|
62
62
|
properties:
|
63
|
-
|
63
|
+
|
64
64
|
@extends SC.View
|
65
65
|
@since SproutCore 1.0
|
66
66
|
@author Charles Jolley
|
@@ -69,52 +69,52 @@ SC.RESIZE_BOTTOM_RIGHT = 'resize-bottom-right';
|
|
69
69
|
*/
|
70
70
|
SC.SplitView = SC.View.extend(
|
71
71
|
/** @scope SC.SplitView.prototype */ {
|
72
|
-
|
72
|
+
|
73
73
|
classNames: ['sc-split-view'],
|
74
|
-
|
74
|
+
|
75
75
|
displayProperties: ['layoutDirection'],
|
76
|
-
|
76
|
+
|
77
77
|
/**
|
78
78
|
delegate for controlling split view behavior.
|
79
79
|
*/
|
80
80
|
delegate: null,
|
81
|
-
|
81
|
+
|
82
82
|
/**
|
83
83
|
Direction of layout. Must be SC.LAYOUT_HORIZONTAL or SC.LAYOUT_VERTICAL.
|
84
|
-
|
84
|
+
|
85
85
|
@type String
|
86
86
|
@default SC.LAYOUT_HORIZONTAL
|
87
87
|
*/
|
88
88
|
layoutDirection: SC.LAYOUT_HORIZONTAL,
|
89
|
-
|
89
|
+
|
90
90
|
/**
|
91
91
|
Set to NO to disable collapsing for all views.
|
92
|
-
|
92
|
+
|
93
93
|
@type Boolean
|
94
94
|
@default YES
|
95
95
|
*/
|
96
96
|
canCollapseViews: YES,
|
97
|
-
|
97
|
+
|
98
98
|
/*
|
99
|
-
Configure which view(s) you want to autoresize when this split view's
|
99
|
+
Configure which view(s) you want to autoresize when this split view's
|
100
100
|
layout changes. Possible options are:
|
101
|
-
|
101
|
+
|
102
102
|
| SC.RESIZE_BOTTOM_RIGHT | (default) resizes bottomRightView |
|
103
103
|
| SC.RESIZE_TOP_LEFT | resized topLeftView |
|
104
|
-
|
104
|
+
|
105
105
|
@type String
|
106
106
|
@default SC.RESIZE_BOTTOM_RIGHT
|
107
107
|
*/
|
108
108
|
autoresizeBehavior: SC.RESIZE_BOTTOM_RIGHT,
|
109
|
-
|
109
|
+
|
110
110
|
/**
|
111
111
|
Specifies how much space the fixed view should use when the view is setup.
|
112
|
-
A number less than one will be treated as a percentage, while a number
|
112
|
+
A number less than one will be treated as a percentage, while a number
|
113
113
|
greater than one will be treated as a pixel width.
|
114
|
-
|
115
|
-
The thickness will be applied to the opposite view defined by
|
114
|
+
|
115
|
+
The thickness will be applied to the opposite view defined by
|
116
116
|
autoresizeBehavior.
|
117
|
-
|
117
|
+
|
118
118
|
@type Number
|
119
119
|
@default 0.5
|
120
120
|
*/
|
@@ -159,18 +159,18 @@ SC.SplitView = SC.View.extend(
|
|
159
159
|
@default null
|
160
160
|
*/
|
161
161
|
dividerThickness: null,
|
162
|
-
|
162
|
+
|
163
163
|
/**
|
164
164
|
Yes, we're a split view.
|
165
|
-
|
165
|
+
|
166
166
|
@type Boolean
|
167
167
|
@default YES
|
168
168
|
*/
|
169
169
|
isSplitView: YES,
|
170
|
-
|
170
|
+
|
171
171
|
/**
|
172
172
|
The view to use for the top left
|
173
|
-
|
173
|
+
|
174
174
|
@type SC.View
|
175
175
|
@default SC.View
|
176
176
|
*/
|
@@ -178,23 +178,23 @@ SC.SplitView = SC.View.extend(
|
|
178
178
|
|
179
179
|
/**
|
180
180
|
The view to use for the divider
|
181
|
-
|
181
|
+
|
182
182
|
@type SC.View
|
183
183
|
@default SC.SplitDividerView
|
184
184
|
*/
|
185
185
|
dividerView: SC.SplitDividerView,
|
186
|
-
|
186
|
+
|
187
187
|
/**
|
188
188
|
The view to use for the bottom right
|
189
|
-
|
189
|
+
|
190
190
|
@type SC.View
|
191
191
|
@default SC.View
|
192
192
|
*/
|
193
193
|
bottomRightView: SC.View,
|
194
|
-
|
194
|
+
|
195
195
|
/**
|
196
196
|
The current thickness for the topLeftView
|
197
|
-
|
197
|
+
|
198
198
|
@type Number
|
199
199
|
@isReadOnly
|
200
200
|
*/
|
@@ -205,7 +205,7 @@ SC.SplitView = SC.View.extend(
|
|
205
205
|
|
206
206
|
/**
|
207
207
|
The current thickness for the bottomRightView
|
208
|
-
|
208
|
+
|
209
209
|
@type Number
|
210
210
|
@isReadOnly
|
211
211
|
*/
|
@@ -213,28 +213,28 @@ SC.SplitView = SC.View.extend(
|
|
213
213
|
var view = this.get('bottomRightView');
|
214
214
|
return view ? this.thicknessForView(view) : 0;
|
215
215
|
}.property('bottomRightView').cacheable(),
|
216
|
-
|
216
|
+
|
217
217
|
/**
|
218
218
|
The cursor thumb views should use for themselves
|
219
|
-
|
219
|
+
|
220
220
|
@type SC.Cursor
|
221
221
|
@default null
|
222
222
|
*/
|
223
223
|
thumbViewCursor: null,
|
224
|
-
|
224
|
+
|
225
225
|
/**
|
226
226
|
Used by split divider to decide if the view can be collapsed.
|
227
|
-
|
227
|
+
|
228
228
|
@type Boolean
|
229
229
|
@isReadOnly
|
230
230
|
*/
|
231
231
|
canCollapseView: function(view) {
|
232
232
|
return this.invokeDelegateMethod(this.delegate, 'splitViewCanCollapse', this, view);
|
233
233
|
},
|
234
|
-
|
234
|
+
|
235
235
|
/**
|
236
236
|
Returns the thickness for a given view.
|
237
|
-
|
237
|
+
|
238
238
|
@param {SC.View} view the view to get.
|
239
239
|
@returns the view with the width.
|
240
240
|
*/
|
@@ -243,11 +243,11 @@ SC.SplitView = SC.View.extend(
|
|
243
243
|
ret = view.get('frame');
|
244
244
|
return (direction === SC.LAYOUT_HORIZONTAL) ? ret.width : ret.height;
|
245
245
|
},
|
246
|
-
|
246
|
+
|
247
247
|
/** @private
|
248
248
|
Creates the topLeftView/dividerView/bottomRightView and adds them to the
|
249
249
|
childViews array
|
250
|
-
|
250
|
+
|
251
251
|
@returns SC.View the SplitDivider view (this)
|
252
252
|
*/
|
253
253
|
createChildViews: function() {
|
@@ -255,7 +255,7 @@ SC.SplitView = SC.View.extend(
|
|
255
255
|
views = ['topLeftView', 'dividerView', 'bottomRightView'],
|
256
256
|
l = views.length,
|
257
257
|
view, i;
|
258
|
-
|
258
|
+
|
259
259
|
for (i=0; i<l; ++i) {
|
260
260
|
if (view = this.get(views[i])) {
|
261
261
|
view = this[views[i]] = this.createChildView(view, {
|
@@ -265,14 +265,14 @@ SC.SplitView = SC.View.extend(
|
|
265
265
|
childViews.push(view);
|
266
266
|
}
|
267
267
|
}
|
268
|
-
|
268
|
+
|
269
269
|
this.set('childViews', childViews);
|
270
270
|
return this;
|
271
271
|
},
|
272
|
-
|
272
|
+
|
273
273
|
/** @private
|
274
274
|
Layout the views.
|
275
|
-
|
275
|
+
|
276
276
|
This method needs to be called anytime you change the view thicknesses
|
277
277
|
to make sure they are arranged properly. This will set up the views so
|
278
278
|
that they can resize appropriately.
|
@@ -289,19 +289,19 @@ SC.SplitView = SC.View.extend(
|
|
289
289
|
splitViewThickness = (direction === SC.LAYOUT_HORIZONTAL) ? frame.width : frame.height,
|
290
290
|
bottomRightThickness = splitViewThickness - dividerThickness - topLeftThickness,
|
291
291
|
layout, isCollapsed;
|
292
|
-
|
292
|
+
|
293
293
|
dividerThickness = (!SC.none(dividerThickness)) ? dividerThickness : 7;
|
294
|
-
|
294
|
+
|
295
295
|
// top/left view
|
296
296
|
isCollapsed = topLeftView.get('isCollapsed') || NO;
|
297
297
|
topLeftView.setIfChanged('isVisible', !isCollapsed);
|
298
298
|
layout = SC.clone(topLeftView.get('layout'));
|
299
|
-
|
299
|
+
|
300
300
|
if (direction === SC.LAYOUT_HORIZONTAL) {
|
301
301
|
layout.top = 0;
|
302
302
|
layout.left = 0;
|
303
303
|
layout.bottom = 0;
|
304
|
-
|
304
|
+
|
305
305
|
switch (autoresizeBehavior) {
|
306
306
|
case SC.RESIZE_BOTH:
|
307
307
|
throw "SC.RESIZE_BOTH is currently unsupported.";
|
@@ -319,7 +319,7 @@ SC.SplitView = SC.View.extend(
|
|
319
319
|
layout.top = 0;
|
320
320
|
layout.left = 0;
|
321
321
|
layout.right = 0;
|
322
|
-
|
322
|
+
|
323
323
|
switch (autoresizeBehavior) {
|
324
324
|
case SC.RESIZE_BOTH:
|
325
325
|
throw "SC.RESIZE_BOTH is currently unsupported.";
|
@@ -335,17 +335,17 @@ SC.SplitView = SC.View.extend(
|
|
335
335
|
}
|
336
336
|
}
|
337
337
|
topLeftView.set('layout', layout);
|
338
|
-
|
338
|
+
|
339
339
|
// split divider view
|
340
340
|
if (dividerView) {
|
341
341
|
layout = SC.clone(dividerView.get('layout'));
|
342
|
-
|
342
|
+
|
343
343
|
if (direction === SC.LAYOUT_HORIZONTAL) {
|
344
344
|
layout.width = dividerThickness;
|
345
345
|
layout.top = 0;
|
346
346
|
layout.bottom = 0;
|
347
347
|
delete layout.height;
|
348
|
-
|
348
|
+
|
349
349
|
switch (autoresizeBehavior) {
|
350
350
|
case SC.RESIZE_BOTH:
|
351
351
|
throw "SC.RESIZE_BOTH is currently unsupported.";
|
@@ -372,7 +372,7 @@ SC.SplitView = SC.View.extend(
|
|
372
372
|
layout.left = 0;
|
373
373
|
layout.right = 0;
|
374
374
|
delete layout.width;
|
375
|
-
|
375
|
+
|
376
376
|
switch (autoresizeBehavior) {
|
377
377
|
case SC.RESIZE_BOTH:
|
378
378
|
throw "SC.RESIZE_BOTH is currently unsupported.";
|
@@ -397,17 +397,17 @@ SC.SplitView = SC.View.extend(
|
|
397
397
|
}
|
398
398
|
dividerView.set('layout', layout);
|
399
399
|
}
|
400
|
-
|
400
|
+
|
401
401
|
// bottom/right view
|
402
402
|
isCollapsed = bottomRightView.get('isCollapsed') || NO;
|
403
403
|
bottomRightView.setIfChanged('isVisible', !isCollapsed);
|
404
404
|
layout = SC.clone(bottomRightView.get('layout'));
|
405
|
-
|
405
|
+
|
406
406
|
if (direction === SC.LAYOUT_HORIZONTAL) {
|
407
407
|
layout.top = 0;
|
408
408
|
layout.bottom = 0;
|
409
409
|
layout.right = 0;
|
410
|
-
|
410
|
+
|
411
411
|
switch (autoresizeBehavior) {
|
412
412
|
case SC.RESIZE_BOTH:
|
413
413
|
throw "SC.RESIZE_BOTH is currently unsupported.";
|
@@ -424,7 +424,7 @@ SC.SplitView = SC.View.extend(
|
|
424
424
|
layout.left = 0;
|
425
425
|
layout.right = 0;
|
426
426
|
layout.bottom = 0;
|
427
|
-
|
427
|
+
|
428
428
|
switch (autoresizeBehavior) {
|
429
429
|
case SC.RESIZE_BOTH:
|
430
430
|
throw "SC.RESIZE_BOTH is currently unsupported.";
|
@@ -439,16 +439,16 @@ SC.SplitView = SC.View.extend(
|
|
439
439
|
}
|
440
440
|
}
|
441
441
|
bottomRightView.set('layout', layout);
|
442
|
-
|
442
|
+
|
443
443
|
this
|
444
444
|
.notifyPropertyChange('topLeftThickness')
|
445
445
|
.notifyPropertyChange('bottomRightThickness');
|
446
446
|
},
|
447
|
-
|
447
|
+
|
448
448
|
/** @private */
|
449
449
|
renderLayout: function(context, firstTime) {
|
450
450
|
if (firstTime || this._recalculateDivider) {
|
451
|
-
|
451
|
+
|
452
452
|
var layoutDirection = this.get('layoutDirection'),
|
453
453
|
frame = this.get('frame'),
|
454
454
|
elem = this.$(),
|
@@ -456,39 +456,39 @@ SC.SplitView = SC.View.extend(
|
|
456
456
|
autoResizeBehavior = this.get('autoresizeBehavior'),
|
457
457
|
dividerThickness = this.get('dividerThickness'),
|
458
458
|
splitViewThickness;
|
459
|
-
|
459
|
+
|
460
460
|
if (!this.get('thumbViewCursor')) {
|
461
461
|
this.set('thumbViewCursor', SC.Cursor.create());
|
462
462
|
}
|
463
|
-
|
463
|
+
|
464
464
|
dividerThickness = !SC.none(dividerThickness) ? dividerThickness : 7;
|
465
|
-
|
466
|
-
// Turn a flag on to recalculate the
|
465
|
+
|
466
|
+
// Turn a flag on to recalculate the splitting if the desired thickness
|
467
467
|
// is a percentage
|
468
468
|
if (this._recalculateDivider === undefined && desiredThickness < 1) {
|
469
469
|
this._recalculateDivider = YES;
|
470
470
|
} else if (this._recalculateDivider) {
|
471
471
|
this._recalculateDivider = NO;
|
472
472
|
}
|
473
|
-
|
473
|
+
|
474
474
|
if (elem[0]) {
|
475
475
|
splitViewThickness = (layoutDirection === SC.LAYOUT_HORIZONTAL) ? elem[0].offsetWidth : elem[0].offsetHeight;
|
476
476
|
} else {
|
477
477
|
splitViewThickness = (layoutDirection === SC.LAYOUT_HORIZONTAL) ? frame.width : frame.height;
|
478
478
|
}
|
479
|
-
|
479
|
+
|
480
480
|
// if default thickness is < 1, convert from percentage to absolute
|
481
481
|
if (SC.none(desiredThickness) || (desiredThickness > 0 && desiredThickness < 1)) {
|
482
482
|
desiredThickness = Math.floor((splitViewThickness - (dividerThickness)) * (desiredThickness || 0.5));
|
483
483
|
}
|
484
|
-
|
484
|
+
|
485
485
|
if (autoResizeBehavior === SC.RESIZE_BOTTOM_RIGHT) {
|
486
486
|
this._desiredTopLeftThickness = desiredThickness;
|
487
487
|
} else {
|
488
488
|
this._desiredTopLeftThickness = splitViewThickness - dividerThickness - desiredThickness ;
|
489
489
|
}
|
490
|
-
|
491
|
-
// make sure we don't exceed our min and max values, and that collapse
|
490
|
+
|
491
|
+
// make sure we don't exceed our min and max values, and that collapse
|
492
492
|
// settings are respected
|
493
493
|
// cached values are required by _updateTopLeftThickness() below...
|
494
494
|
this._topLeftView = this.get('topLeftView');
|
@@ -497,46 +497,46 @@ SC.SplitView = SC.View.extend(
|
|
497
497
|
this._bottomRightThickness = this.thicknessForView(this.get('bottomRightView'));
|
498
498
|
this._dividerThickness = this.get('dividerThickness');
|
499
499
|
this._layoutDirection = this.get('layoutDirection');
|
500
|
-
|
500
|
+
|
501
501
|
// this handles min-max settings and collapse parameters
|
502
502
|
this._updateTopLeftThickness(0);
|
503
|
-
|
503
|
+
|
504
504
|
// update the cursor used by thumb views
|
505
505
|
this._setCursorStyle();
|
506
|
-
|
506
|
+
|
507
507
|
// actually set layout for our child views
|
508
508
|
this.updateChildLayout();
|
509
509
|
}
|
510
|
-
|
510
|
+
|
511
511
|
sc_super();
|
512
512
|
},
|
513
|
-
|
513
|
+
|
514
514
|
/** @private */
|
515
515
|
render: function(context, firstTime) {
|
516
516
|
sc_super();
|
517
|
-
|
517
|
+
|
518
518
|
if (this._inLiveResize) this._setCursorStyle();
|
519
|
-
|
519
|
+
|
520
520
|
if (this.get('layoutDirection') === SC.LAYOUT_HORIZONTAL) context.addClass('sc-horizontal');
|
521
521
|
else context.addClass('sc-vertical');
|
522
522
|
},
|
523
|
-
|
523
|
+
|
524
524
|
/** @private
|
525
525
|
Update the split view's layout based on mouse movement.
|
526
|
-
|
526
|
+
|
527
527
|
Call this method in the mouseDown: method of your thumb view. The split view
|
528
|
-
will begin tracking the mouse and will update its own layout to reflect the movement
|
528
|
+
will begin tracking the mouse and will update its own layout to reflect the movement
|
529
529
|
of the mouse. As a result, the position of your thumb view will also be updated.
|
530
|
-
|
530
|
+
|
531
531
|
@returns {Boolean}
|
532
532
|
*/
|
533
533
|
mouseDownInThumbView: function(evt, thumbView) {
|
534
534
|
var responder = this.getPath('pane.rootResponder');
|
535
535
|
if (!responder) return NO; // nothing to do
|
536
|
-
|
536
|
+
|
537
537
|
// we're not the source view of the mouseDown:, so we need to capture events manually to receive them
|
538
538
|
responder.dragDidStart(this);
|
539
|
-
|
539
|
+
|
540
540
|
// cache for later
|
541
541
|
this._mouseDownX = evt.pageX;
|
542
542
|
this._mouseDownY = evt.pageY;
|
@@ -547,20 +547,20 @@ SC.SplitView = SC.View.extend(
|
|
547
547
|
this._bottomRightThickness = this.thicknessForView(this.get('bottomRightView'));
|
548
548
|
this._dividerThickness = this.get('dividerThickness');
|
549
549
|
this._layoutDirection = this.get('layoutDirection');
|
550
|
-
|
550
|
+
|
551
551
|
this.beginLiveResize();
|
552
552
|
this._inLiveResize = YES;
|
553
|
-
|
553
|
+
|
554
554
|
return YES;
|
555
555
|
},
|
556
|
-
|
556
|
+
|
557
557
|
/** @private */
|
558
558
|
mouseDragged: function(evt) {
|
559
559
|
var offset = (this._layoutDirection === SC.LAYOUT_HORIZONTAL) ? evt.pageX - this._mouseDownX : evt.pageY - this._mouseDownY ;
|
560
560
|
this._updateTopLeftThickness(offset);
|
561
561
|
return YES;
|
562
562
|
},
|
563
|
-
|
563
|
+
|
564
564
|
/** @private */
|
565
565
|
mouseUp: function(evt) {
|
566
566
|
if (this._inLiveResize === YES) {
|
@@ -569,38 +569,32 @@ SC.SplitView = SC.View.extend(
|
|
569
569
|
this.endLiveResize();
|
570
570
|
return YES;
|
571
571
|
}
|
572
|
-
|
573
|
-
|
574
|
-
cloneCursor = SC.clone(cursor),
|
575
|
-
dV= this.get('dividerView');
|
576
|
-
cursor.set('cursorStyle', SC.SYSTEM_CURSOR);
|
577
|
-
dV.set('cursor', cloneCursor);
|
578
|
-
this.set('cursor', cursor);
|
579
|
-
|
572
|
+
|
573
|
+
this._setCursorStyle();
|
580
574
|
return NO;
|
581
575
|
},
|
582
|
-
|
576
|
+
|
583
577
|
/** @private */
|
584
578
|
touchesDragged: function(evt){
|
585
579
|
return this.mouseDragged(evt);
|
586
580
|
},
|
587
|
-
|
581
|
+
|
588
582
|
/** @private */
|
589
583
|
touchEnd: function(evt){
|
590
584
|
return this.mouseUp(evt);
|
591
585
|
},
|
592
|
-
|
586
|
+
|
593
587
|
/** @private */
|
594
588
|
doubleClickInThumbView: function(evt, thumbView) {
|
595
589
|
var view = this._topLeftView,
|
596
590
|
isCollapsed = view.get('isCollapsed') || NO;
|
597
|
-
|
591
|
+
|
598
592
|
if (!isCollapsed && !this.canCollapseView(view)) {
|
599
593
|
view = this._bottomRightView;
|
600
594
|
isCollapsed = view.get('isCollapsed') || NO;
|
601
595
|
if (!isCollapsed && !this.canCollapseView(view)) return NO;
|
602
596
|
}
|
603
|
-
|
597
|
+
|
604
598
|
if (!isCollapsed) {
|
605
599
|
// remember thickness in it's uncollapsed state
|
606
600
|
this._uncollapsedThickness = this.thicknessForView(view);
|
@@ -611,7 +605,7 @@ SC.SplitView = SC.View.extend(
|
|
611
605
|
} else {
|
612
606
|
this._updateBottomRightThickness(this.bottomRightThickness()*-1);
|
613
607
|
}
|
614
|
-
|
608
|
+
|
615
609
|
// if however the splitview decided not to collapse, clear:
|
616
610
|
if (!view.get("isCollapsed")) {
|
617
611
|
this._uncollapsedThickness = null;
|
@@ -628,13 +622,13 @@ SC.SplitView = SC.View.extend(
|
|
628
622
|
this._setCursorStyle();
|
629
623
|
return true;
|
630
624
|
},
|
631
|
-
|
625
|
+
|
632
626
|
/** @private */
|
633
627
|
_updateTopLeftThickness: function(offset) {
|
634
628
|
var topLeftView = this._topLeftView,
|
635
629
|
bottomRightView = this._bottomRightView,
|
636
630
|
// the current thickness, not the original thickness
|
637
|
-
topLeftViewThickness = this.thicknessForView(topLeftView),
|
631
|
+
topLeftViewThickness = this.thicknessForView(topLeftView),
|
638
632
|
bottomRightViewThickness = this.thicknessForView(bottomRightView),
|
639
633
|
minAvailable = this._dividerThickness,
|
640
634
|
maxAvailable = 0,
|
@@ -646,17 +640,17 @@ SC.SplitView = SC.View.extend(
|
|
646
640
|
max = this.get('topLeftMaxThickness'),
|
647
641
|
min = this.get('topLeftMinThickness'),
|
648
642
|
bottomRightThickness, tlCollapseAtThickness, brCollapseAtThickness;
|
649
|
-
|
643
|
+
|
650
644
|
if (!topLeftView.get("isCollapsed")) {
|
651
645
|
maxAvailable += topLeftViewThickness;
|
652
646
|
}
|
653
647
|
if (!bottomRightView.get("isCollapsed")) {
|
654
648
|
maxAvailable += bottomRightViewThickness;
|
655
649
|
}
|
656
|
-
|
650
|
+
|
657
651
|
if (!SC.none(max)) thickness = Math.min(max, thickness);
|
658
652
|
if (!SC.none(min)) thickness = Math.max(min, thickness);
|
659
|
-
|
653
|
+
|
660
654
|
// constrain to thickness set on bottom/right
|
661
655
|
max = this.get('bottomRightMaxThickness');
|
662
656
|
min = this.get('bottomRightMinThickness');
|
@@ -668,22 +662,22 @@ SC.SplitView = SC.View.extend(
|
|
668
662
|
bottomRightThickness = Math.max(min, bottomRightThickness);
|
669
663
|
}
|
670
664
|
thickness = maxAvailable - bottomRightThickness;
|
671
|
-
|
665
|
+
|
672
666
|
// constrain to thickness determined by delegate.
|
673
|
-
thickness = this.invokeDelegateMethod(this.delegate,
|
667
|
+
thickness = this.invokeDelegateMethod(this.delegate,
|
674
668
|
'splitViewConstrainThickness', this, topLeftView, thickness);
|
675
|
-
|
669
|
+
|
676
670
|
// cannot be more than what's available
|
677
671
|
thickness = Math.min(thickness, maxAvailable);
|
678
|
-
|
672
|
+
|
679
673
|
// cannot be less than zero
|
680
674
|
thickness = Math.max(0, thickness);
|
681
|
-
|
675
|
+
|
682
676
|
tlCollapseAtThickness = topLeftView.get('collapseAtThickness');
|
683
677
|
if (!tlCollapseAtThickness) tlCollapseAtThickness = 0;
|
684
678
|
brCollapseAtThickness = bottomRightView.get('collapseAtThickness');
|
685
679
|
brCollapseAtThickness = SC.none(brCollapseAtThickness) ? maxAvailable : (maxAvailable - brCollapseAtThickness);
|
686
|
-
|
680
|
+
|
687
681
|
if ((proposedThickness <= tlCollapseAtThickness) && this.canCollapseView(topLeftView)) {
|
688
682
|
// want to collapse top/left, check if this doesn't violate the max thickness of bottom/right
|
689
683
|
max = bottomRightView.get('maxThickness');
|
@@ -699,21 +693,21 @@ SC.SplitView = SC.View.extend(
|
|
699
693
|
thickness = maxAvailable;
|
700
694
|
}
|
701
695
|
}
|
702
|
-
|
696
|
+
|
703
697
|
// now apply constrained value
|
704
698
|
if (thickness != this.thicknessForView(topLeftView)) {
|
705
699
|
this._desiredTopLeftThickness = thickness;
|
706
|
-
|
700
|
+
|
707
701
|
// un-collapse if needed.
|
708
702
|
topLeftView.set('isCollapsed', thickness === 0);
|
709
703
|
bottomRightView.set('isCollapsed', thickness >= maxAvailable);
|
710
|
-
|
704
|
+
|
711
705
|
this.updateChildLayout(); // updates child layouts
|
712
706
|
this.displayDidChange(); // updates cursor
|
713
707
|
}
|
714
708
|
},
|
715
|
-
|
716
|
-
|
709
|
+
|
710
|
+
|
717
711
|
/** @private */
|
718
712
|
_updateBottomRightThickness: function(offset) {
|
719
713
|
var topLeftView = this._topLeftView ,
|
@@ -730,13 +724,13 @@ SC.SplitView = SC.View.extend(
|
|
730
724
|
max = this.get('topLeftMaxThickness'),
|
731
725
|
min = this.get('topLeftMinThickness'),
|
732
726
|
bottomRightThickness, tlCollapseAtThickness, brCollapseAtThickness;
|
733
|
-
|
727
|
+
|
734
728
|
if (!topLeftView.get("isCollapsed")) maxAvailable += topLeftViewThickness;
|
735
729
|
if (!bottomRightView.get("isCollapsed")) maxAvailable += bottomRightViewThickness;
|
736
|
-
|
730
|
+
|
737
731
|
if (!SC.none(max)) thickness = Math.min(max, thickness);
|
738
732
|
if (!SC.none(min)) thickness = Math.max(min, thickness);
|
739
|
-
|
733
|
+
|
740
734
|
// constrain to thickness set on bottom/right
|
741
735
|
max = this.get('bottomRightMaxThickness');
|
742
736
|
min = this.get('bottomRightMinThickness');
|
@@ -744,21 +738,21 @@ SC.SplitView = SC.View.extend(
|
|
744
738
|
if (!SC.none(max)) bottomRightThickness = Math.min(max, bottomRightThickness);
|
745
739
|
if (!SC.none(min)) bottomRightThickness = Math.max(min, bottomRightThickness);
|
746
740
|
thickness = maxAvailable - bottomRightThickness;
|
747
|
-
|
741
|
+
|
748
742
|
// constrain to thickness determined by delegate.
|
749
743
|
thickness = this.invokeDelegateMethod(this.delegate, 'splitViewConstrainThickness', this, topLeftView, thickness);
|
750
|
-
|
744
|
+
|
751
745
|
// cannot be more than what's available
|
752
746
|
thickness = Math.min(thickness, maxAvailable);
|
753
|
-
|
747
|
+
|
754
748
|
// cannot be less than zero
|
755
749
|
thickness = Math.max(0, thickness);
|
756
|
-
|
750
|
+
|
757
751
|
tlCollapseAtThickness = topLeftView.get('collapseAtThickness');
|
758
752
|
if (!tlCollapseAtThickness) tlCollapseAtThickness = 0;
|
759
753
|
brCollapseAtThickness = bottomRightView.get('collapseAtThickness');
|
760
754
|
brCollapseAtThickness = SC.none(brCollapseAtThickness) ? maxAvailable : (maxAvailable - brCollapseAtThickness);
|
761
|
-
|
755
|
+
|
762
756
|
if ((proposedThickness <= tlCollapseAtThickness) && this.canCollapseView(topLeftView)) {
|
763
757
|
// want to collapse top/left, check if this doesn't violate the max thickness of bottom/right
|
764
758
|
max = bottomRightView.get('maxThickness');
|
@@ -774,64 +768,64 @@ SC.SplitView = SC.View.extend(
|
|
774
768
|
thickness = maxAvailable;
|
775
769
|
}
|
776
770
|
}
|
777
|
-
|
771
|
+
|
778
772
|
// now apply constrained value
|
779
773
|
if (thickness != this.thicknessForView(topLeftView)) {
|
780
774
|
this._desiredTopLeftThickness = thickness;
|
781
|
-
|
775
|
+
|
782
776
|
// un-collapse if needed.
|
783
777
|
topLeftView.set('isCollapsed', thickness === 0);
|
784
778
|
bottomRightView.set('isCollapsed', thickness >= maxAvailable);
|
785
|
-
|
779
|
+
|
786
780
|
this.updateChildLayout(); // updates child layouts
|
787
781
|
this.displayDidChange(); // updates cursor
|
788
782
|
}
|
789
783
|
},
|
790
|
-
|
791
|
-
/**
|
784
|
+
|
785
|
+
/**
|
792
786
|
This observes 'layoutDirection' to update the cursor style immediately
|
793
787
|
after the value of the layoutDirection of Split view is changed
|
794
788
|
|
795
|
-
@private
|
789
|
+
@private
|
796
790
|
*/
|
797
791
|
_setCursorStyle: function() {
|
798
792
|
var topLeftView = this._topLeftView,
|
799
793
|
bottomRightView = this._bottomRightView,
|
800
794
|
thumbViewCursor = this.get('thumbViewCursor'),
|
801
|
-
// updates the cursor of the thumb view that called
|
795
|
+
// updates the cursor of the thumb view that called
|
802
796
|
// mouseDownInThumbView() to reflect the status of the drag
|
803
797
|
tlThickness = this.thicknessForView(topLeftView),
|
804
798
|
brThickness = this.thicknessForView(bottomRightView),
|
805
799
|
dV = this.get('dividerView');
|
806
800
|
this._layoutDirection = this.get('layoutDirection');
|
807
|
-
if (topLeftView.get('isCollapsed') ||
|
808
|
-
tlThickness === this.get("topLeftMinThickness") ||
|
801
|
+
if (topLeftView.get('isCollapsed') ||
|
802
|
+
tlThickness === this.get("topLeftMinThickness") ||
|
809
803
|
brThickness == this.get("bottomRightMaxThickness")) {
|
810
804
|
thumbViewCursor.set('cursorStyle', this._layoutDirection === SC.LAYOUT_HORIZONTAL ? "e-resize" : "s-resize");
|
811
|
-
} else if (bottomRightView.get('isCollapsed') ||
|
812
|
-
tlThickness === this.get("topLeftMaxThickness") ||
|
805
|
+
} else if (bottomRightView.get('isCollapsed') ||
|
806
|
+
tlThickness === this.get("topLeftMaxThickness") ||
|
813
807
|
brThickness == this.get("bottomRightMinThickness")) {
|
814
808
|
thumbViewCursor.set('cursorStyle', this._layoutDirection === SC.LAYOUT_HORIZONTAL ? "w-resize" : "n-resize");
|
815
809
|
} else {
|
816
|
-
if(SC.browser.
|
810
|
+
if(SC.browser.isIE) {
|
817
811
|
thumbViewCursor.set('cursorStyle', this._layoutDirection === SC.LAYOUT_HORIZONTAL ? "e-resize" : "n-resize");
|
818
812
|
}
|
819
813
|
else {
|
820
814
|
thumbViewCursor.set('cursorStyle', this._layoutDirection === SC.LAYOUT_HORIZONTAL ? "ew-resize" : "ns-resize");
|
821
815
|
}
|
822
816
|
}
|
823
|
-
|
817
|
+
|
824
818
|
dV.set('cursor', thumbViewCursor);
|
825
819
|
if( this._inLiveResize) this.set('cursor', thumbViewCursor);
|
826
820
|
}.observes('layoutDirection'),
|
827
|
-
|
821
|
+
|
828
822
|
/**
|
829
823
|
(DELEGATE) Control whether a view can be collapsed.
|
830
|
-
|
831
|
-
The default
|
824
|
+
|
825
|
+
The default implementation returns NO if the split view property
|
832
826
|
canCollapseViews is set to NO or when the given view has
|
833
827
|
property canCollapse set to NO, otherwise it returns YES.
|
834
|
-
|
828
|
+
|
835
829
|
@param {SC.SplitView} splitView the split view
|
836
830
|
@param {SC.View} view the view we want to collapse.
|
837
831
|
@returns {Boolean} YES to allow collapse.
|
@@ -841,14 +835,14 @@ SC.SplitView = SC.View.extend(
|
|
841
835
|
if (view.get('canCollapse') === NO) return NO;
|
842
836
|
return YES;
|
843
837
|
},
|
844
|
-
|
838
|
+
|
845
839
|
/**
|
846
840
|
(DELEGATE) Constrain a views allowed thickness.
|
847
|
-
|
841
|
+
|
848
842
|
The default implementation allows any thickness. The view will
|
849
843
|
automatically constrain the view to not allow views to overflow the
|
850
844
|
visible area.
|
851
|
-
|
845
|
+
|
852
846
|
@param {SC.SplitView} splitView the split view
|
853
847
|
@param {SC.View} view the view in question
|
854
848
|
@param {Number} proposedThickness the proposed thickness.
|
@@ -857,11 +851,11 @@ SC.SplitView = SC.View.extend(
|
|
857
851
|
splitViewConstrainThickness: function(splitView, view, proposedThickness) {
|
858
852
|
return proposedThickness;
|
859
853
|
},
|
860
|
-
|
854
|
+
|
861
855
|
/* Force to rendering once the pane is attached */
|
862
856
|
/** @private */
|
863
857
|
_forceSplitCalculation: function(){
|
864
|
-
this.updateLayout();
|
858
|
+
this.updateLayout();
|
865
859
|
}.observes('*pane.isPaneAttached'),
|
866
860
|
|
867
861
|
/** @private
|