<?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 Button 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 flash.events.Event;

            // Event handler function to print a message
            // describing the selected Button control.
            private function printMessage(event:Event):void  {
              message.text += event.target.label + " pressed" + "\n";
            }

      ]]>
    </fx:Script>

    <mx:Panel title="Button Control Example" layout="horizontal"
				paddingBottom="10" paddingTop="10" paddingLeft="10" paddingRight="10"
				height="100%" width="100%">
		
		<mx:VBox>
            <mx:Label width="100%"
                text="Select a Button control."/>

             <!-- The button can contain an image, as in the "Button with Icon" button -->
             <!-- The button can contain an image, as in the "Button with Icon" button -->
			 <mx:Button id="iconButton" icon="@Embed('assets/ApacheFlexIcon.png')" label="Button with Icon"
			     paddingLeft="12" paddingRight="18" labelPlacement="right" color="#993300" click="printMessage(event)"/>

             <!-- The size of the button and the label attributes can be customized -->
             <mx:Button label="Customized Button" color="#993300" toggle="true" selected="true"
                 textAlign="left" fontStyle="italic" fontSize="13" width="{iconButton.width}"
                 click="printMessage(event)"/>

             <!-- By default, the look and feel of the customized button is
                 similar to the Default Button.  -->
             <mx:Button label="Default Button" click="printMessage(event)"/>
        </mx:VBox>

         <mx:TextArea id="message" text="" editable="false" height="100%" width="100%"
             color="#0000FF"/>

    </mx:Panel>
</mx:Module>
