sproutcore 1.5.0-java → 1.6.0.beta.2-java
Sign up to get free protection for your applications and to get access to all the features.
- data/.mailmap +32 -0
- data/CHANGELOG +15 -0
- data/Rakefile +18 -0
- data/VERSION.yml +2 -2
- data/bin/sc-build +0 -5
- data/bin/sc-build-number +0 -5
- data/bin/sc-docs +0 -5
- data/bin/sc-gen +0 -5
- data/bin/sc-init +0 -5
- data/bin/sc-manifest +0 -5
- data/bin/sc-server +0 -5
- data/bin/sproutcore +0 -5
- data/lib/frameworks/sproutcore/Buildfile +3 -3
- data/lib/frameworks/sproutcore/CHANGELOG.md +21 -0
- data/lib/frameworks/sproutcore/README.md +77 -7
- data/lib/frameworks/sproutcore/frameworks/ajax/system/request.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/animation/core.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +1 -17
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/object.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/controls/button.js +49 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +23 -21
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/delegate_support.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/checkbox_support.js +36 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +126 -7
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/template.js +13 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +16 -16
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +1 -34
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +29 -23
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +8 -4
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/string.js +20 -23
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/controls/button.js +78 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/checkbox_support.js +26 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/template_helpers/text_field_support.js +115 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/sparse_array.js +55 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +49 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +19 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template_collection.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +38 -41
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/base.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +1 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +7 -82
- data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +12 -5
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/array_observers.js +82 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/flush.js +17 -0
- data/lib/frameworks/sproutcore/frameworks/debug/core.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/core.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/english.lproj/slider.css +33 -30
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +12 -11
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_fast_path.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_row_delegate.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +20 -20
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/navigation_builder.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +10 -10
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +24 -23
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +51 -54
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/modal.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/select_button.js +29 -29
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/sheet.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drag_source.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/drop_target.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/protocols/responder.js +4 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/master_detail.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +5 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +7 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio_group.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +7 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +31 -31
- data/lib/frameworks/sproutcore/frameworks/desktop/system/undo_manager.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +35 -29
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +61 -50
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +9 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +6 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/static_content.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +2 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/coders/object.js +12 -12
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/designs.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/controllers/page_files.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/css/css_style_sheet.js +7 -9
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/object_designer.js +13 -13
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/designers/view_designer.js +37 -37
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/ext/object.js +3 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/ext/page.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/ext/view.js +4 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/mixins/snap_lines.js +7 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/designer_drop_target.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/drawing.js +49 -42
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/high_light.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/designer/views/page_item_view.js +6 -6
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/device_motion/device.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/english.lproj/default_styles.css +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/english.lproj/strings.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/mixins/edit_mode.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/mixins/emptiness.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/render_delegates/form.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/render_delegates/form_row.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/tests/views/form.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/tests/views/form_checkbox_field.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/tests/views/form_field.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/tests/views/form_label.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/tests/views/form_radio_field.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/tests/views/form_row.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/tests/views/form_text_field.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/views/form.js +13 -14
- data/lib/frameworks/sproutcore/frameworks/{forms → experimental/frameworks/forms}/views/form_row.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/polymorphism/models/record.js +4 -6
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/static_layout.js +0 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/private/tree_item_observer.js +2 -4
- data/lib/frameworks/sproutcore/frameworks/foundation/system/image_queue.js +8 -12
- data/lib/frameworks/sproutcore/frameworks/foundation/views/inline_text_field.js +28 -34
- data/lib/frameworks/sproutcore/frameworks/{foundation → routing}/system/routes.js +31 -47
- data/lib/frameworks/sproutcore/frameworks/{foundation → routing}/tests/system/routes.js +0 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/core.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/base.js +15 -21
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/array.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array_observers.js +23 -0
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/binding.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/contains.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/index_set/intersects.js +3 -3
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +66 -133
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +68 -139
- data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/testing/system/suite.js +23 -29
- data/lib/frameworks/sproutcore/lib/index.rhtml +5 -2
- data/lib/sproutcore.rb +2 -9
- data/lib/sproutcore/builders/minify.rb +5 -5
- data/lib/sproutcore/helpers/minifier.rb +6 -10
- data/lib/sproutcore/models/target.rb +2 -2
- data/lib/sproutcore/rack/proxy.rb +8 -7
- data/lib/sproutcore/tools.rb +16 -5
- data/spec/lib/builders/html_spec.rb +5 -5
- data/sproutcore.gemspec +11 -5
- data/vendor/chance/lib/chance.rb +4 -2
- data/{lib/sproutcore/vendor → vendor}/jsdoc/README.txt +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/frame.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/frame/Chain.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/frame/Dumper.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/frame/Hash.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/frame/Link.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/frame/Namespace.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/frame/Opt.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/frame/Reflection.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/frame/String.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/frame/Testrun.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/handlers/FOODOC.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/handlers/XMLDOC.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/handlers/XMLDOC/DomReader.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/handlers/XMLDOC/XMLDoc.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/handlers/XMLDOC/XMLParse.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/DocComment.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/DocTag.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/JsDoc.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/JsPlate.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/Lang.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/Parser.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/PluginManager.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/Symbol.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/SymbolSet.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/TextStream.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/Token.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/TokenReader.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/TokenStream.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/Util.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/lib/JSDOC/Walker.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/main.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/plugins/commentSrcJson.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/plugins/frameworkPrototype.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/plugins/functionCall.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/plugins/publishSrcHilite.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/plugins/sproutcoreTags.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/plugins/symbolLink.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/plugins/tagParamConfig.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/plugins/tagSynonyms.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/run.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/t/TestDoc.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/t/runner.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/addon.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/anon_inner.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/augments.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/augments2.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/borrows.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/borrows2.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/config.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/constructs.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/encoding.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/encoding_other.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/functions_anon.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/functions_nested.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/global.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/globals.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/ignore.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/inner.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/jsdoc_test.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/lend.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/memberof.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/memberof_constructor.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/name.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/namespace_nested.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/nocode.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/oblit_anon.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/overview.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/param_inline.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/params_optional.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/prototype.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/prototype_nested.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/prototype_oblit.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/prototype_oblit_constructor.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/public.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/shared.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/shared2.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/shortcuts.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/static_this.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/synonyms.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/tosource.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/app/test/variable_redefine.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/changes.txt +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/conf/sample.conf +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/java/build.xml +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/java/build_1.4.xml +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/java/classes/js.jar +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/java/src/JsDebugRun.java +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/java/src/JsRun.java +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/jsdebug.jar +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/jsrun.jar +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/t/TestDoc.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/t/runner.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/addon.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/anon_inner.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/augments.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/augments2.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/borrows.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/borrows2.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/config.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/constructs.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/encoding.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/encoding_other.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/functions_anon.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/functions_nested.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/global.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/globals.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/ignore.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/inner.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/jsdoc_test.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/lend.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/memberof.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/memberof_constructor.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/name.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/namespace_nested.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/nocode.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/oblit_anon.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/overview.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/param_inline.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/params_optional.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/prototype.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/prototype_nested.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/prototype_oblit.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/prototype_oblit_constructor.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/public.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/shared.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/shared2.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/shortcuts.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/static_this.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/synonyms.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/tosource.js +0 -0
- data/{lib/sproutcore/vendor → vendor}/jsdoc/test/variable_redefine.js +0 -0
- data/vendor/sproutcore/{src/SCCompiler/lib/yuicompressor-2.4.4.jar → lib/yuicompressor-2.4.6.jar} +0 -0
- metadata +169 -178
- data/lib/frameworks/sproutcore/frameworks/desktop/views/file.js +0 -148
- data/lib/sproutcore/vendor/github_gem_lint.rb +0 -22
- data/vendor/sproutcore/SCCompiler.jar +0 -0
- data/vendor/sproutcore/lib/args4j-2.0.12.jar +0 -0
- data/vendor/sproutcore/lib/yuicompressor-2.4.2.jar +0 -0
- data/vendor/sproutcore/src/SCCompiler/build.xml +0 -74
- data/vendor/sproutcore/src/SCCompiler/lib/args4j-2.0.12.jar +0 -0
- data/vendor/sproutcore/src/SCCompiler/lib/htmlcompressor-0.9.3.jar +0 -0
- data/vendor/sproutcore/src/SCCompiler/lib/yuicompressor-2.4.2.jar +0 -0
- data/vendor/sproutcore/src/SCCompiler/manifest.mf +0 -3
- data/vendor/sproutcore/src/SCCompiler/nbproject/build-impl.xml +0 -894
- data/vendor/sproutcore/src/SCCompiler/nbproject/genfiles.properties +0 -8
- data/vendor/sproutcore/src/SCCompiler/nbproject/private/config.properties +0 -0
- data/vendor/sproutcore/src/SCCompiler/nbproject/private/private.properties +0 -10
- data/vendor/sproutcore/src/SCCompiler/nbproject/private/private.xml +0 -4
- data/vendor/sproutcore/src/SCCompiler/nbproject/project.properties +0 -90
- data/vendor/sproutcore/src/SCCompiler/nbproject/project.xml +0 -15
- data/vendor/sproutcore/src/SCCompiler/src/com/sproutcore/Main.java +0 -348
@@ -37,8 +37,8 @@ SC.platform = SC.Object.create({
|
|
37
37
|
|
38
38
|
/*
|
39
39
|
NOTES
|
40
|
-
|
41
|
-
|
40
|
+
- A development version of Chrome 9 incorrectly reported supporting touch
|
41
|
+
- Android is assumed to support touch, but incorrectly reports that it does not
|
42
42
|
*/
|
43
43
|
/**
|
44
44
|
YES if the current device supports touch events, NO otherwise.
|
@@ -259,40 +259,7 @@ SC.RenderContext = SC.Builder.create(/** SC.RenderContext.fn */ {
|
|
259
259
|
@returns {DOMElement} the element
|
260
260
|
*/
|
261
261
|
element: function() {
|
262
|
-
|
263
|
-
|
264
|
-
// create factory div if needed
|
265
|
-
var K = SC.RenderContext,
|
266
|
-
factory = K.factory,
|
267
|
-
ret, child;
|
268
|
-
|
269
|
-
if (!factory) {
|
270
|
-
factory = K.factory = document.createElement('div');
|
271
|
-
}
|
272
|
-
factory.innerHTML = this.join();
|
273
|
-
|
274
|
-
// In IE something weird happens when reusing the same element.
|
275
|
-
// After setting innerHTML, the innerHTML of the element in the previous
|
276
|
-
// view turns blank. It seems that there is something weird with their
|
277
|
-
// garbage collection algorithm. I tried just removing the nodes after
|
278
|
-
// keeping a reference to the first child, but it didn't work. I ended
|
279
|
-
// up cloning the first child.
|
280
|
-
if (SC.browser.msie) {
|
281
|
-
if (factory.innerHTML.length > 0) {
|
282
|
-
child = factory.firstChild.cloneNode(true);
|
283
|
-
factory.innerHTML = '';
|
284
|
-
}
|
285
|
-
else {
|
286
|
-
child = null;
|
287
|
-
}
|
288
|
-
}
|
289
|
-
else {
|
290
|
-
// Faster path (avoiding the unnecessary node clone) for non-IE
|
291
|
-
// browsers.
|
292
|
-
child = factory.firstChild;
|
293
|
-
}
|
294
|
-
|
295
|
-
return child ;
|
262
|
+
return this._elem ? this._elem : SC.$(this.join())[0]
|
296
263
|
},
|
297
264
|
|
298
265
|
/**
|
@@ -18,7 +18,7 @@ SC.CAPTURE_BACKSPACE_KEY = NO ;
|
|
18
18
|
RootResponder directly. Instead you will work with Pane objects, which
|
19
19
|
register themselves with the RootResponder as needed to receive events.
|
20
20
|
|
21
|
-
|
21
|
+
## RootResponder and Platforms
|
22
22
|
|
23
23
|
RootResponder contains core functionality common among the different web
|
24
24
|
platforms. You will likely be working with a subclass of RootResponder that
|
@@ -27,24 +27,24 @@ SC.CAPTURE_BACKSPACE_KEY = NO ;
|
|
27
27
|
The correct instance of RootResponder is detected at runtime and loaded
|
28
28
|
transparently.
|
29
29
|
|
30
|
-
|
30
|
+
## Event Types
|
31
31
|
|
32
32
|
RootResponders can route four types of events:
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
34
|
+
- Direct events, such as mouse and touch events. These are routed to the
|
35
|
+
nearest view managing the target DOM elment. RootResponder also handles
|
36
|
+
multitouch events so that they are delegated to the correct views.
|
37
|
+
- Keyboard events. These are sent to the keyPane, which will then send the
|
38
|
+
event to the current firstResponder and up the responder chain.
|
39
|
+
- Resize events. When the viewport resizes, these events will be sent to all
|
40
|
+
panes.
|
41
|
+
- Keyboard shortcuts. Shortcuts are sent to the keyPane first, which
|
42
|
+
will go down its view hierarchy. Then they go to the mainPane, which will
|
43
|
+
go down its view hierarchy.
|
44
|
+
- Actions. Actions are generic messages that your application can send in
|
45
|
+
response to user action or other events. You can either specify an
|
46
|
+
explicit target, or allow the action to traverse the hierarchy until a
|
47
|
+
view is found that handles it.
|
48
48
|
*/
|
49
49
|
SC.RootResponder = SC.Object.extend({
|
50
50
|
|
@@ -406,7 +406,7 @@ SC.RootResponder = SC.Object.extend({
|
|
406
406
|
the action name you pass to this method. Set 'target' to null to search
|
407
407
|
the responder chain.
|
408
408
|
|
409
|
-
IMPORTANT
|
409
|
+
**IMPORTANT**: This method's API and implementation will likely change
|
410
410
|
significantly after SproutCore 1.0 to match the version found in
|
411
411
|
SC.ResponderContext.
|
412
412
|
|
@@ -959,7 +959,8 @@ SC.RootResponder = SC.Object.extend({
|
|
959
959
|
for instance, prevent scrolling in a ScrollView, you need to make sure to transfer control
|
960
960
|
back to the previous responder:
|
961
961
|
|
962
|
-
|
962
|
+
if (Math.abs(touch.pageY - touch.startY) > this.MAX_SWIPE)
|
963
|
+
touch.restoreLastTouchResponder();
|
963
964
|
|
964
965
|
You don't call makeTouchResponder on RootResponder directly. Instead, it gets called for you
|
965
966
|
when you return YES to captureTouch or touchStart.
|
@@ -968,14 +969,19 @@ SC.RootResponder = SC.Object.extend({
|
|
968
969
|
a button view inside a ScrollView: if the touch moves too much, the button should give control back
|
969
970
|
to the scroll view.
|
970
971
|
|
971
|
-
|
972
|
-
|
973
|
-
|
972
|
+
if (Math.abs(touch.pageX - touch.startX) > 4) {
|
973
|
+
if (touch.nextTouchResponder)
|
974
|
+
touch.makeTouchResponder(touch.nextTouchResponder);
|
975
|
+
}
|
974
976
|
|
975
977
|
This will give control back to the containing view. Maybe you only want to do it if it is a ScrollView?
|
976
978
|
|
977
|
-
|
978
|
-
|
979
|
+
if (
|
980
|
+
Math.abs(touch.pageX - touch.startX) > 4 &&
|
981
|
+
touch.nextTouchResponder &&
|
982
|
+
touch.nextTouchResponder.isScrollable
|
983
|
+
)
|
984
|
+
touch.makeTouchResponder(touch.nextTouchResponder);
|
979
985
|
|
980
986
|
Possible gotcha: while you can do touch.nextTouchResponder, the responders are not chained in a linked list like
|
981
987
|
normal responders, because each touch has its own responder stack. To navigate through the stack (or, though
|
@@ -73,10 +73,12 @@ SC.SparseArray = SC.Object.extend(SC.Observable, SC.Enumerable, SC.Array,
|
|
73
73
|
@returns {SC.SparseArray} receiver
|
74
74
|
*/
|
75
75
|
provideLength: function(length) {
|
76
|
+
var oldLength;
|
76
77
|
if (SC.none(length)) this._sa_content = null ;
|
77
78
|
if (length !== this._length) {
|
79
|
+
oldLength = this._length;
|
78
80
|
this._length = length ;
|
79
|
-
if (this._requestingLength <= 0) this.
|
81
|
+
if (this._requestingLength <= 0) { this.arrayContentDidChange(0, oldLength||0, length||0) ; }
|
80
82
|
}
|
81
83
|
return this ;
|
82
84
|
},
|
@@ -256,7 +258,7 @@ SC.SparseArray = SC.Object.extend(SC.Observable, SC.Enumerable, SC.Array,
|
|
256
258
|
if (!content) content = this._sa_content = [] ;
|
257
259
|
var start = range.start, len = range.length;
|
258
260
|
while(--len >= 0) content[start+len] = array.objectAt(len);
|
259
|
-
if (this._requestingIndex <= 0) this.
|
261
|
+
if (this._requestingIndex <= 0) this.arrayContentDidChange(range.start, range.length, range.length);
|
260
262
|
return this ;
|
261
263
|
},
|
262
264
|
|
@@ -299,7 +301,7 @@ SC.SparseArray = SC.Object.extend(SC.Observable, SC.Enumerable, SC.Array,
|
|
299
301
|
while (--loc>=start) content[loc] = undefined;
|
300
302
|
}
|
301
303
|
}
|
302
|
-
this.
|
304
|
+
this.arrayContentDidChange(range.start, range.length, range.length) ; // notify
|
303
305
|
return this ;
|
304
306
|
},
|
305
307
|
|
@@ -376,9 +378,11 @@ SC.SparseArray = SC.Object.extend(SC.Observable, SC.Enumerable, SC.Array,
|
|
376
378
|
@returns {SC.SparseArray} receiver
|
377
379
|
*/
|
378
380
|
reset: function() {
|
381
|
+
var oldLength;
|
379
382
|
this._sa_content = null ;
|
383
|
+
oldLength = this._length;
|
380
384
|
this._length = null ;
|
381
|
-
this.
|
385
|
+
this.arrayContentDidChange(0, oldLength, 0);
|
382
386
|
this.invokeDelegateMethod(this.delegate, 'sparseArrayDidReset', this);
|
383
387
|
return this ;
|
384
388
|
}
|
@@ -32,13 +32,12 @@ SC.mixin(SC.String, {
|
|
32
32
|
/**
|
33
33
|
Capitalizes a string.
|
34
34
|
|
35
|
-
|
35
|
+
## Examples
|
36
36
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
| innerHTML | InnerHTML |
|
37
|
+
capitalize('my favorite items') // 'My favorite items'
|
38
|
+
capitalize('css-class-name') // 'Css-class-name'
|
39
|
+
capitalize('action_name') // 'Action_name'
|
40
|
+
capitalize('innerHTML') // 'InnerHTML'
|
42
41
|
|
43
42
|
@return {String} capitalized string
|
44
43
|
*/
|
@@ -50,13 +49,12 @@ SC.mixin(SC.String, {
|
|
50
49
|
Camelizes a string. This will take any words separated by spaces, dashes
|
51
50
|
or underscores and convert them into camelCase.
|
52
51
|
|
53
|
-
|
52
|
+
## Examples
|
54
53
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
| innerHTML | innerHTML |
|
54
|
+
camelize('my favorite items') // 'myFavoriteItems'
|
55
|
+
camelize('css-class-name') // 'cssClassName'
|
56
|
+
camelize('action_name') // 'actionName'
|
57
|
+
camelize('innerHTML') // 'innerHTML'
|
60
58
|
|
61
59
|
@returns {String} camelized string
|
62
60
|
*/
|
@@ -74,13 +72,12 @@ SC.mixin(SC.String, {
|
|
74
72
|
/**
|
75
73
|
Converts a camelized string into all lower case separated by underscores.
|
76
74
|
|
77
|
-
|
75
|
+
## Examples
|
78
76
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
| innerHTML | inner_html |
|
77
|
+
decamelize('my favorite items') // 'my favorite items'
|
78
|
+
decamelize('css-class-name') // 'css-class-name'
|
79
|
+
decamelize('action_name') // 'action_name'
|
80
|
+
decamelize('innerHTML') // 'inner_html'
|
84
81
|
|
85
82
|
@returns {String} the decamelized string.
|
86
83
|
*/
|
@@ -92,13 +89,13 @@ SC.mixin(SC.String, {
|
|
92
89
|
Converts a camelized string or a string with spaces or underscores into
|
93
90
|
a string with components separated by dashes.
|
94
91
|
|
95
|
-
|
92
|
+
## Examples
|
96
93
|
|
97
94
|
| *Input String* | *Output String* |
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
95
|
+
dasherize('my favorite items') // 'my-favorite-items'
|
96
|
+
dasherize('css-class-name') // 'css-class-name'
|
97
|
+
dasherize('action_name') // 'action-name'
|
98
|
+
dasherize('innerHTML') // 'inner-html'
|
102
99
|
|
103
100
|
@returns {String} the dasherized string.
|
104
101
|
*/
|
@@ -0,0 +1,78 @@
|
|
1
|
+
var button;
|
2
|
+
|
3
|
+
module("SC.Button", {
|
4
|
+
setup: function() {
|
5
|
+
button = SC.Button.create();
|
6
|
+
|
7
|
+
pane = SC.MainPane.create({
|
8
|
+
childViews: [button]
|
9
|
+
});
|
10
|
+
pane.append();
|
11
|
+
},
|
12
|
+
|
13
|
+
teardown: function() {
|
14
|
+
pane.remove();
|
15
|
+
}
|
16
|
+
});
|
17
|
+
|
18
|
+
function synthesizeEvent(type, view) {
|
19
|
+
var event = new SC.Event({
|
20
|
+
type: type,
|
21
|
+
target: view.get('layer')
|
22
|
+
});
|
23
|
+
SC.RootResponder.responder[type](event);
|
24
|
+
}
|
25
|
+
|
26
|
+
test("should trigger an action when clicked", function() {
|
27
|
+
var wasClicked = false;
|
28
|
+
|
29
|
+
var actionObject = SC.Object.create({
|
30
|
+
myAction: function() {
|
31
|
+
wasClicked = true;
|
32
|
+
}
|
33
|
+
});
|
34
|
+
|
35
|
+
button.target = actionObject;
|
36
|
+
button.action = 'myAction';
|
37
|
+
|
38
|
+
synthesizeEvent('mousedown', button);
|
39
|
+
synthesizeEvent('mouseup', button);
|
40
|
+
|
41
|
+
ok(wasClicked);
|
42
|
+
});
|
43
|
+
|
44
|
+
test("should not trigger action if mouse leaves area before mouseup", function() {
|
45
|
+
var wasClicked = false;
|
46
|
+
|
47
|
+
var actionObject = SC.Object.create({
|
48
|
+
myAction: function() {
|
49
|
+
wasClicked = true;
|
50
|
+
}
|
51
|
+
});
|
52
|
+
|
53
|
+
var otherButton = SC.Button.create();
|
54
|
+
pane.appendChild(otherButton);
|
55
|
+
|
56
|
+
button.target = actionObject;
|
57
|
+
button.action = 'myAction';
|
58
|
+
|
59
|
+
synthesizeEvent('mousedown', button);
|
60
|
+
synthesizeEvent('mousemove', button);
|
61
|
+
ok(button.get('isActive'), "becomes active when hovered");
|
62
|
+
synthesizeEvent('mousemove', otherButton);
|
63
|
+
ok(!button.get('isActive'), "loses active state if mouse exits");
|
64
|
+
synthesizeEvent('mouseup', button);
|
65
|
+
|
66
|
+
ok(!wasClicked);
|
67
|
+
|
68
|
+
wasClicked = false;
|
69
|
+
|
70
|
+
synthesizeEvent('mousedown', button);
|
71
|
+
synthesizeEvent('mousemove', button);
|
72
|
+
synthesizeEvent('mousemove', otherButton);
|
73
|
+
synthesizeEvent('mousemove', button);
|
74
|
+
synthesizeEvent('mouseup', button);
|
75
|
+
|
76
|
+
ok(wasClicked);
|
77
|
+
});
|
78
|
+
|
@@ -34,5 +34,31 @@
|
|
34
34
|
checkboxView.set('value', true);
|
35
35
|
ok(checkboxView.$('input').attr("checked"), "sets value of DOM to value property");
|
36
36
|
});
|
37
|
+
|
38
|
+
module("SC.Checkbox", {
|
39
|
+
setup: function() {
|
40
|
+
checkboxView = SC.Checkbox.create({});
|
41
|
+
|
42
|
+
pane = SC.MainPane.create({
|
43
|
+
childViews: [checkboxView]
|
44
|
+
});
|
45
|
+
pane.append();
|
46
|
+
},
|
47
|
+
|
48
|
+
teardown: function() {
|
49
|
+
pane.remove();
|
50
|
+
}
|
51
|
+
});
|
52
|
+
|
53
|
+
test("value property mirrors input value", function() {
|
54
|
+
checkboxView.$('input').attr('checked', true);
|
55
|
+
|
56
|
+
equals(checkboxView.get('value'), true, "gets value property from DOM");
|
57
|
+
|
58
|
+
checkboxView.$('input').attr('checked', false);
|
59
|
+
|
60
|
+
checkboxView.set('value', true);
|
61
|
+
ok(checkboxView.$('input').attr("checked"), "sets value of DOM to value property");
|
62
|
+
});
|
37
63
|
})();
|
38
64
|
|
@@ -5,10 +5,14 @@
|
|
5
5
|
// License: Licensed under MIT license (see license.js)
|
6
6
|
// ==========================================================================
|
7
7
|
(function() {
|
8
|
-
var textFieldView, pane;
|
8
|
+
var TestObject, textFieldView, pane;
|
9
9
|
|
10
10
|
module("Text Field Support", {
|
11
11
|
setup: function() {
|
12
|
+
TestObject = window.TestObject = SC.Object.create({
|
13
|
+
value: null
|
14
|
+
});
|
15
|
+
|
12
16
|
textFieldView = SC.TemplateView.create(SC.TextFieldSupport, {
|
13
17
|
template: SC.Handlebars.compile('<input type="text">')
|
14
18
|
});
|
@@ -21,6 +25,7 @@
|
|
21
25
|
|
22
26
|
teardown: function() {
|
23
27
|
pane.remove();
|
28
|
+
TestObject = window.TestObject = textFieldView = pane = null;
|
24
29
|
}
|
25
30
|
});
|
26
31
|
|
@@ -33,6 +38,25 @@
|
|
33
38
|
equals(textFieldView.$('input').val(), "afterlife", "sets value of DOM to value property");
|
34
39
|
});
|
35
40
|
|
41
|
+
test("value binding works properly for inputs that haven't been created", function() {
|
42
|
+
var view = SC.TemplateView.create(SC.TextFieldSupport, {
|
43
|
+
template: SC.Handlebars.compile('<input type="text">'),
|
44
|
+
valueBinding: 'TestObject.value'
|
45
|
+
});
|
46
|
+
|
47
|
+
equals(view.get('value'), null, "precond - default value is null");
|
48
|
+
equals(view.$('input').length, 0, "precond - view doesn't have its layer created yet, thus no input element");
|
49
|
+
|
50
|
+
SC.run(function() { TestObject.set('value', 'ohai'); });
|
51
|
+
|
52
|
+
equals(view.get('value'), 'ohai', "value property was properly updated");
|
53
|
+
|
54
|
+
SC.run(function() { pane.appendChild(view); });
|
55
|
+
|
56
|
+
equals(view.get('value'), 'ohai', "value property remains the same once the view has been appended");
|
57
|
+
equals(view.$('input').val(), 'ohai', "value is reflected in the input element once it is created");
|
58
|
+
});
|
59
|
+
|
36
60
|
test("listens for focus and blur events", function() {
|
37
61
|
var focusCalled = 0;
|
38
62
|
var blurCalled = 0;
|
@@ -76,4 +100,94 @@
|
|
76
100
|
equals(cancelCalled, 1, "calls cancel after pressing escape key");
|
77
101
|
|
78
102
|
});
|
103
|
+
|
104
|
+
module("SC.TextField", {
|
105
|
+
setup: function() {
|
106
|
+
TestObject = window.TestObject = SC.Object.create({
|
107
|
+
value: null
|
108
|
+
});
|
109
|
+
|
110
|
+
textFieldView = SC.TextField.create();
|
111
|
+
|
112
|
+
pane = SC.MainPane.create({
|
113
|
+
childViews: [textFieldView]
|
114
|
+
});
|
115
|
+
pane.append();
|
116
|
+
},
|
117
|
+
|
118
|
+
teardown: function() {
|
119
|
+
pane.remove();
|
120
|
+
TestObject = window.TestObject = textFieldView = pane = null;
|
121
|
+
}
|
122
|
+
});
|
123
|
+
|
124
|
+
test("value property mirrors input value", function() {
|
125
|
+
textFieldView.$('input').val('foo bar');
|
126
|
+
|
127
|
+
equals(textFieldView.get('value'), 'foo bar', "gets value property from DOM");
|
128
|
+
|
129
|
+
textFieldView.set('value', "afterlife");
|
130
|
+
equals(textFieldView.$('input').val(), "afterlife", "sets value of DOM to value property");
|
131
|
+
});
|
132
|
+
|
133
|
+
test("value binding works properly for inputs that haven't been created", function() {
|
134
|
+
var view = SC.TextField.create({
|
135
|
+
valueBinding: 'TestObject.value'
|
136
|
+
});
|
137
|
+
|
138
|
+
equals(view.get('value'), null, "precond - default value is null");
|
139
|
+
equals(view.$('input').length, 0, "precond - view doesn't have its layer created yet, thus no input element");
|
140
|
+
|
141
|
+
SC.run(function() { TestObject.set('value', 'ohai'); });
|
142
|
+
|
143
|
+
equals(view.get('value'), 'ohai', "value property was properly updated");
|
144
|
+
|
145
|
+
SC.run(function() { pane.appendChild(view); });
|
146
|
+
|
147
|
+
equals(view.get('value'), 'ohai', "value property remains the same once the view has been appended");
|
148
|
+
equals(view.$('input').val(), 'ohai', "value is reflected in the input element once it is created");
|
149
|
+
});
|
150
|
+
|
151
|
+
test("listens for focus and blur events", function() {
|
152
|
+
var focusCalled = 0;
|
153
|
+
var blurCalled = 0;
|
154
|
+
|
155
|
+
textFieldView.focus = function() {
|
156
|
+
focusCalled++;
|
157
|
+
};
|
158
|
+
textFieldView.blur = function() {
|
159
|
+
blurCalled++;
|
160
|
+
};
|
161
|
+
|
162
|
+
equals(focusCalled+blurCalled, 0, "precond - no callbacks called yet");
|
163
|
+
|
164
|
+
textFieldView.$('input').focus();
|
165
|
+
equals(focusCalled, 1, "focus called after field receives focus");
|
166
|
+
|
167
|
+
textFieldView.$('input').blur();
|
168
|
+
equals(blurCalled, 1, "blur alled after field blurs");
|
169
|
+
});
|
170
|
+
|
171
|
+
test("calls correct method for key events", function() {
|
172
|
+
var insertNewlineCalled = 0;
|
173
|
+
var cancelCalled = 0;
|
174
|
+
|
175
|
+
textFieldView.insertNewline = function() {
|
176
|
+
insertNewlineCalled++;
|
177
|
+
return YES;
|
178
|
+
};
|
179
|
+
textFieldView.cancel = function() {
|
180
|
+
cancelCalled++;
|
181
|
+
return YES;
|
182
|
+
};
|
183
|
+
|
184
|
+
textFieldView.$('input').focus();
|
185
|
+
equals(insertNewlineCalled+cancelCalled, 0, "precond - no callbacks called yet");
|
186
|
+
|
187
|
+
SC.RootResponder.responder.keyup(new SC.Event({ type: 'keyup', keyCode: 13 }));
|
188
|
+
equals(insertNewlineCalled, 1, "calls insertNewline after hitting return");
|
189
|
+
|
190
|
+
SC.RootResponder.responder.keyup(new SC.Event({ type: 'keyup', keyCode: 27 }));
|
191
|
+
equals(cancelCalled, 1, "calls cancel after pressing escape key");
|
192
|
+
});
|
79
193
|
})();
|