tests: Add avm2/tab_ordering_tabbable

This is an AVM2 version of avm1/tab_ordering_tabbable
This commit is contained in:
Kamil Jarosz 2024-04-19 00:32:16 +02:00 committed by Nathan Adams
parent 39b6c9d096
commit 566590ac1f
5 changed files with 239 additions and 0 deletions

View File

@ -0,0 +1,144 @@
package {
import flash.display.DisplayObject;
import flash.display.InteractiveObject;
import flash.events.KeyboardEvent;
import flash.text.TextField;
import flash.display.Sprite;
import flash.display.SimpleButton;
import flash.display.MovieClip;
import flash.events.Event;
public class Test extends MovieClip {
var objects:Array;
var tabbedObjects:Array = [];
var testStage:int = 0;
public function Test() {
super();
var text1:TextField = this.newTextField(1);
text1.type = "dynamic";
var text2:TextField = this.newTextField(2);
text2.maxChars = 0;
var text3:TextField = this.newTextField(3);
text3.visible = false;
var text4:TextField = this.newTextField(4);
text4.x = -400;
text4.y = -400;
var text5:TextField = this.newTextField(5);
var text6:TextField = this.newTextField(6);
text6.selectable = false;
var text7:TextField = this.newTextField(7);
text7.width = 0;
text7.height = 0;
var clip8:MovieClip = this.newMovieClip(8);
var clip9:MovieClip = this.newMovieClip(9);
clip9.visible = false;
var button10:SimpleButton = new SimpleButton();
button10.name = "button10";
setupObject(button10, 10);
var button11:SimpleButton = new SimpleButton();
button11.name = "button11";
setupObject(button11, 11);
button11.visible = false;
var text12:TextField = this.newTextField(12);
text12.tabEnabled = true;
text12.type = "dynamic";
this.objects = [
text1,
text2,
text3,
text4,
text5,
text6,
text7,
clip8,
clip8.getChildByName("clip8.text"),
clip9,
clip9.getChildByName("clip9.text"),
button10,
button11,
text12
];
var test:Test = this;
for each (var obj in objects) {
obj.addEventListener("focusIn", function(obj) {
return function (evt:Event):void {
test.tabbedObjects.push(obj.name);
}
}(obj));
this.stage.addChild(obj);
}
this.stage.addEventListener("keyDown", function(evt:KeyboardEvent) {
if (evt.keyCode == 27) {
trace("Tabbable elements:");
for each (var obj in objects) {
var exists = false;
for each (var name in tabbedObjects) {
if (obj.name == name) {
exists = true;
}
}
trace(" " + obj.name + ": " + exists);
}
++test.testStage;
if (test.testStage == 1) {
trace("Enabling tab");
for each (var obj in objects) {
obj.tabEnabled = true;
}
} else if (test.testStage == 2) {
trace("Setting custom order");
for (var i in objects) {
objects[i].tabIndex = i;
}
}
}
});
}
function newTextField(i:int):TextField {
var tf:TextField = new TextField();
tf.type = "input";
tf.name = "text" + i;
tf.border = true;
this.setupObject(tf, i);
return tf;
}
function newMovieClip(i:int):MovieClip {
var mc:MovieClip = new MovieClip();
mc.name = "clip" + i;
this.setupObject(mc, i);
var tf:TextField = this.newTextField(0);
tf.name = mc.name + ".text";
mc.addChild(tf);
return mc;
}
function setupObject(o:DisplayObject, i:int):void {
o.x = 0;
o.y = i * 20;
o.height = 20;
o.width = 100;
}
}
}

View File

@ -0,0 +1,47 @@
[
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 27 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 27 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 9 },
{ "type": "KeyDown", "key_code": 27 }
]

View File

@ -0,0 +1,47 @@
Tabbable elements:
text1: false
text2: true
text3: false
text4: true
text5: true
text6: true
text7: true
clip8: false
clip8.text: true
clip9: false
clip9.text: false
button10: true
button11: false
text12: false
Enabling tab
Tabbable elements:
text1: false
text2: true
text3: false
text4: true
text5: true
text6: true
text7: true
clip8: true
clip8.text: true
clip9: false
clip9.text: false
button10: true
button11: false
text12: false
Setting custom order
Tabbable elements:
text1: false
text2: true
text3: false
text4: true
text5: true
text6: true
text7: true
clip8: true
clip8.text: true
clip9: false
clip9.text: true
button10: true
button11: false
text12: false

Binary file not shown.

View File

@ -0,0 +1 @@
num_ticks = 1