#region <<< Using Directives >>>
using System;
using System.Windows.Forms;
using System.Drawing;
#endregion

namespace Volpe.Cafe.EspressoUI.Themes
{
    [Serializable]
    class ThemedColorTable : ProfessionalColorTable
    {

        // top-level menu item
        public override Color MenuItemPressedGradientEnd    { get { return Theme.CurrentTheme.MenuPressedBackColor; } }
        public override Color MenuItemPressedGradientMiddle { get { return Theme.CurrentTheme.MenuPressedBackColor; } }
        public override Color MenuItemPressedGradientBegin  { get { return Theme.CurrentTheme.MenuPressedBackColor; } }
        public override Color MenuItemSelectedGradientEnd   { get { return Theme.CurrentTheme.MenuSelectedBackColor; } }
        public override Color MenuItemSelectedGradientBegin { get { return Theme.CurrentTheme.MenuSelectedBackColor; } }
        public override Color MenuBorder                    { get { return Theme.CurrentTheme.MenuBorderColor; } }

        // drop-down menu item
        public override Color ImageMarginGradientEnd        { get { return Theme.CurrentTheme.MenuIconBackColor; } }
        public override Color ImageMarginGradientMiddle     { get { return Theme.CurrentTheme.MenuIconBackColor; } }
        public override Color ImageMarginGradientBegin      { get { return Theme.CurrentTheme.MenuItemBackColor; } }
        public override Color ToolStripDropDownBackground   { get { return Theme.CurrentTheme.MenuItemBackColor; } }
        public override Color MenuItemSelected              { get { return Theme.CurrentTheme.MenuItemSelectedBackColor; } }
        public override Color MenuItemBorder                { get { return Theme.CurrentTheme.MenuItemSelectedBorderColor; } }

        // toolbar and status bar item
        public override Color ButtonPressedGradientEnd      { get { return Theme.CurrentTheme.ToolbarItemPressedBackColor; } }
        public override Color ButtonPressedGradientMiddle   { get { return Theme.CurrentTheme.ToolbarItemPressedBackColor; } }
        public override Color ButtonPressedGradientBegin    { get { return Theme.CurrentTheme.ToolbarItemPressedBackColor; } }
        public override Color ButtonSelectedGradientEnd     { get { return Theme.CurrentTheme.ToolbarItemSelectedBackColor; } }
        public override Color ButtonSelectedGradientMiddle  { get { return Theme.CurrentTheme.ToolbarItemSelectedBackColor; } }
        public override Color ButtonSelectedGradientBegin   { get { return Theme.CurrentTheme.ToolbarItemSelectedBackColor; } }
        public override Color ButtonPressedBorder           { get { return Theme.CurrentTheme.ToolbarItemSelectedBorderColor; } }
        public override Color ButtonSelectedBorder          { get { return Theme.CurrentTheme.ToolbarItemSelectedBorderColor; } }

        // separators and borders
        public override Color SeparatorDark                 { get { return Theme.CurrentTheme.ToolbarItemSeparatorColor; } }
        public override Color SeparatorLight                { get { return Theme.CurrentTheme.BackColor; } }
        public override Color ToolStripBorder               { get { return Theme.CurrentTheme.BackColor; } }



        //// Gets the starting color of the gradient used when the button is checked.
        //public virtual Color ButtonCheckedGradientBegin { get; }
        //public virtual Color ButtonCheckedGradientMiddle { get; }
        //public virtual Color ButtonCheckedGradientEnd { get; }

        //// Gets the solid color used when the button is checked.
        //public virtual Color ButtonCheckedHighlight { get; }
        //// Gets the border color to use with ProfessionalColorTable.ButtonCheckedHighlight.
        //public virtual Color ButtonCheckedHighlightBorder { get; }

        //// Gets the solid color used when the button is pressed.
        //public virtual Color ButtonPressedHighlight { get; }
        //// Gets the border color to use with ProfessionalColorTable.ButtonPressedHighlight.
        //public virtual Color ButtonPressedHighlightBorder { get; }

        //// Gets the solid color used when the button is selected.
        //public virtual Color ButtonSelectedHighlight { get; }
        //// Gets the border color to use with System.Windows.Forms.ProfessionalColorTable.ButtonSelectedHighlight.
        //public virtual Color ButtonSelectedHighlightBorder { get; }

        //// Gets the solid color to use when the button is checked and gradients are being used.
        //public virtual Color CheckBackground { get; }
        //// Gets the solid color to use when the button is checked and selected and gradients are being used.
        //public virtual Color CheckPressedBackground { get; }
        //// Gets the solid color to use when the button is checked and selected and gradients are being used.
        //public virtual Color CheckSelectedBackground { get; }

        //// Gets the color to use for shadow effects on the grip (move handle).
        //public virtual Color GripDark { get; }
        //// Gets the color to use for highlight effects on the grip (move handle).
        //public virtual Color GripLight { get; }

        //// Gets the starting color of the gradient used in the image margin of a ToolStripDropDownMenu when an item is revealed.
        //public virtual Color ImageMarginRevealedGradientBegin { get; }
        //public virtual Color ImageMarginRevealedGradientMiddle { get; }
        //public virtual Color ImageMarginRevealedGradientEnd { get; }


        //// Gets the starting color of the gradient used in the System.Windows.Forms.MenuStrip.
        //public virtual Color MenuStripGradientBegin { get; }
        //public virtual Color MenuStripGradientEnd { get; }

        //// Gets the starting color of the gradient used in the System.Windows.Forms.ToolStripOverflowButton.
        //public virtual Color OverflowButtonGradientBegin { get; }
        //public virtual Color OverflowButtonGradientMiddle { get; }
        //public virtual Color OverflowButtonGradientEnd { get; }

        //// Gets the starting color of the gradient used in the System.Windows.Forms.ToolStripContainer.
        //public virtual Color RaftingContainerGradientBegin { get; }
        //public virtual Color RaftingContainerGradientEnd { get; }

        //// Gets the starting color of the gradient used on the System.Windows.Forms.StatusStrip.
        //public virtual Color StatusStripGradientBegin { get; }
        //public virtual Color StatusStripGradientEnd { get; }

        //// Gets the starting color of the gradient used in the System.Windows.Forms.ToolStripContentPanel.
        //public virtual Color ToolStripContentPanelGradientBegin { get; }
        //public virtual Color ToolStripContentPanelGradientEnd { get; }

        //// Gets the starting color of the gradient used in the System.Windows.Forms.ToolStrip background.
        //public virtual Color ToolStripGradientBegin { get; }
        //public virtual Color ToolStripGradientMiddle { get; }
        //public virtual Color ToolStripGradientEnd { get; }

        //// Gets the starting color of the gradient used in the System.Windows.Forms.ToolStripPanel.
        //public virtual Color ToolStripPanelGradientBegin { get; }
        //public virtual Color ToolStripPanelGradientEnd { get; }

    }
}
