Merge pull request #183 from odalet/development_3.0

VS2012 Theme enhancement (in Demo project)
This commit is contained in:
Lex Li
2013-12-26 19:03:09 -08:00
6 changed files with 181 additions and 7 deletions

View File

@@ -89,6 +89,12 @@
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="VS2012ColorTable.cs" />
<Compile Include="VS2012ToolStripExtender.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="VS2012ToolStripExtender.Designer.cs">
<DependentUpon>VS2012ToolStripExtender.cs</DependentUpon>
</Compile>
<Compile Include="VS2012ToolStripRenderer.cs" />
<EmbeddedResource Include="AboutDialog.resx">
<SubType>Designer</SubType>

View File

@@ -100,9 +100,10 @@ namespace DockSample
this.toolBarButtonLayoutByXml = new System.Windows.Forms.ToolStripButton();
this.toolBarButtonDockPanelSkinDemo = new System.Windows.Forms.ToolStripButton();
this.dockPanel = new WeifenLuo.WinFormsUI.Docking.DockPanel();
this.vS2003Theme1 = new WeifenLuo.WinFormsUI.Docking.VS2003Theme();
this.vS2005Theme1 = new WeifenLuo.WinFormsUI.Docking.VS2005Theme();
this.vS2003Theme1 = new WeifenLuo.WinFormsUI.Docking.VS2003Theme();
this.vS2012LightTheme1 = new WeifenLuo.WinFormsUI.Docking.VS2012LightTheme();
this.vS2012ToolStripExtender1 = new DockSample.VS2012ToolStripExtender(this.components);
this.mainMenu.SuspendLayout();
this.toolBar.SuspendLayout();
this.SuspendLayout();
@@ -411,7 +412,7 @@ namespace DockSample
// menuItemNewWindow
//
this.menuItemNewWindow.Name = "menuItemNewWindow";
this.menuItemNewWindow.Size = new System.Drawing.Size(152, 22);
this.menuItemNewWindow.Size = new System.Drawing.Size(145, 22);
this.menuItemNewWindow.Text = "&New Window";
this.menuItemNewWindow.Click += new System.EventHandler(this.menuItemNewWindow_Click);
//
@@ -618,7 +619,11 @@ namespace DockSample
dockPanelSkin1.DockPaneStripSkin = dockPaneStripSkin1;
this.dockPanel.Skin = dockPanelSkin1;
this.dockPanel.TabIndex = 0;
this.dockPanel.Theme = this.vS2005Theme1;
//
// vS2012ToolStripExtender1
//
this.vS2012ToolStripExtender1.DefaultRenderer = null;
this.vS2012ToolStripExtender1.VS2012Renderer = null;
//
// MainForm
//
@@ -703,5 +708,6 @@ namespace DockSample
private WeifenLuo.WinFormsUI.Docking.VS2012LightTheme vS2012LightTheme1;
private WeifenLuo.WinFormsUI.Docking.VS2003Theme vS2003Theme1;
private WeifenLuo.WinFormsUI.Docking.VS2005Theme vS2005Theme1;
private VS2012ToolStripExtender vS2012ToolStripExtender1;
}
}

View File

