<?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 VSlider 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="VSlider Control Example" layout="horizontal"
				paddingBottom="10" paddingTop="10" paddingLeft="10" paddingRight="10"
				height="100%" width="100%">
        
            <mx:HBox width="50%">
                <mx:Image id="logo" source="@Embed('assets/ApacheFlexLogo.png')" 
                    creationComplete="imageWidth = logo.width; imageHeight = logo.height; changeSize()" />
            </mx:HBox>

            <mx:VBox horizontalAlign="center">
                <mx:Label text="Drag the slider to resize the image."/>
    
                <mx:VSlider id="hSlider" 
                    dataTipPlacement="top" 
                    minimum="0" maximum="100" value="50" 
                    tickColor="black" 
                    snapInterval="1" tickInterval="10" 
                    labels="['0%','100%']" 
                    allowTrackClick="true" 
                    liveDragging="true" 
                    change="changeSize()"/>
            </mx:VBox>
            
        </mx:Panel>
</mx:Module>   
       
