<?xml version="1.0" encoding="utf-8"?>

<!--

ADOBE SYSTEMS INCORPORATED
Copyright 2008 Adobe Systems Incorporated
All Rights Reserved.

NOTICE: Adobe permits you to use, modify, and distribute this file
in accordance with the terms of the license agreement accompanying it.

-->

<!--- The default skin class for a Spark Panel container.  

    @see spark.components.Panel

    @langversion 3.0
    @playerversion Flash 10
    @playerversion AIR 1.5
    @productversion Flex 4
-->
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:fb="http://ns.adobe.com/flashbuilder/2009" blendMode="normal" mouseEnabled="false" 
    minWidth="131" minHeight="127" alpha.disabled="0.5" alpha.disabledWithControlBar="0.5" xmlns:mx="library://ns.adobe.com/flex/mx">
    
  <fx:Metadata>
  <![CDATA[ 
    /** 
     * @copy spark.skins.spark.ApplicationSkin#hostComponent
     */
    [HostComponent("de.dtele.ui.components.MessagePanel")]
  ]]>
  </fx:Metadata>
  
  <fx:Declarations>
    <s:LinearGradient id="defaultGradient" rotation="90">
      <s:GradientEntry color="0xe2e2e2"/>
      <s:GradientEntry color="0xd9d9d9"/>
    </s:LinearGradient>
    <s:LinearGradient id="questionGradient" rotation="90">
      <s:GradientEntry color="0x729fcf"/>
      <s:GradientEntry color="0x3465a4"/>
    </s:LinearGradient>
    <s:LinearGradient id="warningGradient" rotation="90">
      <s:GradientEntry color="0xfcaf3e"/>
      <s:GradientEntry color="0xf57900"/>
    </s:LinearGradient>
    <s:LinearGradient id="errorGradient" rotation="90">
      <s:GradientEntry color="0xef2929"/>
      <s:GradientEntry color="0xcc0000"/>
    </s:LinearGradient>
    
    <s:LinearGradientStroke id="defaultStroke" rotation="90" weight="1">
      <s:GradientEntry color="0xEAEAEA" />
      <s:GradientEntry color="0xD9D9D9" />
    </s:LinearGradientStroke>
    <s:LinearGradientStroke id="questionStroke" rotation="90" weight="1">
      <s:GradientEntry color="0x3465a4" />
      <s:GradientEntry color="0x3465a4" />
    </s:LinearGradientStroke>
    <s:LinearGradientStroke id="warningStroke" rotation="90" weight="1">
      <s:GradientEntry color="0xffffff" />
      <s:GradientEntry color="0xfcaf3e" />
    </s:LinearGradientStroke>
    <s:LinearGradientStroke id="errorStroke" rotation="90" weight="1">
      <s:GradientEntry color="0xcc0000" />
      <s:GradientEntry color="0xcc0000" />
    </s:LinearGradientStroke>
  </fx:Declarations>
  
  <fx:Script>
    <![CDATA[
      import de.dtele.data.Assets;
      import de.dtele.messages.Message;
      
      import mx.graphics.IFill;
      import mx.graphics.IStroke;

      protected function fillDataProvider(messageType:String):IFill {
        
        switch (messageType) {
          
          case Message.QUESTION:
            return this.questionGradient;
            
          case Message.WARNING:
            return this.warningGradient;
            
          case Message.ERROR:
            return this.errorGradient;
            
          default:
            return this.defaultGradient;
        }
      }
      
      protected function strokeDataProvider(messageType:String):IStroke {
        
        switch (messageType) {
          
          case Message.QUESTION:
            return this.questionStroke;
            
          case Message.WARNING:
            return this.warningStroke;
            
          case Message.ERROR:
            return this.errorStroke;
            
          default:
            return this.defaultStroke;
        }
      }
      
      protected function imageSourceDataProvider(messageType:String):Class {
        
        switch (messageType) {
          
          case Message.PROGRESS:
            return Assets.ProgressImage;
          
          case Message.QUESTION:
            return Assets.QuestionImage;
            
          case Message.WARNING:
            return Assets.WarningImage;
            
          case Message.ERROR:
            return Assets.ErrorImage;
            
          default:
            return Assets.InfoImage;
        }
      }
      
      protected function titleColorDataProvider(messageType:String):uint {
        
        if (messageType == Message.QUESTION || messageType == Message.ERROR) {
          
          return 0xffffff;
        }
        
        return 0x000000;
      }
      
    ]]>
  </fx:Script>
  
  <s:states>
    <s:State name="normal" />
    <s:State name="disabled" />
    <s:State name="normalWithControlBar" stateGroups="withControls" />
    <s:State name="disabledWithControlBar" stateGroups="withControls" />
  </s:states>
  
  <!-- drop shadow can't be hittable so it stays sibling of other graphics -->
  <!--- @private -->
  <s:RectangularDropShadow id="dropShadow" blurX="20" blurY="20" alpha="0.32" distance="11" 
               angle="90" color="#000000" left="0" top="0" right="0" bottom="0"/>
  
  <!-- drop shadow can't be hittable so all other graphics go in this group -->
  <s:Group left="0" right="0" top="0" bottom="0">
    
    <!-- top group mask -->
    <!--- @private -->
    <s:Group left="1" top="1" right="1" bottom="1" id="topGroupMask" >
      <!--- @private -->
      <s:Rect id="topMaskRect" left="0" top="0" right="0" bottom="0">
        <s:fill>
          <s:SolidColor alpha="0"/>
        </s:fill>
      </s:Rect>
    </s:Group>
    
    <!-- bottom group mask -->
    <!--- @private -->
    <s:Group left="1" top="1" right="1" bottom="1" id="bottomGroupMask" 
         includeIn="normalWithControlBar, disabledWithControlBar">
      <!--- @private -->
      <s:Rect id="bottomMaskRect" left="0" top="0" right="0" bottom="0">
        <s:fill>
          <s:SolidColor alpha="0"/>
        </s:fill>
      </s:Rect>
    </s:Group>
    
    <!-- layer 1: border -->
    <!--- @private -->
    <s:Rect id="border" left="0" right="0" top="0" bottom="0" >
      <s:stroke>
        <!--- @private -->
        <s:SolidColorStroke id="borderStroke" weight="1" />
      </s:stroke>
    </s:Rect>
    
    <!-- layer 2: background fill -->
    <!--- Defines the appearance of the PanelSkin class's background. -->
    <s:Rect id="background" left="1" top="1" right="1" bottom="1">
      <s:fill>
        <!--- @private
            Defines the  PanelSkin class's background fill. The default color is 0xFFFFFF. -->
        <s:SolidColor id="backgroundFill" color="#FFFFFF"/>
      </s:fill>
    </s:Rect>
    
    <!-- layer 3: contents -->
    <!--- Contains the vertical stack of titlebar content and controlbar. -->
    <s:Group left="1" right="1" top="1" bottom="1" id="contents">
      <s:layout>
        <s:VerticalLayout gap="0" horizontalAlign="justify" />
      </s:layout>
      
      <!--- @private -->
      <s:Group id="topGroup" mask="{topGroupMask}">
        
        <!-- layer 0: title bar fill -->
        <!--- @private -->
        <s:Rect id="tbFill" left="0" right="0" top="0" bottom="1" fill="{this.fillDataProvider(this.hostComponent.messageType)}"/>
        
        <!-- layer 1: title bar highlight -->
        <!--- @private -->
        <s:Rect id="tbHilite" left="0" right="0" top="0" bottom="0" stroke="{this.strokeDataProvider(this.hostComponent.messageType)}"/>
        
        <!-- layer 2: title bar divider -->
        <!--- @private -->
        <s:Rect id="tbDiv" left="0" right="0" height="1" bottom="0">
          <s:fill>
            <s:SolidColor color="0xC0C0C0" />
          </s:fill>
        </s:Rect>
        
        <!-- layer 3: text -->
        <s:HGroup
          left="9"
          right="3"
          top="1"
          bottom="0"
          minHeight="30"
          verticalAlign="middle">
          <!--- Icon of this message -->
          <mx:Image
            id="titleIcon"
            height="100%"
            verticalAlign="middle"
            scaleContent="false"
            source="{this.imageSourceDataProvider(this.hostComponent.messageType)}"/>
          
          <!--- @copy spark.components.Panel#titleDisplay -->
          <s:Label id="titleDisplay" maxDisplayedLines="1"
                   height="100%" width="100%" color="{this.titleColorDataProvider(this.hostComponent.messageType)}"
                   verticalAlign="middle" fontWeight="bold">
          </s:Label>
        </s:HGroup>
      </s:Group>
      
      <!--
        Note: setting the minimum size to 0 here so that changes to the host component's
        size will not be thwarted by this skin part's minimum size.   This is a compromise,
        more about it here: http://bugs.adobe.com/jira/browse/SDK-21143
      -->
      <!--- @copy spark.components.SkinnableContainer#contentGroup -->
      <s:Group id="contentGroup" width="100%" height="100%" minWidth="0" minHeight="0">
      </s:Group>
      
      <!--- @private -->
      <s:Group id="bottomGroup" minWidth="0" minHeight="0"
           includeIn="normalWithControlBar, disabledWithControlBar" >
        
        <s:Group left="0" right="0" top="0" bottom="0" mask="{bottomGroupMask}">

          <!-- layer 0: control bar divider line -->
          <s:Rect left="0" right="0" top="0" height="1" alpha="0.22">
            <s:fill>
              <s:SolidColor color="0x000000" />
            </s:fill>
          </s:Rect>
          
          <!-- layer 1: control bar highlight -->
          <s:Rect left="0" right="0" top="1" bottom="0">
            <s:stroke>
              <s:LinearGradientStroke rotation="90" weight="1">
                <s:GradientEntry color="0xE5E5E5" />
                <s:GradientEntry color="0xD8D8D8" />
              </s:LinearGradientStroke>
            </s:stroke>
          </s:Rect>
          
          <!-- layer 2: control bar fill -->
          <s:Rect left="1" right="1" top="2" bottom="1">
            <s:fill>
              <s:LinearGradient rotation="90">
                <s:GradientEntry color="0xDADADA" />
                <s:GradientEntry color="0xC5C5C5" />
              </s:LinearGradient>
            </s:fill>
          </s:Rect>
        </s:Group>
        <!-- layer 3: control bar -->
        <!--- @copy spark.components.Panel#controlBarGroup -->
        <s:Group id="controlBarGroup" left="0" right="0" top="1" bottom="1" minWidth="0" minHeight="0">
          <s:layout>
            <s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="7" paddingBottom="7" gap="10" />
          </s:layout>
        </s:Group>
      </s:Group>
    </s:Group>
  </s:Group>
</s:SparkSkin>