@@ -31,6 +31,9 @@ namespace DockSample
RightToLeftLayout = showRightToLeft.Checked;
m_solutionExplorer.RightToLeftLayout = RightToLeftLayout;
m_deserializeDockContent = new DeserializeDockContent(GetContentFromPersistString);
vS2012ToolStripExtender1.DefaultRenderer = _system;
vS2012ToolStripExtender1.VS2012Renderer = _custom;
}
#region Methods
@@ -156,17 +159,17 @@ namespace DockSample
if (sender == menuItemSchemaVS2005)
{
dockPanel.Theme = vS2005Theme1;
ToolStripManager.Renderer = _system;
EnableVS2012Renderer(false);
}
else if (sender == menuItemSchemaVS2003)
{
dockPanel.Theme = vS2003Theme1;
ToolStripManager.Renderer = _system;
EnableVS2012Renderer(false);
}
else if (sender == menuItemSchemaVS2012Light)
{
dockPanel.Theme = vS2012LightTheme1;
ToolStripManager.Renderer = _custom;
EnableVS2012Renderer(true);
}
menuItemSchemaVS2005.Checked = (sender == menuItemSchemaVS2005);
@@ -174,6 +177,12 @@ namespace DockSample
menuItemSchemaVS2012Light.Checked = (sender == menuItemSchemaVS2012Light);
}
private void EnableVS2012Renderer(bool enable)
{
vS2012ToolStripExtender1.SetEnableVS2012Style(this.mainMenu, enable);
vS2012ToolStripExtender1.SetEnableVS2012Style(this.toolBar, enable);
}
private void SetDocumentStyle(object sender, System.EventArgs e)
{
DocumentStyle oldStyle = dockPanel.DocumentStyle;

View File

@@ -131,7 +131,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADY
DAAAAk1TRnQBSQFMAgEBCQEAAVQBAAFUAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
DAAAAk1TRnQBSQFMAgEBCQEAAVwBAAFcAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -216,4 +216,7 @@
<metadata name="vS2012LightTheme1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>674, 8</value>
</metadata>
<metadata name="vS2012ToolStripExtender1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>836, 8</value>
</metadata>
</root>

View File

@@ -0,0 +1,36 @@
namespace DockSample
{
partial class VS2012ToolStripExtender
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
}
#endregion
}
}

View File

@@ -0,0 +1,114 @@
using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.Collections.Generic;
namespace DockSample
{
[ProvideProperty("EnableVS2012Style", typeof(ToolStrip))]
public partial class VS2012ToolStripExtender : Component, IExtenderProvider
{
private class ToolStripProperties
{
private bool enabled = false;
private readonly ToolStrip strip;
private readonly Dictionary<ToolStripItem, string> menuText = new Dictionary<ToolStripItem, string>();
public ToolStripProperties(ToolStrip toolstrip)
{
if (toolstrip == null) throw new ArgumentNullException("toolstrip");
strip = toolstrip;
if (strip is MenuStrip)
SaveMenuStripText();
}
public bool EnableVS2012Style
{
get { return enabled; }
set
{
enabled = value;
UpdateMenuText(enabled);
}
}
private void SaveMenuStripText()
{
foreach (ToolStripItem item in strip.Items)
menuText.Add(item, item.Text);
}
public void UpdateMenuText(bool caps)
{
foreach (ToolStripItem item in menuText.Keys)
{
var text = menuText[item];
item.Text = caps ? text.ToUpper() : text;
}
}
}
private readonly Dictionary<ToolStrip, ToolStripProperties> strips = new Dictionary<ToolStrip, ToolStripProperties>();
public VS2012ToolStripExtender()
{
InitializeComponent();
}
public VS2012ToolStripExtender(IContainer container)
{
container.Add(this);
InitializeComponent();
}
#region IExtenderProvider Members
public bool CanExtend(object extendee)
{
return extendee is ToolStrip;
}
#endregion
public ToolStripRenderer DefaultRenderer { get; set; }
public ToolStripRenderer VS2012Renderer { get; set; }
[DefaultValue(false)]
public bool GetEnableVS2012Style(ToolStrip strip)
{
if (strips.ContainsKey(strip))
return strips[strip].EnableVS2012Style;
return false;
}
public void SetEnableVS2012Style(ToolStrip strip, bool enable)
{
var apply = false;
ToolStripProperties properties = null;
if (!strips.ContainsKey(strip))
{
properties = new ToolStripProperties(strip) { EnableVS2012Style = enable };
strips.Add(strip, properties);
apply = true;
}
else
{
properties = strips[strip];
apply = properties.EnableVS2012Style != enable;
}
if (apply)
{
//ToolStripManager.Renderer = enable ? VS2012Renderer : DefaultRenderer;
strip.Renderer = enable ? VS2012Renderer : DefaultRenderer;
properties.EnableVS2012Style = enable;
}
}
}
}