From 6a28e8786cf595d80d9e42d189f773c004f74b14 Mon Sep 17 00:00:00 2001 From: Mohmmad Ebrahim Sepehr Date: Tue, 11 Aug 2020 18:57:29 +0430 Subject: [PATCH 1/3] Multi text supports on PopField --- popForm/PopField.as | 247 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 218 insertions(+), 29 deletions(-) diff --git a/popForm/PopField.as b/popForm/PopField.as index d049f0ed..8f5b1b2e 100644 --- a/popForm/PopField.as +++ b/popForm/PopField.as @@ -14,6 +14,8 @@ import flash.utils.setTimeout; import contents.alert.Alert; import animation.Anim_Frame_Controller; + import flash.events.KeyboardEvent; + import flash.ui.Keyboard; /**Text field is changed*/ [Event(name="change", type="flash.events.Event")] @@ -21,6 +23,7 @@ [Event(name="render", type="flash.events.Event")] public class PopField extends PopFieldInterface { + private var myTXTs:Array ; private var myTXT:TextField ; //private var _letSelectByCLick:Boolean = false ; @@ -41,6 +44,7 @@ private var radioButtonArray:Array ; + private var nativeKeyBoards:Vector. ; private var nativeKeyBoard:FarsiInputCorrection ; private var isEditable:Boolean; private var IsArabic:Object; @@ -79,6 +83,10 @@ { if(isEditable) { + if(myTXTs.length>1) + { + return data; + } return myTXT.text ; } else @@ -110,6 +118,11 @@ if(isEditable) { + if(myTXTs.length>1) + { + update(value); + return; + } myTXT.text = lastTXT ; myTXT.dispatchEvent(new Event(Event.CHANGE)); } @@ -143,28 +156,51 @@ { if(data!=null) { - myTXT.text = data as String ; - myTXT.dispatchEvent(new Event(Event.CHANGE)); + var newtext:String = String(data); + if(myTXTs.length>1) + { + for(var i:int = 0 ; ii?newtext.charAt(i):'' ; + (myTXTs[i] as TextField).dispatchEvent(new Event(Event.CHANGE)); + } + } + else + { + myTXT.text = newtext ; + myTXT.dispatchEvent(new Event(Event.CHANGE)); + } } } override public function get data():* { - text = myTXT.text; + if(myTXTs.length>1) + { + lastTXT = '' ; + for(var i:int = 0 ; i1) + { + (nativeKeyBoards[nativeKeyBoards.length-1] as FarsiInputCorrection).onEnterPressed(func); + } + else + { + nativeKeyBoard.onEnterPressed(func); + } + } + } + + private function nextField(currentTextField:TextField):void + { + var currentTextFieldIndex:int = myTXTs.indexOf(currentTextField); + trace("Next field to "+currentTextFieldIndex+" is editing>"+(nativeKeyBoards!=null && currentTextFieldIndex!=-1?nativeKeyBoards[currentTextFieldIndex].editing:'')); + if(nativeKeyBoards!=null && currentTextFieldIndex!=-1 && nativeKeyBoards[currentTextFieldIndex].editing) { - nativeKeyBoard.onEnterPressed(func); + nativeKeyBoards[currentTextFieldIndex].closeKeyBoard(false); + trace("\t"+currentTextFieldIndex+" vs "+(nativeKeyBoards.length-2)); + if(currentTextFieldIndex+1"+nativeKeyBoards[currentTextFieldIndex].editing); + if(currentTextFieldIndex!=-1 && nativeKeyBoards[currentTextFieldIndex].editing) + { + nativeKeyBoards[currentTextFieldIndex].closeKeyBoard(false); + if(currentTextFieldIndex>0) + { + trace("Activate keyboard : "+nativeKeyBoards[currentTextFieldIndex-1]); + if(andRemoveAcharFrom) + { + var lastTF:TextField = myTXTs[currentTextFieldIndex-1] as TextField ; + lastTF.text = lastTF.text.substr(0,lastTF.text.length-1); + } + nativeKeyBoards[currentTextFieldIndex-1].activateKeyboard(); + } } } @@ -293,14 +376,34 @@ TextPutter.OnButton(tagNameTXT,tagName,StringFunctions.isPersian(tagName),false,true); } } - myTXT = Obj.getAllChilds('txt_txt',this,false)[0]; - myTXT.addEventListener(Event.CLOSE, dispatchChangeForMeToo); - myTXT.addEventListener(Event.CHANGE, dispatchRenderEventForMe); + myTXTs = Obj.getAllChilds('txt_txt',this,false) + if(myTXTs.length>1) + { + myTXTs = myTXTs.sort(sortFields); + function sortFields(a:TextField,b:TextField):int + { + if(a.x1) + { + for(i=0 ; i1) + { + nativeKeyBoards = new Vector.(); + for(i = 0 ; i0 ; + clearMC.visible = currentTXT.text.length>0 ; + + trace("* Changed > "+currentTXT.maxChars); + if(currentTXT.maxChars<=currentTXT.text.length) + { + trace("Show the nextField"); + setTimeout(nextField,0,currentTXT); + } this.dispatchEvent(new Event(Event.RENDER)); } + + private function checkBackRole(e:KeyboardEvent):void + { + if(e.keyCode == 8)//Keyboard.BACKSPACE + { + var currentTXT:TextField = e.currentTarget as TextField ; + trace("Back space"); + if(currentTXT.text=='') + { + setTimeout(prevField,0,currentTXT,true); + } + } + else + { + + } + } protected function increaseValue(event:MouseEvent):void { @@ -510,13 +660,34 @@ protected function showPassNow(event:MouseEvent):void { - nativeKeyBoard.showPass(); + event.stopImmediatePropagation(); + if(myTXTs.length>1) + { + for(var i:int = 0 ; i1) + { + for(var i:int = 0 ; i Date: Tue, 11 Aug 2020 19:05:04 +0430 Subject: [PATCH 2/3] PopField debugged --- popForm/PopField.as | 2 ++ 1 file changed, 2 insertions(+) diff --git a/popForm/PopField.as b/popForm/PopField.as index 42db8811..806a53f9 100644 --- a/popForm/PopField.as +++ b/popForm/PopField.as @@ -274,6 +274,8 @@ private function prevField(currentTextField:TextField,andRemoveAcharFrom:Boolean=false):void { + if(myTXTs.length<=1) + return; var currentTextFieldIndex:int = myTXTs.indexOf(currentTextField); trace("Next field to "+currentTextFieldIndex+" is editing>"+nativeKeyBoards[currentTextFieldIndex].editing); if(currentTextFieldIndex!=-1 && nativeKeyBoards[currentTextFieldIndex].editing) From 71ea2e5fe03dcab5eb3031549c122958daf0c7df Mon Sep 17 00:00:00 2001 From: Mohmmad Ebrahim Sepehr Date: Wed, 12 Aug 2020 10:36:41 +0430 Subject: [PATCH 3/3] :finnadie: --- popForm/PopField.as | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/popForm/PopField.as b/popForm/PopField.as index 806a53f9..f668cd85 100644 --- a/popForm/PopField.as +++ b/popForm/PopField.as @@ -124,7 +124,10 @@ return; } myTXT.text = lastTXT ; + + myTXT.removeEventListener(Event.CHANGE, dispatchRenderEventForMe); myTXT.dispatchEvent(new Event(Event.CHANGE)); + myTXT.addEventListener(Event.CHANGE, dispatchRenderEventForMe); } else { @@ -161,8 +164,11 @@ { for(var i:int = 0 ; ii?newtext.charAt(i):'' ; - (myTXTs[i] as TextField).dispatchEvent(new Event(Event.CHANGE)); + var atext:TextField = myTXTs[i] as TextField; + atext.text = newtext.length>i?newtext.charAt(i):'' ; + atext.removeEventListener(Event.CHANGE, dispatchRenderEventForMe); + atext.dispatchEvent(new Event(Event.CHANGE)); + atext.addEventListener(Event.CHANGE, dispatchRenderEventForMe); } } else @@ -280,9 +286,9 @@ trace("Next field to "+currentTextFieldIndex+" is editing>"+nativeKeyBoards[currentTextFieldIndex].editing); if(currentTextFieldIndex!=-1 && nativeKeyBoards[currentTextFieldIndex].editing) { - nativeKeyBoards[currentTextFieldIndex].closeKeyBoard(false); if(currentTextFieldIndex>0) { + nativeKeyBoards[currentTextFieldIndex].closeKeyBoard(false); trace("Activate keyboard : "+nativeKeyBoards[currentTextFieldIndex-1]); if(andRemoveAcharFrom) { @@ -601,6 +607,15 @@ if(currentTXT.maxChars<=currentTXT.text.length) { trace("Show the nextField"); + + try + { + throw new Error("On Done Called"); + } + catch(e:Error) + { + Alert.show(e.message+"\n\n"+e.getStackTrace()); + } setTimeout(nextField,0,currentTXT); } this.dispatchEvent(new Event(Event.RENDER));