1516 lines
78 KiB
C#
1516 lines
78 KiB
C#
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
using DevComponents.DotNetBar.Rendering;
|
|
using System;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
/// <summary>
|
|
/// Represents predefined color schemes for ribbon controls.
|
|
/// </summary>
|
|
public class RibbonPredefinedColorSchemes
|
|
{
|
|
#region Office 2007
|
|
/// <summary>
|
|
/// Applies default gray color scheme to background and title.
|
|
/// </summary>
|
|
/// <param name="b">Reference to object.</param>
|
|
public static void ApplyGrayColorScheme(RibbonBar b)
|
|
{
|
|
b.BackgroundStyle.Reset();
|
|
b.BackgroundMouseOverStyle.Reset();
|
|
b.TitleStyle.Reset();
|
|
b.TitleStyleMouseOver.Reset();
|
|
|
|
TypeDescriptor.GetProperties(b.BackgroundStyle)["BackColor"].SetValue(b.BackgroundStyle, ColorScheme.GetColor("CFD5E2"));
|
|
TypeDescriptor.GetProperties(b.BackgroundStyle)["BackColor2"].SetValue(b.BackgroundStyle, ColorScheme.GetColor("C2C9D9"));
|
|
TypeDescriptor.GetProperties(b.BackgroundStyle)["BackColorGradientAngle"].SetValue(b.BackgroundStyle, 90);
|
|
|
|
TypeDescriptor.GetProperties(b.BackgroundMouseOverStyle)["BackColor"].SetValue(b.BackgroundMouseOverStyle, ColorScheme.GetColor("EFEFEF"));
|
|
TypeDescriptor.GetProperties(b.BackgroundMouseOverStyle)["BackColor2"].SetValue(b.BackgroundMouseOverStyle, ColorScheme.GetColor("D2DAED"));
|
|
TypeDescriptor.GetProperties(b.BackgroundMouseOverStyle)["BackColorGradientAngle"].SetValue(b.BackgroundMouseOverStyle, 90);
|
|
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["BackColor"].SetValue(b.TitleStyle, ColorScheme.GetColor("6A7080"));
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["BackColor2"].SetValue(b.TitleStyle, ColorScheme.GetColor("A8B2CC"));
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["BackColorGradientAngle"].SetValue(b.TitleStyle, 90);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["TextColor"].SetValue(b.TitleStyle, Color.White);
|
|
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["PaddingTop"].SetValue(b.TitleStyle, 3);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["PaddingBottom"].SetValue(b.TitleStyle, 2);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["PaddingLeft"].SetValue(b.TitleStyle, 2);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["PaddingRight"].SetValue(b.TitleStyle, 2);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["TextShadowColor"].SetValue(b.TitleStyle, Color.Black);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["TextShadowOffset"].SetValue(b.TitleStyle, new Point(1, 1));
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["Border"].SetValue(b.TitleStyle, eStyleBorderType.None);
|
|
|
|
TypeDescriptor.GetProperties(b.TitleStyleMouseOver)["BackColor"].SetValue(b.TitleStyleMouseOver, ColorScheme.GetColor("53607D"));
|
|
TypeDescriptor.GetProperties(b.TitleStyleMouseOver)["BackColor2"].SetValue(b.TitleStyleMouseOver, ColorScheme.GetColor("8BA1CA"));
|
|
|
|
b.Invalidate();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies orange color scheme to background and title.
|
|
/// </summary>
|
|
/// <param name="b">Reference to object</param>
|
|
public static void ApplyOrangeColorScheme(RibbonBar b)
|
|
{
|
|
b.BackgroundStyle.Reset();
|
|
b.BackgroundMouseOverStyle.Reset();
|
|
b.TitleStyle.Reset();
|
|
b.TitleStyleMouseOver.Reset();
|
|
|
|
TypeDescriptor.GetProperties(b.BackgroundStyle)["BackColor"].SetValue(b.BackgroundStyle, ColorScheme.GetColor("CFD5E2"));
|
|
TypeDescriptor.GetProperties(b.BackgroundStyle)["BackColor2"].SetValue(b.BackgroundStyle, ColorScheme.GetColor("C2C9D9"));
|
|
TypeDescriptor.GetProperties(b.BackgroundStyle)["BackColorGradientAngle"].SetValue(b.BackgroundStyle, 90);
|
|
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["BackColor"].SetValue(b.TitleStyle, ColorScheme.GetColor("CBA950"));
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["BackColor2"].SetValue(b.TitleStyle, ColorScheme.GetColor("FED665"));
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["BackColorGradientAngle"].SetValue(b.TitleStyle, 90);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["TextColor"].SetValue(b.TitleStyle, Color.White);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["PaddingTop"].SetValue(b.TitleStyle, 3);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["PaddingBottom"].SetValue(b.TitleStyle, 2);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["PaddingLeft"].SetValue(b.TitleStyle, 2);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["PaddingRight"].SetValue(b.TitleStyle, 2);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["TextShadowColor"].SetValue(b.TitleStyle, Color.Black);
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["TextShadowOffset"].SetValue(b.TitleStyle, new Point(1, 1));
|
|
TypeDescriptor.GetProperties(b.TitleStyle)["Border"].SetValue(b.TitleStyle, eStyleBorderType.None);
|
|
|
|
b.Invalidate();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Apply Office 2003 color scheme to background and title.
|
|
/// </summary>
|
|
/// <param name="b">Reference to object</param>
|
|
public static void ApplyOffice2003ColorScheme(RibbonBar b)
|
|
{
|
|
|
|
|
|
b.Invalidate();
|
|
}
|
|
|
|
internal static void ApplyRibbonBarOffice2003ElementStyle(ElementStyle backStyle, ElementStyle backMouseOverStyle, ElementStyle titleStyle, ElementStyle titleMouseOverStyle)
|
|
{
|
|
backStyle.Reset();
|
|
backMouseOverStyle.Reset();
|
|
titleStyle.Reset();
|
|
titleMouseOverStyle.Reset();
|
|
|
|
backStyle.BackColorSchemePart = eColorSchemePart.BarBackground2;
|
|
backStyle.BackColor2SchemePart = eColorSchemePart.BarBackground;
|
|
backStyle.BackColorGradientAngle = 90;
|
|
|
|
titleStyle.BackColorSchemePart = eColorSchemePart.PanelBackground;
|
|
titleStyle.BackColor2SchemePart = eColorSchemePart.PanelBackground2;
|
|
titleStyle.BackColorGradientAngle = 90;
|
|
titleStyle.TextColorSchemePart = eColorSchemePart.PanelText;
|
|
titleStyle.PaddingTop = 1;
|
|
titleStyle.PaddingBottom = 1;
|
|
titleStyle.PaddingLeft = 2;
|
|
titleStyle.PaddingRight = 2;
|
|
titleStyle.TextShadowColor = Color.Black;
|
|
titleStyle.TextShadowOffset = new Point(1, 1);
|
|
|
|
titleStyle.BorderColorSchemePart = eColorSchemePart.PanelBorder;
|
|
titleStyle.Border = eStyleBorderType.Solid;
|
|
titleStyle.BorderWidth = 1;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies Office 2003 color scheme to ribbon control background.
|
|
/// </summary>
|
|
/// <param name="b">Reference to object.</param>
|
|
public static void ApplyOffice2003ColorScheme(RibbonControl b)
|
|
{
|
|
ApplyRibbonOffice2003ElementStyle(b.BackgroundStyle);
|
|
b.Invalidate(true);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies Gray color scheme to ribbon control background.
|
|
/// </summary>
|
|
/// <param name="b">Reference to object.</param>
|
|
public static void ApplyGrayColorScheme(RibbonControl b)
|
|
{
|
|
b.BackgroundStyle.Reset();
|
|
TypeDescriptor.GetProperties(b.BackgroundStyle)["BackColor"].SetValue(b.BackgroundStyle, ColorScheme.GetColor("F4F4F4"));
|
|
TypeDescriptor.GetProperties(b.BackgroundStyle)["BackColor2"].SetValue(b.BackgroundStyle, ColorScheme.GetColor("CFCFCF"));
|
|
TypeDescriptor.GetProperties(b.BackgroundStyle)["BackColorGradientAngle"].SetValue(b.BackgroundStyle, 0);
|
|
TypeDescriptor.GetProperties(b.BackgroundStyle)["BackColorGradientType"].SetValue(b.BackgroundStyle, eGradientType.Radial);
|
|
|
|
b.Invalidate(true);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies Office 2007 color table to ribbon control background.
|
|
/// </summary>
|
|
/// <param name="b">Reference to object.</param>
|
|
public static void ApplyOffice2007ColorScheme(RibbonControl b)
|
|
{
|
|
//Rendering.Office2007ColorTable ct = GetOffice2007ColorTable(b);
|
|
//ApplyRibbonOffice2007ElementStyle(b.BackgroundStyle, ct);
|
|
b.Invalidate(true);
|
|
}
|
|
|
|
internal static void ApplyRibbonElementStyle(ElementStyle style, RibbonControl rc)
|
|
{
|
|
eDotNetBarStyle effectiveStyle = rc.Style;
|
|
if (effectiveStyle == eDotNetBarStyle.StyleManagerControlled)
|
|
effectiveStyle = StyleManager.GetEffectiveStyle();
|
|
if (rc != null && effectiveStyle == eDotNetBarStyle.Office2007)
|
|
{
|
|
ApplyRibbonOffice2007ElementStyle(style, GetOffice2007ColorTable(rc));
|
|
}
|
|
else if (rc != null && (effectiveStyle == eDotNetBarStyle.Office2010 || StyleManager.IsMetro(effectiveStyle)))
|
|
{
|
|
ApplyRibbonOffice2010ElementStyle(style, GetOffice2007ColorTable(rc), rc.RibbonStrip.IsGlassEnabled);
|
|
}
|
|
else if (rc != null && effectiveStyle == eDotNetBarStyle.Windows7)
|
|
{
|
|
ApplyRibbonWindows7ElementStyle(style, GetOffice2007ColorTable(rc));
|
|
}
|
|
else
|
|
{
|
|
ApplyRibbonOffice2003ElementStyle(style);
|
|
}
|
|
}
|
|
|
|
internal static void ApplyRibbonOffice2007ElementStyle(ElementStyle backStyle, Rendering.Office2007ColorTable ct)
|
|
{
|
|
backStyle.Reset();
|
|
|
|
backStyle.BackColor = ct.RibbonControl.TabsBackground.Start;
|
|
backStyle.BackColor2 = ct.RibbonControl.TabsBackground.End;
|
|
backStyle.BackColorGradientAngle = ct.RibbonControl.TabsBackground.GradientAngle;
|
|
backStyle.BackColorGradientType = eGradientType.Linear;
|
|
}
|
|
internal static void ApplyRibbonOffice2010ElementStyle(ElementStyle backStyle, Rendering.Office2007ColorTable ct, bool isGlassEnabled)
|
|
{
|
|
backStyle.Reset();
|
|
backStyle.BackColor = ct.RibbonControl.TabsBackground.Start;
|
|
backStyle.BackColor2 = ct.RibbonControl.TabsBackground.End;
|
|
backStyle.BackColorGradientAngle = ct.RibbonControl.TabsBackground.GradientAngle;
|
|
backStyle.BackColorGradientType = eGradientType.Linear;
|
|
|
|
if (isGlassEnabled)
|
|
{
|
|
//backStyle.BackColor = ct.RibbonControl.TabsGlassBackground.Start;
|
|
//backStyle.BackColor2 = ct.RibbonControl.TabsGlassBackground.End;
|
|
//backStyle.BackColorGradientAngle = ct.RibbonControl.TabsGlassBackground.GradientAngle;
|
|
//backStyle.BackColorGradientType = eGradientType.Linear;
|
|
backStyle.BackColor = ct.RibbonControl.TabsGlassBackground.End;
|
|
backStyle.BackColor2 = ct.RibbonControl.TabsGlassBackground.Start;
|
|
backStyle.BackColorGradientAngle = ct.RibbonControl.TabsGlassBackground.GradientAngle;
|
|
backStyle.BackColorGradientType = eGradientType.Radial;
|
|
}
|
|
}
|
|
internal static void ApplyRibbonWindows7ElementStyle(ElementStyle backStyle, Rendering.Office2007ColorTable ct)
|
|
{
|
|
backStyle.Reset();
|
|
|
|
backStyle.BackColor = ct.RibbonControl.TabsBackground.Start;
|
|
backStyle.BackColor2 = ct.RibbonControl.TabsBackground.End;
|
|
backStyle.BackColorGradientAngle = ct.RibbonControl.TabsBackground.GradientAngle;
|
|
backStyle.BackColorGradientType = eGradientType.Linear;
|
|
}
|
|
|
|
internal static void ApplyRibbonOffice2003ElementStyle(ElementStyle backStyle)
|
|
{
|
|
backStyle.Reset();
|
|
|
|
backStyle.BackColorSchemePart = eColorSchemePart.BarBackground2;
|
|
backStyle.BackColor2SchemePart = eColorSchemePart.BarBackground;
|
|
backStyle.BackColorGradientAngle = 90;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies Office 2007 Luna blue color scheme to the Ribbon Bar.
|
|
/// </summary>
|
|
/// <param name="b">Reference to object.</param>
|
|
public static void ApplyOffice2007ColorScheme(RibbonBar b)
|
|
{
|
|
//Rendering.Office2007ColorTable c = GetOffice2007ColorTable(b);
|
|
//ApplyRibbonBarOffice2007ElementStyle(b.BackgroundStyle, b.BackgroundMouseOverStyle, b.TitleStyle, b.TitleStyleMouseOver, c);
|
|
b.Invalidate();
|
|
}
|
|
|
|
internal static Rendering.Office2007ColorTable GetOffice2007ColorTable(RibbonBar b)
|
|
{
|
|
Rendering.Office2007ColorTable c = null;
|
|
if ((b.RenderMode == eRenderMode.Custom || b.RenderMode == eRenderMode.Instance) && b.Renderer != null)
|
|
{
|
|
Rendering.Office2007Renderer rn = b.Renderer as Rendering.Office2007Renderer;
|
|
if (rn != null)
|
|
c = rn.ColorTable;
|
|
}
|
|
else
|
|
{
|
|
Rendering.Office2007Renderer rn = GlobalManager.Renderer as Rendering.Office2007Renderer;
|
|
if (rn != null)
|
|
c = rn.ColorTable;
|
|
}
|
|
|
|
if (c == null) c = new Office2007ColorTable();
|
|
|
|
return c;
|
|
}
|
|
|
|
internal static Rendering.Office2007ColorTable GetOffice2007ColorTable(RibbonControl b)
|
|
{
|
|
Rendering.Office2007ColorTable c = null;
|
|
if ((b.RibbonStrip.RenderMode == eRenderMode.Custom || b.RibbonStrip.RenderMode == eRenderMode.Instance) && b.RibbonStrip.Renderer != null)
|
|
{
|
|
Rendering.Office2007Renderer rn = b.RibbonStrip.Renderer as Rendering.Office2007Renderer;
|
|
if (rn != null)
|
|
c = rn.ColorTable;
|
|
}
|
|
else
|
|
{
|
|
Rendering.Office2007Renderer rn = GlobalManager.Renderer as Rendering.Office2007Renderer;
|
|
if (rn != null)
|
|
c = rn.ColorTable;
|
|
}
|
|
|
|
if (c == null) c = new Office2007ColorTable();
|
|
|
|
return c;
|
|
}
|
|
|
|
internal static void ApplyRibbonBarElementStyle(ElementStyle backStyle, ElementStyle backMouseOverStyle, ElementStyle titleStyle, ElementStyle titleMouseOverStyle, RibbonBar b)
|
|
{
|
|
if (b.EffectiveStyle == eDotNetBarStyle.Office2007)
|
|
{
|
|
Rendering.Office2007ColorTable c = GetOffice2007ColorTable(b);
|
|
ApplyRibbonBarOffice2007ElementStyle(backStyle, backMouseOverStyle, titleStyle, titleMouseOverStyle, c);
|
|
}
|
|
else if (b.EffectiveStyle == eDotNetBarStyle.Office2010)
|
|
{
|
|
Rendering.Office2007ColorTable c = GetOffice2007ColorTable(b);
|
|
ApplyRibbonBarOffice2010ElementStyle(backStyle, backMouseOverStyle, titleStyle, titleMouseOverStyle, c); ;
|
|
}
|
|
else if (StyleManager.IsMetro(b.EffectiveStyle))
|
|
{
|
|
Rendering.Office2007ColorTable c = GetOffice2007ColorTable(b);
|
|
ApplyRibbonBarMetroElementStyle(backStyle, backMouseOverStyle, titleStyle, titleMouseOverStyle, c); ;
|
|
}
|
|
else if (b.EffectiveStyle == eDotNetBarStyle.Windows7)
|
|
{
|
|
Rendering.Office2007ColorTable c = GetOffice2007ColorTable(b);
|
|
ApplyRibbonBarWindows7ElementStyle(backStyle, backMouseOverStyle, titleStyle, titleMouseOverStyle, c); ;
|
|
}
|
|
else
|
|
{
|
|
ApplyRibbonBarOffice2003ElementStyle(backStyle, backMouseOverStyle, titleStyle, titleMouseOverStyle);
|
|
}
|
|
}
|
|
|
|
internal static void ApplyRibbonBarOffice2010ElementStyle(ElementStyle backStyle, ElementStyle backMouseOverStyle, ElementStyle titleStyle, ElementStyle titleMouseOverStyle, Rendering.Office2007ColorTable c)
|
|
{
|
|
backStyle.Reset();
|
|
backMouseOverStyle.Reset();
|
|
titleStyle.Reset();
|
|
titleMouseOverStyle.Reset();
|
|
|
|
backStyle.BorderRight = eStyleBorderType.Etched;
|
|
backStyle.BorderRightWidth = 1;
|
|
backStyle.CornerType = eCornerType.Square;
|
|
//backStyle.CornerDiameter = 2;
|
|
backStyle.BorderColor = c.RibbonBar.Default.OuterBorder.Start;
|
|
backStyle.BorderColor2 = c.RibbonBar.Default.OuterBorder.End;
|
|
backStyle.BorderColorLight = c.RibbonBar.Default.InnerBorder.Start;
|
|
backStyle.BorderColorLight2 = c.RibbonBar.Default.InnerBorder.End;
|
|
backStyle.BackColorGradientAngle = 90;
|
|
if (c.RibbonBar.Default.BottomBackground == null)
|
|
{
|
|
backStyle.BackColor = c.RibbonBar.Default.TopBackground.Start;
|
|
backStyle.BackColor2 = c.RibbonBar.Default.TopBackground.End;
|
|
}
|
|
else
|
|
{
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.TopBackground.Start, 0));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.TopBackground.End, c.RibbonBar.Default.TopBackgroundHeight));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.BottomBackground.Start, c.RibbonBar.Default.TopBackgroundHeight));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.BottomBackground.End, 1));
|
|
}
|
|
|
|
backStyle.PaddingTop = 2;
|
|
backStyle.PaddingLeft = 2;
|
|
backStyle.PaddingRight = 2;
|
|
|
|
backMouseOverStyle.BorderColor = c.RibbonBar.MouseOver.OuterBorder.Start;
|
|
backMouseOverStyle.BorderColor2 = c.RibbonBar.MouseOver.OuterBorder.End;
|
|
backMouseOverStyle.BorderColorLight = c.RibbonBar.MouseOver.InnerBorder.Start;
|
|
backMouseOverStyle.BorderColorLight2 = c.RibbonBar.MouseOver.InnerBorder.End;
|
|
backMouseOverStyle.BackColorGradientAngle = 90;
|
|
if (c.RibbonBar.MouseOver.BottomBackground == null)
|
|
{
|
|
backStyle.BackColor = c.RibbonBar.MouseOver.TopBackground.Start;
|
|
backStyle.BackColor2 = c.RibbonBar.MouseOver.TopBackground.End;
|
|
}
|
|
else
|
|
{
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.TopBackground.Start, 0));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.TopBackground.End, c.RibbonBar.MouseOver.TopBackgroundHeight));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.BottomBackground.Start, c.RibbonBar.MouseOver.TopBackgroundHeight));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.BottomBackground.End, 1));
|
|
}
|
|
|
|
if (c.RibbonBar.Default.TitleBackground != null)
|
|
{
|
|
titleStyle.BackColor = c.RibbonBar.Default.TitleBackground.Start;
|
|
titleStyle.BackColor2 = c.RibbonBar.Default.TitleBackground.End;
|
|
titleStyle.BackColorGradientAngle = 90;
|
|
}
|
|
titleStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
titleStyle.TextColor = c.RibbonBar.Default.TitleText;
|
|
titleStyle.TextShadowOffset = Point.Empty;
|
|
titleStyle.PaddingTop = 1;
|
|
titleStyle.PaddingBottom = 1;
|
|
|
|
if (c.RibbonBar.MouseOver.TitleBackground != null)
|
|
{
|
|
titleMouseOverStyle.BackColor = c.RibbonBar.MouseOver.TitleBackground.Start;
|
|
titleMouseOverStyle.BackColor2 = c.RibbonBar.MouseOver.TitleBackground.End;
|
|
titleMouseOverStyle.BackColorGradientAngle = 90;
|
|
titleMouseOverStyle.BackColorGradientType = eGradientType.Radial;
|
|
}
|
|
titleMouseOverStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
titleMouseOverStyle.TextColor = c.RibbonBar.MouseOver.TitleText;
|
|
|
|
titleStyle.HideMnemonic = true;
|
|
titleMouseOverStyle.HideMnemonic = true;
|
|
}
|
|
internal static void ApplyRibbonBarMetroElementStyle(ElementStyle backStyle, ElementStyle backMouseOverStyle, ElementStyle titleStyle, ElementStyle titleMouseOverStyle, Rendering.Office2007ColorTable c)
|
|
{
|
|
backStyle.Reset();
|
|
backMouseOverStyle.Reset();
|
|
titleStyle.Reset();
|
|
titleMouseOverStyle.Reset();
|
|
|
|
backStyle.BorderRight = eStyleBorderType.Solid;
|
|
backStyle.BorderRightWidth = 1;
|
|
backStyle.CornerType = eCornerType.Square;
|
|
//backStyle.CornerDiameter = 2;
|
|
backStyle.BorderColor = c.RibbonBar.Default.OuterBorder.Start;
|
|
backStyle.BorderColor2 = c.RibbonBar.Default.OuterBorder.End;
|
|
//backStyle.BorderColorLight = c.RibbonBar.Default.InnerBorder.Start;
|
|
//backStyle.BorderColorLight2 = c.RibbonBar.Default.InnerBorder.End;
|
|
backStyle.BackColorGradientAngle = 90;
|
|
if (c.RibbonBar.Default.BottomBackground == null)
|
|
{
|
|
backStyle.BackColor = c.RibbonBar.Default.TopBackground.Start;
|
|
backStyle.BackColor2 = c.RibbonBar.Default.TopBackground.End;
|
|
}
|
|
else
|
|
{
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.TopBackground.Start, 0));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.TopBackground.End, c.RibbonBar.Default.TopBackgroundHeight));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.BottomBackground.Start, c.RibbonBar.Default.TopBackgroundHeight));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.BottomBackground.End, 1));
|
|
}
|
|
|
|
backStyle.PaddingTop = 2;
|
|
backStyle.PaddingLeft = 2;
|
|
backStyle.PaddingRight = 2;
|
|
|
|
backMouseOverStyle.BorderColor = c.RibbonBar.MouseOver.OuterBorder.Start;
|
|
backMouseOverStyle.BorderColor2 = c.RibbonBar.MouseOver.OuterBorder.End;
|
|
//backMouseOverStyle.BorderColorLight = c.RibbonBar.MouseOver.InnerBorder.Start;
|
|
//backMouseOverStyle.BorderColorLight2 = c.RibbonBar.MouseOver.InnerBorder.End;
|
|
backMouseOverStyle.BackColorGradientAngle = 90;
|
|
if (c.RibbonBar.MouseOver.BottomBackground == null)
|
|
{
|
|
backMouseOverStyle.BackColor = c.RibbonBar.MouseOver.TopBackground.Start;
|
|
backMouseOverStyle.BackColor2 = c.RibbonBar.MouseOver.TopBackground.End;
|
|
}
|
|
else
|
|
{
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.TopBackground.Start, 0));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.TopBackground.End, c.RibbonBar.MouseOver.TopBackgroundHeight));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.BottomBackground.Start, c.RibbonBar.MouseOver.TopBackgroundHeight));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.BottomBackground.End, 1));
|
|
}
|
|
|
|
if (c.RibbonBar.Default.TitleBackground != null)
|
|
{
|
|
titleStyle.BackColor = c.RibbonBar.Default.TitleBackground.Start;
|
|
titleStyle.BackColor2 = c.RibbonBar.Default.TitleBackground.End;
|
|
titleStyle.BackColorGradientAngle = 90;
|
|
}
|
|
titleStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
titleStyle.TextColor = c.RibbonBar.Default.TitleText;
|
|
titleStyle.TextShadowOffset = Point.Empty;
|
|
titleStyle.PaddingTop = 1;
|
|
titleStyle.PaddingBottom = 1;
|
|
|
|
if (c.RibbonBar.MouseOver.TitleBackground != null)
|
|
{
|
|
titleMouseOverStyle.BackColor = c.RibbonBar.MouseOver.TitleBackground.Start;
|
|
titleMouseOverStyle.BackColor2 = c.RibbonBar.MouseOver.TitleBackground.End;
|
|
titleMouseOverStyle.BackColorGradientAngle = 90;
|
|
titleMouseOverStyle.BackColorGradientType = eGradientType.Radial;
|
|
}
|
|
titleMouseOverStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
titleMouseOverStyle.TextColor = c.RibbonBar.MouseOver.TitleText;
|
|
|
|
titleStyle.HideMnemonic = true;
|
|
titleMouseOverStyle.HideMnemonic = true;
|
|
}
|
|
internal static void ApplyRibbonBarWindows7ElementStyle(ElementStyle backStyle, ElementStyle backMouseOverStyle, ElementStyle titleStyle, ElementStyle titleMouseOverStyle, Rendering.Office2007ColorTable c)
|
|
{
|
|
backStyle.Reset();
|
|
backMouseOverStyle.Reset();
|
|
titleStyle.Reset();
|
|
titleMouseOverStyle.Reset();
|
|
|
|
backStyle.BorderRight = eStyleBorderType.Etched;
|
|
backStyle.BorderRightWidth = 1;
|
|
backStyle.CornerType = eCornerType.Square;
|
|
//backStyle.CornerDiameter = 2;
|
|
backStyle.BorderColor = c.RibbonBar.Default.OuterBorder.Start;
|
|
backStyle.BorderColor2 = c.RibbonBar.Default.OuterBorder.End;
|
|
backStyle.BorderColorLight = c.RibbonBar.Default.InnerBorder.Start;
|
|
backStyle.BorderColorLight2 = c.RibbonBar.Default.InnerBorder.End;
|
|
backStyle.BackColorGradientAngle = 90;
|
|
if (c.RibbonBar.Default.BottomBackground == null)
|
|
{
|
|
backStyle.BackColor = c.RibbonBar.Default.TopBackground.Start;
|
|
backStyle.BackColor2 = c.RibbonBar.Default.TopBackground.End;
|
|
}
|
|
else
|
|
{
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.TopBackground.Start, 0));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.TopBackground.End, c.RibbonBar.Default.TopBackgroundHeight));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.BottomBackground.Start, c.RibbonBar.Default.TopBackgroundHeight));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.BottomBackground.End, 1));
|
|
}
|
|
|
|
backStyle.PaddingTop = 2;
|
|
backStyle.PaddingLeft = 2;
|
|
backStyle.PaddingRight = 2;
|
|
|
|
backMouseOverStyle.BorderColor = c.RibbonBar.MouseOver.OuterBorder.Start;
|
|
backMouseOverStyle.BorderColor2 = c.RibbonBar.MouseOver.OuterBorder.End;
|
|
backMouseOverStyle.BorderColorLight = c.RibbonBar.MouseOver.InnerBorder.Start;
|
|
backMouseOverStyle.BorderColorLight2 = c.RibbonBar.MouseOver.InnerBorder.End;
|
|
backMouseOverStyle.BackColorGradientAngle = 90;
|
|
if (c.RibbonBar.MouseOver.BottomBackground == null)
|
|
{
|
|
backStyle.BackColor = c.RibbonBar.MouseOver.TopBackground.Start;
|
|
backStyle.BackColor2 = c.RibbonBar.MouseOver.TopBackground.End;
|
|
}
|
|
else
|
|
{
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.TopBackground.Start, 0));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.TopBackground.End, c.RibbonBar.MouseOver.TopBackgroundHeight));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.BottomBackground.Start, c.RibbonBar.MouseOver.TopBackgroundHeight));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.BottomBackground.End, 1));
|
|
}
|
|
|
|
if (c.RibbonBar.Default.TitleBackground != null)
|
|
{
|
|
titleStyle.BackColor = c.RibbonBar.Default.TitleBackground.Start;
|
|
titleStyle.BackColor2 = c.RibbonBar.Default.TitleBackground.End;
|
|
titleStyle.BackColorGradientAngle = 90;
|
|
}
|
|
titleStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
titleStyle.TextColor = c.RibbonBar.Default.TitleText;
|
|
titleStyle.TextShadowOffset = Point.Empty;
|
|
titleStyle.PaddingTop = 1;
|
|
titleStyle.PaddingBottom = 1;
|
|
|
|
if (c.RibbonBar.MouseOver.TitleBackground != null)
|
|
{
|
|
titleMouseOverStyle.BackColor = c.RibbonBar.MouseOver.TitleBackground.Start;
|
|
titleMouseOverStyle.BackColor2 = c.RibbonBar.MouseOver.TitleBackground.End;
|
|
titleMouseOverStyle.BackColorGradientAngle = 90;
|
|
titleMouseOverStyle.BackColorGradientType = eGradientType.Radial;
|
|
}
|
|
titleMouseOverStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
titleMouseOverStyle.TextColor = c.RibbonBar.MouseOver.TitleText;
|
|
|
|
titleStyle.HideMnemonic = true;
|
|
titleMouseOverStyle.HideMnemonic = true;
|
|
}
|
|
|
|
internal static void ApplyRibbonBarOffice2007ElementStyle(ElementStyle backStyle, ElementStyle backMouseOverStyle, ElementStyle titleStyle, ElementStyle titleMouseOverStyle, Rendering.Office2007ColorTable c)
|
|
{
|
|
backStyle.Reset();
|
|
backMouseOverStyle.Reset();
|
|
titleStyle.Reset();
|
|
titleMouseOverStyle.Reset();
|
|
|
|
backStyle.Border = eStyleBorderType.Etched;
|
|
backStyle.BorderWidth = 1;
|
|
backStyle.CornerType = eCornerType.Rounded;
|
|
backStyle.CornerDiameter = 2;
|
|
backStyle.BorderColor = c.RibbonBar.Default.OuterBorder.Start;
|
|
backStyle.BorderColor2 = c.RibbonBar.Default.OuterBorder.End;
|
|
backStyle.BorderColorLight = c.RibbonBar.Default.InnerBorder.Start;
|
|
backStyle.BorderColorLight2 = c.RibbonBar.Default.InnerBorder.End;
|
|
backStyle.BackColorGradientAngle = 90;
|
|
if (c.RibbonBar.Default.TopBackground != null && c.RibbonBar.Default.BottomBackground != null)
|
|
{
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.TopBackground.Start, 0));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.TopBackground.End, c.RibbonBar.Default.TopBackgroundHeight));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.BottomBackground.Start, c.RibbonBar.Default.TopBackgroundHeight));
|
|
backStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.Default.BottomBackground.End, 1));
|
|
}
|
|
|
|
backStyle.PaddingLeft = 2;
|
|
backStyle.PaddingRight = 2;
|
|
|
|
backMouseOverStyle.BorderColor = c.RibbonBar.MouseOver.OuterBorder.Start;
|
|
backMouseOverStyle.BorderColor2 = c.RibbonBar.MouseOver.OuterBorder.End;
|
|
backMouseOverStyle.BorderColorLight = c.RibbonBar.MouseOver.InnerBorder.Start;
|
|
backMouseOverStyle.BorderColorLight2 = c.RibbonBar.MouseOver.InnerBorder.End;
|
|
backMouseOverStyle.BackColorGradientAngle = 90;
|
|
if (c.RibbonBar.MouseOver.TopBackground != null && c.RibbonBar.MouseOver.BottomBackground != null)
|
|
{
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.TopBackground.Start, 0));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.TopBackground.End, c.RibbonBar.MouseOver.TopBackgroundHeight));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.BottomBackground.Start, c.RibbonBar.MouseOver.TopBackgroundHeight));
|
|
backMouseOverStyle.BackColorBlend.Add(new BackgroundColorBlend(c.RibbonBar.MouseOver.BottomBackground.End, 1));
|
|
}
|
|
|
|
if (c.RibbonBar.Default.TitleBackground != null)
|
|
{
|
|
titleStyle.BackColor = c.RibbonBar.Default.TitleBackground.Start;
|
|
titleStyle.BackColor2 = c.RibbonBar.Default.TitleBackground.End;
|
|
}
|
|
|
|
titleStyle.BackColorGradientAngle = 90;
|
|
titleStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
titleStyle.TextColor = c.RibbonBar.Default.TitleText;
|
|
titleStyle.TextShadowOffset = Point.Empty;
|
|
titleStyle.PaddingTop = 1;
|
|
titleStyle.PaddingBottom = 1;
|
|
|
|
if (c.RibbonBar.MouseOver != null)
|
|
{
|
|
if (c.RibbonBar.MouseOver.TitleBackground != null)
|
|
{
|
|
titleMouseOverStyle.BackColor = c.RibbonBar.MouseOver.TitleBackground.Start;
|
|
titleMouseOverStyle.BackColor2 = c.RibbonBar.MouseOver.TitleBackground.End;
|
|
}
|
|
titleMouseOverStyle.BackColorGradientAngle = 90;
|
|
titleMouseOverStyle.TextAlignment = eStyleTextAlignment.Center;
|
|
titleMouseOverStyle.TextColor = c.RibbonBar.MouseOver.TitleText;
|
|
}
|
|
|
|
titleStyle.HideMnemonic = true;
|
|
titleMouseOverStyle.HideMnemonic = true;
|
|
}
|
|
|
|
internal static ElementStyle StyleFromRibbonBarStateColorTable(Office2007RibbonBarStateColorTable table)
|
|
{
|
|
ElementStyle style = new ElementStyle();
|
|
style.Border = eStyleBorderType.Etched;
|
|
style.BorderWidth = 1;
|
|
style.CornerType = eCornerType.Rounded;
|
|
style.CornerDiameter = 3;
|
|
style.BorderColor = table.OuterBorder.Start;
|
|
style.BorderColor2 = table.OuterBorder.End;
|
|
style.BorderColorLight = table.InnerBorder.Start;
|
|
style.BorderColorLight2 = table.InnerBorder.End;
|
|
style.BackColorGradientAngle = 90;
|
|
if (table.BottomBackground != null && !table.BottomBackground.IsEmpty)
|
|
{
|
|
style.BackColorBlend.Add(new BackgroundColorBlend(table.TopBackground.Start, 0));
|
|
style.BackColorBlend.Add(new BackgroundColorBlend(table.TopBackground.End, table.TopBackgroundHeight));
|
|
style.BackColorBlend.Add(new BackgroundColorBlend(table.BottomBackground.Start, table.TopBackgroundHeight));
|
|
style.BackColorBlend.Add(new BackgroundColorBlend(table.BottomBackground.End, 1));
|
|
}
|
|
else if (table.TopBackground != null && !table.TopBackground.IsEmpty)
|
|
{
|
|
style.BackColor = table.TopBackground.Start;
|
|
style.BackColor2 = table.TopBackground.End;
|
|
}
|
|
|
|
return style;
|
|
}
|
|
|
|
private static ColorScheme GetColorScheme()
|
|
{
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
return ((Office2007Renderer)(GlobalManager.Renderer)).ColorTable.LegacyColors;
|
|
return new ColorScheme();
|
|
}
|
|
/// <summary>
|
|
/// Applies specified style to Ribbon control and all other controls that are managed by the ribbon control.
|
|
/// This method is useful for example when switching the color tables for Office 2007 renderer. Once
|
|
/// the GlobalManager.Renderer color table is changed you can call this method to apply color table
|
|
/// changes to the Ribbon Control and other controls managed by it.
|
|
/// </summary>
|
|
/// <param name="r">RibbonControl to set the style on.</param>
|
|
/// <param name="style">Visual style to apply.</param>
|
|
public static void SetRibbonControlStyle(RibbonControl r, eDotNetBarStyle style)
|
|
{
|
|
r.BackgroundStyle.Reset();
|
|
|
|
if (style == eDotNetBarStyle.Office2010 || style == eDotNetBarStyle.Windows7 || StyleManager.IsMetro(style) || style != r.Style)
|
|
{
|
|
ChangeStyle(r, style, r.IsDesignMode, GetColorScheme());
|
|
}
|
|
else
|
|
{
|
|
r.Style = style;
|
|
|
|
foreach (Control c in r.Controls)
|
|
{
|
|
if (c is RibbonPanel)
|
|
{
|
|
RibbonPanel rp = c as RibbonPanel;
|
|
rp.Style.Reset();
|
|
rp.StyleMouseDown.Reset();
|
|
rp.StyleMouseOver.Reset();
|
|
rp.ColorSchemeStyle = style;
|
|
}
|
|
else if (c is RibbonBar)
|
|
SetRibbonBarStyle(c as RibbonBar, style);
|
|
|
|
foreach (Control child in c.Controls)
|
|
{
|
|
if (child is RibbonBar)
|
|
SetRibbonBarStyle(child as RibbonBar, style);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
r.Invalidate(true);
|
|
}
|
|
|
|
internal static void ApplyQatElementStyle(ElementStyle style, Ribbon.QatToolbar qat)
|
|
{
|
|
if (!(qat.Parent is RibbonControl)) return;
|
|
|
|
style.Reset();
|
|
eDotNetBarStyle effectiveStyle = qat.EffectiveStyle;
|
|
if (effectiveStyle == eDotNetBarStyle.Office2010 || StyleManager.IsMetro(effectiveStyle))
|
|
{
|
|
Rendering.Office2007ColorTable ct = GetOffice2007ColorTable(qat.Parent as RibbonControl);
|
|
|
|
Rendering.Office2007QuickAccessToolbarStateColorTable qatColors = ct.QuickAccessToolbar.Standalone;
|
|
style.BackColor = qatColors.BottomBackground.Start;
|
|
style.BackColor2 = qatColors.BottomBackground.End;
|
|
style.BackColorGradientAngle = qatColors.BottomBackground.GradientAngle;
|
|
style.Border = eStyleBorderType.Solid;
|
|
style.BorderWidth = 1;
|
|
style.CornerType = eCornerType.Square;
|
|
//style.CornerDiameter = 2;
|
|
style.BorderColor = qatColors.OutterBorderColor;
|
|
style.BorderColorLight = qatColors.InnerBorderColor;
|
|
}
|
|
else if (effectiveStyle == eDotNetBarStyle.Windows7)
|
|
{
|
|
Rendering.Office2007ColorTable ct = GetOffice2007ColorTable(qat.Parent as RibbonControl);
|
|
|
|
Rendering.Office2007QuickAccessToolbarStateColorTable qatColors = ct.QuickAccessToolbar.Standalone;
|
|
style.BackColor = qatColors.BottomBackground.Start;
|
|
style.BackColor2 = qatColors.BottomBackground.End;
|
|
style.BackColorGradientAngle = qatColors.BottomBackground.GradientAngle;
|
|
style.Border = eStyleBorderType.Solid;
|
|
style.BorderWidth = 1;
|
|
style.CornerType = eCornerType.Square;
|
|
style.BorderColor = qatColors.OutterBorderColor;
|
|
style.BorderColorLight = qatColors.InnerBorderColor;
|
|
}
|
|
else if (effectiveStyle == eDotNetBarStyle.Office2007)
|
|
{
|
|
Rendering.Office2007ColorTable ct = GetOffice2007ColorTable(qat.Parent as RibbonControl);
|
|
|
|
Rendering.Office2007QuickAccessToolbarStateColorTable qatColors = ct.QuickAccessToolbar.Standalone;
|
|
style.BackColor = qatColors.BottomBackground.Start;
|
|
style.BackColor2 = qatColors.BottomBackground.End;
|
|
style.BackColorGradientAngle = qatColors.BottomBackground.GradientAngle;
|
|
style.Border = eStyleBorderType.Etched;
|
|
style.BorderWidth = 1;
|
|
style.CornerType = eCornerType.Rounded;
|
|
style.CornerDiameter = 2;
|
|
style.BorderColor = qatColors.OutterBorderColor;
|
|
style.BorderColorLight = qatColors.InnerBorderColor;
|
|
}
|
|
else
|
|
{
|
|
style.BackColorSchemePart = eColorSchemePart.BarBackground;
|
|
style.BackColor2SchemePart = eColorSchemePart.BarBackground2;
|
|
style.BackColorGradientAngle = 90;
|
|
}
|
|
}
|
|
|
|
//internal static void ApplyOffice2007ColorScheme(Ribbon.QatToolbar qat)
|
|
//{
|
|
// Rendering.Office2007ColorTable ct = null;
|
|
// Rendering.Office2007Renderer rn = Rendering.GlobalManager.Renderer as Rendering.Office2007Renderer;
|
|
// if (rn != null)
|
|
// ct = rn.ColorTable;
|
|
// else
|
|
// ct = new Rendering.Office2007ColorTable();
|
|
|
|
// Rendering.Office2007QuickAccessToolbarStateColorTable qatColors = ct.QuickAccessToolbar.Standalone;
|
|
// qat.BackColor = Color.Transparent;
|
|
// qat.BackgroundStyle.BackColor = qatColors.BottomBackground.Start;
|
|
// qat.BackgroundStyle.BackColor2 = qatColors.BottomBackground.End;
|
|
// qat.BackgroundStyle.BackColorGradientAngle = qatColors.BottomBackground.GradientAngle;
|
|
// qat.BackgroundStyle.Border = eStyleBorderType.Etched;
|
|
// qat.BackgroundStyle.BorderWidth = 1;
|
|
// qat.BackgroundStyle.CornerType = eCornerType.Rounded;
|
|
// qat.BackgroundStyle.CornerDiameter = 2;
|
|
// qat.BackgroundStyle.BorderColor = qatColors.OutterBorderColor;
|
|
// qat.BackgroundStyle.BorderColorLight = qatColors.InnerBorderColor;
|
|
//}
|
|
|
|
/// <summary>
|
|
/// Applies specified visual style to the RibbonBar control.
|
|
/// </summary>
|
|
/// <param name="bar">RibbonBar control to set the style on.</param>
|
|
/// <param name="style">Visual style to apply.</param>
|
|
public static void SetRibbonBarStyle(RibbonBar bar, eDotNetBarStyle style)
|
|
{
|
|
bar.BackgroundStyle.Reset();
|
|
bar.BackgroundMouseOverStyle.Reset();
|
|
bar.TitleStyle.Reset();
|
|
bar.TitleStyleMouseOver.Reset();
|
|
bar.Style = style;
|
|
bar.Invalidate();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies current color scheme and layout settings to the container which acts as top-level file menu container.
|
|
/// Applies to Office 2007 style only.
|
|
/// </summary>
|
|
/// <param name="container">Container to apply style to.</param>
|
|
public static void SetupFileMenuContainer(ItemContainer topContainer)
|
|
{
|
|
Rendering.Office2007MenuColorTable mc = GetOffice2007MenuColorTable();
|
|
if (mc == null)
|
|
return;
|
|
|
|
topContainer.LayoutOrientation = eOrientation.Vertical;
|
|
topContainer.BackgroundStyle.PaddingBottom = 3;
|
|
topContainer.BackgroundStyle.PaddingLeft = 3;
|
|
topContainer.BackgroundStyle.PaddingRight = 3;
|
|
topContainer.BackgroundStyle.PaddingTop = 8;
|
|
BackgroundColorBlend[] blend = new BackgroundColorBlend[mc.FileBackgroundBlend.Count];
|
|
mc.FileBackgroundBlend.CopyTo(blend);
|
|
topContainer.BackgroundStyle.BackColorBlend.Clear();
|
|
topContainer.BackgroundStyle.BackColorBlend.AddRange(blend);
|
|
}
|
|
|
|
private static Rendering.Office2007MenuColorTable GetOffice2007MenuColorTable()
|
|
{
|
|
Rendering.Office2007MenuColorTable mc = null;
|
|
if (Rendering.GlobalManager.Renderer is Rendering.Office2007Renderer)
|
|
mc = ((Rendering.Office2007Renderer)Rendering.GlobalManager.Renderer).ColorTable.Menu;
|
|
return mc;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies current color scheme and layout properties to the two column menu container used by the top-level file menu.
|
|
/// Applies to Office 2007 style only.
|
|
/// </summary>
|
|
/// <param name="twoColumn">Container to apply style to.</param>
|
|
public static void SetupTwoColumnMenuContainer(ItemContainer twoColumnMenu)
|
|
{
|
|
Rendering.Office2007MenuColorTable mc = GetOffice2007MenuColorTable();
|
|
if (mc == null)
|
|
return;
|
|
|
|
twoColumnMenu.BackgroundStyle.BorderBottom = DevComponents.DotNetBar.eStyleBorderType.Double;
|
|
twoColumnMenu.BackgroundStyle.BorderBottomWidth = 1;
|
|
twoColumnMenu.BackgroundStyle.BorderColor = mc.FileContainerBorder;
|
|
twoColumnMenu.BackgroundStyle.BorderColorLight = mc.FileContainerBorderLight;
|
|
twoColumnMenu.BackgroundStyle.BorderLeft = DevComponents.DotNetBar.eStyleBorderType.Double;
|
|
twoColumnMenu.BackgroundStyle.BorderLeftWidth = 1;
|
|
twoColumnMenu.BackgroundStyle.BorderRight = DevComponents.DotNetBar.eStyleBorderType.Double;
|
|
twoColumnMenu.BackgroundStyle.BorderRightWidth = 1;
|
|
twoColumnMenu.BackgroundStyle.BorderTop = DevComponents.DotNetBar.eStyleBorderType.Double;
|
|
twoColumnMenu.BackgroundStyle.BorderTopWidth = 1;
|
|
twoColumnMenu.BackgroundStyle.PaddingBottom = 2;
|
|
twoColumnMenu.BackgroundStyle.PaddingLeft = 2;
|
|
twoColumnMenu.BackgroundStyle.PaddingRight = 2;
|
|
twoColumnMenu.BackgroundStyle.PaddingTop = 2;
|
|
twoColumnMenu.ItemSpacing = 0;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies current color scheme and layout properties to the first column menu container used by the top-level file menu.
|
|
/// This column usually contains menu items.
|
|
/// Applies to Office 2007 style only.
|
|
/// </summary>
|
|
/// <param name="menuColumn">Container to apply style to.</param>
|
|
public static void SetupMenuColumnOneContainer(ItemContainer menuColumn)
|
|
{
|
|
Rendering.Office2007MenuColorTable mc = GetOffice2007MenuColorTable();
|
|
if (mc == null)
|
|
return;
|
|
|
|
menuColumn.BackgroundStyle.BackColor = mc.FileColumnOneBackground;
|
|
menuColumn.BackgroundStyle.BorderRight = DevComponents.DotNetBar.eStyleBorderType.Solid;
|
|
menuColumn.BackgroundStyle.BorderRightColor = mc.FileColumnOneBorder;
|
|
menuColumn.BackgroundStyle.BorderRightWidth = 1;
|
|
menuColumn.BackgroundStyle.PaddingRight = 1;
|
|
menuColumn.LayoutOrientation = DevComponents.DotNetBar.eOrientation.Vertical;
|
|
menuColumn.MinimumSize = new System.Drawing.Size(120, 0);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies current color scheme and layout properties to the first column menu container used by the top-level file menu.
|
|
/// This column usually contains most recently used list of files or documents.
|
|
/// Applies to Office 2007 style only.
|
|
/// </summary>
|
|
/// <param name="menuColumn">Container to apply style to.</param>
|
|
public static void SetupMenuColumnTwoContainer(ItemContainer columnTwo)
|
|
{
|
|
Rendering.Office2007MenuColorTable mc = GetOffice2007MenuColorTable();
|
|
if (mc == null)
|
|
return;
|
|
|
|
columnTwo.BackgroundStyle.BackColor = mc.FileColumnTwoBackground;
|
|
columnTwo.LayoutOrientation = DevComponents.DotNetBar.eOrientation.Vertical;
|
|
columnTwo.MinimumSize = new System.Drawing.Size(180, 0);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies current color scheme and layout properties to the bottom menu container used by the top-level file menu.
|
|
/// This container usually contains Options and Exit buttons.
|
|
/// Applies to Office 2007 style only.
|
|
/// </summary>
|
|
/// <param name="menuColumn">Container to apply style to.</param>
|
|
public static void SetupMenuBottomContainer(ItemContainer bottomContainer)
|
|
{
|
|
Rendering.Office2007MenuColorTable mc = GetOffice2007MenuColorTable();
|
|
if (mc == null)
|
|
return;
|
|
|
|
BackgroundColorBlend[] blend = new BackgroundColorBlend[mc.FileBottomContainerBackgroundBlend.Count];
|
|
mc.FileBottomContainerBackgroundBlend.CopyTo(blend);
|
|
bottomContainer.BackgroundStyle.BackColorBlend.Clear();
|
|
bottomContainer.BackgroundStyle.BackColorBlend.AddRange(blend);
|
|
|
|
bottomContainer.BackgroundStyle.BackColorGradientAngle = 90;
|
|
bottomContainer.HorizontalItemAlignment = DevComponents.DotNetBar.eHorizontalItemsAlignment.Right;
|
|
}
|
|
|
|
#if FRAMEWORK20
|
|
/// <summary>
|
|
/// Changes the Office 2007 color table for all DotNetBar controls on the open forms that are tracked by Application.OpenForms collection. You can use this function for example to
|
|
/// apply Black color scheme to all DotNetBar control on all open forms. The color table will be changed only for controls that
|
|
/// have Office 2007 style. Any other style will be unchanged.
|
|
/// </summary>
|
|
/// <param name="colorTable">Color table to select and apply.</param>
|
|
public static void ChangeOffice2007ColorTable(eOffice2007ColorScheme colorTable)
|
|
{
|
|
// Make sure we use right color table in our global renderer
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
{
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable.Dispose();
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Office2007ColorTable(colorTable);
|
|
}
|
|
else
|
|
throw new InvalidOperationException("GlobalManager.Renderer is not Office2007Renderer. Cannot change the color table. Make sure that renderer is set to Office2007Renderer");
|
|
|
|
ApplyOffice2007ColorTable();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Applies current Office 2007 style color table set on GlobalManager.Renderer to all DotNetBar controls with Office 2007 style on all open forms.
|
|
/// </summary>
|
|
public static void ApplyOffice2007ColorTable()
|
|
{
|
|
foreach (Form f in Application.OpenForms)
|
|
{
|
|
ApplyOffice2007ColorTable(f);
|
|
}
|
|
}
|
|
#endif
|
|
|
|
/// <summary>
|
|
/// Changes the Office 2007 color table for all DotNetBar controls on the form. You can use this function for example to
|
|
/// apply Black color scheme to all DotNetBar control on given form. The color table will be changed only for controls that
|
|
/// have Office 2007 style. Any other style will be unchanged.
|
|
/// </summary>
|
|
/// <param name="form">Form to apply color table to.</param>
|
|
/// <param name="colorTable">Color table to select and apply.</param>
|
|
public static void ChangeOffice2007ColorTable(Control form, eOffice2007ColorScheme colorTable)
|
|
{
|
|
// Make sure we use right color table in our global renderer
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
{
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable.Dispose();
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Office2007ColorTable(colorTable);
|
|
}
|
|
else
|
|
throw new InvalidOperationException("GlobalManager.Renderer is not Office2007Renderer. Cannot change the color table. Make sure that renderer is set to Office2007Renderer");
|
|
|
|
ApplyOffice2007ColorTable(form);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Generates and Changes the Office 2007 color table for all DotNetBar controls on the form. You can use this function for example to
|
|
/// create custom color scheme based on the base color and apply it to all DotNetBar control on given form. The new color table will be applied only to controls that
|
|
/// have Office 2007 style. Any other style will be unchanged.
|
|
/// </summary>
|
|
/// <param name="form">Form to apply color table to.</param>
|
|
/// <param name="colorTable">Base color table to use for creation of custom color table that will be applied.</param>
|
|
/// <param name="baseSchemeColor">Base color used to create custom color table.</param>
|
|
public static void ChangeOffice2007ColorTable(Control form, eOffice2007ColorScheme colorTable, Color baseSchemeColor)
|
|
{
|
|
// Make sure we use black color table in our global renderer
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
{
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable.Dispose();
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Office2007ColorTable(colorTable, baseSchemeColor);
|
|
}
|
|
else
|
|
throw new InvalidOperationException("GlobalManager.Renderer is not Office2007Renderer. Cannot change the color table. Make sure that renderer is set to Office2007Renderer");
|
|
|
|
ApplyOffice2007ColorTable(form);
|
|
}
|
|
|
|
#if FRAMEWORK20
|
|
/// <summary>
|
|
/// Generates and Changes the Office 2007 color table for all DotNetBar controls on all open forms. You can use this function for example to
|
|
/// create custom color scheme based on the base color and apply it to all DotNetBar control on given form. The new color table will be applied only to controls that
|
|
/// have Office 2007 style. Any other style will be unchanged.
|
|
/// </summary>
|
|
/// <param name="colorTable">Base color table to use for creation of custom color table that will be applied.</param>
|
|
/// <param name="baseSchemeColor">Base color used to create custom color table.</param>
|
|
public static void ChangeOffice2007ColorTable(eOffice2007ColorScheme colorTable, Color baseSchemeColor)
|
|
{
|
|
// Make sure we use black color table in our global renderer
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
{
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable.Dispose();
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Office2007ColorTable(colorTable, baseSchemeColor);
|
|
}
|
|
else
|
|
throw new InvalidOperationException("GlobalManager.Renderer is not Office2007Renderer. Cannot change the color table. Make sure that renderer is set to Office2007Renderer");
|
|
|
|
ApplyOffice2007ColorTable();
|
|
}
|
|
#endif
|
|
|
|
/// <summary>
|
|
/// Applies current Office 2007 style color table to all DotNetBar controls on the form.
|
|
/// </summary>
|
|
/// <param name="form">Reference to the form or parent control that contains DotNetBar controls you would like to apply color table to.</param>
|
|
public static void ApplyOffice2007ColorTable(Control form)
|
|
{
|
|
if (form == null)
|
|
return;
|
|
|
|
// Make sure we use black color table in our global renderer
|
|
if (!(GlobalManager.Renderer is Office2007Renderer))
|
|
throw new InvalidOperationException("GlobalManager.Renderer is not Office2007Renderer. Cannot change the color table. Make sure that renderer is set to Office2007Renderer");
|
|
|
|
ColorScheme cs = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.LegacyColors;
|
|
|
|
foreach (Control c in form.Controls)
|
|
{
|
|
ChangeOffice2007ColorTable(c, cs);
|
|
}
|
|
|
|
if (form is RibbonForm)
|
|
{
|
|
form.BackColor = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.Form.BackColor;
|
|
}
|
|
if (form is OfficeForm)
|
|
((OfficeForm)form).InvalidateNonClient(true);
|
|
form.Invalidate(true);
|
|
}
|
|
|
|
private static void ChangeOffice2007ColorTable(Control cont, ColorScheme cs)
|
|
{
|
|
bool enumChildControls = true;
|
|
if (cont is PanelEx && ((PanelEx)cont).ColorSchemeStyle == eDotNetBarStyle.Office2007)
|
|
{
|
|
PanelEx pe = cont as PanelEx;
|
|
pe.ColorSchemeStyle = eDotNetBarStyle.Office2007;
|
|
cont.Invalidate();
|
|
}
|
|
if (cont is PanelControl && ((PanelControl)cont).EffectiveColorSchemeStyle == eDotNetBarStyle.Office2007)
|
|
{
|
|
PanelControl pc = cont as PanelControl;
|
|
pc.RefreshStyleSystemColors();
|
|
pc.Invalidate();
|
|
}
|
|
else if (cont is ExpandablePanel && ((ExpandablePanel)cont).ColorSchemeStyle == eDotNetBarStyle.Office2007)
|
|
{
|
|
//ExpandablePanel ep = cont as ExpandablePanel;
|
|
//ep.ColorScheme = cs;
|
|
cont.Invalidate();
|
|
}
|
|
else if (cont is RibbonControl)
|
|
{
|
|
((RibbonControl)cont).RibbonStrip.InitDefaultStyles();
|
|
cont.Invalidate(true);
|
|
//RibbonControl rc = cont as RibbonControl;
|
|
//SetRibbonControlStyle(rc, eDotNetBarStyle.Office2007);
|
|
//enumChildControls = false;
|
|
}
|
|
else if (cont is RibbonBar)
|
|
{
|
|
cont.Invalidate();
|
|
//RibbonBar rb = cont as RibbonBar;
|
|
//ApplyOffice2007ColorScheme(rb);
|
|
}
|
|
else if (cont is TabControl)
|
|
{
|
|
TabControl tc = cont as TabControl;
|
|
if (tc.Style == eTabStripStyle.Office2007Dock || tc.Style == eTabStripStyle.Office2007Document)
|
|
tc.Style = tc.Style;
|
|
}
|
|
else if (cont is TabStrip)
|
|
{
|
|
TabStrip ts = cont as TabStrip;
|
|
if (ts.Style == eTabStripStyle.Office2007Dock || ts.Style == eTabStripStyle.Office2007Document)
|
|
ts.Style = ts.Style;
|
|
}
|
|
else if (cont is SideBar)
|
|
{
|
|
SideBar sb = cont as SideBar;
|
|
if (sb.Style == eDotNetBarStyle.Office2007)
|
|
sb.Invalidate();
|
|
}
|
|
else if (cont is RibbonForm)
|
|
{
|
|
cont.BackColor = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.Form.BackColor;
|
|
if (cont is OfficeForm)
|
|
((OfficeForm)cont).InvalidateNonClient(true);
|
|
}
|
|
else if (cont is DockSite && cont.Dock == DockStyle.Top)
|
|
{
|
|
// Update any floating bars through DotNetBarManager
|
|
DockSite ds = cont as DockSite;
|
|
if (ds.Owner != null)
|
|
{
|
|
foreach (Bar bar in ds.Owner.Bars)
|
|
{
|
|
if (bar.DockSide == eDockSide.None)
|
|
{
|
|
bar.Invalidate(true);
|
|
ChangeOffice2007ColorTable(bar, cs);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (cont is Controls.ComboBoxEx)
|
|
((Controls.ComboBoxEx)cont).Style = ((Controls.ComboBoxEx)cont).Style;
|
|
else if (cont is NavigationPane)
|
|
((NavigationPane)cont).Office2007ColorTableChanged();
|
|
else if (cont is BaseItemControl && ((BaseItemControl)cont).Style == eDotNetBarStyle.Office2007)
|
|
cont.Invalidate();
|
|
#if FRAMEWORK20
|
|
else if (cont is Controls.ListViewEx)
|
|
{
|
|
Controls.ListViewEx lv = cont as Controls.ListViewEx;
|
|
lv.Invalidate(true);
|
|
lv.ResetCachedColorTableReference();
|
|
}
|
|
else if (cont is Controls.DataGridViewX)
|
|
cont.Invalidate(true);
|
|
else if (cont is Controls.DGHScrollBar || cont is Controls.DGVScrollBar)
|
|
cont.Invalidate();
|
|
else if (cont is DevComponents.DotNetBar.Controls.WarningBox)
|
|
((DevComponents.DotNetBar.Controls.WarningBox)cont).UpdateColorScheme();
|
|
#endif
|
|
#if !NOTREE
|
|
else if (cont is AdvTree.AdvTree)
|
|
cont.Invalidate();
|
|
#endif
|
|
|
|
if (enumChildControls)
|
|
{
|
|
foreach (Control c in cont.Controls)
|
|
ChangeOffice2007ColorTable(c, cs);
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Office 2010
|
|
#if FRAMEWORK20
|
|
/// <summary>
|
|
/// Changes style for all controls on Application.OpenForms to specified style. Use this method to change the style for all controls to Office 2007 or Office 2010 styles only.
|
|
/// </summary>
|
|
/// <param name="newStyle">New style to assign to controls on forms.</param>
|
|
public static void ChangeStyle(eDotNetBarStyle newStyle)
|
|
{
|
|
foreach (Form form in Application.OpenForms)
|
|
{
|
|
ChangeStyle(newStyle, form);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Changes style for all controls on Application.OpenForms to specified style. Use this method to change the style for all controls to Office 2007 or Office 2010 styles only.
|
|
/// </summary>
|
|
/// <param name="newStyle">New style to assign to controls on forms.</param>
|
|
/// <param name="blendColor">Color used to blend with the base color scheme.</param>
|
|
public static void ChangeStyle(eDotNetBarStyle newStyle, Color blendColor)
|
|
{
|
|
foreach (Form form in Application.OpenForms)
|
|
{
|
|
ChangeStyle(newStyle, form, false, blendColor);
|
|
}
|
|
}
|
|
#endif
|
|
/// <summary>
|
|
/// Changes style for all controls on a form to specified style. Use this method to change the style for all controls to Office 2007 or Office 2010 styles only.
|
|
/// </summary>
|
|
/// <param name="newStyle">New style to assign to controls.</param>
|
|
/// <param name="parentForm">Form or Control to process.</param>
|
|
public static void ChangeStyle(eDotNetBarStyle newStyle, Control parentForm)
|
|
{
|
|
ChangeStyle(newStyle, parentForm, false, Color.Empty);
|
|
}
|
|
/// <summary>
|
|
/// Changes style for all controls on a form to specified style. Use this method to change the style for all controls to Office 2007 or Office 2010 styles only.
|
|
/// </summary>
|
|
/// <param name="newStyle">New style to assign to controls.</param>
|
|
/// <param name="parentForm">Form or Control to process.</param>
|
|
/// <param name="blendColor">Color used to blend with the base color scheme.</param>
|
|
public static void ChangeStyle(eDotNetBarStyle newStyle, Control parentForm, Color blendColor)
|
|
{
|
|
ChangeStyle(newStyle, parentForm, false, blendColor);
|
|
}
|
|
|
|
private static void ChangeStyle(eDotNetBarStyle newStyle, Control parentForm, bool designMode, Color blendColor)
|
|
{
|
|
if (newStyle == eDotNetBarStyle.Office2010 || StyleManager.IsMetro(newStyle))
|
|
{
|
|
if (blendColor.IsEmpty)
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Office2010ColorTable();
|
|
else
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Office2010ColorTable(eOffice2010ColorScheme.Silver, blendColor);
|
|
}
|
|
else if (newStyle == eDotNetBarStyle.Windows7)
|
|
{
|
|
if (blendColor.IsEmpty)
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Windows7ColorTable();
|
|
else
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Windows7ColorTable(eWindows7ColorScheme.Blue, blendColor);
|
|
}
|
|
else if (newStyle == eDotNetBarStyle.Office2007)
|
|
{
|
|
if (blendColor.IsEmpty)
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Office2007ColorTable();
|
|
else
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Office2007ColorTable(eOffice2007ColorScheme.Blue, blendColor);
|
|
}
|
|
ColorScheme cs = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.LegacyColors;
|
|
|
|
foreach (Control item in parentForm.Controls)
|
|
{
|
|
ChangeStyle(item, newStyle, designMode, cs);
|
|
}
|
|
}
|
|
|
|
private static BaseItem GetAppButton(RibbonControl ribbon)
|
|
{
|
|
BaseItem appButton = null;
|
|
for (int i = 0; i < ribbon.QuickToolbarItems.Count; i++)
|
|
{
|
|
if (ribbon.QuickToolbarItems[i] is ApplicationButton)
|
|
{
|
|
appButton = ribbon.QuickToolbarItems[i];
|
|
break;
|
|
}
|
|
|
|
}
|
|
return appButton;
|
|
}
|
|
private static DevComponents.DotNetBar.eTabStripStyle GetTabControlStyle(TabStrip tab, eDotNetBarStyle style)
|
|
{
|
|
if (style == eDotNetBarStyle.Office2007 || style == eDotNetBarStyle.Office2010 || style == eDotNetBarStyle.Windows7 || StyleManager.IsMetro(style))
|
|
{
|
|
if (tab.Style != eTabStripStyle.Office2007Dock || tab.Style != eTabStripStyle.Office2007Document)
|
|
return eTabStripStyle.Office2007Document;
|
|
}
|
|
else if (style == eDotNetBarStyle.VS2005)
|
|
return eTabStripStyle.VS2005;
|
|
return tab.Style;
|
|
}
|
|
private static void ChangeStyle(Control cont, eDotNetBarStyle style, bool designMode, ColorScheme cs)
|
|
{
|
|
eDotNetBarStyle effectiveStyle = style;
|
|
if (style == eDotNetBarStyle.StyleManagerControlled) effectiveStyle = StyleManager.GetEffectiveStyle();
|
|
bool enumChildControls = true;
|
|
if (cont is PanelEx && ((PanelEx)cont).ColorSchemeStyle == eDotNetBarStyle.Office2007)
|
|
{
|
|
PanelEx pe = cont as PanelEx;
|
|
pe.ColorSchemeStyle = style;
|
|
cont.Invalidate();
|
|
}
|
|
if (cont is PanelControl && ((PanelControl)cont).ColorSchemeStyle == eDotNetBarStyle.Office2007)
|
|
{
|
|
PanelControl pc = cont as PanelControl;
|
|
pc.ColorSchemeStyle = style;
|
|
pc.RefreshStyleSystemColors();
|
|
pc.Invalidate();
|
|
}
|
|
else if (cont is ExpandablePanel && ((ExpandablePanel)cont).ColorSchemeStyle == eDotNetBarStyle.Office2007)
|
|
{
|
|
ExpandablePanel ep = cont as ExpandablePanel;
|
|
ep.ColorSchemeStyle = style;
|
|
cont.Invalidate();
|
|
}
|
|
else if (cont is RibbonControl)
|
|
{
|
|
RibbonControl ribbon = (RibbonControl)cont;
|
|
if (effectiveStyle == eDotNetBarStyle.Office2010 || effectiveStyle == eDotNetBarStyle.Windows7 || StyleManager.IsMetro(effectiveStyle))
|
|
{
|
|
BaseItem appButton = GetAppButton(ribbon);
|
|
if (appButton != null)
|
|
{
|
|
if (appButton is ButtonItem && ((ButtonItem)appButton).ImageFixedSize.IsEmpty)
|
|
((ButtonItem)appButton).ImageFixedSize = new Size(16, 16);
|
|
ribbon.QuickToolbarItems.Remove(appButton);
|
|
ribbon.Items.Insert(0, appButton);
|
|
}
|
|
}
|
|
else if (effectiveStyle == eDotNetBarStyle.Office2007)
|
|
{
|
|
if (ribbon.Items.Count > 0 && ribbon.Items[0] is ApplicationButton)
|
|
{
|
|
ApplicationButton appButton = (ApplicationButton)ribbon.Items[0];
|
|
if (!appButton.ImageFixedSize.IsEmpty)
|
|
appButton.ImageFixedSize = Size.Empty;
|
|
ribbon.Items.Remove(appButton);
|
|
ribbon.QuickToolbarItems.Insert(0, appButton);
|
|
}
|
|
}
|
|
if (style == eDotNetBarStyle.StyleManagerControlled && ribbon.Style == style || style != eDotNetBarStyle.StyleManagerControlled)
|
|
ribbon.Style = style;
|
|
ribbon.RibbonStrip.InitDefaultStyles();
|
|
ribbon.Invalidate(true);
|
|
if (ribbon.IsHandleCreated && ribbon.SelectedRibbonTabItem != null && ribbon.SelectedRibbonTabItem.Panel != null)
|
|
{
|
|
ribbon.SelectedRibbonTabItem.Panel.PerformLayout();
|
|
}
|
|
enumChildControls = false;
|
|
}
|
|
else if (cont is RibbonBar)
|
|
{
|
|
RibbonBar rb = cont as RibbonBar;
|
|
rb.Style = style;
|
|
cont.Invalidate();
|
|
}
|
|
else if (cont is TabControl)
|
|
{
|
|
TabControl tc = cont as TabControl;
|
|
tc.Style = GetTabControlStyle(tc.TabStrip, style);
|
|
}
|
|
else if (cont is TabStrip)
|
|
{
|
|
TabStrip ts = cont as TabStrip;
|
|
ts.Style = GetTabControlStyle(ts, style);
|
|
}
|
|
else if (cont is SideBar)
|
|
{
|
|
SideBar sb = cont as SideBar;
|
|
sb.Style = style;
|
|
sb.Invalidate();
|
|
}
|
|
else if (cont is RibbonForm)
|
|
{
|
|
cont.BackColor = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.Form.BackColor;
|
|
if (cont is OfficeForm)
|
|
((OfficeForm)cont).InvalidateNonClient(true);
|
|
}
|
|
else if (cont is DockSite && cont.Dock == DockStyle.Top)
|
|
{
|
|
// Update any floating bars through DotNetBarManager
|
|
DockSite ds = cont as DockSite;
|
|
if (ds.Owner != null)
|
|
{
|
|
foreach (Bar bar in ds.Owner.Bars)
|
|
{
|
|
if (bar.DockSide == eDockSide.None)
|
|
{
|
|
bar.Invalidate(true);
|
|
ChangeOffice2007ColorTable(bar, cs);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if (cont is Controls.ComboBoxEx)
|
|
((Controls.ComboBoxEx)cont).Style = style;
|
|
else if (cont is NavigationPane)
|
|
{
|
|
NavigationPane pane = (NavigationPane)cont;
|
|
pane.Style = style;
|
|
if (BarFunctions.IsOffice2007Style(style))
|
|
((NavigationPane)cont).Office2007ColorTableChanged();
|
|
}
|
|
else if (cont is BaseItemControl)
|
|
{
|
|
((BaseItemControl)cont).Style = style;
|
|
cont.Invalidate();
|
|
}
|
|
#if FRAMEWORK20
|
|
else if (cont is Controls.ListViewEx)
|
|
{
|
|
Controls.ListViewEx lv = cont as Controls.ListViewEx;
|
|
lv.Invalidate(true);
|
|
lv.ResetCachedColorTableReference();
|
|
}
|
|
else if (cont is Controls.DataGridViewX)
|
|
cont.Invalidate(true);
|
|
else if (cont is Controls.DGHScrollBar || cont is Controls.DGVScrollBar)
|
|
cont.Invalidate();
|
|
else if (cont is DevComponents.DotNetBar.Controls.WarningBox)
|
|
((DevComponents.DotNetBar.Controls.WarningBox)cont).UpdateColorScheme();
|
|
#endif
|
|
#if !NOTREE
|
|
else if (cont is AdvTree.AdvTree)
|
|
cont.Invalidate();
|
|
#endif
|
|
|
|
if (enumChildControls)
|
|
{
|
|
foreach (Control c in cont.Controls)
|
|
ChangeOffice2007ColorTable(c, cs);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Changes the Office 2010 color table for all DotNetBar controls on the form. You can use this function for example to
|
|
/// apply Black color scheme to all DotNetBar control on given form. The color table will be changed only for controls that
|
|
/// have Office 2007 and 2010 style. Any other style will be unchanged.
|
|
/// </summary>
|
|
/// <param name="form">Form to apply color table to.</param>
|
|
/// <param name="colorTable">Color table to select and apply.</param>
|
|
public static void ChangeOffice2010ColorTable(Control form, eOffice2010ColorScheme colorTable)
|
|
{
|
|
// Make sure we use right color table in our global renderer
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
{
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable.Dispose();
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Office2010ColorTable(colorTable);
|
|
}
|
|
else
|
|
throw new InvalidOperationException("GlobalManager.Renderer is not Office2007Renderer. Cannot change the color table. Make sure that renderer is set to Office2007Renderer");
|
|
|
|
ApplyOffice2007ColorTable(form);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Generates and Changes the Office 2010 color table for all DotNetBar controls on the form. You can use this function for example to
|
|
/// create custom color scheme based on the base color and apply it to all DotNetBar control on given form. The new color table will be applied only to controls that
|
|
/// have Office 2007 and 2010 style. Any other style will be unchanged.
|
|
/// </summary>
|
|
/// <param name="form">Form to apply color table to.</param>
|
|
/// <param name="colorTable">Base color table to use for creation of custom color table that will be applied.</param>
|
|
/// <param name="baseSchemeColor">Base color used to create custom color table.</param>
|
|
public static void ChangeOffice2010ColorTable(Control form, eOffice2010ColorScheme colorTable, Color baseSchemeColor)
|
|
{
|
|
// Make sure we use black color table in our global renderer
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
{
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable.Dispose();
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Office2010ColorTable(colorTable, baseSchemeColor);
|
|
}
|
|
else
|
|
throw new InvalidOperationException("GlobalManager.Renderer is not Office2007Renderer. Cannot change the color table. Make sure that renderer is set to Office2007Renderer");
|
|
|
|
ApplyOffice2007ColorTable(form);
|
|
}
|
|
|
|
#if FRAMEWORK20
|
|
/// <summary>
|
|
/// Generates and Changes the Office 2010 color table for all DotNetBar controls on all open forms. You can use this function for example to
|
|
/// create custom color scheme based on the base color and apply it to all DotNetBar control on given form. The new color table will be applied only to controls that
|
|
/// have Office 2007 and 2010 style. Any other style will be unchanged.
|
|
/// </summary>
|
|
/// <param name="colorTable">Base color table to use for creation of custom color table that will be applied.</param>
|
|
/// <param name="baseSchemeColor">Base color used to create custom color table.</param>
|
|
public static void ChangeOffice2010ColorTable(eOffice2010ColorScheme colorTable, Color baseSchemeColor)
|
|
{
|
|
// Make sure we use black color table in our global renderer
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
{
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable.Dispose();
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Office2010ColorTable(colorTable, baseSchemeColor);
|
|
}
|
|
else
|
|
throw new InvalidOperationException("GlobalManager.Renderer is not Office2007Renderer. Cannot change the color table. Make sure that renderer is set to Office2007Renderer");
|
|
|
|
ApplyOffice2007ColorTable();
|
|
}
|
|
#endif
|
|
#endregion
|
|
|
|
#region Windows7
|
|
/// <summary>
|
|
/// Changes the Windows 7 color table for all DotNetBar controls on the form. You can use this function for example to
|
|
/// apply Black color scheme to all DotNetBar control on given form. The color table will be changed only for controls that
|
|
/// have Windows 7, Office 2007, 2010 style. Any other style will be unchanged.
|
|
/// </summary>
|
|
/// <param name="form">Form to apply color table to.</param>
|
|
/// <param name="colorTable">Color table to select and apply.</param>
|
|
public static void ChangeWindows7ColorTable(Control form, eWindows7ColorScheme colorTable)
|
|
{
|
|
// Make sure we use right color table in our global renderer
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
{
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable.Dispose();
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Windows7ColorTable(colorTable);
|
|
}
|
|
else
|
|
throw new InvalidOperationException("GlobalManager.Renderer is not Office2007Renderer. Cannot change the color table. Make sure that renderer is set to Office2007Renderer");
|
|
|
|
ApplyOffice2007ColorTable(form);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Generates and Changes the Windows 7 color table for all DotNetBar controls on the form. You can use this function for example to
|
|
/// create custom color scheme based on the base color and apply it to all DotNetBar control on given form. The new color table will be applied only to controls that
|
|
/// have Windows 7, Office 2007 and 2010 style. Any other style will be unchanged.
|
|
/// </summary>
|
|
/// <param name="form">Form to apply color table to.</param>
|
|
/// <param name="colorTable">Base color table to use for creation of custom color table that will be applied.</param>
|
|
/// <param name="baseSchemeColor">Base color used to create custom color table.</param>
|
|
public static void ChangeWindows7ColorTable(Control form, eWindows7ColorScheme colorTable, Color baseSchemeColor)
|
|
{
|
|
// Make sure we use black color table in our global renderer
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
{
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable.Dispose();
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Windows7ColorTable(colorTable, baseSchemeColor);
|
|
}
|
|
else
|
|
throw new InvalidOperationException("GlobalManager.Renderer is not Office2007Renderer. Cannot change the color table. Make sure that renderer is set to Office2007Renderer");
|
|
|
|
ApplyOffice2007ColorTable(form);
|
|
}
|
|
|
|
#if FRAMEWORK20
|
|
/// <summary>
|
|
/// Generates and Changes the Windows 7 color table for all DotNetBar controls on all open forms. You can use this function for example to
|
|
/// create custom color scheme based on the base color and apply it to all DotNetBar control on given form. The new color table will be applied only to controls that
|
|
/// have Windows 7, Office 2007 and 2010 style. Any other style will be unchanged.
|
|
/// </summary>
|
|
/// <param name="colorTable">Base color table to use for creation of custom color table that will be applied.</param>
|
|
/// <param name="baseSchemeColor">Base color used to create custom color table.</param>
|
|
public static void ChangeWindows7ColorTable(eWindows7ColorScheme colorTable, Color baseSchemeColor)
|
|
{
|
|
// Make sure we use black color table in our global renderer
|
|
if (GlobalManager.Renderer is Office2007Renderer)
|
|
{
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable.Dispose();
|
|
((Office2007Renderer)GlobalManager.Renderer).ColorTable = new Windows7ColorTable(colorTable, baseSchemeColor);
|
|
}
|
|
else
|
|
throw new InvalidOperationException("GlobalManager.Renderer is not Office2007Renderer. Cannot change the color table. Make sure that renderer is set to Office2007Renderer");
|
|
|
|
ApplyOffice2007ColorTable();
|
|
}
|
|
#endif
|
|
#endregion
|
|
}
|
|
}
|