<?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.

-->
<!-- Simple example to demonstrate Halo RadioButtonGroup control. -->
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx">

    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import  mx.events.ItemClickEvent;
        
            // Event handler function to display the selected button
            // in a Halo Alert control.
            private function handleCard(evt:ItemClickEvent):void {
                switch (evt.currentTarget.selectedValue) {
                    case "AmEx":
                        Alert.show("You selected American Express");
                        break;
                    case "MC":
                        Alert.show("You selected MasterCard");
                        break;
                    case "Visa":
                        Alert.show("You selected Visa");
                        break;
                }
            }
        ]]>
    </fx:Script>

    <fx:Declarations>
        <mx:RadioButtonGroup id="cardtype" itemClick="handleCard(event);"/>
    </fx:Declarations>

    <s:Panel title="Halo RadioButtonGroup Control Example"
            width="75%" height="75%" 
            horizontalCenter="0" verticalCenter="0">
        <s:VGroup left="10" right="10" top="10" bottom="10">
            <s:Label width="100%" color="blue" 
                    text="Select a type of credit card."/>

            <mx:RadioButton groupName="cardtype" id="americanExpress" value="AmEx" 
                    label="American Express" width="150" />
            <mx:RadioButton groupName="cardtype" id="masterCard" value="MC" 
                    label="MasterCard" width="150" />
            <mx:RadioButton groupName="cardtype" id="visa" value="Visa" 
                    label="Visa" width="150" />
        </s:VGroup>
    </s:Panel>

</s:Application>
