<!--
  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.
-->
<!-- saved from url=(0014)about:internet -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>sample1.mxml</title>
<link rel="stylesheet" type="text/css" href="../SourceStyles.css"/>
</head>

<body><pre><span class="MXMLProcessing_Instruction">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;</span>
<span class="MXMLComponent_Tag">&lt;mx:Application</span><span class="MXMLDefault_Text"> xmlns:mx=&quot;</span><span class="MXMLString">http://www.adobe.com/2006/mxml</span><span class="MXMLDefault_Text">&quot; layout=&quot;</span><span class="MXMLString">vertical</span><span class="MXMLDefault_Text">&quot; verticalAlign=&quot;</span><span class="MXMLString">top</span><span class="MXMLDefault_Text">&quot;
    horizontalAlign=&quot;</span><span class="MXMLString">center</span><span class="MXMLDefault_Text">&quot; backgroundGradientColors=&quot;</span><span class="MXMLString">[0x000000,0x323232]</span><span class="MXMLDefault_Text">&quot; paddingTop=&quot;</span><span class="MXMLString">0</span><span class="MXMLDefault_Text">&quot; viewSourceURL=&quot;</span><span class="MXMLString">srcview/index.html</span><span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">&gt;</span>
    
    <span class="MXMLSpecial_Tag">&lt;mx:Script&gt;</span>
        <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">mx</span>.<span class="ActionScriptDefault_Text">controls</span>.<span class="ActionScriptDefault_Text">Alert</span>;
    <span class="MXMLSpecial_Tag">&lt;/mx:Script&gt;</span>

    <span class="MXMLComponent_Tag">&lt;mx:StringValidator</span><span class="MXMLDefault_Text"> source=&quot;</span><span class="MXMLString">{</span><span class="ActionScriptDefault_Text">fname</span><span class="MXMLString">}</span><span class="MXMLDefault_Text">&quot; property=&quot;</span><span class="MXMLString">text</span><span class="MXMLDefault_Text">&quot; 
        tooShortError=&quot;</span><span class="MXMLString">This string is shorter than the minimum allowed length of 4. </span><span class="MXMLDefault_Text">&quot; 
        tooLongError=&quot;</span><span class="MXMLString">This string is longer than the maximum allowed length of 20.</span><span class="MXMLDefault_Text">&quot; 
        minLength=&quot;</span><span class="MXMLString">4</span><span class="MXMLDefault_Text">&quot; maxLength=&quot;</span><span class="MXMLString">20</span><span class="MXMLDefault_Text">&quot;
        trigger=&quot;</span><span class="MXMLString">{</span><span class="ActionScriptDefault_Text">myButton</span><span class="MXMLString">}</span><span class="MXMLDefault_Text">&quot; triggerEvent=&quot;</span><span class="MXMLString">click</span><span class="MXMLDefault_Text">&quot; 
        valid=&quot;</span><span class="ActionScriptDefault_Text">Alert</span>.<span class="ActionScriptDefault_Text">show</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptString">&apos;Validation Succeeded!&apos;</span><span class="ActionScriptBracket/Brace">)</span>;<span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">/&gt;</span>
        
    <span class="MXMLComponent_Tag">&lt;mx:Panel</span><span class="MXMLDefault_Text"> title=&quot;</span><span class="MXMLString">StringValidator Example</span><span class="MXMLDefault_Text">&quot; layout=&quot;</span><span class="MXMLString">vertical</span><span class="MXMLDefault_Text">&quot; color=&quot;</span><span class="MXMLString">0xffffff</span><span class="MXMLDefault_Text">&quot; borderAlpha=&quot;</span><span class="MXMLString">0.15</span><span class="MXMLDefault_Text">&quot;
         paddingTop=&quot;</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">&quot; paddingRight=&quot;</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">&quot; paddingBottom=&quot;</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">&quot; paddingLeft=&quot;</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">&quot; horizontalAlign=&quot;</span><span class="MXMLString">center</span><span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">&gt;</span>
         
         <span class="MXMLComponent_Tag">&lt;mx:Form</span><span class="MXMLDefault_Text"> color=&quot;</span><span class="MXMLString">0x323232</span><span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">&gt;</span>               
            <span class="MXMLComponent_Tag">&lt;mx:FormItem</span><span class="MXMLDefault_Text"> label=&quot;</span><span class="MXMLString">Enter a name between 4 and 20 characters: </span><span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">&gt;</span>
                <span class="MXMLComponent_Tag">&lt;mx:TextInput</span><span class="MXMLDefault_Text"> id=&quot;</span><span class="MXMLString">fname</span><span class="MXMLDefault_Text">&quot; width=&quot;</span><span class="MXMLString">100%</span><span class="MXMLDefault_Text">&quot;</span><span class="MXMLComponent_Tag">/&gt;</span>
            <span class="MXMLComponent_Tag">&lt;/mx:FormItem&gt;</span>

            <span class="MXMLComponent_Tag">&lt;mx:FormItem</span><span class="MXMLDefault_Text"> </span><span class="MXMLComponent_Tag">&gt;</span>
                <span class="MXMLComponent_Tag">&lt;mx:Button</span><span class="MXMLDefault_Text"> id=&quot;</span><span class="MXMLString">myButton</span><span class="MXMLDefault_Text">&quot; label=&quot;</span><span class="MXMLString">Validate</span><span class="MXMLDefault_Text">&quot; </span><span class="MXMLComponent_Tag">/&gt;</span>
            <span class="MXMLComponent_Tag">&lt;/mx:FormItem&gt;</span>
        <span class="MXMLComponent_Tag">&lt;/mx:Form&gt;</span>
            
    <span class="MXMLComponent_Tag">&lt;/mx:Panel&gt;</span>
<span class="MXMLComponent_Tag">&lt;/mx:Application&gt;</span></pre></body>
</html>
