sproutcore 1.7.1.beta → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/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
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// ==========================================================================
|
|
2
|
+
// Project: SC.Statechart - A Statechart Framework for SproutCore
|
|
3
|
+
// Copyright: ©2010, 2011 Michael Cohen, and contributors.
|
|
4
|
+
// Portions @2011 Apple Inc. All rights reserved.
|
|
5
|
+
// License: Licensed under MIT license (see license.js)
|
|
6
|
+
// ==========================================================================
|
|
7
|
+
|
|
8
|
+
/*globals SC */
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
@class
|
|
12
|
+
|
|
13
|
+
Represents contextual information for whenever a state handles a triggered
|
|
14
|
+
route. In additional to retaining contextual information, you can also
|
|
15
|
+
use the object to retry trigging the state's route handler. Useful in cases
|
|
16
|
+
where you need to defer the handling of the route for a later time.
|
|
17
|
+
|
|
18
|
+
@see SC.State
|
|
19
|
+
|
|
20
|
+
@extends SC.Object
|
|
21
|
+
@author Michael Cohen
|
|
22
|
+
*/
|
|
23
|
+
SC.StateRouteHandlerContext = SC.Object.extend(
|
|
24
|
+
/** @scope SC.StateRouteContext.prototype */{
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
The state that constructed this context object.
|
|
28
|
+
|
|
29
|
+
@property {SC.State}
|
|
30
|
+
*/
|
|
31
|
+
state: null,
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
The location that caused the state's route to be
|
|
35
|
+
triggered.
|
|
36
|
+
|
|
37
|
+
@property {String}
|
|
38
|
+
*/
|
|
39
|
+
location: null,
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
The parameters that were supplied to the state's
|
|
43
|
+
handler when the state's route was triggered.
|
|
44
|
+
|
|
45
|
+
@property {Hash}
|
|
46
|
+
*/
|
|
47
|
+
params: null,
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
The handler that got invoked when the state's
|
|
51
|
+
route was triggered. This can either be a reference
|
|
52
|
+
to the actual method or a name of the method.
|
|
53
|
+
|
|
54
|
+
@property {Function|String}
|
|
55
|
+
*/
|
|
56
|
+
handler: null,
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
Used to retry invoking the state's handler for when
|
|
60
|
+
the state's route gets triggered. When called this will
|
|
61
|
+
essentially perform the same call as when the handler
|
|
62
|
+
was originally triggered on state.
|
|
63
|
+
*/
|
|
64
|
+
retry: function() {
|
|
65
|
+
var state = this.get('state'),
|
|
66
|
+
params = this.get('params'),
|
|
67
|
+
handler = this.get('handler');
|
|
68
|
+
|
|
69
|
+
if (SC.typeOf(handler) === SC.T_STRING) {
|
|
70
|
+
handler = state[handler];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (SC.typeOf(handler) === SC.T_FUNCTION) {
|
|
74
|
+
handler.apply(state, [params]);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
});
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
/*globals SC */
|
|
9
9
|
|
|
10
10
|
sc_require('system/state');
|
|
11
|
+
sc_require('mixins/statechart_delegate');
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
@class
|
|
@@ -15,7 +16,7 @@ sc_require('system/state');
|
|
|
15
16
|
The startchart manager mixin allows an object to be a statechart. By becoming a statechart, the
|
|
16
17
|
object can then be manage a set of its own states.
|
|
17
18
|
|
|
18
|
-
This
|
|
19
|
+
This implementation of the statechart manager closely follows the concepts stated in D. Harel's
|
|
19
20
|
original paper "Statecharts: A Visual Formalism For Complex Systems"
|
|
20
21
|
(www.wisdom.weizmann.ac.il/~harel/papers/Statecharts.pdf).
|
|
21
22
|
|
|
@@ -121,7 +122,7 @@ sc_require('system/state');
|
|
|
121
122
|
initialSubstate: 'stateX',
|
|
122
123
|
|
|
123
124
|
stateX: SC.State.design({ ... })
|
|
124
|
-
stateY: SC.State.
|
|
125
|
+
stateY: SC.State.design({ ... })
|
|
125
126
|
})
|
|
126
127
|
})
|
|
127
128
|
});
|
|
@@ -182,6 +183,13 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
182
183
|
*/
|
|
183
184
|
statechartIsInitialized: NO,
|
|
184
185
|
|
|
186
|
+
/**
|
|
187
|
+
Optional name you can provide the statechart with. If set this will be included
|
|
188
|
+
in tracing and error output as well as detail output. Useful for
|
|
189
|
+
debugging/diagnostic purposes
|
|
190
|
+
*/
|
|
191
|
+
name: null,
|
|
192
|
+
|
|
185
193
|
/**
|
|
186
194
|
The root state of this statechart. All statecharts must have a root state.
|
|
187
195
|
|
|
@@ -210,7 +218,7 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
210
218
|
rootStateExample: SC.State,
|
|
211
219
|
|
|
212
220
|
/**
|
|
213
|
-
Indicates what state should be the
|
|
221
|
+
Indicates what state should be the initial state of this statechart. The value
|
|
214
222
|
assigned must be the name of a property on this object that represents a state.
|
|
215
223
|
As well, the statesAreConcurrent must be set to NO.
|
|
216
224
|
|
|
@@ -308,6 +316,29 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
308
316
|
*/
|
|
309
317
|
suppressStatechartWarnings: NO,
|
|
310
318
|
|
|
319
|
+
/**
|
|
320
|
+
A statechart delegate used by the statechart and the states that the statechart
|
|
321
|
+
manages. The value assigned must adhere to the {@link SC.StatechartDelegate} mixin.
|
|
322
|
+
|
|
323
|
+
@property {SC.Object}
|
|
324
|
+
|
|
325
|
+
@see SC.StatechartDelegate
|
|
326
|
+
*/
|
|
327
|
+
delegate: null,
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
Computed property that returns an objects that adheres to the
|
|
331
|
+
{@link SC.StatechartDelegate} mixin. If the {@link #delegate} is not
|
|
332
|
+
assigned then this object is the default value returned.
|
|
333
|
+
|
|
334
|
+
@see SC.StatechartDelegate
|
|
335
|
+
@see #delegate
|
|
336
|
+
*/
|
|
337
|
+
statechartDelegate: function() {
|
|
338
|
+
var del = this.get('delegate');
|
|
339
|
+
return this.delegateFor('isStatechartDelegate', del);
|
|
340
|
+
}.property('delegate'),
|
|
341
|
+
|
|
311
342
|
initMixin: function() {
|
|
312
343
|
if (this.get('autoInitStatechart')) {
|
|
313
344
|
this.initStatechart();
|
|
@@ -476,10 +507,11 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
476
507
|
@param value {State|String} either a state object of the name of a state
|
|
477
508
|
@returns {State} if a match then the matching state is returned, otherwise null is returned
|
|
478
509
|
*/
|
|
479
|
-
getState: function(
|
|
480
|
-
|
|
510
|
+
getState: function(state) {
|
|
511
|
+
var root = this.get('rootState');
|
|
512
|
+
return root === state ? root : root.getSubstate(state);
|
|
481
513
|
},
|
|
482
|
-
|
|
514
|
+
|
|
483
515
|
/**
|
|
484
516
|
When called, the statechart will proceed with making state transitions in the statechart starting from
|
|
485
517
|
a current state that meet the statechart conditions. When complete, some or all of the statechart's
|
|
@@ -524,7 +556,6 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
524
556
|
@param context {Hash} Optional. A context object that will be passed to all exited and entered states
|
|
525
557
|
*/
|
|
526
558
|
gotoState: function(state, fromCurrentState, useHistory, context) {
|
|
527
|
-
|
|
528
559
|
if (!this.get('statechartIsInitialized')) {
|
|
529
560
|
this.statechartLogError("can not go to state %@. statechart has not yet been initialized".fmt(state));
|
|
530
561
|
return;
|
|
@@ -551,7 +582,7 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
551
582
|
paramFromCurrentState = fromCurrentState,
|
|
552
583
|
msg;
|
|
553
584
|
|
|
554
|
-
state =
|
|
585
|
+
state = this.getState(state);
|
|
555
586
|
|
|
556
587
|
if (SC.none(state)) {
|
|
557
588
|
this.statechartLogError("Can not to goto state %@. Not a recognized state in statechart".fmt(paramState));
|
|
@@ -576,9 +607,9 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
576
607
|
// interferes.
|
|
577
608
|
this._gotoStateLocked = YES;
|
|
578
609
|
|
|
579
|
-
if (
|
|
610
|
+
if (fromCurrentState) {
|
|
580
611
|
// Check to make sure the current state given is actually a current state of this statechart
|
|
581
|
-
fromCurrentState =
|
|
612
|
+
fromCurrentState = this.getState(fromCurrentState);
|
|
582
613
|
if (SC.none(fromCurrentState) || !fromCurrentState.get('isCurrentState')) {
|
|
583
614
|
msg = "Can not to goto state %@. %@ is not a recognized current state in statechart";
|
|
584
615
|
this.statechartLogError(msg.fmt(paramState, paramFromCurrentState));
|
|
@@ -586,12 +617,11 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
586
617
|
return;
|
|
587
618
|
}
|
|
588
619
|
}
|
|
589
|
-
else
|
|
590
|
-
// No explicit current state to start from; therefore,
|
|
591
|
-
//
|
|
592
|
-
fromCurrentState =
|
|
593
|
-
|
|
594
|
-
this.statechartLogWarning(msg.fmt(fromCurrentState));
|
|
620
|
+
else {
|
|
621
|
+
// No explicit current state to start from; therefore, need to find a current state
|
|
622
|
+
// to transition from.
|
|
623
|
+
fromCurrentState = state.findFirstRelativeCurrentState();
|
|
624
|
+
if (!fromCurrentState) fromCurrentState = this.get('firstCurrentState');
|
|
595
625
|
}
|
|
596
626
|
|
|
597
627
|
if (trace) {
|
|
@@ -618,7 +648,7 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
618
648
|
|
|
619
649
|
if (pivotState) {
|
|
620
650
|
if (trace) this.statechartLogTrace("pivot state = %@".fmt(pivotState));
|
|
621
|
-
if (pivotState.get('substatesAreConcurrent')) {
|
|
651
|
+
if (pivotState.get('substatesAreConcurrent') && pivotState !== state) {
|
|
622
652
|
this.statechartLogError("Can not go to state %@ from %@. Pivot state %@ has concurrent substates.".fmt(state, fromCurrentState, pivotState));
|
|
623
653
|
this._gotoStateLocked = NO;
|
|
624
654
|
return;
|
|
@@ -628,6 +658,7 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
628
658
|
// Collect what actions to perform for the state transition process
|
|
629
659
|
var gotoStateActions = [];
|
|
630
660
|
|
|
661
|
+
|
|
631
662
|
// Go ahead and find states that are to be exited
|
|
632
663
|
this._traverseStatesToExit(exitStates.shift(), exitStates, pivotState, gotoStateActions);
|
|
633
664
|
|
|
@@ -640,6 +671,7 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
640
671
|
}
|
|
641
672
|
|
|
642
673
|
// Collected all the state transition actions to be performed. Now execute them.
|
|
674
|
+
this._gotoStateActions = gotoStateActions;
|
|
643
675
|
this._executeGotoStateActions(state, gotoStateActions, null, context);
|
|
644
676
|
},
|
|
645
677
|
|
|
@@ -680,7 +712,7 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
680
712
|
marker = SC.none(marker) ? 0 : marker;
|
|
681
713
|
|
|
682
714
|
for (; marker < len; marker += 1) {
|
|
683
|
-
action = actions[marker];
|
|
715
|
+
this._currentGotoStateAction = action = actions[marker];
|
|
684
716
|
switch (action.action) {
|
|
685
717
|
case SC.EXIT_STATE:
|
|
686
718
|
actionResult = this._exitState(action.state, context);
|
|
@@ -722,9 +754,14 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
722
754
|
this.statechartLogTrace("END gotoState: %@".fmt(gotoState));
|
|
723
755
|
}
|
|
724
756
|
|
|
725
|
-
|
|
726
|
-
|
|
757
|
+
this._cleanupStateTransition();
|
|
758
|
+
},
|
|
759
|
+
|
|
760
|
+
/** @private */
|
|
761
|
+
_cleanupStateTransition: function() {
|
|
762
|
+
this._currentGotoStateAction = null;
|
|
727
763
|
this._gotoStateSuspendedPoint = null;
|
|
764
|
+
this._gotoStateActions = null;
|
|
728
765
|
this._gotoStateLocked = NO;
|
|
729
766
|
this._flushPendingStateTransition();
|
|
730
767
|
},
|
|
@@ -747,14 +784,15 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
747
784
|
parentState = parentState.get('parentState');
|
|
748
785
|
}
|
|
749
786
|
|
|
750
|
-
if (this.get('allowStatechartTracing'))
|
|
787
|
+
if (this.get('allowStatechartTracing')) {
|
|
788
|
+
this.statechartLogTrace("<-- exiting state: %@".fmt(state));
|
|
789
|
+
}
|
|
751
790
|
|
|
752
791
|
state.set('currentSubstates', []);
|
|
753
|
-
state.notifyPropertyChange('isCurrentState');
|
|
754
792
|
|
|
755
|
-
state.stateWillBecomeExited();
|
|
793
|
+
state.stateWillBecomeExited(context);
|
|
756
794
|
var result = this.exitState(state, context);
|
|
757
|
-
state.stateDidBecomeExited();
|
|
795
|
+
state.stateDidBecomeExited(context);
|
|
758
796
|
|
|
759
797
|
if (this.get('monitorIsActive')) this.get('monitor').pushExitedState(state);
|
|
760
798
|
|
|
@@ -797,11 +835,9 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
797
835
|
|
|
798
836
|
if (this.get('allowStatechartTracing')) this.statechartLogTrace("--> entering state: %@".fmt(state));
|
|
799
837
|
|
|
800
|
-
state.
|
|
801
|
-
|
|
802
|
-
state.stateWillBecomeEntered();
|
|
838
|
+
state.stateWillBecomeEntered(context);
|
|
803
839
|
var result = this.enterState(state, context);
|
|
804
|
-
state.stateDidBecomeEntered();
|
|
840
|
+
state.stateDidBecomeEntered(context);
|
|
805
841
|
|
|
806
842
|
if (this.get('monitorIsActive')) this.get('monitor').pushEnteredState(state);
|
|
807
843
|
|
|
@@ -814,11 +850,21 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
814
850
|
Called during the state transition process whenever the gotoState method is
|
|
815
851
|
invoked.
|
|
816
852
|
|
|
853
|
+
If the context provided is a state route context object
|
|
854
|
+
({@link SC.StateRouteContext}), then if the given state has a enterStateByRoute
|
|
855
|
+
method, that method will be invoked, otherwise the state's enterState method
|
|
856
|
+
will be invoked by default. The state route context object will be supplied to
|
|
857
|
+
both enter methods in either case.
|
|
858
|
+
|
|
817
859
|
@param state {SC.State} the state whose enterState method is to be invoked
|
|
818
860
|
@param context {Hash} a context hash object to provide the enterState method
|
|
819
861
|
*/
|
|
820
862
|
enterState: function(state, context) {
|
|
821
|
-
|
|
863
|
+
if (state.enterStateByRoute && SC.kindOf(context, SC.StateRouteHandlerContext)) {
|
|
864
|
+
return state.enterStateByRoute(context);
|
|
865
|
+
} else {
|
|
866
|
+
return state.enterState(context);
|
|
867
|
+
}
|
|
822
868
|
},
|
|
823
869
|
|
|
824
870
|
/**
|
|
@@ -840,17 +886,17 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
840
886
|
Method can be called in the following ways:
|
|
841
887
|
|
|
842
888
|
// With one arguments.
|
|
843
|
-
|
|
889
|
+
gotoHistoryState(<state>)
|
|
844
890
|
|
|
845
891
|
// With two arguments.
|
|
846
|
-
|
|
892
|
+
gotoHistoryState(<state>, <state | boolean | hash>)
|
|
847
893
|
|
|
848
894
|
// With three arguments.
|
|
849
|
-
|
|
850
|
-
|
|
895
|
+
gotoHistoryState(<state>, <state>, <boolean | hash>)
|
|
896
|
+
gotoHistoryState(<state>, <boolean>, <hash>)
|
|
851
897
|
|
|
852
898
|
// With four argumetns
|
|
853
|
-
|
|
899
|
+
gotoHistoryState(<state>, <state>, <boolean>, <hash>)
|
|
854
900
|
|
|
855
901
|
where <state> is either a SC.State object or a string and <hash> is a regular JS hash object.
|
|
856
902
|
|
|
@@ -897,10 +943,17 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
897
943
|
If a current state does can not respond to the sent event, then the current state's parent state
|
|
898
944
|
will be tried. This process is recursively done until no more parent state can be tried.
|
|
899
945
|
|
|
946
|
+
Note that a state will only be checked once if it can respond to an event. Therefore, if
|
|
947
|
+
there is a state S that handles event foo and S has concurrent substates, then foo will
|
|
948
|
+
only be invoked once; not as many times as there are substates.
|
|
949
|
+
|
|
900
950
|
@param event {String} name of the event
|
|
901
951
|
@param arg1 {Object} optional argument
|
|
902
952
|
@param arg2 {Object} optional argument
|
|
903
953
|
@returns {SC.Responder} the responder that handled it or null
|
|
954
|
+
|
|
955
|
+
@see #stateWillTryToHandleEvent
|
|
956
|
+
@see #stateDidTryToHandleEvent
|
|
904
957
|
*/
|
|
905
958
|
sendEvent: function(event, arg1, arg2) {
|
|
906
959
|
|
|
@@ -912,6 +965,7 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
912
965
|
var statechartHandledEvent = NO,
|
|
913
966
|
eventHandled = NO,
|
|
914
967
|
currentStates = this.get('currentStates').slice(),
|
|
968
|
+
checkedStates = {},
|
|
915
969
|
len = 0,
|
|
916
970
|
i = 0,
|
|
917
971
|
state = null,
|
|
@@ -933,7 +987,7 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
933
987
|
this._sendEventLocked = YES;
|
|
934
988
|
|
|
935
989
|
if (trace) {
|
|
936
|
-
this.statechartLogTrace("BEGIN sendEvent:
|
|
990
|
+
this.statechartLogTrace("BEGIN sendEvent: '%@'".fmt(event));
|
|
937
991
|
}
|
|
938
992
|
|
|
939
993
|
len = currentStates.get('length');
|
|
@@ -942,7 +996,10 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
942
996
|
state = currentStates[i];
|
|
943
997
|
if (!state.get('isCurrentState')) continue;
|
|
944
998
|
while (!eventHandled && state) {
|
|
945
|
-
|
|
999
|
+
if (!checkedStates[state.get('fullPath')]) {
|
|
1000
|
+
eventHandled = state.tryToHandleEvent(event, arg1, arg2);
|
|
1001
|
+
checkedStates[state.get('fullPath')] = YES;
|
|
1002
|
+
}
|
|
946
1003
|
if (!eventHandled) state = state.get('parentState');
|
|
947
1004
|
else statechartHandledEvent = YES;
|
|
948
1005
|
}
|
|
@@ -954,13 +1011,42 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
954
1011
|
|
|
955
1012
|
if (trace) {
|
|
956
1013
|
if (!statechartHandledEvent) this.statechartLogTrace("No state was able handle event %@".fmt(event));
|
|
957
|
-
this.statechartLogTrace("END sendEvent:
|
|
1014
|
+
this.statechartLogTrace("END sendEvent: '%@'".fmt(event));
|
|
958
1015
|
}
|
|
959
1016
|
|
|
960
1017
|
var result = this._flushPendingSentEvents();
|
|
961
1018
|
|
|
962
1019
|
return statechartHandledEvent ? this : (result ? this : null);
|
|
963
1020
|
},
|
|
1021
|
+
|
|
1022
|
+
/**
|
|
1023
|
+
Used to notify the statechart that a state will try to handle event that has been passed
|
|
1024
|
+
to it.
|
|
1025
|
+
|
|
1026
|
+
@param {SC.State} state the state that will try to handle the event
|
|
1027
|
+
@param {String} event the event the state will try to handle
|
|
1028
|
+
@param {String} handler the name of the method on the state that will try to handle the event
|
|
1029
|
+
*/
|
|
1030
|
+
stateWillTryToHandleEvent: function(state, event, handler) {
|
|
1031
|
+
this._stateHandleEventInfo = {
|
|
1032
|
+
state: state,
|
|
1033
|
+
event: event,
|
|
1034
|
+
handler: handler
|
|
1035
|
+
};
|
|
1036
|
+
},
|
|
1037
|
+
|
|
1038
|
+
/**
|
|
1039
|
+
Used to notify the statechart that a state did try to handle event that has been passed
|
|
1040
|
+
to it.
|
|
1041
|
+
|
|
1042
|
+
@param {SC.State} state the state that did try to handle the event
|
|
1043
|
+
@param {String} event the event the state did try to handle
|
|
1044
|
+
@param {String} handler the name of the method on the state that did try to handle the event
|
|
1045
|
+
@param {Boolean} handled indicates if the handler was able to handle the event
|
|
1046
|
+
*/
|
|
1047
|
+
stateDidTryToHandleEvent: function(state, event, handler, handled) {
|
|
1048
|
+
this._stateHandleEventInfo = null;
|
|
1049
|
+
},
|
|
964
1050
|
|
|
965
1051
|
/** @private
|
|
966
1052
|
|
|
@@ -1032,7 +1118,7 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
1032
1118
|
|
|
1033
1119
|
/** @private
|
|
1034
1120
|
|
|
1035
|
-
Recursively follow states that are to be
|
|
1121
|
+
Recursively follow states that are to be entered during the state transition process. The
|
|
1036
1122
|
enter process is to start from the given state and work its way down a given enter path. When
|
|
1037
1123
|
the end of enter path has been reached, then continue entering states based on whether
|
|
1038
1124
|
an initial substate is defined, there are concurrent substates or history states are to be
|
|
@@ -1135,7 +1221,7 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
1135
1221
|
|
|
1136
1222
|
/** @override
|
|
1137
1223
|
|
|
1138
|
-
|
|
1224
|
+
Attempts to handle a given event against any of the statechart's current states and the
|
|
1139
1225
|
statechart itself. If any current state can handle the event or the statechart itself can
|
|
1140
1226
|
handle the event then YES is returned, otherwise NO is returned.
|
|
1141
1227
|
|
|
@@ -1145,10 +1231,14 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
1145
1231
|
@returns {Boolean} YES if handled, NO if not handled
|
|
1146
1232
|
*/
|
|
1147
1233
|
tryToPerform: function(event, arg1, arg2) {
|
|
1148
|
-
if (this.respondsTo(event))
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1234
|
+
if (!this.respondsTo(event)) return NO;
|
|
1235
|
+
|
|
1236
|
+
if (SC.typeOf(this[event]) === SC.T_FUNCTION) {
|
|
1237
|
+
var result = this[event](arg1, arg2);
|
|
1238
|
+
if (result !== NO) return YES;
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
return !!this.sendEvent(event, arg1, arg2);
|
|
1152
1242
|
},
|
|
1153
1243
|
|
|
1154
1244
|
/**
|
|
@@ -1319,7 +1409,10 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
1319
1409
|
processedArgs.useHistory = value;
|
|
1320
1410
|
break;
|
|
1321
1411
|
case SC.T_HASH:
|
|
1322
|
-
|
|
1412
|
+
case SC.T_OBJECT:
|
|
1413
|
+
if (!SC.kindOf(value, SC.State)) {
|
|
1414
|
+
processedArgs.context = value;
|
|
1415
|
+
}
|
|
1323
1416
|
break;
|
|
1324
1417
|
default:
|
|
1325
1418
|
processedArgs.fromCurrentState = value;
|
|
@@ -1459,10 +1552,138 @@ SC.StatechartManager = /** @scope SC.StatechartManager.prototype */{
|
|
|
1459
1552
|
/** @private */
|
|
1460
1553
|
_statechartTraceDidChange: function() {
|
|
1461
1554
|
this.notifyPropertyChange('allowStatechartTracing');
|
|
1555
|
+
},
|
|
1556
|
+
|
|
1557
|
+
/**
|
|
1558
|
+
@property
|
|
1559
|
+
|
|
1560
|
+
Returns an object containing current detailed information about
|
|
1561
|
+
the statechart. This is primarily used for diagnostic/debugging
|
|
1562
|
+
purposes.
|
|
1563
|
+
|
|
1564
|
+
Detailed information includes:
|
|
1565
|
+
|
|
1566
|
+
- current states
|
|
1567
|
+
- state transtion information
|
|
1568
|
+
- event handling information
|
|
1569
|
+
|
|
1570
|
+
@returns {Hash}
|
|
1571
|
+
*/
|
|
1572
|
+
details: function() {
|
|
1573
|
+
var details = {
|
|
1574
|
+
'initialized': this.get('statechartIsInitialized')
|
|
1575
|
+
};
|
|
1576
|
+
|
|
1577
|
+
if (this.get('name')) {
|
|
1578
|
+
details['name'] = this.get('name');
|
|
1579
|
+
}
|
|
1580
|
+
|
|
1581
|
+
if (!this.get('statechartIsInitialized')) {
|
|
1582
|
+
return details;
|
|
1583
|
+
}
|
|
1584
|
+
|
|
1585
|
+
details['current-states'] = [];
|
|
1586
|
+
this.get('currentStates').forEach(function(state) {
|
|
1587
|
+
details['current-states'].push(state.get('fullPath'));
|
|
1588
|
+
});
|
|
1589
|
+
|
|
1590
|
+
var stateTransition = {
|
|
1591
|
+
active: this.get('gotoStateActive'),
|
|
1592
|
+
suspended: this.get('gotoStateSuspended')
|
|
1593
|
+
};
|
|
1594
|
+
|
|
1595
|
+
if (this._gotoStateActions) {
|
|
1596
|
+
stateTransition['transition-sequence'] = [];
|
|
1597
|
+
var actions = this._gotoStateActions,
|
|
1598
|
+
actionToStr = function(action) {
|
|
1599
|
+
var actionName = action.action === SC.ENTER_STATE ? "enter" : "exit";
|
|
1600
|
+
return "%@ %@".fmt(actionName, action.state.get('fullPath'));
|
|
1601
|
+
};
|
|
1602
|
+
|
|
1603
|
+
actions.forEach(function(action) {
|
|
1604
|
+
stateTransition['transition-sequence'].push(actionToStr(action));
|
|
1605
|
+
});
|
|
1606
|
+
|
|
1607
|
+
stateTransition['current-transition'] = actionToStr(this._currentGotoStateAction);
|
|
1608
|
+
}
|
|
1609
|
+
|
|
1610
|
+
details['state-transition'] = stateTransition;
|
|
1611
|
+
|
|
1612
|
+
if (this._stateHandleEventInfo) {
|
|
1613
|
+
var info = this._stateHandleEventInfo;
|
|
1614
|
+
details['handling-event'] = {
|
|
1615
|
+
state: info.state.get('fullPath'),
|
|
1616
|
+
event: info.event,
|
|
1617
|
+
handler: info.handler
|
|
1618
|
+
};
|
|
1619
|
+
} else {
|
|
1620
|
+
details['handling-event'] = false;
|
|
1621
|
+
}
|
|
1622
|
+
|
|
1623
|
+
return details;
|
|
1624
|
+
}.property(),
|
|
1625
|
+
|
|
1626
|
+
/**
|
|
1627
|
+
Returns a formatted string of detailed information about this statechart. Useful
|
|
1628
|
+
for diagnostic/debugging purposes.
|
|
1629
|
+
|
|
1630
|
+
@returns {String}
|
|
1631
|
+
|
|
1632
|
+
@see #details
|
|
1633
|
+
*/
|
|
1634
|
+
toStringWithDetails: function() {
|
|
1635
|
+
var str = "",
|
|
1636
|
+
header = this.toString(),
|
|
1637
|
+
details = this.get('details');
|
|
1638
|
+
|
|
1639
|
+
str += header + "\n";
|
|
1640
|
+
str += this._hashToString(details, 2);
|
|
1641
|
+
|
|
1642
|
+
return str;
|
|
1643
|
+
},
|
|
1644
|
+
|
|
1645
|
+
/** @private */
|
|
1646
|
+
_hashToString: function(hash, indent) {
|
|
1647
|
+
var str = "";
|
|
1648
|
+
|
|
1649
|
+
for (var key in hash) {
|
|
1650
|
+
var value = hash[key];
|
|
1651
|
+
if (value instanceof Array) {
|
|
1652
|
+
str += this._arrayToString(key, value, indent) + "\n";
|
|
1653
|
+
}
|
|
1654
|
+
else if (value instanceof Object) {
|
|
1655
|
+
str += "%@%@:\n".fmt(' '.mult(indent), key);
|
|
1656
|
+
str += this._hashToString(value, indent + 2);
|
|
1657
|
+
}
|
|
1658
|
+
else {
|
|
1659
|
+
str += "%@%@: %@\n".fmt(' '.mult(indent), key, value);
|
|
1660
|
+
}
|
|
1661
|
+
}
|
|
1662
|
+
|
|
1663
|
+
return str;
|
|
1664
|
+
},
|
|
1665
|
+
|
|
1666
|
+
/** @private */
|
|
1667
|
+
_arrayToString: function(key, array, indent) {
|
|
1668
|
+
if (array.length === 0) {
|
|
1669
|
+
return "%@%@: []".fmt(' '.mult(indent), key);
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1672
|
+
var str = "%@%@: [\n".fmt(' '.mult(indent), key);
|
|
1673
|
+
|
|
1674
|
+
array.forEach(function(item, idx) {
|
|
1675
|
+
str += "%@%@\n".fmt(' '.mult(indent + 2), item);
|
|
1676
|
+
}, this);
|
|
1677
|
+
|
|
1678
|
+
str += ' '.mult(indent) + "]";
|
|
1679
|
+
|
|
1680
|
+
return str;
|
|
1462
1681
|
}
|
|
1463
1682
|
|
|
1464
1683
|
};
|
|
1465
1684
|
|
|
1685
|
+
SC.mixin(SC.StatechartManager, SC.StatechartDelegate, SC.DelegateSupport);
|
|
1686
|
+
|
|
1466
1687
|
/**
|
|
1467
1688
|
The default name given to a statechart's root state
|
|
1468
1689
|
*/
|