sproutcore 1.6.0.1-java → 1.7.1.beta-java
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 +21 -0
 - data/Gemfile +5 -0
 - data/Rakefile +26 -13
 - data/VERSION.yml +2 -2
 - data/lib/Buildfile +43 -4
 - data/lib/buildtasks/build.rake +10 -0
 - data/lib/buildtasks/helpers/file_rule.rb +22 -0
 - data/lib/buildtasks/helpers/file_rule_list.rb +137 -0
 - data/lib/buildtasks/manifest.rake +133 -122
 - data/lib/frameworks/sproutcore/CHANGELOG.md +69 -2
 - data/lib/frameworks/sproutcore/apps/tests/english.lproj/strings.js +1 -0
 - data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +28 -22
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/array.js +9 -5
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/controllers/controller.js +1 -1
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/controls/button.js +18 -13
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/bind.js +5 -3
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/ext/handlebars/collection.js +2 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/action_support.js +80 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/template_helpers/text_field_support.js +84 -116
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +8 -5
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +157 -157
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +5 -3
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +6 -6
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/system/sparse_array.js +10 -7
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/mixins/action_support.js +106 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js +18 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js +71 -1
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/attribute_bindings_test.js +38 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/class_name_bindings_test.js +47 -0
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js +18 -18
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +42 -10
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +158 -1
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/keyboard.js +26 -1
 - data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +14 -8
 - data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +15 -2
 - data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +108 -108
 - data/lib/frameworks/sproutcore/frameworks/datastore/system/query.js +1 -1
 - data/lib/frameworks/sproutcore/frameworks/datastore/system/record_array.js +2 -4
 - data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/error_methods.js +2 -2
 - data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/single_attribute.js +26 -0
 - data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/builders.js +7 -0
 - data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/record_array/error_methods.js +1 -1
 - data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/system/datetime.js +4 -1
 - data/lib/frameworks/sproutcore/frameworks/datetime/frameworks/core/tests/system/datetime.js +6 -0
 - data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +26 -5
 - data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +97 -96
 - data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +4 -3
 - data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +17 -4
 - data/lib/frameworks/sproutcore/frameworks/desktop/views/collection.js +7 -7
 - data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +7 -5
 - data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +12 -3
 - data/lib/frameworks/sproutcore/frameworks/desktop/views/web.js +23 -14
 - data/lib/frameworks/sproutcore/frameworks/experimental/Buildfile +5 -1
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/render_delegates/menu_scroller.js +28 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/tests/menu/scroll.js +235 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroll.js +363 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/menu/views/menu/scroller.js +250 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/desktop_scroller.js +92 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/native_scroll.js +25 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/scroll.js +33 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/render_delegates/touch_scroller.js +76 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/integration.js +50 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/methods.js +143 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/tests/scroll/ui.js +258 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroll.js +1164 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/core_scroller.js +332 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroll.js +236 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/desktop/scroller.js +347 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroll.js +15 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/scroller.js +10 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroll.js +804 -0
 - data/lib/frameworks/sproutcore/frameworks/experimental/frameworks/scroll_view/views/touch/scroller.js +133 -0
 - data/lib/frameworks/sproutcore/frameworks/foundation/resources/text_field.css +3 -3
 - data/lib/frameworks/sproutcore/frameworks/foundation/validators/number.js +3 -1
 - data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +3 -3
 - data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +2 -1
 - data/lib/frameworks/sproutcore/frameworks/media/views/controls.js +2 -1
 - data/lib/frameworks/sproutcore/frameworks/media/views/media_slider.js +2 -4
 - data/lib/frameworks/sproutcore/frameworks/media/views/mini_controls.js +2 -4
 - data/lib/frameworks/sproutcore/frameworks/media/views/simple_controls.js +2 -4
 - data/lib/frameworks/sproutcore/frameworks/media/views/video.js +2 -2
 - data/lib/frameworks/sproutcore/frameworks/routing/system/routes.js +29 -3
 - data/lib/frameworks/sproutcore/frameworks/runtime/core.js +2 -2
 - data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array/replace.js +1 -1
 - data/lib/frameworks/sproutcore/frameworks/runtime/private/property_chain.js +2 -1
 - data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +3 -3
 - data/lib/frameworks/sproutcore/frameworks/runtime/system/index_set.js +2 -2
 - data/lib/frameworks/sproutcore/frameworks/runtime/system/object.js +1 -1
 - data/lib/frameworks/sproutcore/themes/ace/resources/collection/normal/list_item.css +2 -2
 - data/lib/frameworks/sproutcore/themes/legacy_theme/english.lproj/segmented.css +1 -1
 - data/lib/gen/app/templates/apps/@target_name@/Buildfile +3 -5
 - data/lib/gen/app/templates/apps/@target_name@/resources/_theme.css +18 -0
 - data/lib/gen/project/templates/@filename@/Buildfile +2 -2
 - data/lib/sproutcore.rb +30 -5
 - data/lib/sproutcore/builders.rb +1 -0
 - data/lib/sproutcore/builders/chance_file.rb +9 -16
 - data/lib/sproutcore/builders/html.rb +2 -1
 - data/lib/sproutcore/builders/minify.rb +4 -35
 - data/lib/sproutcore/builders/module.rb +38 -1
 - data/lib/sproutcore/builders/split.rb +63 -0
 - data/lib/sproutcore/builders/strings.rb +7 -1
 - data/lib/sproutcore/helpers.rb +1 -1
 - data/lib/sproutcore/helpers/css_split.rb +190 -0
 - data/lib/sproutcore/helpers/entry_sorter.rb +2 -0
 - data/lib/sproutcore/helpers/minifier.rb +40 -16
 - data/lib/sproutcore/helpers/static_helper.rb +35 -17
 - data/lib/sproutcore/models/manifest.rb +26 -0
 - data/lib/sproutcore/models/target.rb +12 -1
 - data/lib/sproutcore/rack.rb +1 -0
 - data/lib/sproutcore/rack/proxy.rb +244 -225
 - data/lib/sproutcore/rack/restrict_ip.rb +67 -0
 - data/lib/sproutcore/rack/service.rb +8 -2
 - data/lib/sproutcore/tools.rb +102 -46
 - data/lib/sproutcore/tools/build.rb +91 -43
 - data/lib/sproutcore/tools/gen.rb +2 -3
 - data/lib/sproutcore/tools/manifest.rb +22 -16
 - data/lib/sproutcore/tools/server.rb +21 -0
 - data/spec/buildtasks/helpers/accept_list +22 -0
 - data/spec/buildtasks/helpers/accept_list.rb +128 -0
 - data/spec/buildtasks/helpers/list.json +11 -0
 - data/spec/buildtasks/manifest/prepare_build_tasks/chance_2x_spec.rb +1 -39
 - data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +0 -38
 - data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +4 -4
 - data/spec/buildtasks/manifest/prepare_build_tasks/module_spec.rb +2 -2
 - data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_indirect_spec.rb +7 -16
 - data/spec/buildtasks/manifest/prepare_build_tasks/packed_2x_spec.rb +7 -17
 - data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +11 -6
 - data/spec/fixtures/builder_tests/Buildfile +2 -1
 - data/spec/fixtures/builder_tests/apps/module_test/modules/required_module/core.js +0 -0
 - data/spec/lib/builders/module_spec.rb +1 -1
 - data/spec/spec_helper.rb +1 -0
 - data/sproutcore.gemspec +4 -9
 - data/vendor/chance/lib/chance.rb +25 -6
 - data/vendor/chance/lib/chance/factory.rb +45 -0
 - data/vendor/chance/lib/chance/instance.rb +173 -28
 - data/vendor/chance/lib/chance/instance/data_url.rb +0 -29
 - data/vendor/chance/lib/chance/instance/slicing.rb +57 -4
 - data/vendor/chance/lib/chance/instance/spriting.rb +112 -21
 - data/vendor/chance/lib/chance/parser.rb +80 -52
 - 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
 - metadata +84 -25
 
