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 7 /*global module test equals context ok same Q$ htmlbody */ 8 9 var pane, textfield_view1, textfield_view2, textfield_view3, view1, view2, view3, view4, view5; 10 11 var OLD; 12 13 module("SC.View#nextValidKeyView", { 14 setup: function() { 15 SC.RunLoop.begin(); 16 17 pane = SC.Pane.design() 18 .layout({ top: 0, left: 0, bottom:0, right: 0 }) 19 .childView(SC.TextFieldView.design()) 20 .childView(SC.View.design()) 21 .childView(SC.View.design() 22 .childView(SC.View.design() 23 .childView(SC.View.design() 24 .childView(SC.View.design() 25 .childView(SC.TextFieldView.design()) 26 ) 27 ) 28 ) 29 ) 30 .childView(SC.View.design()) 31 .childView(SC.View.design()) 32 .childView(SC.View.design()) 33 .childView(SC.View.design() 34 .childView(SC.TextFieldView.design()) 35 ) 36 .childView(SC.View.design()) 37 .create(); 38 pane.append(); 39 SC.RunLoop.end(); 40 41 textfield_view1 = pane.childViews[0]; 42 textfield_view2 = pane.childViews[2].childViews[0].childViews[0].childViews[0].childViews[0]; 43 textfield_view3 = pane.childViews[6].childViews[0]; 44 view1 = pane.childViews[1]; 45 view2 = pane.childViews[3]; 46 view3 = pane.childViews[4]; 47 view4 = pane.childViews[5]; 48 view5 = pane.childViews[7]; 49 50 OLD = { 51 FOCUS_ALL_CONTROLS: SC.FOCUS_ALL_CONTROLS, 52 TABBING_ONLY_INSIDE_DOCUMENT: SC.TABBING_ONLY_INSIDE_DOCUMENT 53 }; 54 55 SC.FOCUS_ALL_CONTROLS = SC.FOCUS_ALL_CONTROLS; 56 SC.TABBING_ONLY_INSIDE_DOCUMENT = NO; 57 58 }, 59 60 61 teardown: function() { 62 63 // restore old settings 64 SC.FOCUS_ALL_CONTROLS = OLD.FOCUS_ALL_CONTROLS; 65 SC.TABBING_ONLY_INSIDE_DOCUMENT = OLD.TABBING_ONLY_INSIDE_DOCUMENT; 66 67 SC.RunLoop.begin(); 68 pane.remove(); 69 pane = textfield_view1 = textfield_view2 = textfield_view3 = view1 = view2 = view3 = null; 70 SC.RunLoop.end(); 71 } 72 }); 73 74 test("Navigate between textfields- going forward", function() { 75 SC.FOCUS_ALL_CONTROLS = YES; 76 SC.TABBING_ONLY_INSIDE_DOCUMENT = NO; 77 78 var v = view2.nextValidKeyView(); 79 same(v, textfield_view3, "The next view should be " + textfield_view3.toString()); 80 81 v = textfield_view3.nextValidKeyView(); 82 same(v, null, "The next view should be null"); 83 }); 84 85 test("Navigate between textfields- going backwards", function() { 86 SC.FOCUS_ALL_CONTROLS = YES; 87 var v = view2.previousValidKeyView(); 88 same(v, textfield_view2, "The previous key view should be " + textfield_view2.toString()); 89 90 }); 91 92 93 test("Navigate forward with view that have a nextKeyView set", function() { 94 SC.FOCUS_ALL_CONTROLS = YES; 95 var v = view2.nextValidKeyView(); 96 same(v, textfield_view3, "The next view should be " + textfield_view3.toString()); 97 view3.set('nextKeyView', textfield_view1); 98 v = view2.nextValidKeyView(); 99 same(v, textfield_view1, "The next view should be " + textfield_view1.toString()); 100 }); 101 102 103 test("Navigate backwards with view that have a previousKeyView set", function() { 104 SC.FOCUS_ALL_CONTROLS = YES; 105 var v = view2.previousValidKeyView(); 106 same(v, textfield_view2, "The next view should be " + textfield_view2.toString()); 107 view4.set('previousKeyView', textfield_view1); 108 v = textfield_view3.previousValidKeyView(); 109 same(v, textfield_view1, "The next view should be " + textfield_view1.toString()); 110 }); 111