using System.Collections.Generic;
namespace DevComponents.DotNetBar.SuperGrid.Style
{
    ///
    /// VisualStylesTable
    ///
    public static class VisualStylesTable
    {
        private static Dictionary
            _DefaultStyles = new Dictionary();
        /// 
        /// Gets the DefaultVisualStyles for specified SuperGrid style.
        /// 
        /// SuperGridStyle to return.
        /// An instance of DefaultVisualStyle.
        public static DefaultVisualStyles GetStyle(SuperGridStyle style)
        {
            DefaultVisualStyles visualStyle;
            bool cacheStyle = true;
            if (style == SuperGridStyle.Metro || !StyleManager.ColorTint.IsEmpty)
                cacheStyle = false;
            if (cacheStyle == false || !_DefaultStyles.TryGetValue(style, out visualStyle))
            {
                VisualStyleFactory factory = VisualStyleFactory.GetStyleFactory(style);
                visualStyle = factory.CreateStyle();
                if (cacheStyle) // Do not cache Metro style
                    _DefaultStyles.Add(style, visualStyle);
            }
            return visualStyle;
        }
        /// 
        /// Replaces an system style with the specified visual style.
        /// 
        /// SuperGridStyle to replace.
        /// DefaultVisualStyles to replace the system style with.
        public static void SetStyleFactory(SuperGridStyle style, DefaultVisualStyles visualStyle)
        {
            _DefaultStyles[style] = visualStyle;
        }
    }
    /// 
    /// Defines available pre-defined SuperGrid visual styles.
    /// 
    public enum SuperGridStyle
    {
        /// 
        /// Office 2010 Blue style.
        /// 
        Office2010Blue,
        /// 
        /// Office 2010 Silver style.
        /// 
        Office2010Silver,
        /// 
        /// Office 2010 Black style.
        /// 
        Office2010Black,
        /// 
        /// Metro Style.
        /// 
        Metro
    }
}