| 
         @@ -20,14 +20,16 @@ SC.platform = SC.Object.create({ 
     | 
|
| 
       20 
20 
     | 
    
         
             
                @property
         
     | 
| 
       21 
21 
     | 
    
         
             
              */
         
     | 
| 
       22 
22 
     | 
    
         
             
              scrollbarSize: function() {
         
     | 
| 
       23 
     | 
    
         
            -
                var tester = document.createElement("DIV") 
     | 
| 
      
 23 
     | 
    
         
            +
                var tester = document.createElement("DIV"),
         
     | 
| 
      
 24 
     | 
    
         
            +
                    child;
         
     | 
| 
       24 
25 
     | 
    
         
             
                tester.innerHTML = "<div style='height:1px;'></div>";
         
     | 
| 
       25 
26 
     | 
    
         
             
                tester.style.cssText="position:absolute;width:100px;height:100px;overflow-y:visible;";
         
     | 
| 
       26 
27 
     | 
    
         | 
| 
      
 28 
     | 
    
         
            +
                child = tester.childNodes[0];
         
     | 
| 
       27 
29 
     | 
    
         
             
                document.body.appendChild(tester);
         
     | 
| 
       28 
     | 
    
         
            -
                var noScroller =  
     | 
| 
      
 30 
     | 
    
         
            +
                var noScroller = child.innerWidth || child.clientWidth;
         
     | 
| 
       29 
31 
     | 
    
         
             
                tester.style.overflowY = 'scroll';
         
     | 
| 
       30 
     | 
    
         
            -
                var withScroller =  
     | 
| 
      
 32 
     | 
    
         
            +
                var withScroller = child.innerWidth || child.clientWidth;
         
     | 
| 
       31 
33 
     | 
    
         
             
                document.body.removeChild(tester);
         
     | 
| 
       32 
34 
     | 
    
         | 
| 
       33 
35 
     | 
    
         
             
                return noScroller-withScroller;
         
     | 
| 
         @@ -79,7 +79,7 @@ SC.RootResponder = SC.Object.extend( 
     | 
|
| 
       79 
79 
     | 
    
         
             
                Usually you will not need to edit the main pane directly.  Instead, you
         
     | 
| 
       80 
80 
     | 
    
         
             
                should use a MainPane subclass, which will automatically make itself main
         
     | 
| 
       81 
81 
     | 
    
         
             
                when you append it to the document.
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
       83 
83 
     | 
    
         
             
                @type SC.MainPane
         
     | 
| 
       84 
84 
     | 
    
         
             
              */
         
     | 
| 
       85 
85 
     | 
    
         
             
              mainPane: null,
         
     | 
| 
         @@ -344,7 +344,7 @@ SC.RootResponder = SC.Object.extend( 
     | 
|
| 
       344 
344 
     | 
    
         
             
                (removing sc-blur).  Also notify panes.
         
     | 
| 
       345 
345 
     | 
    
         
             
              */
         
     | 
| 
       346 
346 
     | 
    
         
             
              focus: function() {
         
     | 
| 
       347 
     | 
    
         
            -
             
     | 
| 
      
 347 
     | 
    
         
            +
             
     | 
| 
       348 
348 
     | 
    
         
             
                if (!this.get('hasFocus')) {
         
     | 
| 
       349 
349 
     | 
    
         
             
                  SC.$('body').addClass('sc-focus').removeClass('sc-blur');
         
     | 
| 
       350 
350 
     | 
    
         | 
| 
         @@ -355,7 +355,7 @@ SC.RootResponder = SC.Object.extend( 
     | 
|
| 
       355 
355 
     | 
    
         
             
                        nextValidKeyView = mainPane ? mainPane.get('nextValidKeyView') : null;
         
     | 
| 
       356 
356 
     | 
    
         
             
                    if (nextValidKeyView) mainPane.makeFirstResponder(nextValidKeyView);
         
     | 
| 
       357 
357 
     | 
    
         
             
                  }
         
     | 
| 
       358 
     | 
    
         
            -
             
     | 
| 
      
 358 
     | 
    
         
            +
             
     | 
| 
       359 
359 
     | 
    
         
             
                  SC.run(function() {
         
     | 
| 
       360 
360 
     | 
    
         
             
                    this.set('hasFocus', YES);
         
     | 
| 
       361 
361 
     | 
    
         
             
                  }, this);
         
     | 
| 
         @@ -904,7 +904,7 @@ SC.RootResponder = SC.Object.extend( 
     | 
|
| 
       904 
904 
     | 
    
         | 
| 
       905 
905 
     | 
    
         
             
              assignTouch: function(touch, view) {
         
     | 
| 
       906 
906 
     | 
    
         
             
                // sanity-check
         
     | 
| 
       907 
     | 
    
         
            -
                if (touch.hasEnded) throw " 
     | 
| 
      
 907 
     | 
    
         
            +
                if (touch.hasEnded) throw "Attempt to assign a touch that is already finished.";
         
     | 
| 
       908 
908 
     | 
    
         | 
| 
       909 
909 
     | 
    
         
             
                // unassign from old view if necessary
         
     | 
| 
       910 
910 
     | 
    
         
             
                if (touch.view === view) return;
         
     | 
| 
         @@ -1697,9 +1697,9 @@ SC.RootResponder = SC.Object.extend( 
     | 
|
| 
       1697 
1697 
     | 
    
         
             
              /**
         
     | 
| 
       1698 
1698 
     | 
    
         
             
                IE's default behavior to blur textfields and other controls can only be
         
     | 
| 
       1699 
1699 
     | 
    
         
             
                blocked by returning NO to this event. However we don't want to block
         
     | 
| 
       1700 
     | 
    
         
            -
                its default behavior otherwise textfields won't  
     | 
| 
      
 1700 
     | 
    
         
            +
                its default behavior otherwise textfields won't lose focus by clicking on
         
     | 
| 
       1701 
1701 
     | 
    
         
             
                an empty area as it's expected. If you want to block IE from bluring another
         
     | 
| 
       1702 
     | 
    
         
            -
                control set blockIEDeactivate to true on the  
     | 
| 
      
 1702 
     | 
    
         
            +
                control set blockIEDeactivate to true on the specific view in which you
         
     | 
| 
       1703 
1703 
     | 
    
         
             
                want to avoid this. Think of an autocomplete menu, you want to click on
         
     | 
| 
       1704 
1704 
     | 
    
         
             
                the menu but don't loose focus.
         
     | 
| 
       1705 
1705 
     | 
    
         
             
              */
         
     | 
| 
         @@ -314,15 +314,18 @@ SC.SparseArray = SC.Object.extend(SC.Observable, SC.Enumerable, SC.Array, 
     | 
|
| 
       314 
314 
     | 
    
         
             
                @returns {Number} the discovered index or -1 if not found
         
     | 
| 
       315 
315 
     | 
    
         
             
              */
         
     | 
| 
       316 
316 
     | 
    
         
             
              indexOf: function(obj) {
         
     | 
| 
       317 
     | 
    
         
            -
                var del = this.delegate ;
         
     | 
| 
      
 317 
     | 
    
         
            +
                var c, ret, del = this.delegate ;
         
     | 
| 
       318 
318 
     | 
    
         
             
                if (del && del.sparseArrayDidRequestIndexOf) {
         
     | 
| 
       319 
     | 
    
         
            -
                   
     | 
| 
       320 
     | 
    
         
            -
                }  
     | 
| 
       321 
     | 
    
         
            -
             
     | 
| 
       322 
     | 
    
         
            -
             
     | 
| 
       323 
     | 
    
         
            -
                   
     | 
| 
      
 319 
     | 
    
         
            +
                  ret = del.sparseArrayDidRequestIndexOf(this, obj);
         
     | 
| 
      
 320 
     | 
    
         
            +
                } 
         
     | 
| 
      
 321 
     | 
    
         
            +
                
         
     | 
| 
      
 322 
     | 
    
         
            +
                if (SC.none(ret)) {
         
     | 
| 
      
 323 
     | 
    
         
            +
                  c = this._sa_content ;
         
     | 
| 
      
 324 
     | 
    
         
            +
                  if (!c) c = this._sa_content = [] ;
         
     | 
| 
      
 325 
     | 
    
         
            +
                  ret = c.indexOf(obj) ;
         
     | 
| 
       324 
326 
     | 
    
         
             
                }
         
     | 
| 
       325 
     | 
    
         
            -
             
     | 
| 
      
 327 
     | 
    
         
            +
                return ret;
         
     | 
| 
      
 328 
     | 
    
         
            +
              },  
         
     | 
| 
       326 
329 
     | 
    
         | 
| 
       327 
330 
     | 
    
         
             
              // ..........................................................
         
     | 
| 
       328 
331 
     | 
    
         
             
              // EDITING
         
     | 
| 
         @@ -0,0 +1,106 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            // ==========================================================================
         
     | 
| 
      
 2 
     | 
    
         
            +
            // Project:   SproutCore - JavaScript Application Framework
         
     | 
| 
      
 3 
     | 
    
         
            +
            // Copyright: ©2006-2011 Strobe Inc. and contributors.
         
     | 
| 
      
 4 
     | 
    
         
            +
            //            ©2008-2011 Apple Inc. All rights reserved.
         
     | 
| 
      
 5 
     | 
    
         
            +
            // License:   Licensed under MIT license (see license.js)
         
     | 
| 
      
 6 
     | 
    
         
            +
            // ==========================================================================
         
     | 
| 
      
 7 
     | 
    
         
            +
            /*global module test equals context ok same */
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            (function() {
         
     | 
| 
      
 10 
     | 
    
         
            +
              var target, pane, sendActionSpy, view;
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              module("SC.ActionSupport", {
         
     | 
| 
      
 13 
     | 
    
         
            +
                setup: function() {
         
     | 
| 
      
 14 
     | 
    
         
            +
                  target = SC.Object.create({
         
     | 
| 
      
 15 
     | 
    
         
            +
                    mainAction: function() {},
         
     | 
| 
      
 16 
     | 
    
         
            +
                    someAction: function() {}
         
     | 
| 
      
 17 
     | 
    
         
            +
                  });
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  var rootResponder = {sendAction: function(){} };
         
     | 
| 
      
 20 
     | 
    
         
            +
                  sendActionSpy = CoreTest.spyOn(rootResponder, 'sendAction');
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                  pane = SC.Object.create({
         
     | 
| 
      
 23 
     | 
    
         
            +
                    rootResponder: rootResponder
         
     | 
| 
      
 24 
     | 
    
         
            +
                  });
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  view = SC.View.create(SC.ActionSupport, {
         
     | 
| 
      
 27 
     | 
    
         
            +
                    action: null,
         
     | 
| 
      
 28 
     | 
    
         
            +
                    zomgAction: null,
         
     | 
| 
      
 29 
     | 
    
         
            +
                    pane: pane,
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                    someEvent: function() {
         
     | 
| 
      
 32 
     | 
    
         
            +
                      return this.fireAction(this.get('zomgAction'));
         
     | 
| 
      
 33 
     | 
    
         
            +
                    }
         
     | 
| 
      
 34 
     | 
    
         
            +
                  });
         
     | 
| 
      
 35 
     | 
    
         
            +
                },
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                teardown: function() {
         
     | 
| 
      
 38 
     | 
    
         
            +
                  target = pane = sendActionSpy = view = null;
         
     | 
| 
      
 39 
     | 
    
         
            +
                }
         
     | 
| 
      
 40 
     | 
    
         
            +
              });
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
              // ..........................................................
         
     | 
| 
      
 44 
     | 
    
         
            +
              // No Parameters
         
     | 
| 
      
 45 
     | 
    
         
            +
              // 
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
              test("no paramaters - only action set", function() {
         
     | 
| 
      
 48 
     | 
    
         
            +
                var expectedAction = 'someAction';
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                view.set('action', expectedAction);
         
     | 
| 
      
 51 
     | 
    
         
            +
                view.fireAction();
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                ok(sendActionSpy.wasCalledWith(expectedAction, null, view, pane, null, view), 'triggers the action');
         
     | 
| 
      
 54 
     | 
    
         
            +
              });
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              test("no paramaters - action and target set", function() {
         
     | 
| 
      
 57 
     | 
    
         
            +
                var expectedAction = 'someAction';
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                view.set('target', target);
         
     | 
| 
      
 60 
     | 
    
         
            +
                view.set('action', expectedAction);
         
     | 
| 
      
 61 
     | 
    
         
            +
                view.fireAction();
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                ok(sendActionSpy.wasCalledWith(expectedAction, target, view, pane, null, view), 'triggers the action');
         
     | 
| 
      
 64 
     | 
    
         
            +
              });
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
              // ..........................................................
         
     | 
| 
      
 68 
     | 
    
         
            +
              // Actions Parameter
         
     | 
| 
      
 69 
     | 
    
         
            +
              // 
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
              test("action parameter - only action set", function() {
         
     | 
| 
      
 72 
     | 
    
         
            +
                var expectedAction = 'someAction';
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                view.set('zomgAction', expectedAction);
         
     | 
| 
      
 75 
     | 
    
         
            +
                view.someEvent();
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                ok(sendActionSpy.wasCalledWith(expectedAction, null, view, pane, null, view), 'triggers the action');
         
     | 
| 
      
 78 
     | 
    
         
            +
              });
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
              test("action parameter - action and target set", function() {
         
     | 
| 
      
 81 
     | 
    
         
            +
                var expectedAction = 'someAction';
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                view.set('target', target);
         
     | 
| 
      
 84 
     | 
    
         
            +
                view.set('zomgAction', expectedAction);
         
     | 
| 
      
 85 
     | 
    
         
            +
                view.someEvent();
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
                ok(sendActionSpy.wasCalledWith(expectedAction, target, view, pane, null, view), 'triggers the action');
         
     | 
| 
      
 88 
     | 
    
         
            +
              });
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
              // ..........................................................
         
     | 
| 
      
 92 
     | 
    
         
            +
              // Action Context
         
     | 
| 
      
 93 
     | 
    
         
            +
              // 
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
              test("context", function() {
         
     | 
| 
      
 96 
     | 
    
         
            +
                var expectedAction = 'someAction';
         
     | 
| 
      
 97 
     | 
    
         
            +
                var context = {zomg: "context"};
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                view.set('action', expectedAction);
         
     | 
| 
      
 100 
     | 
    
         
            +
                view.set('actionContext', context)
         
     | 
| 
      
 101 
     | 
    
         
            +
                view.fireAction();
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
                ok(sendActionSpy.wasCalledWith(expectedAction, null, view, pane, context, view), 'triggers the action');
         
     | 
| 
      
 104 
     | 
    
         
            +
              });
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            })();
         
     | 
    
        data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/collection.js
    CHANGED
    
    | 
         @@ -382,3 +382,21 @@ test("#collection helper should allow relative paths for the collection view cla 
     | 
|
| 
       382 
382 
     | 
    
         
             
              equals(view.$('li').length, 3, '#collection should find relative collection view path');
         
     | 
| 
       383 
383 
     | 
    
         
             
            });
         
     | 
| 
       384 
384 
     | 
    
         | 
| 
      
 385 
     | 
    
         
            +
            test("#collection helper should raise an error when passing a first argument that isn't an SC.TemplateCollectionView", function() {
         
     | 
| 
      
 386 
     | 
    
         
            +
              var view = SC.TemplateView.create({
         
     | 
| 
      
 387 
     | 
    
         
            +
                content: {
         
     | 
| 
      
 388 
     | 
    
         
            +
                  names: ["Dom", "Arthur"]
         
     | 
| 
      
 389 
     | 
    
         
            +
                },
         
     | 
| 
      
 390 
     | 
    
         
            +
                template: SC.Handlebars.compile('{{#collection content.names}}{{/collection}}')
         
     | 
| 
      
 391 
     | 
    
         
            +
              });
         
     | 
| 
      
 392 
     | 
    
         
            +
              var errored = false;
         
     | 
| 
      
 393 
     | 
    
         
            +
             
     | 
| 
      
 394 
     | 
    
         
            +
              try {
         
     | 
| 
      
 395 
     | 
    
         
            +
                view.createLayer();
         
     | 
| 
      
 396 
     | 
    
         
            +
              } catch(e) {
         
     | 
| 
      
 397 
     | 
    
         
            +
                errored = true;
         
     | 
| 
      
 398 
     | 
    
         
            +
              }
         
     | 
| 
      
 399 
     | 
    
         
            +
             
     | 
| 
      
 400 
     | 
    
         
            +
              ok(errored, "throws an error when creating the view");
         
     | 
| 
      
 401 
     | 
    
         
            +
            });
         
     | 
| 
      
 402 
     | 
    
         
            +
             
     | 
    
        data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template/handlebars.js
    CHANGED
    
    | 
         @@ -3,8 +3,54 @@ 
     | 
|
| 
       3 
3 
     | 
    
         
             
            // Copyright: ©2006-2011 Strobe Inc. and contributors.
         
     | 
| 
       4 
4 
     | 
    
         
             
            // License:   Licensed under MIT license (see license.js)
         
     | 
| 
       5 
5 
     | 
    
         
             
            // ==========================================================================
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
6 
     | 
    
         
             
            /*globals TemplateTests module */
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            // Included to test bindAttr problem where setting an attr when it
         
     | 
| 
      
 9 
     | 
    
         
            +
            // has the same value is overkill and sometimes causes the browser
         
     | 
| 
      
 10 
     | 
    
         
            +
            // to misbehave, like in SC.TextField where listening to change
         
     | 
| 
      
 11 
     | 
    
         
            +
            // events caused the cursor to go to the end of the input
         
     | 
| 
      
 12 
     | 
    
         
            +
            (function() {
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              jQuery.fn.caretPosition = function() {
         
     | 
| 
      
 15 
     | 
    
         
            +
                  var ctrl = this[0];
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  var CaretPos = 0;
         
     | 
| 
      
 18 
     | 
    
         
            +
                  // IE Support
         
     | 
| 
      
 19 
     | 
    
         
            +
                  if (document.selection) {
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                      ctrl.focus();
         
     | 
| 
      
 22 
     | 
    
         
            +
                      var Sel = document.selection.createRange ();
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                      Sel.moveStart ('character', -ctrl.value.length);
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                      CaretPos = Sel.text.length;
         
     | 
| 
      
 27 
     | 
    
         
            +
                  }
         
     | 
| 
      
 28 
     | 
    
         
            +
                  // Firefox support
         
     | 
| 
      
 29 
     | 
    
         
            +
                  else if (ctrl.selectionStart || ctrl.selectionStart == '0') {
         
     | 
| 
      
 30 
     | 
    
         
            +
                      CaretPos = ctrl.selectionStart;
         
     | 
| 
      
 31 
     | 
    
         
            +
                  }
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                  return (CaretPos);
         
     | 
| 
      
 34 
     | 
    
         
            +
              };
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              jQuery.fn.setCaretPosition = function(pos) {
         
     | 
| 
      
 38 
     | 
    
         
            +
                  var ctrl = this[0];
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  if(ctrl.setSelectionRange) {
         
     | 
| 
      
 41 
     | 
    
         
            +
                      ctrl.focus();
         
     | 
| 
      
 42 
     | 
    
         
            +
                      ctrl.setSelectionRange(pos,pos);
         
     | 
| 
      
 43 
     | 
    
         
            +
                  } else if (ctrl.createTextRange) {
         
     | 
| 
      
 44 
     | 
    
         
            +
                      var range = ctrl.createTextRange();
         
     | 
| 
      
 45 
     | 
    
         
            +
                      range.collapse(true);
         
     | 
| 
      
 46 
     | 
    
         
            +
                      range.moveEnd('character', pos);
         
     | 
| 
      
 47 
     | 
    
         
            +
                      range.moveStart('character', pos);
         
     | 
| 
      
 48 
     | 
    
         
            +
                      range.select();
         
     | 
| 
      
 49 
     | 
    
         
            +
                  }
         
     | 
| 
      
 50 
     | 
    
         
            +
              }
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            })();
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
       8 
54 
     | 
    
         
             
            /**
         
     | 
| 
       9 
55 
     | 
    
         
             
              This module specifically tests integration with Handlebars and SproutCore-specific
         
     | 
| 
       10 
56 
     | 
    
         
             
              Handlebars extensions.
         
     | 
| 
         @@ -855,6 +901,30 @@ test("should be able to bind element attributes using {{bindAttr}}", function() 
     | 
|
| 
       855 
901 
     | 
    
         
             
              equals(view.$('img').attr('alt'), "Nanananana SproutCore!", "updates alt attribute when title property is computed");
         
     | 
| 
       856 
902 
     | 
    
         
             
            });
         
     | 
| 
       857 
903 
     | 
    
         | 
| 
      
 904 
     | 
    
         
            +
            test("should not reset cursor position when text field receives keyUp event", function() {
         
     | 
| 
      
 905 
     | 
    
         
            +
              var pane = SC.Pane.create({
         
     | 
| 
      
 906 
     | 
    
         
            +
                childViews: ['view'],
         
     | 
| 
      
 907 
     | 
    
         
            +
                view: SC.TextField.create({
         
     | 
| 
      
 908 
     | 
    
         
            +
                  value: "Broseidon, King of the Brocean"
         
     | 
| 
      
 909 
     | 
    
         
            +
                })
         
     | 
| 
      
 910 
     | 
    
         
            +
              });
         
     | 
| 
      
 911 
     | 
    
         
            +
             
     | 
| 
      
 912 
     | 
    
         
            +
              pane.append();
         
     | 
| 
      
 913 
     | 
    
         
            +
             
     | 
| 
      
 914 
     | 
    
         
            +
              var view = pane.get('childViews')[0];
         
     | 
| 
      
 915 
     | 
    
         
            +
             
     | 
| 
      
 916 
     | 
    
         
            +
              view.$('input').val('Brosiedoon, King of the Brocean');
         
     | 
| 
      
 917 
     | 
    
         
            +
              view.$('input').setCaretPosition(5);
         
     | 
| 
      
 918 
     | 
    
         
            +
             
     | 
| 
      
 919 
     | 
    
         
            +
              SC.run(function() {
         
     | 
| 
      
 920 
     | 
    
         
            +
                view.keyUp({});
         
     | 
| 
      
 921 
     | 
    
         
            +
              });
         
     | 
| 
      
 922 
     | 
    
         
            +
             
     | 
| 
      
 923 
     | 
    
         
            +
              equals(view.$('input').caretPosition(), 5, "The keyUp event should not result in the cursor being reset due to the bindAttr observers");
         
     | 
| 
      
 924 
     | 
    
         
            +
             
     | 
| 
      
 925 
     | 
    
         
            +
              pane.remove().destroy();
         
     | 
| 
      
 926 
     | 
    
         
            +
            });
         
     | 
| 
      
 927 
     | 
    
         
            +
             
     | 
| 
       858 
928 
     | 
    
         
             
            test("should be able to bind element attributes using {{bindAttr}} inside a block", function() {
         
     | 
| 
       859 
929 
     | 
    
         
             
              var template = SC.Handlebars.compile('{{#with content}}<img {{bindAttr src="url" alt="title"}}>{{/with}}');
         
     | 
| 
       860 
930 
     | 
    
         | 
| 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            // ==========================================================================
         
     | 
| 
      
 2 
     | 
    
         
            +
            // Project:   SproutCore - JavaScript Application Framework
         
     | 
| 
      
 3 
     | 
    
         
            +
            // Copyright: ©2006-2011 Apple Inc. and contributors.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // License:   Licensed under MIT license (see license.js)
         
     | 
| 
      
 5 
     | 
    
         
            +
            // ==========================================================================
         
     | 
| 
      
 6 
     | 
    
         
            +
            /*global module test equals context ok same */
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module("SC.CoreView - Attribute Bindings");
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            test("should render and update attribute bindings", function() {
         
     | 
| 
      
 11 
     | 
    
         
            +
              var view = SC.View.create({
         
     | 
| 
      
 12 
     | 
    
         
            +
                classNameBindings: ['priority', 'isUrgent', 'isClassified:classified', 'canIgnore'],
         
     | 
| 
      
 13 
     | 
    
         
            +
                attributeBindings: ['type', 'exploded', 'destroyed', 'exists', 'explosions'],
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                type: 'reset',
         
     | 
| 
      
 16 
     | 
    
         
            +
                exploded: true,
         
     | 
| 
      
 17 
     | 
    
         
            +
                destroyed: true,
         
     | 
| 
      
 18 
     | 
    
         
            +
                exists: false,
         
     | 
| 
      
 19 
     | 
    
         
            +
                explosions: 15
         
     | 
| 
      
 20 
     | 
    
         
            +
              });
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              view.createLayer();
         
     | 
| 
      
 23 
     | 
    
         
            +
              equals(view.$().attr('type'), 'reset', "adds type attribute");
         
     | 
| 
      
 24 
     | 
    
         
            +
              ok(view.$().attr('exploded'), "adds exploded attribute when true");
         
     | 
| 
      
 25 
     | 
    
         
            +
              ok(view.$().attr('destroyed'), "adds destroyed attribute when true");
         
     | 
| 
      
 26 
     | 
    
         
            +
              ok(!view.$().attr('exists'), "does not add exists attribute when false");
         
     | 
| 
      
 27 
     | 
    
         
            +
              equals(view.$().attr('explosions'), "15", "adds integer attributes");
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              view.set('type', 'submit');
         
     | 
| 
      
 30 
     | 
    
         
            +
              view.set('exploded', false);
         
     | 
| 
      
 31 
     | 
    
         
            +
              view.set('destroyed', false);
         
     | 
| 
      
 32 
     | 
    
         
            +
              view.set('exists', true);
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              equals(view.$().attr('type'), 'submit', "updates type attribute");
         
     | 
| 
      
 35 
     | 
    
         
            +
              ok(!view.$().attr('exploded'), "removes exploded attribute when false");
         
     | 
| 
      
 36 
     | 
    
         
            +
              ok(!view.$().attr('destroyed'), "removes destroyed attribute when false");
         
     | 
| 
      
 37 
     | 
    
         
            +
              ok(view.$().attr('exists'), "adds exists attribute when true");
         
     | 
| 
      
 38 
     | 
    
         
            +
            });
         
     | 
| 
         @@ -0,0 +1,47 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            // ==========================================================================
         
     | 
| 
      
 2 
     | 
    
         
            +
            // Project:   SproutCore - JavaScript Application Framework
         
     | 
| 
      
 3 
     | 
    
         
            +
            // Copyright: ©2006-2011 Apple Inc. and contributors.
         
     | 
| 
      
 4 
     | 
    
         
            +
            // License:   Licensed under MIT license (see license.js)
         
     | 
| 
      
 5 
     | 
    
         
            +
            // ==========================================================================
         
     | 
| 
      
 6 
     | 
    
         
            +
            /*global module test equals context ok same */
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module("SC.CoreView - Class Name Bindings");
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            test("should apply bound class names to the element", function() {
         
     | 
| 
      
 11 
     | 
    
         
            +
              var view = SC.View.create({
         
     | 
| 
      
 12 
     | 
    
         
            +
                classNameBindings: ['priority', 'isUrgent', 'isClassified:classified', 'canIgnore'],
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                priority: 'high',
         
     | 
| 
      
 15 
     | 
    
         
            +
                isUrgent: true,
         
     | 
| 
      
 16 
     | 
    
         
            +
                isClassified: true,
         
     | 
| 
      
 17 
     | 
    
         
            +
                canIgnore: false
         
     | 
| 
      
 18 
     | 
    
         
            +
              });
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              view.createLayer();
         
     | 
| 
      
 21 
     | 
    
         
            +
              ok(view.$().hasClass('high'), "adds string values as class name");
         
     | 
| 
      
 22 
     | 
    
         
            +
              ok(view.$().hasClass('is-urgent'), "adds true Boolean values by dasherizing");
         
     | 
| 
      
 23 
     | 
    
         
            +
              ok(view.$().hasClass('classified'), "supports customizing class name for Boolean values");
         
     | 
| 
      
 24 
     | 
    
         
            +
              ok(!view.$().hasClass('can-ignore'), "does not add false Boolean values as class");
         
     | 
| 
      
 25 
     | 
    
         
            +
            });
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            test("should add, remove, or change class names if changed after element is created", function() {
         
     | 
| 
      
 28 
     | 
    
         
            +
              var view = SC.View.create({
         
     | 
| 
      
 29 
     | 
    
         
            +
                classNameBindings: ['priority', 'isUrgent', 'canIgnore'],
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                priority: 'high',
         
     | 
| 
      
 32 
     | 
    
         
            +
                isUrgent: true,
         
     | 
| 
      
 33 
     | 
    
         
            +
                canIgnore: false
         
     | 
| 
      
 34 
     | 
    
         
            +
              });
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              view.createLayer();
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              view.set('priority', 'orange');
         
     | 
| 
      
 39 
     | 
    
         
            +
              view.set('isUrgent', false);
         
     | 
| 
      
 40 
     | 
    
         
            +
              view.set('canIgnore', true);
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
              ok(view.$().hasClass('orange'), "updates string values");
         
     | 
| 
      
 43 
     | 
    
         
            +
              ok(!view.$().hasClass('high'), "removes old string value");
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              ok(!view.$().hasClass('is-urgent', "removes dasherized class when changed from true to false"));
         
     | 
| 
      
 46 
     | 
    
         
            +
              ok(view.$().hasClass('can-ignore'), "adds dasherized class when changed from false to true");
         
     | 
| 
      
 47 
     | 
    
         
            +
            });
         
     | 
    
        data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutChildViews.js
    CHANGED
    
    | 
         @@ -7,8 +7,8 @@ 
     | 
|
| 
       7 
7 
     | 
    
         
             
            /*global module test equals context ok same */
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            // .......................................................
         
     | 
| 
       10 
     | 
    
         
            -
            // layoutChildViews() 
     | 
| 
       11 
     | 
    
         
            -
            // 
     | 
| 
      
 10 
     | 
    
         
            +
            // layoutChildViews()
         
     | 
| 
      
 11 
     | 
    
         
            +
            //
         
     | 
| 
       12 
12 
     | 
    
         
             
            module("SC.View#layoutChildViews");
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
            test("calls renderLayout() on child views on views that need layout if they have a layer", function() {
         
     | 
| 
         @@ -17,25 +17,25 @@ test("calls renderLayout() on child views on views that need layout if they have 
     | 
|
| 
       17 
17 
     | 
    
         
             
            	var ChildView = SC.View.extend({
         
     | 
| 
       18 
18 
     | 
    
         
             
            		updateLayout: function(context) { callCount++; }
         
     | 
| 
       19 
19 
     | 
    
         
             
            	});
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       21 
21 
     | 
    
         
             
            	var view = SC.View.create({
         
     | 
| 
       22 
22 
     | 
    
         
             
            		childViews: [ChildView, ChildView, ChildView]
         
     | 
| 
       23 
23 
     | 
    
         
             
            	});
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       25 
25 
     | 
    
         
             
            	var cv1 = view.childViews[0];
         
     | 
| 
       26 
26 
     | 
    
         
             
            	var cv2 = view.childViews[1];
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
       28 
28 
     | 
    
         
             
            	// add to set...
         
     | 
| 
       29 
29 
     | 
    
         
             
            	view.layoutDidChangeFor(cv1);
         
     | 
| 
       30 
30 
     | 
    
         
             
            	view.layoutDidChangeFor(cv2);
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
       32 
32 
     | 
    
         
             
            	view.layoutChildViews();
         
     | 
| 
       33 
33 
     | 
    
         
             
            	equals(callCount, 2, 'updateLayout should be called on two dirty child views');
         
     | 
| 
       34 
34 
     | 
    
         
             
            });
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
            // .......................................................
         
     | 
| 
       37 
     | 
    
         
            -
            // updateLayout() 
     | 
| 
       38 
     | 
    
         
            -
            // 
     | 
| 
      
 37 
     | 
    
         
            +
            // updateLayout()
         
     | 
| 
      
 38 
     | 
    
         
            +
            //
         
     | 
| 
       39 
39 
     | 
    
         
             
            module("SC.View#updateLayout");
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
            test("if view has layout, calls renderLayout with context to update element", function() {
         
     | 
| 
         @@ -52,10 +52,10 @@ test("if view has layout, calls renderLayout with context to update element", fu 
     | 
|
| 
       52 
52 
     | 
    
         
             
            			callCount++;
         
     | 
| 
       53 
53 
     | 
    
         
             
            		}
         
     | 
| 
       54 
54 
     | 
    
         
             
            	});
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
       56 
56 
     | 
    
         
             
            	view.createLayer(); // we need a layer
         
     | 
| 
       57 
57 
     | 
    
         
             
            	ok(view.get('layer'), 'precond - should have a layer');
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
       59 
59 
     | 
    
         
             
            	isTesting= YES ;
         
     | 
| 
       60 
60 
     | 
    
         
             
            	view.updateLayout();
         
     | 
| 
       61 
61 
     | 
    
         
             
            	equals(callCount, 1, 'should call renderLayout()');
         
     | 
| 
         @@ -74,9 +74,9 @@ test("if view has NO layout, should not call renderLayout", function() { 
     | 
|
| 
       74 
74 
     | 
    
         
             
            			callCount++;
         
     | 
| 
       75 
75 
     | 
    
         
             
            		}
         
     | 
| 
       76 
76 
     | 
    
         
             
            	});
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
       78 
78 
     | 
    
         
             
            	ok(!view.get('layer'), 'precond - should NOT have a layer');
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
       80 
80 
     | 
    
         
             
            	isTesting= YES ;
         
     | 
| 
       81 
81 
     | 
    
         
             
            	view.updateLayout();
         
     | 
| 
       82 
82 
     | 
    
         
             
            	equals(callCount, 0, 'should NOT call renderLayout()');
         
     | 
| 
         @@ -88,7 +88,7 @@ test("returns receiver", function() { 
     | 
|
| 
       88 
88 
     | 
    
         
             
            });
         
     | 
| 
       89 
89 
     | 
    
         | 
| 
       90 
90 
     | 
    
         
             
            // .......................................................
         
     | 
| 
       91 
     | 
    
         
            -
            //  renderLayout() 
     | 
| 
      
 91 
     | 
    
         
            +
            //  renderLayout()
         
     | 
| 
       92 
92 
     | 
    
         
             
            //
         
     | 
| 
       93 
93 
     | 
    
         
             
            module('SC.View#renderLayout');
         
     | 
| 
       94 
94 
     | 
    
         | 
| 
         @@ -96,7 +96,7 @@ test("adds layoutStyle property to passed context", function() { 
     | 
|
| 
       96 
96 
     | 
    
         | 
| 
       97 
97 
     | 
    
         
             
            	var view = SC.View.create({
         
     | 
| 
       98 
98 
     | 
    
         
             
            		// mock style for testing...
         
     | 
| 
       99 
     | 
    
         
            -
            		layoutStyle: { width: 50, height: 50 } 
     | 
| 
      
 99 
     | 
    
         
            +
            		layoutStyle: { width: 50, height: 50 }
         
     | 
| 
       100 
100 
     | 
    
         
             
            	});
         
     | 
| 
       101 
101 
     | 
    
         
             
            	var context = view.renderContext();
         
     | 
| 
       102 
102 
     | 
    
         | 
| 
         @@ -111,7 +111,7 @@ test("adds layoutStyle property to passed context", function() { 
     | 
|
| 
       111 
111 
     | 
    
         
             
            });
         
     | 
| 
       112 
112 
     | 
    
         | 
| 
       113 
113 
     | 
    
         
             
            // .......................................................
         
     | 
| 
       114 
     | 
    
         
            -
            // layoutChildViewsIfNeeded() 
     | 
| 
      
 114 
     | 
    
         
            +
            // layoutChildViewsIfNeeded()
         
     | 
| 
       115 
115 
     | 
    
         
             
            //
         
     | 
| 
       116 
116 
     | 
    
         
             
            var view, callCount ;
         
     | 
| 
       117 
117 
     | 
    
         
             
            module('SC.View#layoutChildViewsIfNeeded', {
         
     | 
| 
         @@ -123,7 +123,7 @@ module('SC.View#layoutChildViewsIfNeeded', { 
     | 
|
| 
       123 
123 
     | 
    
         
             
            	},
         
     | 
| 
       124 
124 
     | 
    
         
             
            	teardown: function() { view = null; }
         
     | 
| 
       125 
125 
     | 
    
         
             
            });
         
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
       127 
127 
     | 
    
         
             
            test("calls layoutChildViews() if childViewsNeedLayout and isVisibleInWindow & sets childViewsNeedLayout to NO", function() {
         
     | 
| 
       128 
128 
     | 
    
         | 
| 
       129 
129 
     | 
    
         
             
            	view.childViewsNeedLayout = YES ;
         
     | 
| 
         @@ -149,7 +149,7 @@ test("does not call layoutChildViews() if isVisibleInWindow is NO unless passed 
     | 
|
| 
       149 
149 
     | 
    
         
             
            	view.layoutChildViewsIfNeeded();
         
     | 
| 
       150 
150 
     | 
    
         
             
            	equals(callCount, 0, 'should NOT call layoutChildViews()');
         
     | 
| 
       151 
151 
     | 
    
         
             
            	equals(view.get('childViewsNeedLayout'), YES, 'should leave childViewsNeedLayout set to YES');
         
     | 
| 
       152 
     | 
    
         
            -
             
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
       153 
153 
     | 
    
         
             
            	view.layoutChildViewsIfNeeded(YES);
         
     | 
| 
       154 
154 
     | 
    
         
             
            	equals(callCount, 1, 'should call layoutChildViews()');
         
     | 
| 
       155 
155 
     | 
    
         
             
            	equals(view.get('childViewsNeedLayout'), NO, 'should set childViewsNeedLayout to NO');
         
     | 
| 
         @@ -158,5 +158,5 @@ test("does not call layoutChildViews() if isVisibleInWindow is NO unless passed 
     | 
|
| 
       158 
158 
     | 
    
         
             
            test("returns receiver", function() {
         
     | 
| 
       159 
159 
     | 
    
         
             
            	equals(view.layoutChildViewsIfNeeded(), view, 'should return receiver');
         
     | 
| 
       160 
160 
     | 
    
         
             
            });
         
     | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
       162 
162 
     | 
    
         |