<?xml version="1.0"?>
<!--
  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 the ToggleButtonBar control. -->
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx"
				paddingBottom="0" paddingTop="0" paddingLeft="0" paddingRight="0"
				height="100%" width="100%">

     <fx:Script>
        <![CDATA[

            import mx.events.ItemClickEvent;

            // Event handler function to print a message
            // describing the selected Button control.
    		private function clickHandler(event:ItemClickEvent):void {
    		    myTA.text="Selected button index: " + String(event.index) +
    		        "\n" + "Selected button label: " + event.label;
            }
        ]]>
    </fx:Script>

    <mx:Panel title="ToggleButtonBar Control Example"
				paddingBottom="10" paddingTop="10" paddingLeft="10" paddingRight="10"
				height="100%" width="100%">

        <mx:Label width="100%"
            text="Select a button in the ToggleButtonBar control."/>

        <mx:TextArea id="myTA" width="100%" height="100%"/>

        <mx:ToggleButtonBar itemClick="clickHandler(event)">
            <mx:dataProvider>
                <fx:Array>
                    <fx:String>Flex SDK</fx:String>
                    <fx:String>Flex JS</fx:String>
                    <fx:String>Falcon</fx:String>
                    <fx:String>Falcon JX</fx:String>
                </fx:Array>
            </mx:dataProvider>
        </mx:ToggleButtonBar>
    </mx:Panel>
</mx:Module>
