<?xml version="1.0" encoding="utf-8"?>
<!-- 
  Sea of Arrows Music Player
  Site Design by Futurescale, Inc.
  Copyright(c) 2009 Cliff Hall <cliff@futurescale.com>
 -->
<!-- 
    MAIN APPLICATION ( APP CONTROL BAR / DISPLAY CANVAS ) 
 -->
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    xmlns:visuals="com.seaofarrows.musicplayer.modules.visuals.view.components.*"
    backgroundColor="#000000" backgroundGradientAlphas="[1,0]" 
    horizontalScrollPolicy="off" verticalScrollPolicy="off"
    backgroundGradientColors="[#000000,#6666FF]"
    creationComplete="facade.startup(this)"
    minWidth="970" minHeight="635"
    layout="absolute" viewSourceURL="srcview/index.html">

    <mx:Style source="assets/config/SOAMusicPlayer.css"/>
    <mx:Script>
        <![CDATA[
            import com.seaofarrows.musicplayer.shell.ShellFacade;
            import com.seaofarrows.musicplayer.common.model.vo.TrackVO;
            import com.seaofarrows.musicplayer.common.model.vo.PlaylistVO;
            import com.seaofarrows.musicplayer.modules.playlist.view.components.TrackSelector;
            import com.seaofarrows.musicplayer.modules.playlist.view.components.PlaylistSelector;

            public static const NAME:String = "SOAMusicPlayer";
            
            public var miniSelectorShowing:Boolean     = false;
            public var trackSelectorShowing:Boolean = false;

            private var trackSelector:TrackSelector;            // Manufactured by PlaylistModule
            private var playlistSelector:PlaylistSelector;      // Manufactured by PlaylistModule
            private var miniPlaylistSelector:PlaylistSelector;  // Manufactured by PlaylistModule
            private var facade:ShellFacade = ShellFacade.getInstance(NAME);

            /**
             * Adds the module-manufactured Playlist Selector 
             * component to the view for display.
             */
            public function addPlaylistSelector( selector:PlaylistSelector=null ):void
            {
                if (selector != null) playlistSelector = selector;
                displayCanvas.removeAllChildren();
                displayCanvas.addChild( playlistSelector );
                vsSloganOrMini.selectedIndex=0;
                miniSelectorShowing        = false;
                trackSelectorShowing      = false;
            }
                                            
            /**
             * Adds the module-manufactured Mini Playlist Selector 
             * component to the view for display.
             */
            public function addMiniPlaylistSelector( selector:PlaylistSelector ):void
            {
                miniPlaylistSelector = selector;
                miniPlaylistSelector.width  = vsSloganOrMini.width;
                miniPlaylistSelector.height = vsSloganOrMini.height;
                vsSloganOrMini.addChild(selector);                
            }
                        
            /**
             * Adds the module-manufactured Track Selector 
             * component to the view for display.
             */
            public function addTrackSelector( selector:TrackSelector ):void
            {
                trackSelector = selector;
            }

            /**
             * Adds the module-manufactured Playlist Selector 
             * tcomponent to the view for display.
             */
            public function showChosenPlaylist( playlist:PlaylistVO ):void
            {
                if (! miniSelectorShowing ) {
                    vsSloganOrMini.selectedIndex = 1;
                    miniSelectorShowing = true;
                    displayCanvas.removeAllChildren();
                    displayCanvas.addChild( trackSelector );
                    trackSelectorShowing  = true;
                }
                trackSelector.playlist = playlist;
            }

            /**
             * Show the chosen track.
             */
            public function showChosenTrack( trackVO:TrackVO ):void
            {
                if (! trackSelectorShowing ) {
                    displayCanvas.addChild( trackSelector );
                }
                trackSelector.track = trackVO;
            }

        ]]>
    </mx:Script>    
    
    <!-- APPLICATION CONTROL BAR-->
    <mx:ApplicationControlBar 
        id="appControlBar" horizontalGap="25" height="125"
        dock="true" horizontalAlign="left" verticalAlign="middle">
        
        <!-- LOGO -->
        <mx:HBox height="100%" verticalAlign="middle" paddingBottom="15">
            <mx:Image source="@Embed(source='assets/ui/SOA-Logo.png')"
                buttonMode="true" 
                click="addPlaylistSelector(playlistSelector)"/>
        </mx:HBox>
        
        <!-- SPACER KEEPS EVERYTHING TIGHT ON LEFT AND RIGHT -->
        <mx:Spacer width="100%"/>
        
        <!-- SLOGAN OR MINI PLAYLIST SELECTOR -->
        <mx:ViewStack id="vsSloganOrMini" width="100%" height="100%" right="0">
            
            <!-- SLOGAN -->
            <mx:HBox width="100%" height="100%" verticalAlign="middle" paddingBottom="15"
                paddingRight="15" horizontalAlign="center">
                <mx:Image id="slogan" source="@Embed(source='assets/ui/Wings.png')"/>                
            </mx:HBox>
            
            <!-- MINI PLAYLIST SELECTOR (ADDED DYNAMICALLY) -->
            
        </mx:ViewStack>
        
    </mx:ApplicationControlBar>
        
    
    <!-- DISPLAY CANVAS ( USED FOR PLAYLIST SELECTOR / TRACK SELECTOR ) -->
    <mx:VBox id="displayCanvas" width="100%" height="100%"
        horizontalAlign="center" verticalAlign="middle" paddingBottom="15"/>    
     
</mx:Application>