using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using DevComponents.DotNetBar.Rendering; using System; namespace DevComponents.DotNetBar { /// /// Represents predefined color schemes for ribbon controls. /// public class RibbonPredefinedColorSchemes { #region Office 2007 /// /// Applies default gray color scheme to background and title. /// /// Reference to object. 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(); } /// /// Applies orange color scheme to background and title. /// /// Reference to object 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(); } /// /// Apply Office 2003 color scheme to background and title. /// /// Reference to object 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; } /// /// Applies Office 2003 color scheme to ribbon control background. /// /// Reference to object. public static void ApplyOffice2003ColorScheme(RibbonControl b) { ApplyRibbonOffice2003ElementStyle(b.BackgroundStyle); b.Invalidate(true); } /// /// Applies Gray color scheme to ribbon control background. /// /// Reference to object. 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); } /// /// Applies Office 2007 color table to ribbon control background. /// /// Reference to object. 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; } /// /// Applies Office 2007 Luna blue color scheme to the Ribbon Bar. /// /// Reference to object. 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(); } /// /// 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. /// /// RibbonControl to set the style on. /// Visual style to apply. 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; //} /// /// Applies specified visual style to the RibbonBar control. /// /// RibbonBar control to set the style on. /// Visual style to apply. 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(); } /// /// Applies current color scheme and layout settings to the container which acts as top-level file menu container. /// Applies to Office 2007 style only. /// /// Container to apply style to. 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; } /// /// 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. /// /// Container to apply style to. 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; } /// /// 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. /// /// Container to apply style to. 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); } /// /// 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. /// /// Container to apply style to. 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); } /// /// 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. /// /// Container to apply style to. 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 /// /// 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. /// /// Color table to select and apply. 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(); } /// /// Applies current Office 2007 style color table set on GlobalManager.Renderer to all DotNetBar controls with Office 2007 style on all open forms. /// public static void ApplyOffice2007ColorTable() { foreach (Form f in Application.OpenForms) { ApplyOffice2007ColorTable(f); } } #endif /// /// 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. /// /// Form to apply color table to. /// Color table to select and apply. 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); } /// /// 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. /// /// Form to apply color table to. /// Base color table to use for creation of custom color table that will be applied. /// Base color used to create custom color table. 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 /// /// 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. /// /// Base color table to use for creation of custom color table that will be applied. /// Base color used to create custom color table. 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 /// /// Applies current Office 2007 style color table to all DotNetBar controls on the form. /// /// Reference to the form or parent control that contains DotNetBar controls you would like to apply color table to. 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 /// /// 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. /// /// New style to assign to controls on forms. public static void ChangeStyle(eDotNetBarStyle newStyle) { foreach (Form form in Application.OpenForms) { ChangeStyle(newStyle, form); } } /// /// 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. /// /// New style to assign to controls on forms. /// Color used to blend with the base color scheme. public static void ChangeStyle(eDotNetBarStyle newStyle, Color blendColor) { foreach (Form form in Application.OpenForms) { ChangeStyle(newStyle, form, false, blendColor); } } #endif /// /// 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. /// /// New style to assign to controls. /// Form or Control to process. public static void ChangeStyle(eDotNetBarStyle newStyle, Control parentForm) { ChangeStyle(newStyle, parentForm, false, Color.Empty); } /// /// 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. /// /// New style to assign to controls. /// Form or Control to process. /// Color used to blend with the base color scheme. 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); } } /// /// 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. /// /// Form to apply color table to. /// Color table to select and apply. 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); } /// /// 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. /// /// Form to apply color table to. /// Base color table to use for creation of custom color table that will be applied. /// Base color used to create custom color table. 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 /// /// 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. /// /// Base color table to use for creation of custom color table that will be applied. /// Base color used to create custom color table. 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 /// /// 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. /// /// Form to apply color table to. /// Color table to select and apply. 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); } /// /// 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. /// /// Form to apply color table to. /// Base color table to use for creation of custom color table that will be applied. /// Base color used to create custom color table. 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 /// /// 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. /// /// Base color table to use for creation of custom color table that will be applied. /// Base color used to create custom color table. 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 } }