<?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 HSlider 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[
   
          private var imageWidth:Number = 0;
          private var imageHeight:Number = 0;
          
          // Event handler function to change the image size.
          private function changeSize():void
	      {
	         logo.width = uint(imageWidth*hSlider.value/100);
	         logo.height = uint(imageHeight*hSlider.value/100);
	      }
        ]]>
    </fx:Script>

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

        <mx:HBox height="100%" width="100%">
            <mx:Image id="logo" source="@Embed('assets/ApacheFlexLogo.png')" 
                creationComplete="imageWidth = logo.width; imageHeight = logo.height; changeSize()" />
        </mx:HBox>

        <mx:Label text="Drag the slider to resize the image."/>

        <mx:HSlider id="hSlider" minimum="0" maximum="100" value="50" 
            dataTipPlacement="top" 
            tickColor="black" 
            snapInterval="1" tickInterval="10" 
            labels="['0%','100%']" 
            allowTrackClick="true" 
            liveDragging="true"
            change="changeSize()"/>
    </mx:Panel>
</mx:Module>   
       
