<?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 List component.  

      @see spark.components.List
        
      @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"
  xmlns:components="de.dtele.ui.components.*"
  width="100%"
  height="100%"
  minWidth="112"
  alpha.disabled="0.5"
  blendMode="normal" > 
    
  <fx:Metadata>
  <![CDATA[ 
    /** 
     * @copy spark.skins.spark.ApplicationSkin#hostComponent
     */
    [HostComponent("spark.components.List")]
  ]]>
  </fx:Metadata>
  
  <fx:Script>
    <![CDATA[
      import de.dtele.data.IResource;
      import de.dtele.data.MimeType;
      import de.dtele.data.MimeTypes;
      import de.dtele.providers.ProviderManager;
      import de.dtele.ui.components.ResourceViewItemRenderer;
      
      import spark.components.IItemRenderer;
      import spark.skins.spark.DefaultItemRenderer;
      
      /**
       * Tries to retrieve the most appropriate item renderer for a resource
       */
      protected function viewerItemRendererFunction(item:Object):IFactory {
        
        var resource:IResource = item as IResource;
        trace("[ResourceViewerList] Getting item renderer for " + resource.properties.title);
        // Try to get a specific resource viewer
        var viewerItemRendererClass:Class = ProviderManager.instance.getProvider(
          "resourceViewerItemRenderer", resource.properties.type) as Class;
        
        trace("[ResourceViewerList] Got item renderer: " + viewerItemRendererClass);
        
        if (!viewerItemRendererClass) {
          
          // Now try a more generic resource viewer common
          // to all resources of a media type (e.g. "image")
          var mimeType:MimeType = MimeTypes.split(resource.properties.type);
          
          viewerItemRendererClass = ProviderManager.instance.getProvider(
            "resourceViewerItemRenderer", mimeType.mediaType) as Class;
        }
        
        if (viewerItemRendererClass) {
          
          return new ClassFactory(viewerItemRendererClass)
        }
        
        //return new ClassFactory(DefaultItemRenderer);
        return new ClassFactory(ResourceViewItemRenderer);
      }
      
    ]]>
  </fx:Script>
  
  <s:states>
    <s:State name="normal" />
    <s:State name="disabled" />
  </s:states>
  
  <s:BorderContainer
    width="100%"
    height="100%"
    contentBackgroundAlpha="0"
    borderVisible="false">
    
    <s:Scroller
      horizontalScrollPolicy="off"
      verticalScrollPolicy="off">
      
      <!--- @copy spark.components.SkinnableDataContainer#dataGroup -->
      <s:DataGroup
        id="dataGroup"
        itemRendererFunction="viewerItemRendererFunction"
        width="100%"
        height="100%"
        horizontalCenter="0"
        verticalCenter="0">
        <s:layout>
          <!--components:ResourceViewerLayout/-->
          <s:HorizontalLayout gap="50"/>
        </s:layout>
      </s:DataGroup>
      
    </s:Scroller>
    
  </s:BorderContainer>

</s:SparkSkin>