| <?xml version="1.0" encoding="UTF-8" ?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| |
| --> |
| <library> |
| |
| <class name="customEdittext" extends="inputtext" bgcolor="0xFFFFFF" fontsize="11" height="20" > |
| |
| <view name="v_border" height="1" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" width="$once{parent.width}" /> |
| <view name="h_border" width="1" y="1" bgcolor="$once{ canvas.getThemeColor('secondBorderColor') }" height="$once{parent.height -1}" /> |
| |
| <attribute name="labelid" type="number" setter="setLabelId(labelid)" /> |
| |
| <attribute name="isvalidInput" value="true" type="boolean" /> |
| <attribute name="regexpType" value="none" type="string" /> |
| <attribute name="regexpLabelid" type="number" /> |
| <attribute name="preText" value="" type="string" /> |
| <attribute name="emailRegEx" type="string" value=""/> |
| |
| <event name="onafterCheck" /> |
| |
| <handler name="onfocus" args="f"> |
| this.preText = this.getText(); |
| </handler> |
| |
| <handler name="oninit"> |
| <![CDATA[ |
| emailRegEx = "^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{1,3})$"; |
| //this.field.setAttribute("bgcolor",0xFFFFFF); |
| ]]> |
| </handler> |
| |
| <handler name="ontext" args="txt"> |
| <![CDATA[ |
| |
| // |
| |
| if (System.capabilities.os.indexOf('Linux')==-1) { |
| return; |
| } |
| |
| //if ($debug) Debug.write("System.capabilities.os -- START ",System.capabilities.os,txt); |
| |
| if (txt == null || txt.length == 0) { |
| return; |
| } |
| |
| |
| //UTF8 character remappings |
| var cp1252 = new Object(); |
| cp1252[0x20ac]=0x80; |
| cp1252[0x201a]=0x82; |
| cp1252[0x0192]=0x83; |
| cp1252[0x201e]=0x84; |
| cp1252[0x2026]=0x85; |
| cp1252[0x2020]=0x86; |
| cp1252[0x2021]=0x87; |
| cp1252[0x02c6]=0x88; |
| cp1252[0x2030]=0x89; |
| cp1252[0x0160]=0x8a; |
| cp1252[0x2039]=0x8b; |
| cp1252[0x0152]=0x8c; |
| cp1252[0x017d]=0x8e; |
| cp1252[0x2018]=0x91; |
| cp1252[0x2019]=0x92; |
| cp1252[0x201c]=0x93; |
| cp1252[0x201d]=0x94; |
| cp1252[0x2022]=0x95; |
| cp1252[0x2013]=0x96; |
| cp1252[0x2014]=0x97; |
| cp1252[0x02dc]=0x98; |
| cp1252[0x2122]=0x99; |
| cp1252[0x0161]=0x9a; |
| cp1252[0x203a]=0x9b; |
| cp1252[0x0153]=0x9c; |
| cp1252[0x017e]=0x9e; |
| cp1252[0x0178]=0x9f; |
| |
| |
| var s=eval(Selection.getFocus()); |
| var t=txt; |
| |
| var i=Selection.getCaretIndex()-1; |
| |
| //if ($debug) Debug.write("i",i,Selection.getCaretIndex()); |
| |
| var d=i; |
| |
| //if ($debug) Debug.write("DO WHILE -1- ",t.charCodeAt(i),cp1252[t.charCodeAt(i)],i,0x80,0xBF); |
| |
| while (((t.charCodeAt(i)>=0x80 && t.charCodeAt(i)<=0xBF) || (cp1252[t.charCodeAt(i)])) && i>0) { |
| |
| //if ($debug) Debug.write("DO WHILE -2- ",t.charCodeAt(i),cp1252[t.charCodeAt(i)],i); |
| |
| if (cp1252[t.charCodeAt(i)]) { |
| t=t.substr(0,i)+String.fromCharCode(cp1252[t.charCodeAt(i)])+t.substr(i+1); |
| } |
| i--; |
| } |
| if (i==d) { |
| //if ($debug) Debug.write("i == d NOTHING TO REPLACE!"); |
| return; |
| } |
| |
| var u=0; |
| |
| if (t.charCodeAt(i)>=0xC2 && t.charCodeAt(i)<=0xDF && d-i==1) { |
| // two-byte sequence |
| u= (t.charCodeAt(i+1) & 0x3F) + |
| ((t.charCodeAt(i ) & 3 ) << 6) + |
| ((t.charCodeAt(i ) & 0x1C) << 6); |
| } else if (t.charCodeAt(i)>=0xE0 && t.charCodeAt(i)<=0xEF && d-i==2) { |
| // three-byte sequence |
| // (Flash Player doesn't cope with any more obscure Unicode) |
| u= (t.charCodeAt(i+2) & 0x3F) + |
| ((t.charCodeAt(i+1) & 3 ) << 6 ) + |
| ((t.charCodeAt(i+1) & 0x3C) << 6 ) + |
| ((t.charCodeAt(i ) & 0x0F) << 12); |
| } |
| |
| if (u!=0) { |
| //if ($debug) Debug.write("Replace String -1- ",txt,u,"Replace With ",String.fromCharCode(u)); |
| |
| this.setAttribute("text",t.slice(0,i)+String.fromCharCode(u)+t.slice(d+1)); |
| |
| //if ($debug) Debug.write("Replace String -2- ",txt,u); |
| |
| this.setAttribute("text",this.text.split(String.fromCharCode(0x03)).join('')); |
| } |
| |
| //if ($debug) Debug.write("-- END ",this.text); |
| |
| ]]> |
| </handler> |
| |
| <attribute name="callDelegate" value="null" /> |
| <attribute name="regExpCheckId" value="-1" /> |
| |
| <handler name="onblur"> |
| <![CDATA[ |
| if (this.regexpType!="none"){ |
| |
| //if ($debug) Debug.write("onblur"); |
| //if ($debug) Debug.write("onblur check ",this.regexpType); |
| var fieldValue = this.getText(); |
| if (this.regexpType=="email") { |
| //var regExpV = ".+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)"; |
| var regExpV = this.emailRegEx; |
| //var regExpV = "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"; |
| this.regexpLabelid = 519; |
| } else if (this.regexpType=="date"){ |
| var regExpV = "(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d"; |
| this.regexpLabelid = 518; |
| } else if (this.regexpType=="float"){ |
| var regExpV = "[0-9]*\\.[0-9]*"; |
| this.regexpLabelid = 520; |
| } else if (this.regexpType=="phone"){ |
| var regExpV = "\\+[0-9]+ [0-9]+ [0-9\\-]+"; |
| this.regexpLabelid = 522; |
| } else if (this.regexpType=="number"){ |
| var regExpV = "[0-9]*"; |
| this.regexpLabelid = 521; |
| } else if (this.regexpType=="time"){ |
| var regExpV = "([01][0-9]|2[0-3]):[0-5][0-9]"; |
| this.regexpLabelid = 523; |
| } else { |
| if ($debug) Debug.warn("Unkown Regexp Type: ",this.regexpType); |
| } |
| //if ($debug) Debug.write("regExpV: ",regExpV); |
| var fieldValue = this.getText(); |
| |
| this.regExpCheckId = canvas.doRegExpCheck(this.getText(),regExpV); |
| |
| if(this.callDelegate == null) { |
| this.callDelegate = new LzDelegate( this, "checkRegExpResult" ); |
| } |
| |
| lz.Timer.resetTimer( this.callDelegate, 50 ); |
| } |
| ]]> |
| </handler> |
| |
| <method name="checkRegExpResult" args="item"> |
| var tResult = canvas.checkRegExpResult(this.regExpCheckId); |
| if ($debug) Debug.write("callback",tResult); |
| |
| if(tResult == undefined || tResult == null) { |
| lz.Timer.resetTimer( this.callDelegate, 50 ); |
| } else { |
| if(!tResult){ |
| if ($debug) Debug.warn("FALSE: regexperror"); |
| disablesTooltips(new lz.regexptip(canvas,{x:this.getAttributeRelative('x',canvas)+12, |
| y:this.getAttributeRelative('y',canvas)+26, |
| regexptext:canvas.getLabelName(this.regexpLabelid)})); |
| this.usePreContent(); |
| this.setAttribute('isvalidInput',false); |
| } else { |
| if(!this.isvalidInput){ |
| disablesTooltips(null); |
| } |
| this.setAttribute('isvalidInput',true); |
| } |
| if ($debug) Debug.write("-- Complete --"); |
| this.onafterCheck.sendEvent(); |
| } |
| </method> |
| |
| |
| <method name="setLabelId" args="_labelid" > |
| this.labelid = _labelid; |
| this.setAttribute('text',canvas.getLabelName(this.labelid)); |
| </method> |
| |
| <method name="usePreContent"> |
| this.setAttribute('text',this.preText); |
| </method> |
| |
| </class> |
| |
| </library> |