<!--
  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>DateSpinner.mxml</title>
<link rel="stylesheet" type="text/css" href="../SourceStyles.css"/>
</head>

<body>
<pre><span class="MXMLProcessing_Instruction">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
<span class="MXMLComponent_Tag">&lt;s:View</span><span class="MXMLDefault_Text"> xmlns:fx="</span><span class="MXMLString">http://ns.adobe.com/mxml/2009</span><span class="MXMLDefault_Text">"
        xmlns:s="</span><span class="MXMLString">library://ns.adobe.com/flex/spark</span><span class="MXMLDefault_Text">" title="</span><span class="MXMLString">DateSpinner Sample</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">&gt;</span>
    <span class="MXMLSpecial_Tag">&lt;fx:Script&gt;</span>
        &lt;![CDATA[
            <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">spark</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">components</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">calendarClasses</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">DateSelectorDisplayMode</span>;
        <span class="ActionScriptBracket/Brace">]</span><span class="ActionScriptBracket/Brace">]</span><span class="ActionScriptOperator">&gt;</span>
    <span class="MXMLSpecial_Tag">&lt;/fx:Script&gt;</span>
    
    <span class="MXMLSpecial_Tag">&lt;fx:Declarations&gt;</span>
        <span class="MXMLComponent_Tag">&lt;s:RadioButtonGroup</span><span class="MXMLDefault_Text"> id="</span><span class="MXMLString">rg</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">/&gt;</span>
    <span class="MXMLSpecial_Tag">&lt;/fx:Declarations&gt;</span>
    
    <span class="MXMLComponent_Tag">&lt;s:layout&gt;</span>
        <span class="MXMLComponent_Tag">&lt;s:VerticalLayout</span><span class="MXMLDefault_Text"> paddingTop="</span><span class="MXMLString">10</span><span class="MXMLDefault_Text">" paddingBottom="</span><span class="MXMLString">15</span><span class="MXMLDefault_Text">" paddingLeft="</span><span class="MXMLString">15</span><span class="MXMLDefault_Text">" paddingRight="</span><span class="MXMLString">15</span><span class="MXMLDefault_Text">" gap="</span><span class="MXMLString">15</span><span class="MXMLDefault_Text">" 
                          horizontalAlign="</span><span class="MXMLString">center</span><span class="MXMLDefault_Text">" verticalAlign="</span><span class="MXMLString">top</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">/&gt;</span>
    <span class="MXMLComponent_Tag">&lt;/s:layout&gt;</span>
    
    <span class="MXMLComponent_Tag">&lt;s:Label</span><span class="MXMLDefault_Text"> text="</span><span class="MXMLString">Select Display Mode</span><span class="MXMLDefault_Text">" </span><span class="MXMLComponent_Tag">/&gt;</span>
    <span class="MXMLComponent_Tag">&lt;s:HGroup&gt;</span>
        <span class="MXMLComponent_Tag">&lt;s:RadioButton</span><span class="MXMLDefault_Text"> label="</span><span class="MXMLString">{</span><span class="ActionScriptDefault_Text">DateSelectorDisplayMode</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">DATE_AND_TIME</span><span class="MXMLString">}</span><span class="MXMLDefault_Text">" groupName="</span><span class="MXMLString">rg</span><span class="MXMLDefault_Text">" selected="</span><span class="MXMLString">true</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">/&gt;</span>
        <span class="MXMLComponent_Tag">&lt;s:RadioButton</span><span class="MXMLDefault_Text"> label="</span><span class="MXMLString">{</span><span class="ActionScriptDefault_Text">DateSelectorDisplayMode</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">DATE</span><span class="MXMLString">}</span><span class="MXMLDefault_Text">" groupName="</span><span class="MXMLString">rg</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">/&gt;</span>
        <span class="MXMLComponent_Tag">&lt;s:RadioButton</span><span class="MXMLDefault_Text"> label="</span><span class="MXMLString">{</span><span class="ActionScriptDefault_Text">DateSelectorDisplayMode</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">TIME</span><span class="MXMLString">}</span><span class="MXMLDefault_Text">" groupName="</span><span class="MXMLString">rg</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">/&gt;</span>
    <span class="MXMLComponent_Tag">&lt;/s:HGroup&gt;</span>
    
    <span class="MXMLComponent_Tag">&lt;s:HGroup</span><span class="MXMLDefault_Text"> verticalAlign="</span><span class="MXMLString">middle</span><span class="MXMLDefault_Text">"</span><span class="MXMLComponent_Tag">&gt;</span>
        <span class="MXMLComponent_Tag">&lt;s:DateSpinner</span> id="<span class="MXMLString">dt</span>" minDate="<span class="MXMLString">{</span><span class="ActionScriptReserved">new</span> Date(2011,06,01)<span class="MXMLString">}</span>" maxDate="<span class="MXMLString">{</span><span class="ActionScriptReserved">new</span> Date(2011,11,31)<span class="MXMLString">}</span>" displayMode="<span class="MXMLString">{</span>rg.selectedValue<span class="MXMLString">}</span>"<span class="MXMLComponent_Tag">/&gt;</span>            
    <span class="MXMLComponent_Tag">&lt;/s:HGroup&gt;</span>
    <span class="MXMLComponent_Tag">&lt;s:Label</span> text="<span class="MXMLString">{</span>dt.selectedDate<span class="MXMLString">}</span>"<span class="MXMLComponent_Tag">/&gt;</span>
<span class="MXMLComponent_Tag">&lt;/s:View&gt;</span></pre></body>
</html>
