diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index 95be07a3..f3d486d1 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -7,6 +7,8 @@
+
+
diff --git a/src/LogExpert.sln b/src/LogExpert.sln
index c5d5aa5a..d04ea3de 100644
--- a/src/LogExpert.sln
+++ b/src/LogExpert.sln
@@ -21,8 +21,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GlassfishColumnizer", "Glas
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FlashIconHighlighter", "FlashIconHighlighter\FlashIconHighlighter.csproj", "{F5E81EBE-3E6F-409F-B510-918E97F59072}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinFormsUI", "WinFormsUI\WinFormsUI.csproj", "{C75532C4-765B-418E-B09B-46D36B2ABDB1}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DE6375A4-B4C4-4620-8FFB-B9D5A4E21144}"
ProjectSection(SolutionItems) = preProject
Solution Items\AssemblyVersion.cs = Solution Items\AssemblyVersion.cs
@@ -93,10 +91,6 @@ Global
{F5E81EBE-3E6F-409F-B510-918E97F59072}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F5E81EBE-3E6F-409F-B510-918E97F59072}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F5E81EBE-3E6F-409F-B510-918E97F59072}.Release|Any CPU.Build.0 = Release|Any CPU
- {C75532C4-765B-418E-B09B-46D36B2ABDB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C75532C4-765B-418E-B09B-46D36B2ABDB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C75532C4-765B-418E-B09B-46D36B2ABDB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C75532C4-765B-418E-B09B-46D36B2ABDB1}.Release|Any CPU.Build.0 = Release|Any CPU
{4C899885-E361-410A-B6AC-C2F236C436FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4C899885-E361-410A-B6AC-C2F236C436FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4C899885-E361-410A-B6AC-C2F236C436FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/src/LogExpert/Controls/LogTabWindow/LogTabWindow.cs b/src/LogExpert/Controls/LogTabWindow/LogTabWindow.cs
index fdac7b84..843d99fe 100644
--- a/src/LogExpert/Controls/LogTabWindow/LogTabWindow.cs
+++ b/src/LogExpert/Controls/LogTabWindow/LogTabWindow.cs
@@ -237,24 +237,24 @@ public void ChangeTheme(Control.ControlCollection container)
}
// Tabs line
- dockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.DockStripGradient.StartColor = ColorMode.TabsBackgroundStripColor;
- dockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.DockStripGradient.EndColor = ColorMode.TabsBackgroundStripColor;
-
- dockPanel.Skin.DockPaneStripSkin.DocumentGradient.DockStripGradient.StartColor = ColorMode.TabsBackgroundStripColor;
- dockPanel.Skin.DockPaneStripSkin.DocumentGradient.DockStripGradient.EndColor = ColorMode.TabsBackgroundStripColor;
+ dockPanel.Theme.Skin.DockPaneStripSkin.ToolWindowGradient.DockStripGradient.StartColor = ColorMode.TabsBackgroundStripColor;
+ dockPanel.Theme.Skin.DockPaneStripSkin.ToolWindowGradient.DockStripGradient.EndColor = ColorMode.TabsBackgroundStripColor;
+
+ dockPanel.Theme.Skin.DockPaneStripSkin.DocumentGradient.DockStripGradient.StartColor = ColorMode.TabsBackgroundStripColor;
+ dockPanel.Theme.Skin.DockPaneStripSkin.DocumentGradient.DockStripGradient.EndColor = ColorMode.TabsBackgroundStripColor;
// Tabs
- dockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveTabGradient.StartColor = ColorMode.ActiveTabColor;
- dockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveTabGradient.EndColor = ColorMode.ActiveTabColor;
- dockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveTabGradient.TextColor = ColorMode.ForeColor;
-
- dockPanel.Skin.DockPaneStripSkin.DocumentGradient.ActiveTabGradient.StartColor = ColorMode.ActiveTabColor;
- dockPanel.Skin.DockPaneStripSkin.DocumentGradient.ActiveTabGradient.EndColor = ColorMode.ActiveTabColor;
- dockPanel.Skin.DockPaneStripSkin.DocumentGradient.ActiveTabGradient.TextColor = ColorMode.ForeColor;
-
- dockPanel.Skin.DockPaneStripSkin.DocumentGradient.InactiveTabGradient.StartColor = ColorMode.InactiveTabColor;
- dockPanel.Skin.DockPaneStripSkin.DocumentGradient.InactiveTabGradient.EndColor = ColorMode.InactiveTabColor;
- dockPanel.Skin.DockPaneStripSkin.DocumentGradient.InactiveTabGradient.TextColor = ColorMode.ForeColor;
+ dockPanel.Theme.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveTabGradient.StartColor = ColorMode.ActiveTabColor;
+ dockPanel.Theme.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveTabGradient.EndColor = ColorMode.ActiveTabColor;
+ dockPanel.Theme.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveTabGradient.TextColor = ColorMode.ForeColor;
+
+ dockPanel.Theme.Skin.DockPaneStripSkin.DocumentGradient.ActiveTabGradient.StartColor = ColorMode.ActiveTabColor;
+ dockPanel.Theme.Skin.DockPaneStripSkin.DocumentGradient.ActiveTabGradient.EndColor = ColorMode.ActiveTabColor;
+ dockPanel.Theme.Skin.DockPaneStripSkin.DocumentGradient.ActiveTabGradient.TextColor = ColorMode.ForeColor;
+
+ dockPanel.Theme.Skin.DockPaneStripSkin.DocumentGradient.InactiveTabGradient.StartColor = ColorMode.InactiveTabColor;
+ dockPanel.Theme.Skin.DockPaneStripSkin.DocumentGradient.InactiveTabGradient.EndColor = ColorMode.InactiveTabColor;
+ dockPanel.Theme.Skin.DockPaneStripSkin.DocumentGradient.InactiveTabGradient.TextColor = ColorMode.ForeColor;
#endregion Tabs
}
#endregion
diff --git a/src/LogExpert/Controls/LogTabWindow/LogTabWindow.designer.cs b/src/LogExpert/Controls/LogTabWindow/LogTabWindow.designer.cs
index 45393abd..be27ac3e 100644
--- a/src/LogExpert/Controls/LogTabWindow/LogTabWindow.designer.cs
+++ b/src/LogExpert/Controls/LogTabWindow/LogTabWindow.designer.cs
@@ -36,7 +36,6 @@ protected override void Dispose(bool disposing)
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
- DockPanelSkin dockPanelSkin1 = new DockPanelSkin();
AutoHideStripSkin autoHideStripSkin1 = new AutoHideStripSkin();
DockPanelGradient dockPanelGradient1 = new DockPanelGradient();
TabGradient tabGradient1 = new TabGradient();
@@ -849,7 +848,6 @@ private void InitializeComponent()
tabGradient1.TextColor = System.Drawing.SystemColors.ControlText;
autoHideStripSkin1.TabGradient = tabGradient1;
autoHideStripSkin1.TextFont = new System.Drawing.Font("Segoe UI", 9F);
- dockPanelSkin1.AutoHideStripSkin = autoHideStripSkin1;
tabGradient2.EndColor = System.Drawing.SystemColors.Control;
tabGradient2.StartColor = System.Drawing.SystemColors.Control;
tabGradient2.TextColor = System.Drawing.SystemColors.ControlText;
@@ -885,8 +883,9 @@ private void InitializeComponent()
tabGradient7.TextColor = System.Drawing.SystemColors.Control;
dockPaneStripToolWindowGradient1.InactiveTabGradient = tabGradient7;
dockPaneStripSkin1.ToolWindowGradient = dockPaneStripToolWindowGradient1;
- dockPanelSkin1.DockPaneStripSkin = dockPaneStripSkin1;
- dockPanel.Skin = dockPanelSkin1;
+ dockPanel.Theme = new VS2015LightTheme();
+ dockPanel.Theme.Skin.DockPaneStripSkin = dockPaneStripSkin1;
+ dockPanel.Theme.Skin.AutoHideStripSkin = autoHideStripSkin1;
dockPanel.TabIndex = 14;
dockPanel.ActiveContentChanged += OnDockPanelActiveContentChanged;
//
diff --git a/src/LogExpert/Controls/LogWindow/LogWindowsPublic.cs b/src/LogExpert/Controls/LogWindow/LogWindowsPublic.cs
index 8f8ef767..d1298c77 100644
--- a/src/LogExpert/Controls/LogWindow/LogWindowsPublic.cs
+++ b/src/LogExpert/Controls/LogWindow/LogWindowsPublic.cs
@@ -8,7 +8,6 @@
using LogExpert.Config;
using LogExpert.Entities;
using LogExpert.Entities.EventArgs;
-
using System;
using System.Collections.Generic;
using System.Drawing;
@@ -16,7 +15,6 @@
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
-//using System.Linq;
namespace LogExpert.Controls.LogWindow
{
diff --git a/src/LogExpert/LogExpert.csproj b/src/LogExpert/LogExpert.csproj
index c4be38e4..8c9d0e78 100644
--- a/src/LogExpert/LogExpert.csproj
+++ b/src/LogExpert/LogExpert.csproj
@@ -76,6 +76,8 @@
+
+
@@ -87,7 +89,6 @@
-
diff --git a/src/WinFormsUI/Docking/AutoHideStripBase.cs b/src/WinFormsUI/Docking/AutoHideStripBase.cs
deleted file mode 100644
index abcfa941..00000000
--- a/src/WinFormsUI/Docking/AutoHideStripBase.cs
+++ /dev/null
@@ -1,684 +0,0 @@
-using System;
-using System.Collections;
-using System.Windows.Forms;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public abstract partial class AutoHideStripBase : Control
- {
- #region Fields
-
- private GraphicsPath m_displayingArea = null;
-
- #endregion
-
- #region cTor
-
- protected AutoHideStripBase(DockPanel panel)
- {
- DockPanel = panel;
- PanesTop = new PaneCollection(panel, DockState.DockTopAutoHide);
- PanesBottom = new PaneCollection(panel, DockState.DockBottomAutoHide);
- PanesLeft = new PaneCollection(panel, DockState.DockLeftAutoHide);
- PanesRight = new PaneCollection(panel, DockState.DockRightAutoHide);
-
- SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
- SetStyle(ControlStyles.Selectable, false);
- }
-
- #endregion
-
- #region Properties
-
- protected DockPanel DockPanel { get; }
-
- protected PaneCollection PanesTop { get; }
-
- protected PaneCollection PanesBottom { get; }
-
- protected PaneCollection PanesLeft { get; }
-
- protected PaneCollection PanesRight { get; }
-
- protected Rectangle RectangleTopLeft
- {
- get
- {
- int height = MeasureHeight();
- return PanesTop.Count > 0 && PanesLeft.Count > 0
- ? new Rectangle(0, 0, height, height)
- : Rectangle.Empty;
- }
- }
-
- protected Rectangle RectangleTopRight
- {
- get
- {
- int height = MeasureHeight();
- return PanesTop.Count > 0 && PanesRight.Count > 0
- ? new Rectangle(Width - height, 0, height, height)
- : Rectangle.Empty;
- }
- }
-
- protected Rectangle RectangleBottomLeft
- {
- get
- {
- int height = MeasureHeight();
- return PanesBottom.Count > 0 && PanesLeft.Count > 0
- ? new Rectangle(0, Height - height, height, height)
- : Rectangle.Empty;
- }
- }
-
- protected Rectangle RectangleBottomRight
- {
- get
- {
- int height = MeasureHeight();
- return PanesBottom.Count > 0 && PanesRight.Count > 0
- ? new Rectangle(Width - height, Height - height, height, height)
- : Rectangle.Empty;
- }
- }
-
- private GraphicsPath DisplayingArea
- {
- get
- {
- if (m_displayingArea == null)
- {
- m_displayingArea = new GraphicsPath();
- }
-
- return m_displayingArea;
- }
- }
-
- #endregion
-
- #region Internals
-
- internal int GetNumberOfPanes(DockState dockState)
- {
- return GetPanes(dockState).Count;
- }
-
- internal void RefreshChanges()
- {
- if (IsDisposed)
- {
- return;
- }
-
- SetRegion();
- OnRefreshChanges();
- }
-
- #endregion
-
- #region Overrides
-
- protected override void OnMouseDown(MouseEventArgs e)
- {
- base.OnMouseDown(e);
-
- if (e.Button != MouseButtons.Left)
- {
- return;
- }
-
- IDockContent content = HitTest();
- if (content == null)
- {
- return;
- }
-
- content.DockHandler.Activate();
- }
-
- protected override void OnMouseHover(EventArgs e)
- {
- base.OnMouseHover(e);
-
- IDockContent content = HitTest();
- if (content != null && DockPanel.ActiveAutoHideContent != content)
- {
- DockPanel.ActiveAutoHideContent = content;
- }
-
- // requires further tracking of mouse hover behavior,
- ResetMouseEventArgs();
- }
-
- protected override void OnLayout(LayoutEventArgs levent)
- {
- RefreshChanges();
- base.OnLayout(levent);
- }
-
- #endregion
-
- #region Private Methods
-
- private void SetRegion()
- {
- DisplayingArea.Reset();
- DisplayingArea.AddRectangle(RectangleTopLeft);
- DisplayingArea.AddRectangle(RectangleTopRight);
- DisplayingArea.AddRectangle(RectangleBottomLeft);
- DisplayingArea.AddRectangle(RectangleBottomRight);
- DisplayingArea.AddRectangle(GetTabStripRectangle(DockState.DockTopAutoHide));
- DisplayingArea.AddRectangle(GetTabStripRectangle(DockState.DockBottomAutoHide));
- DisplayingArea.AddRectangle(GetTabStripRectangle(DockState.DockLeftAutoHide));
- DisplayingArea.AddRectangle(GetTabStripRectangle(DockState.DockRightAutoHide));
- Region = new Region(DisplayingArea);
- }
-
- private IDockContent HitTest()
- {
- Point ptMouse = PointToClient(Control.MousePosition);
- return HitTest(ptMouse);
- }
-
- #endregion
-
- protected PaneCollection GetPanes(DockState dockState)
- {
- if (dockState == DockState.DockTopAutoHide)
- {
- return PanesTop;
- }
- else if (dockState == DockState.DockBottomAutoHide)
- {
- return PanesBottom;
- }
- else if (dockState == DockState.DockLeftAutoHide)
- {
- return PanesLeft;
- }
- else if (dockState == DockState.DockRightAutoHide)
- {
- return PanesRight;
- }
- else
- {
- throw new ArgumentOutOfRangeException("dockState");
- }
- }
-
- protected internal Rectangle GetTabStripRectangle(DockState dockState)
- {
- int height = MeasureHeight();
- if (dockState == DockState.DockTopAutoHide && PanesTop.Count > 0)
- {
- return new Rectangle(RectangleTopLeft.Width, 0,
- Width - RectangleTopLeft.Width - RectangleTopRight.Width, height);
- }
- else if (dockState == DockState.DockBottomAutoHide && PanesBottom.Count > 0)
- {
- return new Rectangle(RectangleBottomLeft.Width, Height - height,
- Width - RectangleBottomLeft.Width - RectangleBottomRight.Width, height);
- }
- else if (dockState == DockState.DockLeftAutoHide && PanesLeft.Count > 0)
- {
- return new Rectangle(0, RectangleTopLeft.Width, height,
- Height - RectangleTopLeft.Height - RectangleBottomLeft.Height);
- }
- else if (dockState == DockState.DockRightAutoHide && PanesRight.Count > 0)
- {
- return new Rectangle(Width - height, RectangleTopRight.Width, height,
- Height - RectangleTopRight.Height - RectangleBottomRight.Height);
- }
- else
- {
- return Rectangle.Empty;
- }
- }
-
- protected virtual void OnRefreshChanges()
- {
- }
-
- protected internal abstract int MeasureHeight();
-
- protected virtual Tab CreateTab(IDockContent content)
- {
- return new Tab(content);
- }
-
- protected virtual Pane CreatePane(DockPane dockPane)
- {
- return new Pane(dockPane);
- }
-
- protected abstract IDockContent HitTest(Point point);
-
- [SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
- protected class Tab : IDisposable
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- protected internal Tab(IDockContent content)
- {
- Content = content;
- }
-
- #endregion
-
- #region Properties
-
- public IDockContent Content { get; }
-
- #endregion
-
- #region Public methods
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- #endregion
-
- ~Tab()
- {
- Dispose(false);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- }
- }
-
- [SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
- protected sealed class TabCollection : IEnumerable
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- internal TabCollection(DockPane pane)
- {
- DockPane = pane;
- }
-
- #endregion
-
- #region Properties
-
- public DockPane DockPane { get; } = null;
-
- public DockPanel DockPanel
- {
- get { return DockPane.DockPanel; }
- }
-
- public int Count
- {
- get { return DockPane.DisplayingContents.Count; }
- }
-
- public Tab this[int index]
- {
- get
- {
- IDockContent content = DockPane.DisplayingContents[index];
- if (content == null)
- {
- throw new ArgumentOutOfRangeException("index");
- }
- if (content.DockHandler.AutoHideTab == null)
- {
- content.DockHandler.AutoHideTab = DockPanel.AutoHideStripControl.CreateTab(content);
- }
- return content.DockHandler.AutoHideTab as Tab;
- }
- }
-
- #endregion
-
- #region Public methods
-
- public bool Contains(Tab tab)
- {
- return IndexOf(tab) != -1;
- }
-
- public bool Contains(IDockContent content)
- {
- return IndexOf(content) != -1;
- }
-
- public int IndexOf(Tab tab)
- {
- if (tab == null)
- {
- return -1;
- }
-
- return IndexOf(tab.Content);
- }
-
- public int IndexOf(IDockContent content)
- {
- return DockPane.DisplayingContents.IndexOf(content);
- }
-
- #endregion
-
- #region IEnumerable Members
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- for (int i = 0; i < Count; i++)
- {
- yield return this[i];
- }
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- for (int i = 0; i < Count; i++)
- {
- yield return this[i];
- }
- }
-
- #endregion
- }
-
- [SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
- protected class Pane : IDisposable
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- protected internal Pane(DockPane dockPane)
- {
- DockPane = dockPane;
- }
-
- #endregion
-
- #region Properties
-
- public DockPane DockPane { get; }
-
- public TabCollection AutoHideTabs
- {
- get
- {
- if (DockPane.AutoHideTabs == null)
- {
- DockPane.AutoHideTabs = new TabCollection(DockPane);
- }
- return DockPane.AutoHideTabs as TabCollection;
- }
- }
-
- #endregion
-
- #region Public methods
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- #endregion
-
- ~Pane()
- {
- Dispose(false);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- }
- }
-
- [SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
- protected sealed class PaneCollection : IEnumerable
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- internal PaneCollection(DockPanel panel, DockState dockState)
- {
- DockPanel = panel;
- States = new AutoHideStateCollection();
- States[DockState.DockTopAutoHide].Selected = dockState == DockState.DockTopAutoHide;
- States[DockState.DockBottomAutoHide].Selected = dockState == DockState.DockBottomAutoHide;
- States[DockState.DockLeftAutoHide].Selected = dockState == DockState.DockLeftAutoHide;
- States[DockState.DockRightAutoHide].Selected = dockState == DockState.DockRightAutoHide;
- }
-
- #endregion
-
- #region Properties
-
- public DockPanel DockPanel { get; }
-
- private AutoHideStateCollection States { get; }
-
- public int Count
- {
- get
- {
- int count = 0;
- foreach (DockPane pane in DockPanel.Panes)
- {
- if (States.ContainsPane(pane))
- {
- count++;
- }
- }
-
- return count;
- }
- }
-
- public Pane this[int index]
- {
- get
- {
- int count = 0;
- foreach (DockPane pane in DockPanel.Panes)
- {
- if (!States.ContainsPane(pane))
- {
- continue;
- }
-
- if (count == index)
- {
- if (pane.AutoHidePane == null)
- {
- pane.AutoHidePane = DockPanel.AutoHideStripControl.CreatePane(pane);
- }
- return pane.AutoHidePane as Pane;
- }
-
- count++;
- }
- throw new ArgumentOutOfRangeException("index");
- }
- }
-
- #endregion
-
- #region Public methods
-
- public bool Contains(Pane pane)
- {
- return IndexOf(pane) != -1;
- }
-
- public int IndexOf(Pane pane)
- {
- if (pane == null)
- {
- return -1;
- }
-
- int index = 0;
- foreach (DockPane dockPane in DockPanel.Panes)
- {
- if (!States.ContainsPane(pane.DockPane))
- {
- continue;
- }
-
- if (pane == dockPane.AutoHidePane)
- {
- return index;
- }
-
- index++;
- }
- return -1;
- }
-
- #endregion
-
- private class AutoHideState
- {
- #region Fields
-
- public readonly DockState m_dockState;
- public bool m_selected = false;
-
- #endregion
-
- #region cTor
-
- public AutoHideState(DockState dockState)
- {
- m_dockState = dockState;
- }
-
- #endregion
-
- #region Properties
-
- public DockState DockState
- {
- get { return m_dockState; }
- }
-
- public bool Selected
- {
- get { return m_selected; }
- set { m_selected = value; }
- }
-
- #endregion
- }
-
- private class AutoHideStateCollection
- {
- #region Fields
-
- private readonly AutoHideState[] m_states;
-
- #endregion
-
- #region cTor
-
- public AutoHideStateCollection()
- {
- m_states = new AutoHideState[]
- {
- new AutoHideState(DockState.DockTopAutoHide),
- new AutoHideState(DockState.DockBottomAutoHide),
- new AutoHideState(DockState.DockLeftAutoHide),
- new AutoHideState(DockState.DockRightAutoHide)
- };
- }
-
- #endregion
-
- #region Properties
-
- public AutoHideState this[DockState dockState]
- {
- get
- {
- for (int i = 0; i < m_states.Length; i++)
- {
- if (m_states[i].DockState == dockState)
- {
- return m_states[i];
- }
- }
- throw new ArgumentOutOfRangeException("dockState");
- }
- }
-
- #endregion
-
- #region Public methods
-
- public bool ContainsPane(DockPane pane)
- {
- if (pane.IsHidden)
- {
- return false;
- }
-
- for (int i = 0; i < m_states.Length; i++)
- {
- if (m_states[i].DockState == pane.DockState && m_states[i].Selected)
- {
- return true;
- }
- }
- return false;
- }
-
- #endregion
- }
-
- #region IEnumerable Members
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- for (int i = 0; i < Count; i++)
- {
- yield return this[i];
- }
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- for (int i = 0; i < Count; i++)
- {
- yield return this[i];
- }
- }
-
- #endregion
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockAreasEditor.cs b/src/WinFormsUI/Docking/DockAreasEditor.cs
deleted file mode 100644
index dffde868..00000000
--- a/src/WinFormsUI/Docking/DockAreasEditor.cs
+++ /dev/null
@@ -1,201 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.Drawing.Design;
-using System.Windows.Forms;
-using System.Windows.Forms.Design;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal class DockAreasEditor : UITypeEditor
- {
- #region Fields
-
- private DockAreasEditor.DockAreasEditorControl m_ui = null;
-
- #endregion
-
- #region Public methods
-
- public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
- {
- return UITypeEditorEditStyle.DropDown;
- }
-
- public override object EditValue(ITypeDescriptorContext context, IServiceProvider sp, object value)
- {
- if (m_ui == null)
- {
- m_ui = new DockAreasEditor.DockAreasEditorControl();
- }
-
- m_ui.SetStates((DockAreas) value);
-
- IWindowsFormsEditorService edSvc =
- (IWindowsFormsEditorService) sp.GetService(typeof(IWindowsFormsEditorService));
- edSvc.DropDownControl(m_ui);
-
- return m_ui.DockAreas;
- }
-
- #endregion
-
- private class DockAreasEditorControl : System.Windows.Forms.UserControl
- {
- #region Fields
-
- private readonly CheckBox checkBoxDockBottom;
- private readonly CheckBox checkBoxDockFill;
- private readonly CheckBox checkBoxDockLeft;
- private readonly CheckBox checkBoxDockRight;
- private readonly CheckBox checkBoxDockTop;
- private readonly CheckBox checkBoxFloat;
- private DockAreas m_oldDockAreas;
-
- #endregion
-
- #region cTor
-
- public DockAreasEditorControl()
- {
- checkBoxFloat = new CheckBox();
- checkBoxDockLeft = new CheckBox();
- checkBoxDockRight = new CheckBox();
- checkBoxDockTop = new CheckBox();
- checkBoxDockBottom = new CheckBox();
- checkBoxDockFill = new CheckBox();
-
- SuspendLayout();
-
- checkBoxFloat.Appearance = Appearance.Button;
- checkBoxFloat.Dock = DockStyle.Top;
- checkBoxFloat.Height = 24;
- checkBoxFloat.Text = Strings.DockAreaEditor_FloatCheckBoxText;
- checkBoxFloat.TextAlign = ContentAlignment.MiddleCenter;
- checkBoxFloat.FlatStyle = FlatStyle.System;
-
- checkBoxDockLeft.Appearance = System.Windows.Forms.Appearance.Button;
- checkBoxDockLeft.Dock = System.Windows.Forms.DockStyle.Left;
- checkBoxDockLeft.Width = 24;
- checkBoxDockLeft.FlatStyle = FlatStyle.System;
-
- checkBoxDockRight.Appearance = System.Windows.Forms.Appearance.Button;
- checkBoxDockRight.Dock = System.Windows.Forms.DockStyle.Right;
- checkBoxDockRight.Width = 24;
- checkBoxDockRight.FlatStyle = FlatStyle.System;
-
- checkBoxDockTop.Appearance = System.Windows.Forms.Appearance.Button;
- checkBoxDockTop.Dock = System.Windows.Forms.DockStyle.Top;
- checkBoxDockTop.Height = 24;
- checkBoxDockTop.FlatStyle = FlatStyle.System;
-
- checkBoxDockBottom.Appearance = System.Windows.Forms.Appearance.Button;
- checkBoxDockBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
- checkBoxDockBottom.Height = 24;
- checkBoxDockBottom.FlatStyle = FlatStyle.System;
-
- checkBoxDockFill.Appearance = System.Windows.Forms.Appearance.Button;
- checkBoxDockFill.Dock = System.Windows.Forms.DockStyle.Fill;
- checkBoxDockFill.FlatStyle = FlatStyle.System;
-
- this.Controls.AddRange(new Control[]
- {
- checkBoxDockFill,
- checkBoxDockBottom,
- checkBoxDockTop,
- checkBoxDockRight,
- checkBoxDockLeft,
- checkBoxFloat
- });
-
- Size = new System.Drawing.Size(160, 144);
- BackColor = SystemColors.Control;
- ResumeLayout();
- }
-
- #endregion
-
- #region Properties
-
- public DockAreas DockAreas
- {
- get
- {
- DockAreas dockAreas = 0;
- if (checkBoxFloat.Checked)
- {
- dockAreas |= DockAreas.Float;
- }
- if (checkBoxDockLeft.Checked)
- {
- dockAreas |= DockAreas.DockLeft;
- }
- if (checkBoxDockRight.Checked)
- {
- dockAreas |= DockAreas.DockRight;
- }
- if (checkBoxDockTop.Checked)
- {
- dockAreas |= DockAreas.DockTop;
- }
- if (checkBoxDockBottom.Checked)
- {
- dockAreas |= DockAreas.DockBottom;
- }
- if (checkBoxDockFill.Checked)
- {
- dockAreas |= DockAreas.Document;
- }
-
- if (dockAreas == 0)
- {
- return m_oldDockAreas;
- }
- else
- {
- return dockAreas;
- }
- }
- }
-
- #endregion
-
- #region Public methods
-
- public void SetStates(DockAreas dockAreas)
- {
- m_oldDockAreas = dockAreas;
- if ((dockAreas & DockAreas.DockLeft) != 0)
- {
- checkBoxDockLeft.Checked = true;
- }
- if ((dockAreas & DockAreas.DockRight) != 0)
- {
- checkBoxDockRight.Checked = true;
- }
- if ((dockAreas & DockAreas.DockTop) != 0)
- {
- checkBoxDockTop.Checked = true;
- }
- if ((dockAreas & DockAreas.DockTop) != 0)
- {
- checkBoxDockTop.Checked = true;
- }
- if ((dockAreas & DockAreas.DockBottom) != 0)
- {
- checkBoxDockBottom.Checked = true;
- }
- if ((dockAreas & DockAreas.Document) != 0)
- {
- checkBoxDockFill.Checked = true;
- }
- if ((dockAreas & DockAreas.Float) != 0)
- {
- checkBoxFloat.Checked = true;
- }
- }
-
- #endregion
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockContent.cs b/src/WinFormsUI/Docking/DockContent.cs
deleted file mode 100644
index 76bad264..00000000
--- a/src/WinFormsUI/Docking/DockContent.cs
+++ /dev/null
@@ -1,328 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.Windows.Forms;
-using System.Diagnostics.CodeAnalysis;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public class DockContent : Form, IDockContent
- {
- #region Fields
-
- private static readonly object DockStateChangedEvent = new object();
-
- [Localizable(true)] [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockContent_TabText_Description")] [DefaultValue(null)] private string m_tabText = null;
-
- #endregion
-
- #region cTor
-
- public DockContent()
- {
- DockHandler = new DockContentHandler(this, GetPersistString);
- DockHandler.DockStateChanged += DockHandler_DockStateChanged;
- //Suggested as a fix by bensty regarding form resize
- ParentChanged += DockContent_ParentChanged;
- }
-
- #endregion
-
- #region Events
-
- [LocalizedCategory("Category_PropertyChanged")]
- [LocalizedDescription("Pane_DockStateChanged_Description")]
- public event EventHandler DockStateChanged
- {
-
- add => Events.AddHandler(DockStateChangedEvent, value);
- remove => Events.RemoveHandler(DockStateChangedEvent, value);
- }
-
- #endregion
-
- #region Properties
-
- [Browsable(false)]
- public DockContentHandler DockHandler { get; } = null;
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockContent_AllowEndUserDocking_Description")]
- [DefaultValue(true)]
- public bool AllowEndUserDocking
- {
- get => DockHandler.AllowEndUserDocking;
- set => DockHandler.AllowEndUserDocking = value;
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockContent_DockAreas_Description")]
- [DefaultValue(DockAreas.DockLeft | DockAreas.DockRight | DockAreas.DockTop | DockAreas.DockBottom |
- DockAreas.Document | DockAreas.Float)]
- public DockAreas DockAreas
- {
- get => DockHandler.DockAreas;
- set => DockHandler.DockAreas = value;
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockContent_AutoHidePortion_Description")]
- [DefaultValue(0.25)]
- public double AutoHidePortion
- {
- get => DockHandler.AutoHidePortion;
- set => DockHandler.AutoHidePortion = value;
- }
-
- public string TabText
- {
- get => m_tabText;
- set => DockHandler.TabText = m_tabText = value;
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockContent_CloseButton_Description")]
- [DefaultValue(true)]
- public bool CloseButton
- {
- get => DockHandler.CloseButton;
- set => DockHandler.CloseButton = value;
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockContent_CloseButtonVisible_Description")]
- [DefaultValue(true)]
- public bool CloseButtonVisible
- {
- get => DockHandler.CloseButtonVisible;
- set => DockHandler.CloseButtonVisible = value;
- }
-
- [Browsable(false)]
- public DockPanel DockPanel
- {
- get => DockHandler.DockPanel;
- set => DockHandler.DockPanel = value;
- }
-
- [Browsable(false)]
- public DockState DockState
- {
- get => DockHandler.DockState;
- set => DockHandler.DockState = value;
- }
-
- [Browsable(false)]
- public DockPane Pane
- {
- get => DockHandler.Pane;
- set => DockHandler.Pane = value;
- }
-
- [Browsable(false)]
- public bool IsHidden
- {
- get => DockHandler.IsHidden;
- set => DockHandler.IsHidden = value;
- }
-
- [Browsable(false)]
- public DockState VisibleState
- {
- get => DockHandler.VisibleState;
- set => DockHandler.VisibleState = value;
- }
-
- [Browsable(false)]
- public bool IsFloat
- {
- get => DockHandler.IsFloat;
- set => DockHandler.IsFloat = value;
- }
-
- [Browsable(false)]
- public DockPane PanelPane
- {
- get => DockHandler.PanelPane;
- set => DockHandler.PanelPane = value;
- }
-
- [Browsable(false)]
- public DockPane FloatPane
- {
- get => DockHandler.FloatPane;
- set => DockHandler.FloatPane = value;
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockContent_HideOnClose_Description")]
- [DefaultValue(false)]
- public bool HideOnClose
- {
- get => DockHandler.HideOnClose;
- set => DockHandler.HideOnClose = value;
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockContent_ShowHint_Description")]
- [DefaultValue(DockState.Unknown)]
- public DockState ShowHint
- {
- get => DockHandler.ShowHint;
- set => DockHandler.ShowHint = value;
- }
-
- [Browsable(false)]
- public bool IsActivated => DockHandler.IsActivated;
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockContent_TabPageContextMenu_Description")]
- [DefaultValue(null)]
- public ContextMenuStrip TabPageContextMenu
- {
- get => DockHandler.TabPageContextMenu;
- set => DockHandler.TabPageContextMenu = value;
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockContent_TabPageContextMenuStrip_Description")]
- [DefaultValue(null)]
- public ContextMenuStrip TabPageContextMenuStrip
- {
- get => DockHandler.TabPageContextMenuStrip;
- set => DockHandler.TabPageContextMenuStrip = value;
- }
-
- [Localizable(true)]
- [Category("Appearance")]
- [LocalizedDescription("DockContent_ToolTipText_Description")]
- [DefaultValue(null)]
- public string ToolTipText
- {
- get => DockHandler.ToolTipText;
- set => DockHandler.ToolTipText = value;
- }
-
- #endregion
-
- #region Public methods
-
- public bool IsDockStateValid(DockState dockState)
- {
- return DockHandler.IsDockStateValid(dockState);
- }
-
- public new void Activate()
- {
- DockHandler.Activate();
- }
-
- public new void Hide()
- {
- DockHandler.Hide();
- }
-
- public new void Show()
- {
- DockHandler.Show();
- }
-
- public void Show(DockPanel dockPanel)
- {
- DockHandler.Show(dockPanel);
- }
-
- public void Show(DockPanel dockPanel, DockState dockState)
- {
- DockHandler.Show(dockPanel, dockState);
- }
-
- [SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters")]
- public void Show(DockPanel dockPanel, Rectangle floatWindowBounds)
- {
- DockHandler.Show(dockPanel, floatWindowBounds);
- }
-
- public void Show(DockPane pane, IDockContent beforeContent)
- {
- DockHandler.Show(pane, beforeContent);
- }
-
- public void Show(DockPane previousPane, DockAlignment alignment, double proportion)
- {
- DockHandler.Show(previousPane, alignment, proportion);
- }
-
- [SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters")]
- public void FloatAt(Rectangle floatWindowBounds)
- {
- DockHandler.FloatAt(floatWindowBounds);
- }
-
- public void DockTo(DockPane paneTo, DockStyle dockStyle, int contentIndex)
- {
- DockHandler.DockTo(paneTo, dockStyle, contentIndex);
- }
-
- public void DockTo(DockPanel panel, DockStyle dockStyle)
- {
- DockHandler.DockTo(panel, dockStyle);
- }
-
- #endregion
-
- #region Private Methods
-
- private bool ShouldSerializeTabText()
- {
- return m_tabText != null;
- }
-
- #endregion
-
- #region Events handler
-
- //Suggested as a fix by bensty regarding form resize
- private void DockContent_ParentChanged(object Sender, EventArgs e)
- {
- if (Parent != null)
- {
- Font = Parent.Font;
- }
- }
-
- private void DockHandler_DockStateChanged(object sender, EventArgs e)
- {
- OnDockStateChanged(e);
- }
-
- #endregion
-
- [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")]
- protected virtual string GetPersistString()
- {
- return GetType().ToString();
- }
-
- protected virtual void OnDockStateChanged(EventArgs e)
- {
- EventHandler handler = (EventHandler) Events[DockStateChangedEvent];
- handler?.Invoke(this, e);
- }
-
- #region IDockContent Members
-
- void IDockContent.OnActivated(EventArgs e)
- {
- OnActivated(e);
- }
-
- void IDockContent.OnDeactivate(EventArgs e)
- {
- OnDeactivate(e);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockContentCollection.cs b/src/WinFormsUI/Docking/DockContentCollection.cs
deleted file mode 100644
index 7f0e9151..00000000
--- a/src/WinFormsUI/Docking/DockContentCollection.cs
+++ /dev/null
@@ -1,233 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public class DockContentCollection : ReadOnlyCollection
- {
- #region Fields
-
- private static readonly List _emptyList = new List(0);
-
- #endregion
-
- #region cTor
-
- internal DockContentCollection()
- : base(new List())
- {
- }
-
- internal DockContentCollection(DockPane pane)
- : base(_emptyList)
- {
- DockPane = pane;
- }
-
- #endregion
-
- #region Properties
-
- private DockPane DockPane { get; } = null;
-
- public new IDockContent this[int index]
- {
- get
- {
- if (DockPane == null)
- {
- return Items[index] as IDockContent;
- }
- else
- {
- return GetVisibleContent(index);
- }
- }
- }
-
- public new int Count
- {
- get
- {
- if (DockPane == null)
- {
- return base.Count;
- }
- else
- {
- return CountOfVisibleContents;
- }
- }
- }
-
- private int CountOfVisibleContents
- {
- get
- {
-#if DEBUG
- if (DockPane == null)
- throw new InvalidOperationException();
-#endif
-
- int count = 0;
- foreach (IDockContent content in DockPane.Contents)
- {
- if (content.DockHandler.DockState == DockPane.DockState)
- {
- count++;
- }
- }
- return count;
- }
- }
-
- #endregion
-
- #region Public methods
-
- public new bool Contains(IDockContent content)
- {
- if (DockPane == null)
- {
- return Items.Contains(content);
- }
- else
- {
- return GetIndexOfVisibleContents(content) != -1;
- }
- }
-
- public new int IndexOf(IDockContent content)
- {
- if (DockPane == null)
- {
- if (!Contains(content))
- {
- return -1;
- }
- else
- {
- return Items.IndexOf(content);
- }
- }
- else
- {
- return GetIndexOfVisibleContents(content);
- }
- }
-
- #endregion
-
- #region Internals
-
- internal int Add(IDockContent content)
- {
-#if DEBUG
- if (DockPane != null)
- throw new InvalidOperationException();
-#endif
-
- if (Contains(content))
- {
- return IndexOf(content);
- }
-
- Items.Add(content);
- return Count - 1;
- }
-
- internal void AddAt(IDockContent content, int index)
- {
-#if DEBUG
- if (DockPane != null)
- throw new InvalidOperationException();
-#endif
-
- if (index < 0 || index > Items.Count - 1)
- {
- return;
- }
-
- if (Contains(content))
- {
- return;
- }
-
- Items.Insert(index, content);
- }
-
- internal void Remove(IDockContent content)
- {
- if (DockPane != null)
- {
- throw new InvalidOperationException();
- }
-
- if (!Contains(content))
- {
- return;
- }
-
- Items.Remove(content);
- }
-
- #endregion
-
- #region Private Methods
-
- private IDockContent GetVisibleContent(int index)
- {
-#if DEBUG
- if (DockPane == null)
- throw new InvalidOperationException();
-#endif
-
- int currentIndex = -1;
- foreach (IDockContent content in DockPane.Contents)
- {
- if (content.DockHandler.DockState == DockPane.DockState)
- {
- currentIndex++;
- }
-
- if (currentIndex == index)
- {
- return content;
- }
- }
- throw new ArgumentOutOfRangeException();
- }
-
- private int GetIndexOfVisibleContents(IDockContent content)
- {
-#if DEBUG
- if (DockPane == null)
- throw new InvalidOperationException();
-#endif
-
- if (content == null)
- {
- return -1;
- }
-
- int index = -1;
- foreach (IDockContent c in DockPane.Contents)
- {
- if (c.DockHandler.DockState == DockPane.DockState)
- {
- index++;
-
- if (c == content)
- {
- return index;
- }
- }
- }
- return -1;
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockContentEventArgs.cs b/src/WinFormsUI/Docking/DockContentEventArgs.cs
deleted file mode 100644
index 4abbd70d..00000000
--- a/src/WinFormsUI/Docking/DockContentEventArgs.cs
+++ /dev/null
@@ -1,26 +0,0 @@
-using System;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public class DockContentEventArgs : EventArgs
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public DockContentEventArgs(IDockContent content)
- {
- Content = content;
- }
-
- #endregion
-
- #region Properties
-
- public IDockContent Content { get; }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockContentHandler.cs b/src/WinFormsUI/Docking/DockContentHandler.cs
deleted file mode 100644
index 8d20156b..00000000
--- a/src/WinFormsUI/Docking/DockContentHandler.cs
+++ /dev/null
@@ -1,1320 +0,0 @@
-using System;
-using System.Windows.Forms;
-using System.Drawing;
-using System.ComponentModel;
-using System.Diagnostics.CodeAnalysis;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public delegate string GetPersistStringCallback();
-
- public class DockContentHandler : IDisposable, IDockDragSource
- {
- #region Fields
-
- private static readonly object DockStateChangedEvent = new object();
-
- private DockAreas m_allowedAreas = DockAreas.DockLeft | DockAreas.DockRight | DockAreas.DockTop |
- DockAreas.DockBottom | DockAreas.Document | DockAreas.Float;
-
- private double m_autoHidePortion = 0.25;
-
- private bool m_closeButton = true;
-
- private int m_countSetDockState = 0;
-
- private DockPanel m_dockPanel = null;
-
- private DockState m_dockState = DockState.Unknown;
-
- private bool m_flagClipWindow = false;
-
- private DockPane m_floatPane = null;
-
-
- private bool m_isActivated = false;
-
- private bool m_isFloat = false;
-
- private bool m_isHidden = true;
-
- private DockPane m_panelPane = null;
-
- private DockState m_showHint = DockState.Unknown;
-
- private DockPaneStripBase.Tab m_tab = null;
-
- private string m_tabText = null;
-
- private DockState m_visibleState = DockState.Unknown;
-
- #endregion
-
- #region cTor
-
- public DockContentHandler(Form form) : this(form, null)
- {
- }
-
- public DockContentHandler(Form form, GetPersistStringCallback getPersistStringCallback)
- {
- if (!(form is IDockContent))
- {
- throw new ArgumentException(Strings.DockContent_Constructor_InvalidForm, "form");
- }
-
- Form = form;
- GetPersistStringCallback = getPersistStringCallback;
-
- Events = new EventHandlerList();
- Form.Disposed += new EventHandler(Form_Disposed);
- Form.TextChanged += new EventHandler(Form_TextChanged);
- }
-
- #endregion
-
- #region Events
-
- public event EventHandler DockStateChanged
- {
- add { Events.AddHandler(DockStateChangedEvent, value); }
- remove { Events.RemoveHandler(DockStateChangedEvent, value); }
- }
-
- #endregion
-
- #region Properties
-
- public Form Form { get; }
-
- public IDockContent Content
- {
- get { return Form as IDockContent; }
- }
-
- public IDockContent PreviousActive { get; internal set; } = null;
-
- public IDockContent NextActive { get; internal set; } = null;
-
- private EventHandlerList Events { get; }
-
- public bool AllowEndUserDocking { get; set; } = true;
-
- public double AutoHidePortion
- {
- get { return m_autoHidePortion; }
- set
- {
- if (value <= 0)
- {
- throw new ArgumentOutOfRangeException(Strings.DockContentHandler_AutoHidePortion_OutOfRange);
- }
-
- if (m_autoHidePortion == value)
- {
- return;
- }
-
- m_autoHidePortion = value;
-
- if (DockPanel == null)
- {
- return;
- }
-
- if (DockPanel.ActiveAutoHideContent == Content)
- {
- DockPanel.PerformLayout();
- }
- }
- }
-
- public bool CloseButton
- {
- get { return m_closeButton; }
- set
- {
- if (m_closeButton == value)
- {
- return;
- }
-
- m_closeButton = value;
- if (Pane != null)
- {
- if (Pane.ActiveContent.DockHandler == this)
- {
- Pane.RefreshChanges();
- }
- }
- }
- }
-
- ///
- /// Determines whether the close button is visible on the content
- ///
- public bool CloseButtonVisible { get; set; } = true;
-
- private DockState DefaultDockState
- {
- get
- {
- if (ShowHint != DockState.Unknown && ShowHint != DockState.Hidden)
- {
- return ShowHint;
- }
-
- if ((DockAreas & DockAreas.Document) != 0)
- {
- return DockState.Document;
- }
- if ((DockAreas & DockAreas.DockRight) != 0)
- {
- return DockState.DockRight;
- }
- if ((DockAreas & DockAreas.DockLeft) != 0)
- {
- return DockState.DockLeft;
- }
- if ((DockAreas & DockAreas.DockBottom) != 0)
- {
- return DockState.DockBottom;
- }
- if ((DockAreas & DockAreas.DockTop) != 0)
- {
- return DockState.DockTop;
- }
-
- return DockState.Unknown;
- }
- }
-
- private DockState DefaultShowState
- {
- get
- {
- if (ShowHint != DockState.Unknown)
- {
- return ShowHint;
- }
-
- if ((DockAreas & DockAreas.Document) != 0)
- {
- return DockState.Document;
- }
- if ((DockAreas & DockAreas.DockRight) != 0)
- {
- return DockState.DockRight;
- }
- if ((DockAreas & DockAreas.DockLeft) != 0)
- {
- return DockState.DockLeft;
- }
- if ((DockAreas & DockAreas.DockBottom) != 0)
- {
- return DockState.DockBottom;
- }
- if ((DockAreas & DockAreas.DockTop) != 0)
- {
- return DockState.DockTop;
- }
- if ((DockAreas & DockAreas.Float) != 0)
- {
- return DockState.Float;
- }
-
- return DockState.Unknown;
- }
- }
-
- public DockAreas DockAreas
- {
- get { return m_allowedAreas; }
- set
- {
- if (m_allowedAreas == value)
- {
- return;
- }
-
- if (!DockHelper.IsDockStateValid(DockState, value))
- {
- throw new InvalidOperationException(Strings.DockContentHandler_DockAreas_InvalidValue);
- }
-
- m_allowedAreas = value;
-
- if (!DockHelper.IsDockStateValid(ShowHint, m_allowedAreas))
- {
- ShowHint = DockState.Unknown;
- }
- }
- }
-
- public DockState DockState
- {
- get { return m_dockState; }
- set
- {
- if (m_dockState == value)
- {
- return;
- }
-
- DockPanel.SuspendLayout(true);
-
- if (value == DockState.Hidden)
- {
- IsHidden = true;
- }
- else
- {
- SetDockState(false, value, Pane);
- }
-
- DockPanel.ResumeLayout(true, true);
- }
- }
-
- public DockPanel DockPanel
- {
- get { return m_dockPanel; }
- set
- {
- if (m_dockPanel == value)
- {
- return;
- }
-
- Pane = null;
-
- if (m_dockPanel != null)
- {
- m_dockPanel.RemoveContent(Content);
- }
-
- if (m_tab != null)
- {
- m_tab.Dispose();
- m_tab = null;
- }
-
- if (AutoHideTab != null)
- {
- AutoHideTab.Dispose();
- AutoHideTab = null;
- }
-
- m_dockPanel = value;
-
- if (m_dockPanel != null)
- {
- m_dockPanel.AddContent(Content);
- Form.TopLevel = false;
- Form.FormBorderStyle = FormBorderStyle.None;
- Form.ShowInTaskbar = false;
- Form.WindowState = FormWindowState.Normal;
- NativeMethods.SetWindowPos(Form.Handle, IntPtr.Zero, 0, 0, 0, 0,
- Win32.FlagsSetWindowPos.SWP_NOACTIVATE |
- Win32.FlagsSetWindowPos.SWP_NOMOVE |
- Win32.FlagsSetWindowPos.SWP_NOSIZE |
- Win32.FlagsSetWindowPos.SWP_NOZORDER |
- Win32.FlagsSetWindowPos.SWP_NOOWNERZORDER |
- Win32.FlagsSetWindowPos.SWP_FRAMECHANGED);
- }
- }
- }
-
- public Icon Icon
- {
- get { return Form.Icon; }
- }
-
- public DockPane Pane
- {
- get { return IsFloat ? FloatPane : PanelPane; }
- set
- {
- if (Pane == value)
- {
- return;
- }
-
- DockPanel.SuspendLayout(true);
-
- DockPane oldPane = Pane;
-
- SuspendSetDockState();
- FloatPane = value == null ? null : (value.IsFloat ? value : FloatPane);
- PanelPane = value == null ? null : (value.IsFloat ? PanelPane : value);
- ResumeSetDockState(IsHidden, value != null ? value.DockState : DockState.Unknown, oldPane);
-
- DockPanel.ResumeLayout(true, true);
- }
- }
-
- public bool IsHidden
- {
- get { return m_isHidden; }
- set
- {
- if (m_isHidden == value)
- {
- return;
- }
-
- SetDockState(value, VisibleState, Pane);
- }
- }
-
- public string TabText
- {
- get { return m_tabText == null || m_tabText == "" ? Form.Text : m_tabText; }
- set
- {
- if (m_tabText == value)
- {
- return;
- }
-
- m_tabText = value;
- if (Pane != null)
- {
- Pane.RefreshChanges();
- }
- }
- }
-
- public DockState VisibleState
- {
- get { return m_visibleState; }
- set
- {
- if (m_visibleState == value)
- {
- return;
- }
-
- SetDockState(IsHidden, value, Pane);
- }
- }
-
- public bool IsFloat
- {
- get { return m_isFloat; }
- set
- {
- if (m_isFloat == value)
- {
- return;
- }
-
- DockState visibleState = CheckDockState(value);
-
- if (visibleState == DockState.Unknown)
- {
- throw new InvalidOperationException(Strings.DockContentHandler_IsFloat_InvalidValue);
- }
-
- SetDockState(IsHidden, visibleState, Pane);
- }
- }
-
- public DockPane PanelPane
- {
- get { return m_panelPane; }
- set
- {
- if (m_panelPane == value)
- {
- return;
- }
-
- if (value != null)
- {
- if (value.IsFloat || value.DockPanel != DockPanel)
- {
- throw new InvalidOperationException(Strings.DockContentHandler_DockPane_InvalidValue);
- }
- }
-
- DockPane oldPane = Pane;
-
- if (m_panelPane != null)
- {
- RemoveFromPane(m_panelPane);
- }
- m_panelPane = value;
- if (m_panelPane != null)
- {
- m_panelPane.AddContent(Content);
- SetDockState(IsHidden, IsFloat ? DockState.Float : m_panelPane.DockState, oldPane);
- }
- else
- {
- SetDockState(IsHidden, DockState.Unknown, oldPane);
- }
- }
- }
-
- public DockPane FloatPane
- {
- get { return m_floatPane; }
- set
- {
- if (m_floatPane == value)
- {
- return;
- }
-
- if (value != null)
- {
- if (!value.IsFloat || value.DockPanel != DockPanel)
- {
- throw new InvalidOperationException(Strings.DockContentHandler_FloatPane_InvalidValue);
- }
- }
-
- DockPane oldPane = Pane;
-
- if (m_floatPane != null)
- {
- RemoveFromPane(m_floatPane);
- }
- m_floatPane = value;
- if (m_floatPane != null)
- {
- m_floatPane.AddContent(Content);
- SetDockState(IsHidden, IsFloat ? DockState.Float : VisibleState, oldPane);
- }
- else
- {
- SetDockState(IsHidden, DockState.Unknown, oldPane);
- }
- }
- }
-
- internal bool IsSuspendSetDockState
- {
- get { return m_countSetDockState != 0; }
- }
-
- internal string PersistString
- {
- get { return GetPersistStringCallback == null ? Form.GetType().ToString() : GetPersistStringCallback(); }
- }
-
- public GetPersistStringCallback GetPersistStringCallback { get; set; } = null;
-
- public bool HideOnClose { get; set; } = false;
-
- public DockState ShowHint
- {
- get { return m_showHint; }
- set
- {
- if (!DockHelper.IsDockStateValid(value, DockAreas))
- {
- throw new InvalidOperationException(Strings.DockContentHandler_ShowHint_InvalidValue);
- }
-
- if (m_showHint == value)
- {
- return;
- }
-
- m_showHint = value;
- }
- }
-
- public bool IsActivated
- {
- get { return m_isActivated; }
- internal set
- {
- if (m_isActivated == value)
- {
- return;
- }
-
- m_isActivated = value;
- }
- }
-
- public ContextMenuStrip TabPageContextMenu { get; set; } = null;
-
- public string ToolTipText { get; set; } = null;
-
- internal IntPtr ActiveWindowHandle { get; set; } = IntPtr.Zero;
-
- internal IDisposable AutoHideTab { get; set; } = null;
-
- internal bool FlagClipWindow
- {
- get { return m_flagClipWindow; }
- set
- {
- if (m_flagClipWindow == value)
- {
- return;
- }
-
- m_flagClipWindow = value;
- if (m_flagClipWindow)
- {
- Form.Region = new Region(Rectangle.Empty);
- }
- else
- {
- Form.Region = null;
- }
- }
- }
-
- public ContextMenuStrip TabPageContextMenuStrip { get; set; } = null;
-
- #endregion
-
- #region Public methods
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- [SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters")]
- public DockState CheckDockState(bool isFloat)
- {
- DockState dockState;
-
- if (isFloat)
- {
- if (!IsDockStateValid(DockState.Float))
- {
- dockState = DockState.Unknown;
- }
- else
- {
- dockState = DockState.Float;
- }
- }
- else
- {
- dockState = PanelPane != null ? PanelPane.DockState : DefaultDockState;
- if (dockState != DockState.Unknown && !IsDockStateValid(dockState))
- {
- dockState = DockState.Unknown;
- }
- }
-
- return dockState;
- }
-
- public bool IsDockStateValid(DockState dockState)
- {
- if (DockPanel != null && dockState == DockState.Document &&
- DockPanel.DocumentStyle == DocumentStyle.SystemMdi)
- {
- return false;
- }
- else
- {
- return DockHelper.IsDockStateValid(dockState, DockAreas);
- }
- }
-
- public void Activate()
- {
- if (DockPanel == null)
- {
- Form.Activate();
- }
- else if (Pane == null)
- {
- Show(DockPanel);
- }
- else
- {
- IsHidden = false;
- Pane.ActiveContent = Content;
- if (DockState == DockState.Document && DockPanel.DocumentStyle == DocumentStyle.SystemMdi)
- {
- Form.Activate();
- return;
- }
- else if (DockHelper.IsDockStateAutoHide(DockState))
- {
- DockPanel.ActiveAutoHideContent = Content;
- }
-
- if (!Form.ContainsFocus)
- {
- DockPanel.ContentFocusManager.Activate(Content);
- }
- }
- }
-
- public void GiveUpFocus()
- {
- DockPanel.ContentFocusManager.GiveUpFocus(Content);
- }
-
- public void Hide()
- {
- IsHidden = true;
- }
-
- public void Show()
- {
- if (DockPanel == null)
- {
- Form.Show();
- }
- else
- {
- Show(DockPanel);
- }
- }
-
- public void Show(DockPanel dockPanel)
- {
- if (dockPanel == null)
- {
- throw new ArgumentNullException(Strings.DockContentHandler_Show_NullDockPanel);
- }
-
- if (DockState == DockState.Unknown)
- {
- Show(dockPanel, DefaultShowState);
- }
- else
- {
- Activate();
- }
- }
-
- public void Show(DockPanel dockPanel, DockState dockState)
- {
- if (dockPanel == null)
- {
- throw new ArgumentNullException(Strings.DockContentHandler_Show_NullDockPanel);
- }
-
- if (dockState == DockState.Unknown || dockState == DockState.Hidden)
- {
- throw new ArgumentException(Strings.DockContentHandler_Show_InvalidDockState);
- }
-
- dockPanel.SuspendLayout(true);
-
- DockPanel = dockPanel;
-
- if (dockState == DockState.Float && FloatPane == null)
- {
- Pane = DockPanel.DockPaneFactory.CreateDockPane(Content, DockState.Float, true);
- }
- else if (PanelPane == null)
- {
- DockPane paneExisting = null;
- foreach (DockPane pane in DockPanel.Panes)
- {
- if (pane.DockState == dockState)
- {
- paneExisting = pane;
- break;
- }
- }
-
- if (paneExisting == null)
- {
- Pane = DockPanel.DockPaneFactory.CreateDockPane(Content, dockState, true);
- }
- else
- {
- Pane = paneExisting;
- }
- }
-
- DockState = dockState;
- dockPanel.ResumeLayout(true, true); //we'll resume the layout before activating to ensure that the position
- Activate(); //and size of the form are finally processed before the form is shown
- }
-
- [SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters")]
- public void Show(DockPanel dockPanel, Rectangle floatWindowBounds)
- {
- if (dockPanel == null)
- {
- throw new ArgumentNullException(Strings.DockContentHandler_Show_NullDockPanel);
- }
-
- dockPanel.SuspendLayout(true);
-
- DockPanel = dockPanel;
- if (FloatPane == null)
- {
- IsHidden = true; // to reduce the screen flicker
- FloatPane = DockPanel.DockPaneFactory.CreateDockPane(Content, DockState.Float, false);
- FloatPane.FloatWindow.StartPosition = FormStartPosition.Manual;
- }
-
- FloatPane.FloatWindow.Bounds = floatWindowBounds;
-
- Show(dockPanel, DockState.Float);
- Activate();
-
- dockPanel.ResumeLayout(true, true);
- }
-
- public void Show(DockPane pane, IDockContent beforeContent)
- {
- if (pane == null)
- {
- throw new ArgumentNullException(Strings.DockContentHandler_Show_NullPane);
- }
-
- if (beforeContent != null && pane.Contents.IndexOf(beforeContent) == -1)
- {
- throw new ArgumentException(Strings.DockContentHandler_Show_InvalidBeforeContent);
- }
-
- pane.DockPanel.SuspendLayout(true);
-
- DockPanel = pane.DockPanel;
- Pane = pane;
- pane.SetContentIndex(Content, pane.Contents.IndexOf(beforeContent));
- Show();
-
- pane.DockPanel.ResumeLayout(true, true);
- }
-
- public void Show(DockPane previousPane, DockAlignment alignment, double proportion)
- {
- if (previousPane == null)
- {
- throw new ArgumentException(Strings.DockContentHandler_Show_InvalidPrevPane);
- }
-
- if (DockHelper.IsDockStateAutoHide(previousPane.DockState))
- {
- throw new ArgumentException(Strings.DockContentHandler_Show_InvalidPrevPane);
- }
-
- previousPane.DockPanel.SuspendLayout(true);
-
- DockPanel = previousPane.DockPanel;
- DockPanel.DockPaneFactory.CreateDockPane(Content, previousPane, alignment, proportion, true);
- Show();
-
- previousPane.DockPanel.ResumeLayout(true, true);
- }
-
- public void Close()
- {
- DockPanel dockPanel = DockPanel;
- if (dockPanel != null)
- {
- dockPanel.SuspendLayout(true);
- }
- Form.Close();
- if (dockPanel != null)
- {
- dockPanel.ResumeLayout(true, true);
- }
- }
-
- #endregion
-
- #region Internals
-
- internal void SetDockState(bool isHidden, DockState visibleState, DockPane oldPane)
- {
- if (IsSuspendSetDockState)
- {
- return;
- }
-
- if (DockPanel == null && visibleState != DockState.Unknown)
- {
- throw new InvalidOperationException(Strings.DockContentHandler_SetDockState_NullPanel);
- }
-
- if (visibleState == DockState.Hidden ||
- visibleState != DockState.Unknown && !IsDockStateValid(visibleState))
- {
- throw new InvalidOperationException(Strings.DockContentHandler_SetDockState_InvalidState);
- }
-
- DockPanel dockPanel = DockPanel;
- if (dockPanel != null)
- {
- dockPanel.SuspendLayout(true);
- }
-
- SuspendSetDockState();
-
- DockState oldDockState = DockState;
-
- if (m_isHidden != isHidden || oldDockState == DockState.Unknown)
- {
- m_isHidden = isHidden;
- }
- m_visibleState = visibleState;
- m_dockState = isHidden ? DockState.Hidden : visibleState;
-
- if (visibleState == DockState.Unknown)
- {
- Pane = null;
- }
- else
- {
- m_isFloat = m_visibleState == DockState.Float;
-
- if (Pane == null)
- {
- Pane = DockPanel.DockPaneFactory.CreateDockPane(Content, visibleState, true);
- }
- else if (Pane.DockState != visibleState)
- {
- if (Pane.Contents.Count == 1)
- {
- Pane.SetDockState(visibleState);
- }
- else
- {
- Pane = DockPanel.DockPaneFactory.CreateDockPane(Content, visibleState, true);
- }
- }
- }
-
- if (Form.ContainsFocus)
- {
- if (DockState == DockState.Hidden || DockState == DockState.Unknown)
- {
- DockPanel.ContentFocusManager.GiveUpFocus(Content);
- }
- }
-
- SetPaneAndVisible(Pane);
-
- if (oldPane != null && !oldPane.IsDisposed && oldDockState == oldPane.DockState)
- {
- RefreshDockPane(oldPane);
- }
-
- if (Pane != null && DockState == Pane.DockState)
- {
- if (Pane != oldPane ||
- Pane == oldPane && oldDockState != oldPane.DockState)
- // Avoid early refresh of hidden AutoHide panes
- {
- if ((Pane.DockWindow == null || Pane.DockWindow.Visible || Pane.IsHidden) && !Pane.IsAutoHide)
- {
- RefreshDockPane(Pane);
- }
- }
- }
-
- if (oldDockState != DockState)
- {
- if (DockState == DockState.Hidden || DockState == DockState.Unknown ||
- DockHelper.IsDockStateAutoHide(DockState))
- {
- DockPanel.ContentFocusManager.RemoveFromList(Content);
- }
- else
- {
- DockPanel.ContentFocusManager.AddToList(Content);
- }
-
- OnDockStateChanged(EventArgs.Empty);
- }
- ResumeSetDockState();
-
- if (dockPanel != null)
- {
- dockPanel.ResumeLayout(true, true);
- }
- }
-
- internal void SetPaneAndVisible(DockPane pane)
- {
- SetPane(pane);
- SetVisible();
- }
-
- internal void SetVisible()
- {
- bool visible;
-
- if (IsHidden)
- {
- visible = false;
- }
- else if (Pane != null && Pane.DockState == DockState.Document &&
- DockPanel.DocumentStyle == DocumentStyle.DockingMdi)
- {
- visible = true;
- }
- else if (Pane != null && Pane.ActiveContent == Content)
- {
- visible = true;
- }
- else if (Pane != null && Pane.ActiveContent != Content)
- {
- visible = false;
- }
- else
- {
- visible = Form.Visible;
- }
-
- if (Form.Visible != visible)
- {
- Form.Visible = visible;
- }
- }
-
- internal DockPaneStripBase.Tab GetTab(DockPaneStripBase dockPaneStrip)
- {
- if (m_tab == null)
- {
- m_tab = dockPaneStrip.CreateTab(Content);
- }
-
- return m_tab;
- }
-
- #endregion
-
- #region Private Methods
-
- private void RemoveFromPane(DockPane pane)
- {
- pane.RemoveContent(Content);
- SetPane(null);
- if (pane.Contents.Count == 0)
- {
- pane.Dispose();
- }
- }
-
- private void SuspendSetDockState()
- {
- m_countSetDockState++;
- }
-
- private void ResumeSetDockState()
- {
- m_countSetDockState--;
- if (m_countSetDockState < 0)
- {
- m_countSetDockState = 0;
- }
- }
-
- private void ResumeSetDockState(bool isHidden, DockState visibleState, DockPane oldPane)
- {
- ResumeSetDockState();
- SetDockState(isHidden, visibleState, oldPane);
- }
-
- private static void RefreshDockPane(DockPane pane)
- {
- pane.RefreshChanges();
- pane.ValidateActiveContent();
- }
-
- private void SetPane(DockPane pane)
- {
- if (pane != null && pane.DockState == DockState.Document &&
- DockPanel.DocumentStyle == DocumentStyle.DockingMdi)
- {
- if (Form.Parent is DockPane)
- {
- SetParent(null);
- }
- if (Form.MdiParent != DockPanel.ParentForm)
- {
- FlagClipWindow = true;
- Form.MdiParent = DockPanel.ParentForm;
- }
- }
- else
- {
- FlagClipWindow = true;
- if (Form.MdiParent != null)
- {
- Form.MdiParent = null;
- }
- if (Form.TopLevel)
- {
- Form.TopLevel = false;
- }
- SetParent(pane);
- }
- }
-
- private void SetParent(Control value)
- {
- if (Form.Parent == value)
- {
- return;
- }
-
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- // Workaround of .Net Framework bug:
- // Change the parent of a control with focus may result in the first
- // MDI child form get activated.
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- bool bRestoreFocus = false;
- if (Form.ContainsFocus)
- {
- //Suggested as a fix for a memory leak by bugreports
- if (value == null && !IsFloat)
- {
- DockPanel.ContentFocusManager.GiveUpFocus(this.Content);
- }
- else
- {
- DockPanel.SaveFocus();
- bRestoreFocus = true;
- }
- }
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- Form.Parent = value;
-
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- // Workaround of .Net Framework bug:
- // Change the parent of a control with focus may result in the first
- // MDI child form get activated.
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- if (bRestoreFocus)
- {
- Activate();
- }
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- }
-
- #endregion
-
- #region Events handler
-
- private void Form_Disposed(object sender, EventArgs e)
- {
- Dispose();
- }
-
- private void Form_TextChanged(object sender, EventArgs e)
- {
- if (DockHelper.IsDockStateAutoHide(DockState))
- {
- DockPanel.RefreshAutoHideStrip();
- }
- else if (Pane != null)
- {
- if (Pane.FloatWindow != null)
- {
- Pane.FloatWindow.SetText();
- }
- Pane.RefreshChanges();
- }
- }
-
- #endregion
-
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- lock (this)
- {
- DockPanel = null;
- if (AutoHideTab != null)
- {
- AutoHideTab.Dispose();
- }
- if (m_tab != null)
- {
- m_tab.Dispose();
- }
-
- Form.Disposed -= new EventHandler(Form_Disposed);
- Form.TextChanged -= new EventHandler(Form_TextChanged);
- Events.Dispose();
- }
- }
- }
-
- protected virtual void OnDockStateChanged(EventArgs e)
- {
- EventHandler handler = (EventHandler) Events[DockStateChangedEvent];
- if (handler != null)
- {
- handler(this, e);
- }
- }
-
- #region IDockDragSource Members
-
- Control IDragSource.DragControl
- {
- get { return Form; }
- }
-
- bool IDockDragSource.CanDockTo(DockPane pane)
- {
- if (!IsDockStateValid(pane.DockState))
- {
- return false;
- }
-
- if (Pane == pane && pane.DisplayingContents.Count == 1)
- {
- return false;
- }
-
- return true;
- }
-
- Rectangle IDockDragSource.BeginDrag(Point ptMouse)
- {
- Size size;
- DockPane floatPane = this.FloatPane;
- if (DockState == DockState.Float || floatPane == null || floatPane.FloatWindow.NestedPanes.Count != 1)
- {
- size = DockPanel.DefaultFloatWindowSize;
- }
- else
- {
- size = floatPane.FloatWindow.Size;
- }
-
- Point location;
- Rectangle rectPane = Pane.ClientRectangle;
- if (DockState == DockState.Document)
- {
- if (Pane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- location = new Point(rectPane.Left, rectPane.Bottom - size.Height);
- }
- else
- {
- location = new Point(rectPane.Left, rectPane.Top);
- }
- }
- else
- {
- location = new Point(rectPane.Left, rectPane.Bottom);
- location.Y -= size.Height;
- }
- location = Pane.PointToScreen(location);
-
- if (ptMouse.X > location.X + size.Width)
- {
- location.X += ptMouse.X - (location.X + size.Width) + Measures.SplitterSize;
- }
-
- return new Rectangle(location, size);
- }
-
- public void FloatAt(Rectangle floatWindowBounds)
- {
- DockPane pane = DockPanel.DockPaneFactory.CreateDockPane(Content, floatWindowBounds, true);
- }
-
- public void DockTo(DockPane pane, DockStyle dockStyle, int contentIndex)
- {
- if (dockStyle == DockStyle.Fill)
- {
- bool samePane = Pane == pane;
- if (!samePane)
- {
- Pane = pane;
- }
-
- if (contentIndex == -1 || !samePane)
- {
- pane.SetContentIndex(Content, contentIndex);
- }
- else
- {
- DockContentCollection contents = pane.Contents;
- int oldIndex = contents.IndexOf(Content);
- int newIndex = contentIndex;
- if (oldIndex < newIndex)
- {
- newIndex += 1;
- if (newIndex > contents.Count - 1)
- {
- newIndex = -1;
- }
- }
- pane.SetContentIndex(Content, newIndex);
- }
- }
- else
- {
- DockPane paneFrom = DockPanel.DockPaneFactory.CreateDockPane(Content, pane.DockState, true);
- INestedPanesContainer container = pane.NestedPanesContainer;
- if (dockStyle == DockStyle.Left)
- {
- paneFrom.DockTo(container, pane, DockAlignment.Left, 0.5);
- }
- else if (dockStyle == DockStyle.Right)
- {
- paneFrom.DockTo(container, pane, DockAlignment.Right, 0.5);
- }
- else if (dockStyle == DockStyle.Top)
- {
- paneFrom.DockTo(container, pane, DockAlignment.Top, 0.5);
- }
- else if (dockStyle == DockStyle.Bottom)
- {
- paneFrom.DockTo(container, pane, DockAlignment.Bottom, 0.5);
- }
-
- paneFrom.DockState = pane.DockState;
- }
- }
-
- public void DockTo(DockPanel panel, DockStyle dockStyle)
- {
- if (panel != DockPanel)
- {
- throw new ArgumentException(Strings.IDockDragSource_DockTo_InvalidPanel, "panel");
- }
-
- DockPane pane;
-
- if (dockStyle == DockStyle.Top)
- {
- pane = DockPanel.DockPaneFactory.CreateDockPane(Content, DockState.DockTop, true);
- }
- else if (dockStyle == DockStyle.Bottom)
- {
- pane = DockPanel.DockPaneFactory.CreateDockPane(Content, DockState.DockBottom, true);
- }
- else if (dockStyle == DockStyle.Left)
- {
- pane = DockPanel.DockPaneFactory.CreateDockPane(Content, DockState.DockLeft, true);
- }
- else if (dockStyle == DockStyle.Right)
- {
- pane = DockPanel.DockPaneFactory.CreateDockPane(Content, DockState.DockRight, true);
- }
- else if (dockStyle == DockStyle.Fill)
- {
- pane = DockPanel.DockPaneFactory.CreateDockPane(Content, DockState.Document, true);
- }
- else
- {
- return;
- }
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockOutlineBase.cs b/src/WinFormsUI/Docking/DockOutlineBase.cs
deleted file mode 100644
index 4b817776..00000000
--- a/src/WinFormsUI/Docking/DockOutlineBase.cs
+++ /dev/null
@@ -1,146 +0,0 @@
-using System;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal abstract class DockOutlineBase
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public DockOutlineBase()
- {
- Init();
- }
-
- #endregion
-
- #region Properties
-
- protected Rectangle OldFloatWindowBounds { get; private set; }
-
- protected Control OldDockTo { get; private set; }
-
- protected DockStyle OldDock { get; private set; }
-
- protected int OldContentIndex { get; private set; }
-
- protected bool SameAsOldValue
- {
- get
- {
- return FloatWindowBounds == OldFloatWindowBounds &&
- DockTo == OldDockTo &&
- Dock == OldDock &&
- ContentIndex == OldContentIndex;
- }
- }
-
- public Rectangle FloatWindowBounds { get; private set; }
-
- public Control DockTo { get; private set; }
-
- public DockStyle Dock { get; private set; }
-
- public int ContentIndex { get; private set; }
-
- public bool FlagFullEdge
- {
- get { return ContentIndex != 0; }
- }
-
- public bool FlagTestDrop { get; set; } = false;
-
- #endregion
-
- #region Public methods
-
- public void Show()
- {
- SaveOldValues();
- SetValues(Rectangle.Empty, null, DockStyle.None, -1);
- TestChange();
- }
-
- public void Show(DockPane pane, DockStyle dock)
- {
- SaveOldValues();
- SetValues(Rectangle.Empty, pane, dock, -1);
- TestChange();
- }
-
- public void Show(DockPane pane, int contentIndex)
- {
- SaveOldValues();
- SetValues(Rectangle.Empty, pane, DockStyle.Fill, contentIndex);
- TestChange();
- }
-
- public void Show(DockPanel dockPanel, DockStyle dock, bool fullPanelEdge)
- {
- SaveOldValues();
- SetValues(Rectangle.Empty, dockPanel, dock, fullPanelEdge ? -1 : 0);
- TestChange();
- }
-
- public void Show(Rectangle floatWindowBounds)
- {
- SaveOldValues();
- SetValues(floatWindowBounds, null, DockStyle.None, -1);
- TestChange();
- }
-
- public void Close()
- {
- OnClose();
- }
-
- #endregion
-
- #region Private Methods
-
- private void Init()
- {
- SetValues(Rectangle.Empty, null, DockStyle.None, -1);
- SaveOldValues();
- }
-
- private void SaveOldValues()
- {
- OldDockTo = DockTo;
- OldDock = Dock;
- OldContentIndex = ContentIndex;
- OldFloatWindowBounds = FloatWindowBounds;
- }
-
- private void SetValues(Rectangle floatWindowBounds, Control dockTo, DockStyle dock, int contentIndex)
- {
- FloatWindowBounds = floatWindowBounds;
- DockTo = dockTo;
- Dock = dock;
- ContentIndex = contentIndex;
- FlagTestDrop = true;
- }
-
- private void TestChange()
- {
- if (FloatWindowBounds != OldFloatWindowBounds ||
- DockTo != OldDockTo ||
- Dock != OldDock ||
- ContentIndex != OldContentIndex)
- {
- OnShow();
- }
- }
-
- #endregion
-
- protected abstract void OnShow();
-
- protected abstract void OnClose();
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPane.SplitterControl.cs b/src/WinFormsUI/Docking/DockPane.SplitterControl.cs
deleted file mode 100644
index 9f3854ac..00000000
--- a/src/WinFormsUI/Docking/DockPane.SplitterControl.cs
+++ /dev/null
@@ -1,199 +0,0 @@
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- partial class DockPane
- {
- #region Fields
-
- #endregion
-
- #region Properties
-
- private SplitterControl Splitter { get; set; }
-
- internal Rectangle SplitterBounds
- {
- set { Splitter.Bounds = value; }
- }
-
- internal DockAlignment SplitterAlignment
- {
- set { Splitter.Alignment = value; }
- }
-
- #endregion
-
- private class SplitterControl : Control, ISplitterDragSource
- {
- #region Fields
-
- private DockAlignment m_alignment;
-
- #endregion
-
- #region cTor
-
- public SplitterControl(DockPane pane)
- {
- SetStyle(ControlStyles.Selectable, false);
- DockPane = pane;
- }
-
- #endregion
-
- #region Properties
-
- public DockPane DockPane { get; }
-
- public DockAlignment Alignment
- {
- get { return m_alignment; }
- set
- {
- m_alignment = value;
- if (m_alignment == DockAlignment.Left || m_alignment == DockAlignment.Right)
- {
- Cursor = Cursors.VSplit;
- }
- else if (m_alignment == DockAlignment.Top || m_alignment == DockAlignment.Bottom)
- {
- Cursor = Cursors.HSplit;
- }
- else
- {
- Cursor = Cursors.Default;
- }
-
- if (DockPane.DockState == DockState.Document)
- {
- Invalidate();
- }
- }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void OnPaint(PaintEventArgs e)
- {
- base.OnPaint(e);
-
- if (DockPane.DockState != DockState.Document)
- {
- return;
- }
-
- Graphics g = e.Graphics;
- Rectangle rect = ClientRectangle;
- if (Alignment == DockAlignment.Top || Alignment == DockAlignment.Bottom)
- {
- g.DrawLine(SystemPens.ControlDark, rect.Left, rect.Bottom - 1, rect.Right, rect.Bottom - 1);
- }
- else if (Alignment == DockAlignment.Left || Alignment == DockAlignment.Right)
- {
- g.DrawLine(SystemPens.ControlDarkDark, rect.Right - 1, rect.Top, rect.Right - 1, rect.Bottom);
- }
- }
-
- protected override void OnMouseDown(MouseEventArgs e)
- {
- base.OnMouseDown(e);
-
- if (e.Button != MouseButtons.Left)
- {
- return;
- }
-
- DockPane.DockPanel.BeginDrag(this, Parent.RectangleToScreen(Bounds));
- }
-
- #endregion
-
- #region ISplitterDragSource Members
-
- void ISplitterDragSource.BeginDrag(Rectangle rectSplitter)
- {
- }
-
- void ISplitterDragSource.EndDrag()
- {
- }
-
- bool ISplitterDragSource.IsVertical
- {
- get
- {
- NestedDockingStatus status = DockPane.NestedDockingStatus;
- return status.DisplayingAlignment == DockAlignment.Left ||
- status.DisplayingAlignment == DockAlignment.Right;
- }
- }
-
- Rectangle ISplitterDragSource.DragLimitBounds
- {
- get
- {
- NestedDockingStatus status = DockPane.NestedDockingStatus;
- Rectangle rectLimit = Parent.RectangleToScreen(status.LogicalBounds);
- if (((ISplitterDragSource) this).IsVertical)
- {
- rectLimit.X += MeasurePane.MinSize;
- rectLimit.Width -= 2 * MeasurePane.MinSize;
- }
- else
- {
- rectLimit.Y += MeasurePane.MinSize;
- rectLimit.Height -= 2 * MeasurePane.MinSize;
- }
-
- return rectLimit;
- }
- }
-
- void ISplitterDragSource.MoveSplitter(int offset)
- {
- NestedDockingStatus status = DockPane.NestedDockingStatus;
- double proportion = status.Proportion;
- if (status.LogicalBounds.Width <= 0 || status.LogicalBounds.Height <= 0)
- {
- return;
- }
- else if (status.DisplayingAlignment == DockAlignment.Left)
- {
- proportion += (double) offset / (double) status.LogicalBounds.Width;
- }
- else if (status.DisplayingAlignment == DockAlignment.Right)
- {
- proportion -= (double) offset / (double) status.LogicalBounds.Width;
- }
- else if (status.DisplayingAlignment == DockAlignment.Top)
- {
- proportion += (double) offset / (double) status.LogicalBounds.Height;
- }
- else
- {
- proportion -= (double) offset / (double) status.LogicalBounds.Height;
- }
-
- DockPane.SetNestedDockingProportion(proportion);
- }
-
- #region IDragSource Members
-
- Control IDragSource.DragControl
- {
- get { return this; }
- }
-
- #endregion
-
- #endregion
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPane.cs b/src/WinFormsUI/Docking/DockPane.cs
deleted file mode 100644
index ec395b13..00000000
--- a/src/WinFormsUI/Docking/DockPane.cs
+++ /dev/null
@@ -1,1610 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.Diagnostics.CodeAnalysis;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- [ToolboxItem(false)]
- public partial class DockPane : UserControl, IDockDragSource
- {
- #region Fields
-
- private static readonly object DockStateChangedEvent = new object();
-
- private static readonly object IsActivatedChangedEvent = new object();
-
- private static readonly object IsActiveDocumentPaneChangedEvent = new object();
-
- private IDockContent m_activeContent = null;
-
- private int m_countRefreshStateChange = 0;
-
- private DockState m_dockState = DockState.Unknown;
-
- #endregion
-
- #region cTor
-
- internal protected DockPane(IDockContent content, DockState visibleState, bool show)
- {
- InternalConstruct(content, visibleState, false, Rectangle.Empty, null, DockAlignment.Right, 0.5, show);
- }
-
- [SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters", MessageId = "1#")]
- internal protected DockPane(IDockContent content, FloatWindow floatWindow, bool show)
- {
- if (floatWindow == null)
- {
- throw new ArgumentNullException("floatWindow");
- }
-
- InternalConstruct(content, DockState.Float, false, Rectangle.Empty,
- floatWindow.NestedPanes.GetDefaultPreviousPane(this), DockAlignment.Right, 0.5, show);
- }
-
- internal protected DockPane(IDockContent content, DockPane previousPane, DockAlignment alignment,
- double proportion, bool show)
- {
- if (previousPane == null)
- {
- throw new ArgumentNullException("previousPane");
- }
- InternalConstruct(content, previousPane.DockState, false, Rectangle.Empty, previousPane, alignment,
- proportion, show);
- }
-
- [SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters", MessageId = "1#")]
- internal protected DockPane(IDockContent content, Rectangle floatWindowBounds, bool show)
- {
- InternalConstruct(content, DockState.Float, true, floatWindowBounds, null, DockAlignment.Right, 0.5, show);
- }
-
- #endregion
-
- #region Events
-
- public event EventHandler DockStateChanged
- {
- add { Events.AddHandler(DockStateChangedEvent, value); }
- remove { Events.RemoveHandler(DockStateChangedEvent, value); }
- }
-
- public event EventHandler IsActivatedChanged
- {
- add { Events.AddHandler(IsActivatedChangedEvent, value); }
- remove { Events.RemoveHandler(IsActivatedChangedEvent, value); }
- }
-
- public event EventHandler IsActiveDocumentPaneChanged
- {
- add { Events.AddHandler(IsActiveDocumentPaneChangedEvent, value); }
- remove { Events.RemoveHandler(IsActiveDocumentPaneChangedEvent, value); }
- }
-
- #endregion
-
- #region Properties
-
- private DockPaneCaptionBase CaptionControl { get; set; }
-
- public DockPaneStripBase TabStripControl { get; private set; }
-
- public virtual IDockContent ActiveContent
- {
- get { return m_activeContent; }
- set
- {
- if (ActiveContent == value)
- {
- return;
- }
-
- if (value != null)
- {
- if (!DisplayingContents.Contains(value))
- {
- throw new InvalidOperationException(Strings.DockPane_ActiveContent_InvalidValue);
- }
- }
- else
- {
- if (DisplayingContents.Count != 0)
- {
- throw new InvalidOperationException(Strings.DockPane_ActiveContent_InvalidValue);
- }
- }
-
- IDockContent oldValue = m_activeContent;
-
- if (DockPanel.ActiveAutoHideContent == oldValue)
- {
- DockPanel.ActiveAutoHideContent = null;
- }
-
- m_activeContent = value;
-
- if (DockPanel.DocumentStyle == DocumentStyle.DockingMdi && DockState == DockState.Document)
- {
- if (m_activeContent != null)
- {
- m_activeContent.DockHandler.Form.BringToFront();
- }
- }
- else
- {
- if (m_activeContent != null)
- {
- m_activeContent.DockHandler.SetVisible();
- }
- if (oldValue != null && DisplayingContents.Contains(oldValue))
- {
- oldValue.DockHandler.SetVisible();
- }
- if (IsActivated && m_activeContent != null)
- {
- m_activeContent.DockHandler.Activate();
- }
- }
-
- if (FloatWindow != null)
- {
- FloatWindow.SetText();
- }
-
- if (DockPanel.DocumentStyle == DocumentStyle.DockingMdi &&
- DockState == DockState.Document)
- {
- RefreshChanges(false); // delayed layout to reduce screen flicker
- }
- else
- {
- RefreshChanges();
- }
-
- if (m_activeContent != null)
- {
- TabStripControl.EnsureTabVisible(m_activeContent);
- }
- }
- }
-
- public virtual bool AllowDockDragAndDrop { get; set; } = true;
-
- internal IDisposable AutoHidePane { get; set; } = null;
-
- internal object AutoHideTabs { get; set; } = null;
-
- private object TabPageContextMenu
- {
- get
- {
- IDockContent content = ActiveContent;
-
- if (content == null)
- {
- return null;
- }
-
- if (content.DockHandler.TabPageContextMenuStrip != null)
- {
- return content.DockHandler.TabPageContextMenuStrip;
- }
- else if (content.DockHandler.TabPageContextMenu != null)
- {
- return content.DockHandler.TabPageContextMenu;
- }
- else
- {
- return null;
- }
- }
- }
-
- internal bool HasTabPageContextMenu
- {
- get { return TabPageContextMenu != null; }
- }
-
- private Rectangle CaptionRectangle
- {
- get
- {
- if (!HasCaption)
- {
- return Rectangle.Empty;
- }
-
- Rectangle rectWindow = DisplayingRectangle;
- int x, y, width;
- x = rectWindow.X;
- y = rectWindow.Y;
- width = rectWindow.Width;
- int height = CaptionControl.MeasureHeight();
-
- return new Rectangle(x, y, width, height);
- }
- }
-
- internal Rectangle ContentRectangle
- {
- get
- {
- Rectangle rectWindow = DisplayingRectangle;
- Rectangle rectCaption = CaptionRectangle;
- Rectangle rectTabStrip = TabStripRectangle;
-
- int x = rectWindow.X;
-
- int y = rectWindow.Y + (rectCaption.IsEmpty ? 0 : rectCaption.Height);
- if (DockState == DockState.Document &&
- DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Top)
- {
- y += rectTabStrip.Height;
- }
-
- int width = rectWindow.Width;
- int height = rectWindow.Height - rectCaption.Height - rectTabStrip.Height;
-
- return new Rectangle(x, y, width, height);
- }
- }
-
- internal Rectangle TabStripRectangle
- {
- get
- {
- if (Appearance == AppearanceStyle.ToolWindow)
- {
- return TabStripRectangle_ToolWindow;
- }
- else
- {
- return TabStripRectangle_Document;
- }
- }
- }
-
- private Rectangle TabStripRectangle_ToolWindow
- {
- get
- {
- if (DisplayingContents.Count <= 1 || IsAutoHide)
- {
- return Rectangle.Empty;
- }
-
- Rectangle rectWindow = DisplayingRectangle;
-
- int width = rectWindow.Width;
- int height = TabStripControl.MeasureHeight();
- int x = rectWindow.X;
- int y = rectWindow.Bottom - height;
- Rectangle rectCaption = CaptionRectangle;
- if (rectCaption.Contains(x, y))
- {
- y = rectCaption.Y + rectCaption.Height;
- }
-
- return new Rectangle(x, y, width, height);
- }
- }
-
- private Rectangle TabStripRectangle_Document
- {
- get
- {
- if (DisplayingContents.Count == 0)
- {
- return Rectangle.Empty;
- }
-
- if (DisplayingContents.Count == 1 && DockPanel.DocumentStyle == DocumentStyle.DockingSdi)
- {
- return Rectangle.Empty;
- }
-
- Rectangle rectWindow = DisplayingRectangle;
- int x = rectWindow.X;
- int width = rectWindow.Width;
- int height = TabStripControl.MeasureHeight();
-
- int y = 0;
- if (DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- y = rectWindow.Height - height;
- }
- else
- {
- y = rectWindow.Y;
- }
-
- return new Rectangle(x, y, width, height);
- }
- }
-
- public virtual string CaptionText
- {
- get { return ActiveContent == null ? string.Empty : ActiveContent.DockHandler.TabText; }
- }
-
- public DockContentCollection Contents { get; private set; }
-
- public DockContentCollection DisplayingContents { get; private set; }
-
- public DockPanel DockPanel { get; private set; }
-
- private bool HasCaption
- {
- get
- {
- if (DockState == DockState.Document ||
- DockState == DockState.Hidden ||
- DockState == DockState.Unknown ||
- DockState == DockState.Float && FloatWindow.VisibleNestedPanes.Count <= 1)
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- }
-
- public bool IsActivated { get; private set; } = false;
-
- public bool IsActiveDocumentPane { get; private set; } = false;
-
- public bool IsAutoHide
- {
- get { return DockHelper.IsDockStateAutoHide(DockState); }
- }
-
- public AppearanceStyle Appearance
- {
- get { return DockState == DockState.Document ? AppearanceStyle.Document : AppearanceStyle.ToolWindow; }
- }
-
- internal Rectangle DisplayingRectangle
- {
- get { return ClientRectangle; }
- }
-
- public bool IsHidden { get; private set; } = true;
-
- public DockWindow DockWindow
- {
- get
- {
- return NestedDockingStatus.NestedPanes == null
- ? null
- : NestedDockingStatus.NestedPanes.Container as DockWindow;
- }
- set
- {
- DockWindow oldValue = DockWindow;
- if (oldValue == value)
- {
- return;
- }
-
- DockTo(value);
- }
- }
-
- public FloatWindow FloatWindow
- {
- get
- {
- return NestedDockingStatus.NestedPanes == null
- ? null
- : NestedDockingStatus.NestedPanes.Container as FloatWindow;
- }
- set
- {
- FloatWindow oldValue = FloatWindow;
- if (oldValue == value)
- {
- return;
- }
-
- DockTo(value);
- }
- }
-
- public NestedDockingStatus NestedDockingStatus { get; private set; }
-
- public bool IsFloat { get; private set; }
-
- public INestedPanesContainer NestedPanesContainer
- {
- get
- {
- if (NestedDockingStatus.NestedPanes == null)
- {
- return null;
- }
- else
- {
- return NestedDockingStatus.NestedPanes.Container;
- }
- }
- }
-
- public DockState DockState
- {
- get { return m_dockState; }
- set { SetDockState(value); }
- }
-
- private bool IsRefreshStateChangeSuspended
- {
- get { return m_countRefreshStateChange != 0; }
- }
-
- #endregion
-
- #region Public methods
-
- public bool IsDockStateValid(DockState dockState)
- {
- foreach (IDockContent content in Contents)
- {
- if (!content.DockHandler.IsDockStateValid(dockState))
- {
- return false;
- }
- }
-
- return true;
- }
-
- public void Activate()
- {
- if (DockHelper.IsDockStateAutoHide(DockState) && DockPanel.ActiveAutoHideContent != ActiveContent)
- {
- DockPanel.ActiveAutoHideContent = ActiveContent;
- }
- else if (!IsActivated && ActiveContent != null)
- {
- ActiveContent.DockHandler.Activate();
- }
- }
-
- public void CloseActiveContent()
- {
- CloseContent(ActiveContent);
- }
-
- public void SetContentIndex(IDockContent content, int index)
- {
- int oldIndex = Contents.IndexOf(content);
- if (oldIndex == -1)
- {
- throw new ArgumentException(Strings.DockPane_SetContentIndex_InvalidContent);
- }
-
- if (index < 0 || index > Contents.Count - 1)
- {
- if (index != -1)
- {
- throw new ArgumentOutOfRangeException(Strings.DockPane_SetContentIndex_InvalidIndex);
- }
- }
-
- if (oldIndex == index)
- {
- return;
- }
- if (oldIndex == Contents.Count - 1 && index == -1)
- {
- return;
- }
-
- Contents.Remove(content);
- if (index == -1)
- {
- Contents.Add(content);
- }
- else if (oldIndex < index)
- {
- Contents.AddAt(content, index - 1);
- }
- else
- {
- Contents.AddAt(content, index);
- }
-
- RefreshChanges();
- }
-
- public new void Show()
- {
- Activate();
- }
-
- public DockPane SetDockState(DockState value)
- {
- if (value == DockState.Unknown || value == DockState.Hidden)
- {
- throw new InvalidOperationException(Strings.DockPane_SetDockState_InvalidState);
- }
-
- if (value == DockState.Float == this.IsFloat)
- {
- InternalSetDockState(value);
- return this;
- }
-
- if (DisplayingContents.Count == 0)
- {
- return null;
- }
-
- IDockContent firstContent = null;
- for (int i = 0; i < DisplayingContents.Count; i++)
- {
- IDockContent content = DisplayingContents[i];
- if (content.DockHandler.IsDockStateValid(value))
- {
- firstContent = content;
- break;
- }
- }
- if (firstContent == null)
- {
- return null;
- }
-
- firstContent.DockHandler.DockState = value;
- DockPane pane = firstContent.DockHandler.Pane;
- DockPanel.SuspendLayout(true);
- for (int i = 0; i < DisplayingContents.Count; i++)
- {
- IDockContent content = DisplayingContents[i];
- if (content.DockHandler.IsDockStateValid(value))
- {
- content.DockHandler.Pane = pane;
- }
- }
- DockPanel.ResumeLayout(true, true);
- return pane;
- }
-
- public DockPane DockTo(INestedPanesContainer container)
- {
- if (container == null)
- {
- throw new InvalidOperationException(Strings.DockPane_DockTo_NullContainer);
- }
-
- DockAlignment alignment;
- if (container.DockState == DockState.DockLeft || container.DockState == DockState.DockRight)
- {
- alignment = DockAlignment.Bottom;
- }
- else
- {
- alignment = DockAlignment.Right;
- }
-
- return DockTo(container, container.NestedPanes.GetDefaultPreviousPane(this), alignment, 0.5);
- }
-
- public DockPane DockTo(INestedPanesContainer container, DockPane previousPane, DockAlignment alignment,
- double proportion)
- {
- if (container == null)
- {
- throw new InvalidOperationException(Strings.DockPane_DockTo_NullContainer);
- }
-
- if (container.IsFloat == this.IsFloat)
- {
- InternalAddToDockList(container, previousPane, alignment, proportion);
- return this;
- }
-
- IDockContent firstContent = GetFirstContent(container.DockState);
- if (firstContent == null)
- {
- return null;
- }
-
- DockPane pane;
- DockPanel.DummyContent.DockPanel = DockPanel;
- if (container.IsFloat)
- {
- pane = DockPanel.DockPaneFactory.CreateDockPane(DockPanel.DummyContent, (FloatWindow) container, true);
- }
- else
- {
- pane = DockPanel.DockPaneFactory.CreateDockPane(DockPanel.DummyContent, container.DockState, true);
- }
-
- pane.DockTo(container, previousPane, alignment, proportion);
- SetVisibleContentsToPane(pane);
- DockPanel.DummyContent.DockPanel = null;
-
- return pane;
- }
-
- public void SetNestedDockingProportion(double proportion)
- {
- NestedDockingStatus.SetStatus(NestedDockingStatus.NestedPanes, NestedDockingStatus.PreviousPane,
- NestedDockingStatus.Alignment, proportion);
- if (NestedPanesContainer != null)
- {
- ((Control) NestedPanesContainer).PerformLayout();
- }
- }
-
- public DockPane Float()
- {
- DockPanel.SuspendLayout(true);
-
- IDockContent activeContent = ActiveContent;
-
- DockPane floatPane = GetFloatPaneFromContents();
- if (floatPane == null)
- {
- IDockContent firstContent = GetFirstContent(DockState.Float);
- if (firstContent == null)
- {
- DockPanel.ResumeLayout(true, true);
- return null;
- }
- floatPane = DockPanel.DockPaneFactory.CreateDockPane(firstContent, DockState.Float, true);
- }
- SetVisibleContentsToPane(floatPane, activeContent);
-
- DockPanel.ResumeLayout(true, true);
- return floatPane;
- }
-
- public void RestoreToPanel()
- {
- DockPanel.SuspendLayout(true);
-
- IDockContent activeContent = DockPanel.ActiveContent;
-
- for (int i = DisplayingContents.Count - 1; i >= 0; i--)
- {
- IDockContent content = DisplayingContents[i];
- if (content.DockHandler.CheckDockState(false) != DockState.Unknown)
- {
- content.DockHandler.IsFloat = false;
- }
- }
-
- DockPanel.ResumeLayout(true, true);
- }
-
- #endregion
-
- #region Internals
-
- internal void ShowTabPageContextMenu(Control control, Point position)
- {
- object menu = TabPageContextMenu;
-
- if (menu == null)
- {
- return;
- }
-
- if (menu is ContextMenuStrip contextMenuStrip)
- {
- contextMenuStrip.Show(control, position);
- return;
- }
-
- if (menu is ContextMenuStrip contextMenu)
- {
- contextMenu.Show(this, position);
- }
- }
-
- internal void SetIsActivated(bool value)
- {
- if (IsActivated == value)
- {
- return;
- }
-
- IsActivated = value;
- if (DockState != DockState.Document)
- {
- RefreshChanges(false);
- }
- OnIsActivatedChanged(EventArgs.Empty);
- }
-
- internal void SetIsActiveDocumentPane(bool value)
- {
- if (IsActiveDocumentPane == value)
- {
- return;
- }
-
- IsActiveDocumentPane = value;
- if (DockState == DockState.Document)
- {
- RefreshChanges();
- }
- OnIsActiveDocumentPaneChanged(EventArgs.Empty);
- }
-
- internal void AddContent(IDockContent content)
- {
- if (Contents.Contains(content))
- {
- return;
- }
-
- Contents.Add(content);
- }
-
- internal void Close()
- {
- Dispose();
- }
-
- internal void CloseContent(IDockContent content)
- {
- DockPanel dockPanel = DockPanel;
-
- if (content == null)
- {
- return;
- }
-
- if (!content.DockHandler.CloseButton)
- {
- return;
- }
-
- dockPanel.SuspendLayout(true);
-
- try
- {
- if (content.DockHandler.HideOnClose)
- {
- content.DockHandler.Hide();
- NestedDockingStatus.NestedPanes.SwitchPaneWithFirstChild(this);
- }
- else
- {
- content.DockHandler.Close();
- }
- }
- finally
- {
- dockPanel.ResumeLayout(true, true);
- }
- }
-
- internal void SetContentBounds()
- {
- Rectangle rectContent = ContentRectangle;
- if (DockState == DockState.Document && DockPanel.DocumentStyle == DocumentStyle.DockingMdi)
- {
- rectContent = DockPanel.RectangleToMdiClient(RectangleToScreen(rectContent));
- }
-
- Rectangle rectInactive =
- new Rectangle(-rectContent.Width, rectContent.Y, rectContent.Width, rectContent.Height);
- foreach (IDockContent content in Contents)
- {
- if (content.DockHandler.Pane == this)
- {
- if (content == ActiveContent)
- {
- content.DockHandler.Form.Bounds = rectContent;
- }
- else
- {
- content.DockHandler.Form.Bounds = rectInactive;
- }
- }
- }
- }
-
- internal void RefreshChanges()
- {
- RefreshChanges(true);
- }
-
- internal void RemoveContent(IDockContent content)
- {
- if (!Contents.Contains(content))
- {
- return;
- }
-
- Contents.Remove(content);
- }
-
- internal void TestDrop(IDockDragSource dragSource, DockOutlineBase dockOutline)
- {
- if (!dragSource.CanDockTo(this))
- {
- return;
- }
-
- Point ptMouse = Control.MousePosition;
-
- HitTestResult hitTestResult = GetHitTest(ptMouse);
- if (hitTestResult.HitArea == HitTestArea.Caption)
- {
- dockOutline.Show(this, -1);
- }
- else if (hitTestResult.HitArea == HitTestArea.TabStrip && hitTestResult.Index != -1)
- {
- dockOutline.Show(this, hitTestResult.Index);
- }
- }
-
- internal void ValidateActiveContent()
- {
- if (ActiveContent == null)
- {
- if (DisplayingContents.Count != 0)
- {
- ActiveContent = DisplayingContents[0];
- }
- return;
- }
-
- if (DisplayingContents.IndexOf(ActiveContent) >= 0)
- {
- return;
- }
-
- IDockContent prevVisible = null;
- for (int i = Contents.IndexOf(ActiveContent) - 1; i >= 0; i--)
- {
- if (Contents[i].DockHandler.DockState == DockState)
- {
- prevVisible = Contents[i];
- break;
- }
- }
-
- IDockContent nextVisible = null;
- for (int i = Contents.IndexOf(ActiveContent) + 1; i < Contents.Count; i++)
- {
- if (Contents[i].DockHandler.DockState == DockState)
- {
- nextVisible = Contents[i];
- break;
- }
- }
-
- if (prevVisible != null)
- {
- ActiveContent = prevVisible;
- }
- else if (nextVisible != null)
- {
- ActiveContent = nextVisible;
- }
- else
- {
- ActiveContent = null;
- }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- m_dockState = DockState.Unknown;
-
- if (NestedPanesContainer != null)
- {
- NestedPanesContainer.NestedPanes.Remove(this);
- }
-
- if (DockPanel != null)
- {
- DockPanel.RemovePane(this);
- DockPanel = null;
- }
-
- Splitter.Dispose();
- if (AutoHidePane != null)
- {
- AutoHidePane.Dispose();
- }
- }
- base.Dispose(disposing);
- }
-
- protected override void OnLayout(LayoutEventArgs levent)
- {
- SetIsHidden(DisplayingContents.Count == 0);
- if (!IsHidden)
- {
- CaptionControl.Bounds = CaptionRectangle;
- TabStripControl.Bounds = TabStripRectangle;
-
- SetContentBounds();
-
- foreach (IDockContent content in Contents)
- {
- if (DisplayingContents.Contains(content))
- {
- if (content.DockHandler.FlagClipWindow && content.DockHandler.Form.Visible)
- {
- content.DockHandler.FlagClipWindow = false;
- }
- }
- }
- }
-
- base.OnLayout(levent);
- }
-
- protected override void WndProc(ref Message m)
- {
- if (m.Msg == (int) Win32.Msgs.WM_MOUSEACTIVATE)
- {
- Activate();
- }
-
- base.WndProc(ref m);
- }
-
- #endregion
-
- #region Private Methods
-
- private void InternalConstruct(IDockContent content, DockState dockState, bool flagBounds,
- Rectangle floatWindowBounds, DockPane prevPane, DockAlignment alignment, double proportion, bool show)
- {
- if (dockState == DockState.Hidden || dockState == DockState.Unknown)
- {
- throw new ArgumentException(Strings.DockPane_SetDockState_InvalidState);
- }
-
- if (content == null)
- {
- throw new ArgumentNullException(Strings.DockPane_Constructor_NullContent);
- }
-
- if (content.DockHandler.DockPanel == null)
- {
- throw new ArgumentException(Strings.DockPane_Constructor_NullDockPanel);
- }
-
-
- SuspendLayout();
- SetStyle(ControlStyles.Selectable, false);
-
- IsFloat = dockState == DockState.Float;
-
- Contents = new DockContentCollection();
- DisplayingContents = new DockContentCollection(this);
- DockPanel = content.DockHandler.DockPanel;
- DockPanel.AddPane(this);
-
- Splitter = new SplitterControl(this);
-
- NestedDockingStatus = new NestedDockingStatus(this);
-
- CaptionControl = DockPanel.DockPaneCaptionFactory.CreateDockPaneCaption(this);
- TabStripControl = DockPanel.DockPaneStripFactory.CreateDockPaneStrip(this);
- Controls.AddRange(new Control[] {CaptionControl, TabStripControl});
-
- DockPanel.SuspendLayout(true);
- if (flagBounds)
- {
- FloatWindow = DockPanel.FloatWindowFactory.CreateFloatWindow(DockPanel, this, floatWindowBounds);
- }
- else if (prevPane != null)
- {
- DockTo(prevPane.NestedPanesContainer, prevPane, alignment, proportion);
- }
-
- SetDockState(dockState);
- if (show)
- {
- content.DockHandler.Pane = this;
- }
- else if (this.IsFloat)
- {
- content.DockHandler.FloatPane = this;
- }
- else
- {
- content.DockHandler.PanelPane = this;
- }
-
- ResumeLayout();
- DockPanel.ResumeLayout(true, true);
- }
-
- private HitTestResult GetHitTest(Point ptMouse)
- {
- Point ptMouseClient = PointToClient(ptMouse);
-
- Rectangle rectCaption = CaptionRectangle;
- if (rectCaption.Contains(ptMouseClient))
- {
- return new HitTestResult(HitTestArea.Caption, -1);
- }
-
- Rectangle rectContent = ContentRectangle;
- if (rectContent.Contains(ptMouseClient))
- {
- return new HitTestResult(HitTestArea.Content, -1);
- }
-
- Rectangle rectTabStrip = TabStripRectangle;
- if (rectTabStrip.Contains(ptMouseClient))
- {
- return new HitTestResult(HitTestArea.TabStrip,
- TabStripControl.HitTest(TabStripControl.PointToClient(ptMouse)));
- }
-
- return new HitTestResult(HitTestArea.None, -1);
- }
-
- private void SetIsHidden(bool value)
- {
- if (IsHidden == value)
- {
- return;
- }
-
- IsHidden = value;
- if (DockHelper.IsDockStateAutoHide(DockState))
- {
- DockPanel.RefreshAutoHideStrip();
- DockPanel.PerformLayout();
- }
- else if (NestedPanesContainer != null)
- {
- ((Control) NestedPanesContainer).PerformLayout();
- }
- }
-
- private void RefreshChanges(bool performLayout)
- {
- if (IsDisposed)
- {
- return;
- }
-
- CaptionControl.RefreshChanges();
- TabStripControl.RefreshChanges();
- if (DockState == DockState.Float && FloatWindow != null)
- {
- FloatWindow.RefreshChanges();
- }
- if (DockHelper.IsDockStateAutoHide(DockState) && DockPanel != null)
- {
- DockPanel.RefreshAutoHideStrip();
- DockPanel.PerformLayout();
- }
-
- if (performLayout)
- {
- PerformLayout();
- }
- }
-
- private void SetParent()
- {
- if (DockState == DockState.Unknown || DockState == DockState.Hidden)
- {
- SetParent(null);
- Splitter.Parent = null;
- }
- else if (DockState == DockState.Float)
- {
- SetParent(FloatWindow);
- Splitter.Parent = FloatWindow;
- }
- else if (DockHelper.IsDockStateAutoHide(DockState))
- {
- SetParent(DockPanel.AutoHideControl);
- Splitter.Parent = null;
- }
- else
- {
- SetParent(DockPanel.DockWindows[DockState]);
- Splitter.Parent = Parent;
- }
- }
-
- private void SetParent(Control value)
- {
- if (Parent == value)
- {
- return;
- }
-
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- // Workaround of .Net Framework bug:
- // Change the parent of a control with focus may result in the first
- // MDI child form get activated.
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- IDockContent contentFocused = GetFocusedContent();
- if (contentFocused != null)
- {
- DockPanel.SaveFocus();
- }
-
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- Parent = value;
-
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- // Workaround of .Net Framework bug:
- // Change the parent of a control with focus may result in the first
- // MDI child form get activated.
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- if (contentFocused != null)
- {
- contentFocused.DockHandler.Activate();
- }
- //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- }
-
- private void InternalSetDockState(DockState value)
- {
- if (m_dockState == value)
- {
- return;
- }
-
- DockState oldDockState = m_dockState;
- INestedPanesContainer oldContainer = NestedPanesContainer;
-
- m_dockState = value;
-
- SuspendRefreshStateChange();
-
- IDockContent contentFocused = GetFocusedContent();
- if (contentFocused != null)
- {
- DockPanel.SaveFocus();
- }
-
- if (!IsFloat)
- {
- DockWindow = DockPanel.DockWindows[DockState];
- }
- else if (FloatWindow == null)
- {
- FloatWindow = DockPanel.FloatWindowFactory.CreateFloatWindow(DockPanel, this);
- }
-
- if (contentFocused != null)
- {
- DockPanel.ContentFocusManager.Activate(contentFocused);
- }
-
- ResumeRefreshStateChange(oldContainer, oldDockState);
- }
-
- private void SuspendRefreshStateChange()
- {
- m_countRefreshStateChange++;
- DockPanel.SuspendLayout(true);
- }
-
- private void ResumeRefreshStateChange()
- {
- m_countRefreshStateChange--;
- System.Diagnostics.Debug.Assert(m_countRefreshStateChange >= 0);
- DockPanel.ResumeLayout(true, true);
- }
-
- private void ResumeRefreshStateChange(INestedPanesContainer oldContainer, DockState oldDockState)
- {
- ResumeRefreshStateChange();
- RefreshStateChange(oldContainer, oldDockState);
- }
-
- private void RefreshStateChange(INestedPanesContainer oldContainer, DockState oldDockState)
- {
- lock (this)
- {
- if (IsRefreshStateChangeSuspended)
- {
- return;
- }
-
- SuspendRefreshStateChange();
- }
-
- DockPanel.SuspendLayout(true);
-
- IDockContent contentFocused = GetFocusedContent();
- if (contentFocused != null)
- {
- DockPanel.SaveFocus();
- }
- SetParent();
-
- if (ActiveContent != null)
- {
- ActiveContent.DockHandler.SetDockState(ActiveContent.DockHandler.IsHidden, DockState,
- ActiveContent.DockHandler.Pane);
- }
- foreach (IDockContent content in Contents)
- {
- if (content.DockHandler.Pane == this)
- {
- content.DockHandler.SetDockState(content.DockHandler.IsHidden, DockState, content.DockHandler.Pane);
- }
- }
-
- if (oldContainer != null)
- {
- Control oldContainerControl = (Control) oldContainer;
- if (oldContainer.DockState == oldDockState && !oldContainerControl.IsDisposed)
- {
- oldContainerControl.PerformLayout();
- }
- }
- if (DockHelper.IsDockStateAutoHide(oldDockState))
- {
- DockPanel.RefreshActiveAutoHideContent();
- }
-
- if (NestedPanesContainer.DockState == DockState)
- {
- ((Control) NestedPanesContainer).PerformLayout();
- }
- if (DockHelper.IsDockStateAutoHide(DockState))
- {
- DockPanel.RefreshActiveAutoHideContent();
- }
-
- if (DockHelper.IsDockStateAutoHide(oldDockState) ||
- DockHelper.IsDockStateAutoHide(DockState))
- {
- DockPanel.RefreshAutoHideStrip();
- DockPanel.PerformLayout();
- }
-
- ResumeRefreshStateChange();
-
- if (contentFocused != null)
- {
- contentFocused.DockHandler.Activate();
- }
-
- DockPanel.ResumeLayout(true, true);
-
- if (oldDockState != DockState)
- {
- OnDockStateChanged(EventArgs.Empty);
- }
- }
-
- private IDockContent GetFocusedContent()
- {
- IDockContent contentFocused = null;
- foreach (IDockContent content in Contents)
- {
- if (content.DockHandler.Form.ContainsFocus)
- {
- contentFocused = content;
- break;
- }
- }
-
- return contentFocused;
- }
-
- private void SetVisibleContentsToPane(DockPane pane)
- {
- SetVisibleContentsToPane(pane, ActiveContent);
- }
-
- private void SetVisibleContentsToPane(DockPane pane, IDockContent activeContent)
- {
- for (int i = 0; i < DisplayingContents.Count; i++)
- {
- IDockContent content = DisplayingContents[i];
- if (content.DockHandler.IsDockStateValid(pane.DockState))
- {
- content.DockHandler.Pane = pane;
- i--;
- }
- }
-
- if (activeContent.DockHandler.Pane == pane)
- {
- pane.ActiveContent = activeContent;
- }
- }
-
- private void InternalAddToDockList(INestedPanesContainer container, DockPane prevPane, DockAlignment alignment,
- double proportion)
- {
- if (container.DockState == DockState.Float != IsFloat)
- {
- throw new InvalidOperationException(Strings.DockPane_DockTo_InvalidContainer);
- }
-
- int count = container.NestedPanes.Count;
- if (container.NestedPanes.Contains(this))
- {
- count--;
- }
- if (prevPane == null && count > 0)
- {
- throw new InvalidOperationException(Strings.DockPane_DockTo_NullPrevPane);
- }
-
- if (prevPane != null && !container.NestedPanes.Contains(prevPane))
- {
- throw new InvalidOperationException(Strings.DockPane_DockTo_NoPrevPane);
- }
-
- if (prevPane == this)
- {
- throw new InvalidOperationException(Strings.DockPane_DockTo_SelfPrevPane);
- }
-
- INestedPanesContainer oldContainer = NestedPanesContainer;
- DockState oldDockState = DockState;
- container.NestedPanes.Add(this);
- NestedDockingStatus.SetStatus(container.NestedPanes, prevPane, alignment, proportion);
-
- if (DockHelper.IsDockWindowState(DockState))
- {
- m_dockState = container.DockState;
- }
-
- RefreshStateChange(oldContainer, oldDockState);
- }
-
- private DockPane GetFloatPaneFromContents()
- {
- DockPane floatPane = null;
- for (int i = 0; i < DisplayingContents.Count; i++)
- {
- IDockContent content = DisplayingContents[i];
- if (!content.DockHandler.IsDockStateValid(DockState.Float))
- {
- continue;
- }
-
- if (floatPane != null && content.DockHandler.FloatPane != floatPane)
- {
- return null;
- }
- else
- {
- floatPane = content.DockHandler.FloatPane;
- }
- }
-
- return floatPane;
- }
-
- private IDockContent GetFirstContent(DockState dockState)
- {
- for (int i = 0; i < DisplayingContents.Count; i++)
- {
- IDockContent content = DisplayingContents[i];
- if (content.DockHandler.IsDockStateValid(dockState))
- {
- return content;
- }
- }
- return null;
- }
-
- #endregion
-
- protected virtual void OnDockStateChanged(EventArgs e)
- {
- EventHandler handler = (EventHandler) Events[DockStateChangedEvent];
- if (handler != null)
- {
- handler(this, e);
- }
- }
-
- protected virtual void OnIsActivatedChanged(EventArgs e)
- {
- EventHandler handler = (EventHandler) Events[IsActivatedChangedEvent];
- if (handler != null)
- {
- handler(this, e);
- }
- }
-
- protected virtual void OnIsActiveDocumentPaneChanged(EventArgs e)
- {
- EventHandler handler = (EventHandler) Events[IsActiveDocumentPaneChangedEvent];
- if (handler != null)
- {
- handler(this, e);
- }
- }
-
- private enum HitTestArea
- {
- Caption,
- TabStrip,
- Content,
- None
- }
-
- private struct HitTestResult
- {
- public readonly HitTestArea HitArea;
- public readonly int Index;
-
- public HitTestResult(HitTestArea hitTestArea, int index)
- {
- HitArea = hitTestArea;
- Index = index;
- }
- }
-
- public enum AppearanceStyle
- {
- ToolWindow,
- Document
- }
-
- #region IDockDragSource Members
-
- #region IDragSource Members
-
- Control IDragSource.DragControl
- {
- get { return this; }
- }
-
- #endregion
-
- bool IDockDragSource.IsDockStateValid(DockState dockState)
- {
- return IsDockStateValid(dockState);
- }
-
- bool IDockDragSource.CanDockTo(DockPane pane)
- {
- if (!IsDockStateValid(pane.DockState))
- {
- return false;
- }
-
- if (pane == this)
- {
- return false;
- }
-
- return true;
- }
-
- Rectangle IDockDragSource.BeginDrag(Point ptMouse)
- {
- Point location = PointToScreen(new Point(0, 0));
- Size size;
-
- DockPane floatPane = ActiveContent.DockHandler.FloatPane;
- if (DockState == DockState.Float || floatPane == null || floatPane.FloatWindow.NestedPanes.Count != 1)
- {
- size = DockPanel.DefaultFloatWindowSize;
- }
- else
- {
- size = floatPane.FloatWindow.Size;
- }
-
- if (ptMouse.X > location.X + size.Width)
- {
- location.X += ptMouse.X - (location.X + size.Width) + Measures.SplitterSize;
- }
-
- return new Rectangle(location, size);
- }
-
- public void FloatAt(Rectangle floatWindowBounds)
- {
- if (FloatWindow == null || FloatWindow.NestedPanes.Count != 1)
- {
- FloatWindow = DockPanel.FloatWindowFactory.CreateFloatWindow(DockPanel, this, floatWindowBounds);
- }
- else
- {
- FloatWindow.Bounds = floatWindowBounds;
- }
-
- DockState = DockState.Float;
-
- NestedDockingStatus.NestedPanes.Remove(this);
- }
-
- public void DockTo(DockPane pane, DockStyle dockStyle, int contentIndex)
- {
- if (dockStyle == DockStyle.Fill)
- {
- IDockContent activeContent = ActiveContent;
- for (int i = Contents.Count - 1; i >= 0; i--)
- {
- IDockContent c = Contents[i];
- if (c.DockHandler.DockState == DockState)
- {
- c.DockHandler.Pane = pane;
- if (contentIndex != -1)
- {
- pane.SetContentIndex(c, contentIndex);
- }
- }
- }
- pane.ActiveContent = activeContent;
- }
- else
- {
- if (dockStyle == DockStyle.Left)
- {
- DockTo(pane.NestedPanesContainer, pane, DockAlignment.Left, 0.5);
- }
- else if (dockStyle == DockStyle.Right)
- {
- DockTo(pane.NestedPanesContainer, pane, DockAlignment.Right, 0.5);
- }
- else if (dockStyle == DockStyle.Top)
- {
- DockTo(pane.NestedPanesContainer, pane, DockAlignment.Top, 0.5);
- }
- else if (dockStyle == DockStyle.Bottom)
- {
- DockTo(pane.NestedPanesContainer, pane, DockAlignment.Bottom, 0.5);
- }
-
- DockState = pane.DockState;
- }
- }
-
- public void DockTo(DockPanel panel, DockStyle dockStyle)
- {
- if (panel != DockPanel)
- {
- throw new ArgumentException(Strings.IDockDragSource_DockTo_InvalidPanel, "panel");
- }
-
- if (dockStyle == DockStyle.Top)
- {
- DockState = DockState.DockTop;
- }
- else if (dockStyle == DockStyle.Bottom)
- {
- DockState = DockState.DockBottom;
- }
- else if (dockStyle == DockStyle.Left)
- {
- DockState = DockState.DockLeft;
- }
- else if (dockStyle == DockStyle.Right)
- {
- DockState = DockState.DockRight;
- }
- else if (dockStyle == DockStyle.Fill)
- {
- DockState = DockState.Document;
- }
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPaneCaptionBase.cs b/src/WinFormsUI/Docking/DockPaneCaptionBase.cs
deleted file mode 100644
index 2c2d5f92..00000000
--- a/src/WinFormsUI/Docking/DockPaneCaptionBase.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public abstract class DockPaneCaptionBase : Control
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- protected internal DockPaneCaptionBase(DockPane pane)
- {
- DockPane = pane;
-
- SetStyle(ControlStyles.OptimizedDoubleBuffer |
- ControlStyles.ResizeRedraw |
- ControlStyles.UserPaint |
- ControlStyles.AllPaintingInWmPaint, true);
- SetStyle(ControlStyles.Selectable, false);
- }
-
- #endregion
-
- #region Properties
-
- protected DockPane DockPane { get; }
-
- protected DockPane.AppearanceStyle Appearance
- {
- get { return DockPane.Appearance; }
- }
-
- protected bool HasTabPageContextMenu
- {
- get { return DockPane.HasTabPageContextMenu; }
- }
-
- #endregion
-
- #region Internals
-
- internal void RefreshChanges()
- {
- if (IsDisposed)
- {
- return;
- }
-
- OnRefreshChanges();
- }
-
- #endregion
-
- #region Overrides
-
- protected override void OnMouseUp(MouseEventArgs e)
- {
- base.OnMouseUp(e);
-
- if (e.Button == MouseButtons.Right)
- {
- ShowTabPageContextMenu(new Point(e.X, e.Y));
- }
- }
-
- protected override void OnMouseDown(MouseEventArgs e)
- {
- base.OnMouseDown(e);
-
- if (e.Button == MouseButtons.Left &&
- DockPane.DockPanel.AllowEndUserDocking &&
- DockPane.AllowDockDragAndDrop &&
- !DockHelper.IsDockStateAutoHide(DockPane.DockState) &&
- DockPane.ActiveContent != null)
- {
- DockPane.DockPanel.BeginDrag(DockPane);
- }
- }
-
- protected override void WndProc(ref Message m)
- {
- if (m.Msg == (int) Win32.Msgs.WM_LBUTTONDBLCLK)
- {
- if (DockHelper.IsDockStateAutoHide(DockPane.DockState))
- {
- DockPane.DockPanel.ActiveAutoHideContent = null;
- return;
- }
-
- if (DockPane.IsFloat)
- {
- DockPane.RestoreToPanel();
- }
- else
- {
- DockPane.Float();
- }
- }
- base.WndProc(ref m);
- }
-
- #endregion
-
- protected void ShowTabPageContextMenu(Point position)
- {
- DockPane.ShowTabPageContextMenu(this, position);
- }
-
- protected virtual void OnRightToLeftLayoutChanged()
- {
- }
-
- protected virtual void OnRefreshChanges()
- {
- }
-
- protected internal abstract int MeasureHeight();
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPaneCollection.cs b/src/WinFormsUI/Docking/DockPaneCollection.cs
deleted file mode 100644
index 3ff997c3..00000000
--- a/src/WinFormsUI/Docking/DockPaneCollection.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using System;
-using System.Collections.ObjectModel;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public class DockPaneCollection : ReadOnlyCollection
- {
- #region cTor
-
- internal DockPaneCollection()
- : base(new List())
- {
- }
-
- #endregion
-
- #region Internals
-
- internal int Add(DockPane pane)
- {
- if (Items.Contains(pane))
- {
- return Items.IndexOf(pane);
- }
-
- Items.Add(pane);
- return Count - 1;
- }
-
- internal void AddAt(DockPane pane, int index)
- {
- if (index < 0 || index > Items.Count - 1)
- {
- return;
- }
-
- if (Contains(pane))
- {
- return;
- }
-
- Items.Insert(index, pane);
- }
-
- internal void Dispose()
- {
- for (int i = Count - 1; i >= 0; i--)
- {
- this[i].Close();
- }
- }
-
- internal void Remove(DockPane pane)
- {
- Items.Remove(pane);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPaneStripBase.cs b/src/WinFormsUI/Docking/DockPaneStripBase.cs
deleted file mode 100644
index 62fce1bf..00000000
--- a/src/WinFormsUI/Docking/DockPaneStripBase.cs
+++ /dev/null
@@ -1,327 +0,0 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics.CodeAnalysis;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public abstract class DockPaneStripBase : Control
- {
- #region Fields
-
- private TabCollection m_tabs = null;
-
- #endregion
-
- #region cTor
-
- protected DockPaneStripBase(DockPane pane)
- {
- DockPane = pane;
-
- SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
- SetStyle(ControlStyles.Selectable, false);
- AllowDrop = true;
- }
-
- #endregion
-
- #region Properties
-
- protected DockPane DockPane { get; }
-
- protected DockPane.AppearanceStyle Appearance
- {
- get { return DockPane.Appearance; }
- }
-
- protected TabCollection Tabs
- {
- get
- {
- if (m_tabs == null)
- {
- m_tabs = new TabCollection(DockPane);
- }
-
- return m_tabs;
- }
- }
-
- protected bool HasTabPageContextMenu
- {
- get { return DockPane.HasTabPageContextMenu; }
- }
-
- #endregion
-
- #region Internals
-
- internal void RefreshChanges()
- {
- if (IsDisposed)
- {
- return;
- }
-
- OnRefreshChanges();
- }
-
- #endregion
-
- #region Overrides
-
- protected override void OnMouseDown(MouseEventArgs e)
- {
- base.OnMouseDown(e);
-
- int index = HitTest();
- if (index != -1)
- {
- IDockContent content = Tabs[index].Content;
- if (DockPane.ActiveContent != content)
- {
- DockPane.ActiveContent = content;
- }
- }
-
- if (e.Button == MouseButtons.Left)
- {
- if (DockPane.DockPanel.AllowEndUserDocking && DockPane.AllowDockDragAndDrop &&
- DockPane.ActiveContent.DockHandler.AllowEndUserDocking)
- {
- DockPane.DockPanel.BeginDrag(DockPane.ActiveContent.DockHandler);
- }
- }
- }
-
- protected override void OnMouseUp(MouseEventArgs e)
- {
- base.OnMouseUp(e);
-
- if (e.Button == MouseButtons.Right)
- {
- ShowTabPageContextMenu(new Point(e.X, e.Y));
- }
- else if (e.Button == MouseButtons.Middle &&
- DockPane.Appearance == Docking.DockPane.AppearanceStyle.Document)
- {
- // Get the content located under the click (if there is one)
- int index = HitTest();
- if (index != -1)
- {
- // Close the specified content.
- IDockContent content = Tabs[index].Content;
- DockPane.CloseContent(content);
- }
- }
- }
-
- protected override void WndProc(ref Message m)
- {
- if (m.Msg == (int) Win32.Msgs.WM_LBUTTONDBLCLK)
- {
- base.WndProc(ref m);
-
- int index = HitTest();
- if (DockPane.DockPanel.AllowEndUserDocking && index != -1)
- {
- IDockContent content = Tabs[index].Content;
- if (content.DockHandler.CheckDockState(!content.DockHandler.IsFloat) != DockState.Unknown)
- {
- content.DockHandler.IsFloat = !content.DockHandler.IsFloat;
- }
- }
-
- return;
- }
-
- base.WndProc(ref m);
- return;
- }
-
- protected override void OnDragOver(DragEventArgs drgevent)
- {
- base.OnDragOver(drgevent);
-
- int index = HitTest();
- if (index != -1)
- {
- IDockContent content = Tabs[index].Content;
- if (DockPane.ActiveContent != content)
- {
- DockPane.ActiveContent = content;
- }
- }
- }
-
- #endregion
-
- protected virtual void OnRefreshChanges()
- {
- }
-
- protected internal abstract int MeasureHeight();
-
- protected internal abstract void EnsureTabVisible(IDockContent content);
-
- protected int HitTest()
- {
- return HitTest(PointToClient(Control.MousePosition));
- }
-
- protected internal abstract int HitTest(Point point);
-
- protected internal abstract GraphicsPath GetOutline(int index);
-
- protected internal virtual Tab CreateTab(IDockContent content)
- {
- return new Tab(content);
- }
-
- protected void ShowTabPageContextMenu(Point position)
- {
- DockPane.ShowTabPageContextMenu(this, position);
- }
-
- [SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
- protected internal class Tab : IDisposable
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public Tab(IDockContent content)
- {
- Content = content;
- }
-
- #endregion
-
- #region Properties
-
- public IDockContent Content { get; }
-
- public Form ContentForm
- {
- get { return Content as Form; }
- }
-
- #endregion
-
- #region Public methods
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- #endregion
-
- ~Tab()
- {
- Dispose(false);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- }
- }
-
- [SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
- protected sealed class TabCollection : IEnumerable
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- internal TabCollection(DockPane pane)
- {
- DockPane = pane;
- }
-
- #endregion
-
- #region Properties
-
- public DockPane DockPane { get; }
-
- public int Count
- {
- get { return DockPane.DisplayingContents.Count; }
- }
-
- public Tab this[int index]
- {
- get
- {
- IDockContent content = DockPane.DisplayingContents[index];
- if (content == null)
- {
- throw new ArgumentOutOfRangeException("index");
- }
- return content.DockHandler.GetTab(DockPane.TabStripControl);
- }
- }
-
- #endregion
-
- #region Public methods
-
- public bool Contains(Tab tab)
- {
- return IndexOf(tab) != -1;
- }
-
- public bool Contains(IDockContent content)
- {
- return IndexOf(content) != -1;
- }
-
- public int IndexOf(Tab tab)
- {
- if (tab == null)
- {
- return -1;
- }
-
- return DockPane.DisplayingContents.IndexOf(tab.Content);
- }
-
- public int IndexOf(IDockContent content)
- {
- return DockPane.DisplayingContents.IndexOf(content);
- }
-
- #endregion
-
- #region IEnumerable Members
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- for (int i = 0; i < Count; i++)
- {
- yield return this[i];
- }
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- for (int i = 0; i < Count; i++)
- {
- yield return this[i];
- }
- }
-
- #endregion
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPanel.AutoHideWindow.cs b/src/WinFormsUI/Docking/DockPanel.AutoHideWindow.cs
deleted file mode 100644
index 068dcb29..00000000
--- a/src/WinFormsUI/Docking/DockPanel.AutoHideWindow.cs
+++ /dev/null
@@ -1,768 +0,0 @@
-using System;
-using System.Windows.Forms;
-using System.Drawing;
-using System.Runtime.InteropServices;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- partial class DockPanel
- {
- #region Properties
-
- private AutoHideWindowControl AutoHideWindow { get; }
-
- internal Control AutoHideControl
- {
- get { return AutoHideWindow; }
- }
-
- internal Rectangle AutoHideWindowRectangle
- {
- get
- {
- DockState state = AutoHideWindow.DockState;
- Rectangle rectDockArea = DockArea;
- if (ActiveAutoHideContent == null)
- {
- return Rectangle.Empty;
- }
-
- if (Parent == null)
- {
- return Rectangle.Empty;
- }
-
- Rectangle rect = Rectangle.Empty;
- double autoHideSize = ActiveAutoHideContent.DockHandler.AutoHidePortion;
- if (state == DockState.DockLeftAutoHide)
- {
- if (autoHideSize < 1)
- {
- autoHideSize = rectDockArea.Width * autoHideSize;
- }
- if (autoHideSize > rectDockArea.Width - MeasurePane.MinSize)
- {
- autoHideSize = rectDockArea.Width - MeasurePane.MinSize;
- }
- rect.X = rectDockArea.X;
- rect.Y = rectDockArea.Y;
- rect.Width = (int) autoHideSize;
- rect.Height = rectDockArea.Height;
- }
- else if (state == DockState.DockRightAutoHide)
- {
- if (autoHideSize < 1)
- {
- autoHideSize = rectDockArea.Width * autoHideSize;
- }
- if (autoHideSize > rectDockArea.Width - MeasurePane.MinSize)
- {
- autoHideSize = rectDockArea.Width - MeasurePane.MinSize;
- }
- rect.X = rectDockArea.X + rectDockArea.Width - (int) autoHideSize;
- rect.Y = rectDockArea.Y;
- rect.Width = (int) autoHideSize;
- rect.Height = rectDockArea.Height;
- }
- else if (state == DockState.DockTopAutoHide)
- {
- if (autoHideSize < 1)
- {
- autoHideSize = rectDockArea.Height * autoHideSize;
- }
- if (autoHideSize > rectDockArea.Height - MeasurePane.MinSize)
- {
- autoHideSize = rectDockArea.Height - MeasurePane.MinSize;
- }
- rect.X = rectDockArea.X;
- rect.Y = rectDockArea.Y;
- rect.Width = rectDockArea.Width;
- rect.Height = (int) autoHideSize;
- }
- else if (state == DockState.DockBottomAutoHide)
- {
- if (autoHideSize < 1)
- {
- autoHideSize = rectDockArea.Height * autoHideSize;
- }
- if (autoHideSize > rectDockArea.Height - MeasurePane.MinSize)
- {
- autoHideSize = rectDockArea.Height - MeasurePane.MinSize;
- }
- rect.X = rectDockArea.X;
- rect.Y = rectDockArea.Y + rectDockArea.Height - (int) autoHideSize;
- rect.Width = rectDockArea.Width;
- rect.Height = (int) autoHideSize;
- }
-
- return rect;
- }
- }
-
- #endregion
-
- #region Internals
-
- internal void RefreshActiveAutoHideContent()
- {
- AutoHideWindow.RefreshActiveContent();
- }
-
- internal Rectangle GetAutoHideWindowBounds(Rectangle rectAutoHideWindow)
- {
- if (DocumentStyle == DocumentStyle.SystemMdi ||
- DocumentStyle == DocumentStyle.DockingMdi)
- {
- return Parent == null
- ? Rectangle.Empty
- : Parent.RectangleToClient(RectangleToScreen(rectAutoHideWindow));
- }
- else
- {
- return rectAutoHideWindow;
- }
- }
-
- internal void RefreshAutoHideStrip()
- {
- AutoHideStripControl.RefreshChanges();
- }
-
- #endregion
-
- private class AutoHideWindowControl : Panel, ISplitterDragSource
- {
- #region Fields
-
- #region consts
-
- private const int ANIMATE_TIME = 100; // in mini-seconds
-
- #endregion
-
- private IDockContent m_activeContent = null;
-
- private bool m_flagDragging = false;
- private readonly SplitterControl m_splitter;
-
- private readonly Timer m_timerMouseTrack;
-
- #endregion
-
- #region cTor
-
- public AutoHideWindowControl(DockPanel dockPanel)
- {
- DockPanel = dockPanel;
-
- m_timerMouseTrack = new Timer();
- m_timerMouseTrack.Tick += new EventHandler(TimerMouseTrack_Tick);
-
- Visible = false;
- m_splitter = new SplitterControl(this);
- Controls.Add(m_splitter);
- }
-
- #endregion
-
- #region Properties
-
- public DockPanel DockPanel { get; } = null;
-
- public DockPane ActivePane { get; private set; } = null;
-
- public IDockContent ActiveContent
- {
- get { return m_activeContent; }
- set
- {
- if (value == m_activeContent)
- {
- return;
- }
-
- if (value != null)
- {
- if (!DockHelper.IsDockStateAutoHide(value.DockHandler.DockState) ||
- value.DockHandler.DockPanel != DockPanel)
- {
- throw new InvalidOperationException(Strings.DockPanel_ActiveAutoHideContent_InvalidValue);
- }
- }
-
- DockPanel.SuspendLayout();
-
- if (m_activeContent != null)
- {
- if (m_activeContent.DockHandler.Form.ContainsFocus)
- {
- DockPanel.ContentFocusManager.GiveUpFocus(m_activeContent);
- }
- AnimateWindow(false);
- }
-
- m_activeContent = value;
- SetActivePane();
- if (ActivePane != null)
- {
- ActivePane.ActiveContent = m_activeContent;
- }
-
- if (m_activeContent != null)
- {
- AnimateWindow(true);
- }
-
- DockPanel.ResumeLayout();
- DockPanel.RefreshAutoHideStrip();
-
- SetTimerMouseTrack();
- }
- }
-
- public DockState DockState
- {
- get { return ActiveContent == null ? DockState.Unknown : ActiveContent.DockHandler.DockState; }
- }
-
- private bool FlagAnimate { get; set; } = true;
-
- internal bool FlagDragging
- {
- get { return m_flagDragging; }
- set
- {
- if (m_flagDragging == value)
- {
- return;
- }
-
- m_flagDragging = value;
- SetTimerMouseTrack();
- }
- }
-
- protected virtual Rectangle DisplayingRectangle
- {
- get
- {
- Rectangle rect = ClientRectangle;
-
- // exclude the border and the splitter
- if (DockState == DockState.DockBottomAutoHide)
- {
- rect.Y += 2 + Measures.SplitterSize;
- rect.Height -= 2 + Measures.SplitterSize;
- }
- else if (DockState == DockState.DockRightAutoHide)
- {
- rect.X += 2 + Measures.SplitterSize;
- rect.Width -= 2 + Measures.SplitterSize;
- }
- else if (DockState == DockState.DockTopAutoHide)
- {
- rect.Height -= 2 + Measures.SplitterSize;
- }
- else if (DockState == DockState.DockLeftAutoHide)
- {
- rect.Width -= 2 + Measures.SplitterSize;
- }
-
- return rect;
- }
- }
-
- #endregion
-
- #region Public methods
-
- public void RefreshActiveContent()
- {
- if (ActiveContent == null)
- {
- return;
- }
-
- if (!DockHelper.IsDockStateAutoHide(ActiveContent.DockHandler.DockState))
- {
- FlagAnimate = false;
- ActiveContent = null;
- FlagAnimate = true;
- }
- }
-
- public void RefreshActivePane()
- {
- SetTimerMouseTrack();
- }
-
- #endregion
-
- #region Overrides
-
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- m_timerMouseTrack.Dispose();
- }
- base.Dispose(disposing);
- }
-
- protected override void OnLayout(LayoutEventArgs levent)
- {
- DockPadding.All = 0;
- if (DockState == DockState.DockLeftAutoHide)
- {
- DockPadding.Right = 2;
- m_splitter.Dock = DockStyle.Right;
- }
- else if (DockState == DockState.DockRightAutoHide)
- {
- DockPadding.Left = 2;
- m_splitter.Dock = DockStyle.Left;
- }
- else if (DockState == DockState.DockTopAutoHide)
- {
- DockPadding.Bottom = 2;
- m_splitter.Dock = DockStyle.Bottom;
- }
- else if (DockState == DockState.DockBottomAutoHide)
- {
- DockPadding.Top = 2;
- m_splitter.Dock = DockStyle.Top;
- }
-
- Rectangle rectDisplaying = DisplayingRectangle;
- Rectangle rectHidden = new Rectangle(-rectDisplaying.Width, rectDisplaying.Y, rectDisplaying.Width,
- rectDisplaying.Height);
- foreach (Control c in Controls)
- {
- DockPane pane = c as DockPane;
- if (pane == null)
- {
- continue;
- }
-
-
- if (pane == ActivePane)
- {
- pane.Bounds = rectDisplaying;
- }
- else
- {
- pane.Bounds = rectHidden;
- }
- }
-
- base.OnLayout(levent);
- }
-
- protected override void OnPaint(PaintEventArgs e)
- {
- // Draw the border
- Graphics g = e.Graphics;
-
- if (DockState == DockState.DockBottomAutoHide)
- {
- g.DrawLine(SystemPens.ControlLightLight, 0, 1, ClientRectangle.Right, 1);
- }
- else if (DockState == DockState.DockRightAutoHide)
- {
- g.DrawLine(SystemPens.ControlLightLight, 1, 0, 1, ClientRectangle.Bottom);
- }
- else if (DockState == DockState.DockTopAutoHide)
- {
- g.DrawLine(SystemPens.ControlDark, 0, ClientRectangle.Height - 2, ClientRectangle.Right,
- ClientRectangle.Height - 2);
- g.DrawLine(SystemPens.ControlDarkDark, 0, ClientRectangle.Height - 1, ClientRectangle.Right,
- ClientRectangle.Height - 1);
- }
- else if (DockState == DockState.DockLeftAutoHide)
- {
- g.DrawLine(SystemPens.ControlDark, ClientRectangle.Width - 2, 0, ClientRectangle.Width - 2,
- ClientRectangle.Bottom);
- g.DrawLine(SystemPens.ControlDarkDark, ClientRectangle.Width - 1, 0, ClientRectangle.Width - 1,
- ClientRectangle.Bottom);
- }
-
- base.OnPaint(e);
- }
-
- #endregion
-
- #region Private Methods
-
- private void SetActivePane()
- {
- DockPane value = ActiveContent == null ? null : ActiveContent.DockHandler.Pane;
-
- if (value == ActivePane)
- {
- return;
- }
-
- ActivePane = value;
- }
-
- private void AnimateWindow(bool show)
- {
- if (!FlagAnimate && Visible != show)
- {
- Visible = show;
- return;
- }
-
- Parent.SuspendLayout();
-
- Rectangle rectSource = GetRectangle(!show);
- Rectangle rectTarget = GetRectangle(show);
- int dxLoc, dyLoc;
- int dWidth, dHeight;
- dxLoc = dyLoc = dWidth = dHeight = 0;
- if (DockState == DockState.DockTopAutoHide)
- {
- dHeight = show ? 1 : -1;
- }
- else if (DockState == DockState.DockLeftAutoHide)
- {
- dWidth = show ? 1 : -1;
- }
- else if (DockState == DockState.DockRightAutoHide)
- {
- dxLoc = show ? -1 : 1;
- dWidth = show ? 1 : -1;
- }
- else if (DockState == DockState.DockBottomAutoHide)
- {
- dyLoc = show ? -1 : 1;
- dHeight = show ? 1 : -1;
- }
-
- if (show)
- {
- Bounds = DockPanel.GetAutoHideWindowBounds(new Rectangle(-rectTarget.Width, -rectTarget.Height,
- rectTarget.Width, rectTarget.Height));
- if (Visible == false)
- {
- Visible = true;
- }
- PerformLayout();
- }
-
- SuspendLayout();
-
- LayoutAnimateWindow(rectSource);
- if (Visible == false)
- {
- Visible = true;
- }
-
- int speedFactor = 1;
- int totalPixels = rectSource.Width != rectTarget.Width
- ? Math.Abs(rectSource.Width - rectTarget.Width)
- : Math.Abs(rectSource.Height - rectTarget.Height);
- int remainPixels = totalPixels;
- DateTime startingTime = DateTime.Now;
- while (rectSource != rectTarget)
- {
- DateTime startPerMove = DateTime.Now;
-
- rectSource.X += dxLoc * speedFactor;
- rectSource.Y += dyLoc * speedFactor;
- rectSource.Width += dWidth * speedFactor;
- rectSource.Height += dHeight * speedFactor;
- if (Math.Sign(rectTarget.X - rectSource.X) != Math.Sign(dxLoc))
- {
- rectSource.X = rectTarget.X;
- }
- if (Math.Sign(rectTarget.Y - rectSource.Y) != Math.Sign(dyLoc))
- {
- rectSource.Y = rectTarget.Y;
- }
- if (Math.Sign(rectTarget.Width - rectSource.Width) != Math.Sign(dWidth))
- {
- rectSource.Width = rectTarget.Width;
- }
- if (Math.Sign(rectTarget.Height - rectSource.Height) != Math.Sign(dHeight))
- {
- rectSource.Height = rectTarget.Height;
- }
-
- LayoutAnimateWindow(rectSource);
- if (Parent != null)
- {
- Parent.Update();
- }
-
- remainPixels -= speedFactor;
-
- while (true)
- {
- TimeSpan time = new TimeSpan(0, 0, 0, 0, ANIMATE_TIME);
- TimeSpan elapsedPerMove = DateTime.Now - startPerMove;
- TimeSpan elapsedTime = DateTime.Now - startingTime;
- if ((int) (time - elapsedTime).TotalMilliseconds <= 0)
- {
- speedFactor = remainPixels;
- break;
- }
- else
- {
- speedFactor = remainPixels * (int) elapsedPerMove.TotalMilliseconds /
- (int) (time - elapsedTime).TotalMilliseconds;
- }
- if (speedFactor >= 1)
- {
- break;
- }
- }
- }
- ResumeLayout();
- Parent.ResumeLayout();
- }
-
- private void LayoutAnimateWindow(Rectangle rect)
- {
- Bounds = DockPanel.GetAutoHideWindowBounds(rect);
-
- Rectangle rectClient = ClientRectangle;
-
- if (DockState == DockState.DockLeftAutoHide)
- {
- ActivePane.Location = new Point(rectClient.Right - 2 - Measures.SplitterSize - ActivePane.Width,
- ActivePane.Location.Y);
- }
- else if (DockState == DockState.DockTopAutoHide)
- {
- ActivePane.Location = new Point(ActivePane.Location.X,
- rectClient.Bottom - 2 - Measures.SplitterSize - ActivePane.Height);
- }
- }
-
- private Rectangle GetRectangle(bool show)
- {
- if (DockState == DockState.Unknown)
- {
- return Rectangle.Empty;
- }
-
- Rectangle rect = DockPanel.AutoHideWindowRectangle;
-
- if (show)
- {
- return rect;
- }
-
- if (DockState == DockState.DockLeftAutoHide)
- {
- rect.Width = 0;
- }
- else if (DockState == DockState.DockRightAutoHide)
- {
- rect.X += rect.Width;
- rect.Width = 0;
- }
- else if (DockState == DockState.DockTopAutoHide)
- {
- rect.Height = 0;
- }
- else
- {
- rect.Y += rect.Height;
- rect.Height = 0;
- }
-
- return rect;
- }
-
- private void SetTimerMouseTrack()
- {
- if (ActivePane == null || ActivePane.IsActivated || FlagDragging)
- {
- m_timerMouseTrack.Enabled = false;
- return;
- }
-
- // start the timer
- int hovertime = SystemInformation.MouseHoverTime;
-
- // assign a default value 400 in case of setting Timer.Interval invalid value exception
- if (hovertime <= 0)
- {
- hovertime = 400;
- }
-
- m_timerMouseTrack.Interval = 2 * (int) hovertime;
- m_timerMouseTrack.Enabled = true;
- }
-
- #endregion
-
- #region Events handler
-
- private void TimerMouseTrack_Tick(object sender, EventArgs e)
- {
- if (IsDisposed)
- {
- return;
- }
-
- if (ActivePane == null || ActivePane.IsActivated)
- {
- m_timerMouseTrack.Enabled = false;
- return;
- }
-
- DockPane pane = ActivePane;
- Point ptMouseInAutoHideWindow = PointToClient(Control.MousePosition);
- Point ptMouseInDockPanel = DockPanel.PointToClient(Control.MousePosition);
-
- Rectangle rectTabStrip = DockPanel.GetTabStripRectangle(pane.DockState);
-
- if (!ClientRectangle.Contains(ptMouseInAutoHideWindow) && !rectTabStrip.Contains(ptMouseInDockPanel))
- {
- ActiveContent = null;
- m_timerMouseTrack.Enabled = false;
- }
- }
-
- #endregion
-
- private class SplitterControl : SplitterBase
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public SplitterControl(AutoHideWindowControl autoHideWindow)
- {
- AutoHideWindow = autoHideWindow;
- }
-
- #endregion
-
- #region Properties
-
- private AutoHideWindowControl AutoHideWindow { get; }
-
- protected override int SplitterSize
- {
- get { return Measures.SplitterSize; }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void StartDrag()
- {
- AutoHideWindow.DockPanel.BeginDrag(AutoHideWindow, AutoHideWindow.RectangleToScreen(Bounds));
- }
-
- #endregion
- }
-
- #region ISplitterDragSource Members
-
- void ISplitterDragSource.BeginDrag(Rectangle rectSplitter)
- {
- FlagDragging = true;
- }
-
- void ISplitterDragSource.EndDrag()
- {
- FlagDragging = false;
- }
-
- bool ISplitterDragSource.IsVertical
- {
- get { return DockState == DockState.DockLeftAutoHide || DockState == DockState.DockRightAutoHide; }
- }
-
- Rectangle ISplitterDragSource.DragLimitBounds
- {
- get
- {
- Rectangle rectLimit = DockPanel.DockArea;
-
- if ((this as ISplitterDragSource).IsVertical)
- {
- rectLimit.X += MeasurePane.MinSize;
- rectLimit.Width -= 2 * MeasurePane.MinSize;
- }
- else
- {
- rectLimit.Y += MeasurePane.MinSize;
- rectLimit.Height -= 2 * MeasurePane.MinSize;
- }
-
- return DockPanel.RectangleToScreen(rectLimit);
- }
- }
-
- void ISplitterDragSource.MoveSplitter(int offset)
- {
- Rectangle rectDockArea = DockPanel.DockArea;
- IDockContent content = ActiveContent;
- if (DockState == DockState.DockLeftAutoHide && rectDockArea.Width > 0)
- {
- if (content.DockHandler.AutoHidePortion < 1)
- {
- content.DockHandler.AutoHidePortion += (double) offset / (double) rectDockArea.Width;
- }
- else
- {
- content.DockHandler.AutoHidePortion = Width + offset;
- }
- }
- else if (DockState == DockState.DockRightAutoHide && rectDockArea.Width > 0)
- {
- if (content.DockHandler.AutoHidePortion < 1)
- {
- content.DockHandler.AutoHidePortion -= (double) offset / (double) rectDockArea.Width;
- }
- else
- {
- content.DockHandler.AutoHidePortion = Width - offset;
- }
- }
- else if (DockState == DockState.DockBottomAutoHide && rectDockArea.Height > 0)
- {
- if (content.DockHandler.AutoHidePortion < 1)
- {
- content.DockHandler.AutoHidePortion -= (double) offset / (double) rectDockArea.Height;
- }
- else
- {
- content.DockHandler.AutoHidePortion = Height - offset;
- }
- }
- else if (DockState == DockState.DockTopAutoHide && rectDockArea.Height > 0)
- {
- if (content.DockHandler.AutoHidePortion < 1)
- {
- content.DockHandler.AutoHidePortion += (double) offset / (double) rectDockArea.Height;
- }
- else
- {
- content.DockHandler.AutoHidePortion = Height + offset;
- }
- }
- }
-
- #region IDragSource Members
-
- Control IDragSource.DragControl
- {
- get { return this; }
- }
-
- #endregion
-
- #endregion
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPanel.DockDragHandler.cs b/src/WinFormsUI/Docking/DockPanel.DockDragHandler.cs
deleted file mode 100644
index 3d57c302..00000000
--- a/src/WinFormsUI/Docking/DockPanel.DockDragHandler.cs
+++ /dev/null
@@ -1,1073 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Windows.Forms;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.ComponentModel;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- partial class DockPanel
- {
- #region Fields
-
- private DockDragHandler m_dockDragHandler = null;
-
- #endregion
-
- #region Internals
-
- internal void BeginDrag(IDockDragSource dragSource)
- {
- GetDockDragHandler().BeginDrag(dragSource);
- }
-
- #endregion
-
- #region Private Methods
-
- private DockDragHandler GetDockDragHandler()
- {
- if (m_dockDragHandler == null)
- {
- m_dockDragHandler = new DockDragHandler(this);
- }
- return m_dockDragHandler;
- }
-
- #endregion
-
- private sealed class DockDragHandler : DragHandler
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public DockDragHandler(DockPanel panel)
- : base(panel)
- {
- }
-
- #endregion
-
- #region Properties
-
- public new IDockDragSource DragSource
- {
- get { return base.DragSource as IDockDragSource; }
- set { base.DragSource = value; }
- }
-
- public DockOutlineBase Outline { get; private set; }
-
- private DockIndicator Indicator { get; set; }
-
- private Rectangle FloatOutlineBounds { get; set; }
-
- #endregion
-
- #region Public methods
-
- public void BeginDrag(IDockDragSource dragSource)
- {
- DragSource = dragSource;
-
- if (!BeginDrag())
- {
- DragSource = null;
- return;
- }
-
- Outline = new DockOutline();
- Indicator = new DockIndicator(this);
- Indicator.Show(false);
-
- FloatOutlineBounds = DragSource.BeginDrag(StartMousePosition);
- }
-
- #endregion
-
- #region Overrides
-
- protected override void OnDragging()
- {
- TestDrop();
- }
-
- protected override void OnEndDrag(bool abort)
- {
- DockPanel.SuspendLayout(true);
-
- Outline.Close();
- Indicator.Close();
-
- EndDrag(abort);
-
- // Queue a request to layout all children controls
- DockPanel.PerformMdiClientLayout();
-
- DockPanel.ResumeLayout(true, true);
-
- DragSource = null;
- }
-
- #endregion
-
- #region Private Methods
-
- private void TestDrop()
- {
- Outline.FlagTestDrop = false;
-
- Indicator.FullPanelEdge = (Control.ModifierKeys & Keys.Shift) != 0;
-
- if ((Control.ModifierKeys & Keys.Control) == 0)
- {
- Indicator.TestDrop();
-
- if (!Outline.FlagTestDrop)
- {
- DockPane pane = DockHelper.PaneAtPoint(Control.MousePosition, DockPanel);
- if (pane != null && DragSource.IsDockStateValid(pane.DockState))
- {
- pane.TestDrop(DragSource, Outline);
- }
- }
-
- if (!Outline.FlagTestDrop && DragSource.IsDockStateValid(DockState.Float))
- {
- FloatWindow floatWindow = DockHelper.FloatWindowAtPoint(Control.MousePosition, DockPanel);
- if (floatWindow != null)
- {
- floatWindow.TestDrop(DragSource, Outline);
- }
- }
- }
- else
- {
- Indicator.DockPane = DockHelper.PaneAtPoint(Control.MousePosition, DockPanel);
- }
-
- if (!Outline.FlagTestDrop)
- {
- if (DragSource.IsDockStateValid(DockState.Float))
- {
- Rectangle rect = FloatOutlineBounds;
- rect.Offset(Control.MousePosition.X - StartMousePosition.X,
- Control.MousePosition.Y - StartMousePosition.Y);
- Outline.Show(rect);
- }
- }
-
- if (!Outline.FlagTestDrop)
- {
- Cursor.Current = Cursors.No;
- Outline.Show();
- }
- else
- {
- Cursor.Current = DragControl.Cursor;
- }
- }
-
- private void EndDrag(bool abort)
- {
- if (abort)
- {
- return;
- }
-
- if (!Outline.FloatWindowBounds.IsEmpty)
- {
- DragSource.FloatAt(Outline.FloatWindowBounds);
- }
- else if (Outline.DockTo is DockPane)
- {
- DockPane pane = Outline.DockTo as DockPane;
- DragSource.DockTo(pane, Outline.Dock, Outline.ContentIndex);
- }
- else if (Outline.DockTo is DockPanel)
- {
- DockPanel panel = Outline.DockTo as DockPanel;
- panel.UpdateDockWindowZOrder(Outline.Dock, Outline.FlagFullEdge);
- DragSource.DockTo(panel, Outline.Dock);
- }
- }
-
- #endregion
-
- private class DockIndicator : DragForm
- {
- #region Fields
-
- #region consts
-
- private readonly int _PanelIndicatorMargin = 10;
-
- #endregion
-
- private DockPane m_dockPane = null;
-
- private bool m_fullPanelEdge = false;
-
- private IHitTest m_hitTest = null;
-
- private PaneIndicator m_paneDiamond = null;
-
- private PanelIndicator m_panelBottom = null;
-
- private PanelIndicator m_panelFill = null;
-
- private PanelIndicator m_panelLeft = null;
-
- private PanelIndicator m_panelRight = null;
-
- private PanelIndicator m_panelTop = null;
-
- #endregion
-
- #region cTor
-
- public DockIndicator(DockDragHandler dragHandler)
- {
- DragHandler = dragHandler;
- Controls.AddRange(new Control[]
- {
- PaneDiamond,
- PanelLeft,
- PanelRight,
- PanelTop,
- PanelBottom,
- PanelFill
- });
- Region = new Region(Rectangle.Empty);
- }
-
- #endregion
-
- #region Properties
-
- private PaneIndicator PaneDiamond
- {
- get
- {
- if (m_paneDiamond == null)
- {
- m_paneDiamond = new PaneIndicator();
- }
-
- return m_paneDiamond;
- }
- }
-
- private PanelIndicator PanelLeft
- {
- get
- {
- if (m_panelLeft == null)
- {
- m_panelLeft = new PanelIndicator(DockStyle.Left);
- }
-
- return m_panelLeft;
- }
- }
-
- private PanelIndicator PanelRight
- {
- get
- {
- if (m_panelRight == null)
- {
- m_panelRight = new PanelIndicator(DockStyle.Right);
- }
-
- return m_panelRight;
- }
- }
-
- private PanelIndicator PanelTop
- {
- get
- {
- if (m_panelTop == null)
- {
- m_panelTop = new PanelIndicator(DockStyle.Top);
- }
-
- return m_panelTop;
- }
- }
-
- private PanelIndicator PanelBottom
- {
- get
- {
- if (m_panelBottom == null)
- {
- m_panelBottom = new PanelIndicator(DockStyle.Bottom);
- }
-
- return m_panelBottom;
- }
- }
-
- private PanelIndicator PanelFill
- {
- get
- {
- if (m_panelFill == null)
- {
- m_panelFill = new PanelIndicator(DockStyle.Fill);
- }
-
- return m_panelFill;
- }
- }
-
- public bool FullPanelEdge
- {
- get { return m_fullPanelEdge; }
- set
- {
- if (m_fullPanelEdge == value)
- {
- return;
- }
-
- m_fullPanelEdge = value;
- RefreshChanges();
- }
- }
-
- public DockDragHandler DragHandler { get; }
-
- public DockPanel DockPanel
- {
- get { return DragHandler.DockPanel; }
- }
-
- public DockPane DockPane
- {
- get { return m_dockPane; }
- internal set
- {
- if (m_dockPane == value)
- {
- return;
- }
-
- DockPane oldDisplayingPane = DisplayingPane;
- m_dockPane = value;
- if (oldDisplayingPane != DisplayingPane)
- {
- RefreshChanges();
- }
- }
- }
-
- private IHitTest HitTestResult
- {
- get { return m_hitTest; }
- set
- {
- if (m_hitTest == value)
- {
- return;
- }
-
- if (m_hitTest != null)
- {
- m_hitTest.Status = DockStyle.None;
- }
-
- m_hitTest = value;
- }
- }
-
- private DockPane DisplayingPane
- {
- get { return ShouldPaneDiamondVisible() ? DockPane : null; }
- }
-
- #endregion
-
- #region Public methods
-
- public override void Show(bool bActivate)
- {
- base.Show(bActivate);
- Bounds = SystemInformation.VirtualScreen;
- RefreshChanges();
- }
-
- public void TestDrop()
- {
- Point pt = Control.MousePosition;
- DockPane = DockHelper.PaneAtPoint(pt, DockPanel);
-
- if (TestDrop(PanelLeft, pt) != DockStyle.None)
- {
- HitTestResult = PanelLeft;
- }
- else if (TestDrop(PanelRight, pt) != DockStyle.None)
- {
- HitTestResult = PanelRight;
- }
- else if (TestDrop(PanelTop, pt) != DockStyle.None)
- {
- HitTestResult = PanelTop;
- }
- else if (TestDrop(PanelBottom, pt) != DockStyle.None)
- {
- HitTestResult = PanelBottom;
- }
- else if (TestDrop(PanelFill, pt) != DockStyle.None)
- {
- HitTestResult = PanelFill;
- }
- else if (TestDrop(PaneDiamond, pt) != DockStyle.None)
- {
- HitTestResult = PaneDiamond;
- }
- else
- {
- HitTestResult = null;
- }
-
- if (HitTestResult != null)
- {
- if (HitTestResult is PaneIndicator)
- {
- DragHandler.Outline.Show(DockPane, HitTestResult.Status);
- }
- else
- {
- DragHandler.Outline.Show(DockPanel, HitTestResult.Status, FullPanelEdge);
- }
- }
- }
-
- #endregion
-
- #region Private Methods
-
- private void RefreshChanges()
- {
- Region region = new Region(Rectangle.Empty);
- Rectangle rectDockArea = FullPanelEdge ? DockPanel.DockArea : DockPanel.DocumentWindowBounds;
-
- rectDockArea = RectangleToClient(DockPanel.RectangleToScreen(rectDockArea));
- if (ShouldPanelIndicatorVisible(DockState.DockLeft))
- {
- PanelLeft.Location = new Point(rectDockArea.X + _PanelIndicatorMargin,
- rectDockArea.Y + (rectDockArea.Height - PanelRight.Height) / 2);
- PanelLeft.Visible = true;
- region.Union(PanelLeft.Bounds);
- }
- else
- {
- PanelLeft.Visible = false;
- }
-
- if (ShouldPanelIndicatorVisible(DockState.DockRight))
- {
- PanelRight.Location =
- new Point(rectDockArea.X + rectDockArea.Width - PanelRight.Width - _PanelIndicatorMargin,
- rectDockArea.Y + (rectDockArea.Height - PanelRight.Height) / 2);
- PanelRight.Visible = true;
- region.Union(PanelRight.Bounds);
- }
- else
- {
- PanelRight.Visible = false;
- }
-
- if (ShouldPanelIndicatorVisible(DockState.DockTop))
- {
- PanelTop.Location = new Point(rectDockArea.X + (rectDockArea.Width - PanelTop.Width) / 2,
- rectDockArea.Y + _PanelIndicatorMargin);
- PanelTop.Visible = true;
- region.Union(PanelTop.Bounds);
- }
- else
- {
- PanelTop.Visible = false;
- }
-
- if (ShouldPanelIndicatorVisible(DockState.DockBottom))
- {
- PanelBottom.Location = new Point(rectDockArea.X + (rectDockArea.Width - PanelBottom.Width) / 2,
- rectDockArea.Y + rectDockArea.Height - PanelBottom.Height - _PanelIndicatorMargin);
- PanelBottom.Visible = true;
- region.Union(PanelBottom.Bounds);
- }
- else
- {
- PanelBottom.Visible = false;
- }
-
- if (ShouldPanelIndicatorVisible(DockState.Document))
- {
- Rectangle rectDocumentWindow =
- RectangleToClient(DockPanel.RectangleToScreen(DockPanel.DocumentWindowBounds));
- PanelFill.Location =
- new Point(rectDocumentWindow.X + (rectDocumentWindow.Width - PanelFill.Width) / 2,
- rectDocumentWindow.Y + (rectDocumentWindow.Height - PanelFill.Height) / 2);
- PanelFill.Visible = true;
- region.Union(PanelFill.Bounds);
- }
- else
- {
- PanelFill.Visible = false;
- }
-
- if (ShouldPaneDiamondVisible())
- {
- Rectangle rect = RectangleToClient(DockPane.RectangleToScreen(DockPane.ClientRectangle));
- PaneDiamond.Location = new Point(rect.Left + (rect.Width - PaneDiamond.Width) / 2,
- rect.Top + (rect.Height - PaneDiamond.Height) / 2);
- PaneDiamond.Visible = true;
- using (GraphicsPath graphicsPath = PaneIndicator.DisplayingGraphicsPath.Clone() as GraphicsPath)
- {
- Point[] pts = new Point[]
- {
- new Point(PaneDiamond.Left, PaneDiamond.Top),
- new Point(PaneDiamond.Right, PaneDiamond.Top),
- new Point(PaneDiamond.Left, PaneDiamond.Bottom)
- };
- using (Matrix matrix = new Matrix(PaneDiamond.ClientRectangle, pts))
- {
- graphicsPath.Transform(matrix);
- }
- region.Union(graphicsPath);
- }
- }
- else
- {
- PaneDiamond.Visible = false;
- }
-
- Region = region;
- }
-
- private bool ShouldPanelIndicatorVisible(DockState dockState)
- {
- if (!Visible)
- {
- return false;
- }
-
- if (DockPanel.DockWindows[dockState].Visible)
- {
- return false;
- }
-
- return DragHandler.DragSource.IsDockStateValid(dockState);
- }
-
- private bool ShouldPaneDiamondVisible()
- {
- if (DockPane == null)
- {
- return false;
- }
-
- if (!DockPanel.AllowEndUserNestedDocking)
- {
- return false;
- }
-
- return DragHandler.DragSource.CanDockTo(DockPane);
- }
-
- private static DockStyle TestDrop(IHitTest hitTest, Point pt)
- {
- return hitTest.Status = hitTest.HitTest(pt);
- }
-
- #endregion
-
- #region IHitTest
-
- private interface IHitTest
- {
- #region Properties
-
- DockStyle Status { get; set; }
-
- #endregion
-
- #region Public methods
-
- DockStyle HitTest(Point pt);
-
- #endregion
- }
-
- #endregion
-
- #region PanelIndicator
-
- private class PanelIndicator : PictureBox, IHitTest
- {
- #region Fields
-
- private static readonly Image _imagePanelLeft = Resources.DockIndicator_PanelLeft;
- private static readonly Image _imagePanelRight = Resources.DockIndicator_PanelRight;
- private static readonly Image _imagePanelTop = Resources.DockIndicator_PanelTop;
- private static readonly Image _imagePanelBottom = Resources.DockIndicator_PanelBottom;
- private static readonly Image _imagePanelFill = Resources.DockIndicator_PanelFill;
- private static readonly Image _imagePanelLeftActive = Resources.DockIndicator_PanelLeft_Active;
- private static readonly Image _imagePanelRightActive = Resources.DockIndicator_PanelRight_Active;
- private static readonly Image _imagePanelTopActive = Resources.DockIndicator_PanelTop_Active;
- private static readonly Image _imagePanelBottomActive = Resources.DockIndicator_PanelBottom_Active;
- private static readonly Image _imagePanelFillActive = Resources.DockIndicator_PanelFill_Active;
-
- private bool m_isActivated = false;
-
- private DockStyle m_status;
-
- #endregion
-
- #region cTor
-
- public PanelIndicator(DockStyle dockStyle)
- {
- DockStyle = dockStyle;
- SizeMode = PictureBoxSizeMode.AutoSize;
- Image = ImageInactive;
- }
-
- #endregion
-
- #region Properties
-
- private DockStyle DockStyle { get; }
-
- public DockStyle Status
- {
- get { return m_status; }
- set
- {
- if (value != DockStyle && value != DockStyle.None)
- {
- throw new InvalidEnumArgumentException();
- }
-
- if (m_status == value)
- {
- return;
- }
-
- m_status = value;
- IsActivated = m_status != DockStyle.None;
- }
- }
-
- private Image ImageInactive
- {
- get
- {
- if (DockStyle == DockStyle.Left)
- {
- return _imagePanelLeft;
- }
- else if (DockStyle == DockStyle.Right)
- {
- return _imagePanelRight;
- }
- else if (DockStyle == DockStyle.Top)
- {
- return _imagePanelTop;
- }
- else if (DockStyle == DockStyle.Bottom)
- {
- return _imagePanelBottom;
- }
- else if (DockStyle == DockStyle.Fill)
- {
- return _imagePanelFill;
- }
- else
- {
- return null;
- }
- }
- }
-
- private Image ImageActive
- {
- get
- {
- if (DockStyle == DockStyle.Left)
- {
- return _imagePanelLeftActive;
- }
- else if (DockStyle == DockStyle.Right)
- {
- return _imagePanelRightActive;
- }
- else if (DockStyle == DockStyle.Top)
- {
- return _imagePanelTopActive;
- }
- else if (DockStyle == DockStyle.Bottom)
- {
- return _imagePanelBottomActive;
- }
- else if (DockStyle == DockStyle.Fill)
- {
- return _imagePanelFillActive;
- }
- else
- {
- return null;
- }
- }
- }
-
- private bool IsActivated
- {
- get { return m_isActivated; }
- set
- {
- m_isActivated = value;
- Image = IsActivated ? ImageActive : ImageInactive;
- }
- }
-
- #endregion
-
- #region Public methods
-
- public DockStyle HitTest(Point pt)
- {
- return this.Visible && ClientRectangle.Contains(PointToClient(pt)) ? DockStyle : DockStyle.None;
- }
-
- #endregion
- }
-
- #endregion PanelIndicator
-
- #region PaneIndicator
-
- private class PaneIndicator : PictureBox, IHitTest
- {
- #region Fields
-
- private static readonly Bitmap _bitmapPaneDiamond = Resources.DockIndicator_PaneDiamond;
- private static readonly Bitmap _bitmapPaneDiamondLeft = Resources.DockIndicator_PaneDiamond_Left;
- private static readonly Bitmap _bitmapPaneDiamondRight = Resources.DockIndicator_PaneDiamond_Right;
- private static readonly Bitmap _bitmapPaneDiamondTop = Resources.DockIndicator_PaneDiamond_Top;
-
- private static readonly Bitmap _bitmapPaneDiamondBottom = Resources.DockIndicator_PaneDiamond_Bottom
- ;
-
- private static readonly Bitmap _bitmapPaneDiamondFill = Resources.DockIndicator_PaneDiamond_Fill;
-
- private static readonly Bitmap _bitmapPaneDiamondHotSpot =
- Resources.DockIndicator_PaneDiamond_HotSpot;
-
- private static readonly Bitmap _bitmapPaneDiamondHotSpotIndex =
- Resources.DockIndicator_PaneDiamond_HotSpotIndex;
-
- private static readonly HotSpotIndex[] _hotSpots = new HotSpotIndex[]
- {
- new HotSpotIndex(1, 0, DockStyle.Top),
- new HotSpotIndex(0, 1, DockStyle.Left),
- new HotSpotIndex(1, 1, DockStyle.Fill),
- new HotSpotIndex(2, 1, DockStyle.Right),
- new HotSpotIndex(1, 2, DockStyle.Bottom)
- };
-
- private DockStyle m_status = DockStyle.None;
-
- #endregion
-
- #region cTor
-
- public PaneIndicator()
- {
- SizeMode = PictureBoxSizeMode.AutoSize;
- Image = _bitmapPaneDiamond;
- Region = new Region(DisplayingGraphicsPath);
- }
-
- #endregion
-
- #region Properties
-
- public static GraphicsPath DisplayingGraphicsPath { get; } =
- DrawHelper.CalculateGraphicsPathFromBitmap(_bitmapPaneDiamond);
-
- public DockStyle Status
- {
- get { return m_status; }
- set
- {
- m_status = value;
- if (m_status == DockStyle.None)
- {
- Image = _bitmapPaneDiamond;
- }
- else if (m_status == DockStyle.Left)
- {
- Image = _bitmapPaneDiamondLeft;
- }
- else if (m_status == DockStyle.Right)
- {
- Image = _bitmapPaneDiamondRight;
- }
- else if (m_status == DockStyle.Top)
- {
- Image = _bitmapPaneDiamondTop;
- }
- else if (m_status == DockStyle.Bottom)
- {
- Image = _bitmapPaneDiamondBottom;
- }
- else if (m_status == DockStyle.Fill)
- {
- Image = _bitmapPaneDiamondFill;
- }
- }
- }
-
- #endregion
-
- #region Public methods
-
- public DockStyle HitTest(Point pt)
- {
- if (!Visible)
- {
- return DockStyle.None;
- }
-
- pt = PointToClient(pt);
- if (!ClientRectangle.Contains(pt))
- {
- return DockStyle.None;
- }
-
- for (int i = _hotSpots.GetLowerBound(0); i <= _hotSpots.GetUpperBound(0); i++)
- {
- if (_bitmapPaneDiamondHotSpot.GetPixel(pt.X, pt.Y) ==
- _bitmapPaneDiamondHotSpotIndex.GetPixel(_hotSpots[i].X, _hotSpots[i].Y))
- {
- return _hotSpots[i].DockStyle;
- }
- }
-
- return DockStyle.None;
- }
-
- #endregion
-
- private struct HotSpotIndex
- {
- public HotSpotIndex(int x, int y, DockStyle dockStyle)
- {
- X = x;
- Y = y;
- DockStyle = dockStyle;
- }
-
- public int X { get; }
-
- public int Y { get; }
-
- public DockStyle DockStyle { get; }
- }
- }
-
- #endregion PaneIndicator
- }
-
- private class DockOutline : DockOutlineBase
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public DockOutline()
- {
- DragForm = new DragForm();
- SetDragForm(Rectangle.Empty);
- DragForm.BackColor = SystemColors.ActiveCaption;
- DragForm.Opacity = 0.5;
- DragForm.Show(false);
- }
-
- #endregion
-
- #region Properties
-
- private DragForm DragForm { get; }
-
- #endregion
-
- #region Overrides
-
- protected override void OnShow()
- {
- CalculateRegion();
- }
-
- protected override void OnClose()
- {
- DragForm.Close();
- }
-
- #endregion
-
- #region Private Methods
-
- private void CalculateRegion()
- {
- if (SameAsOldValue)
- {
- return;
- }
-
- if (!FloatWindowBounds.IsEmpty)
- {
- SetOutline(FloatWindowBounds);
- }
- else if (DockTo is DockPanel)
- {
- SetOutline(DockTo as DockPanel, Dock, ContentIndex != 0);
- }
- else if (DockTo is DockPane)
- {
- SetOutline(DockTo as DockPane, Dock, ContentIndex);
- }
- else
- {
- SetOutline();
- }
- }
-
- private void SetOutline()
- {
- SetDragForm(Rectangle.Empty);
- }
-
- private void SetOutline(Rectangle floatWindowBounds)
- {
- SetDragForm(floatWindowBounds);
- }
-
- private void SetOutline(DockPanel dockPanel, DockStyle dock, bool fullPanelEdge)
- {
- Rectangle rect = fullPanelEdge ? dockPanel.DockArea : dockPanel.DocumentWindowBounds;
- rect.Location = dockPanel.PointToScreen(rect.Location);
- if (dock == DockStyle.Top)
- {
- int height = dockPanel.GetDockWindowSize(DockState.DockTop);
- rect = new Rectangle(rect.X, rect.Y, rect.Width, height);
- }
- else if (dock == DockStyle.Bottom)
- {
- int height = dockPanel.GetDockWindowSize(DockState.DockBottom);
- rect = new Rectangle(rect.X, rect.Bottom - height, rect.Width, height);
- }
- else if (dock == DockStyle.Left)
- {
- int width = dockPanel.GetDockWindowSize(DockState.DockLeft);
- rect = new Rectangle(rect.X, rect.Y, width, rect.Height);
- }
- else if (dock == DockStyle.Right)
- {
- int width = dockPanel.GetDockWindowSize(DockState.DockRight);
- rect = new Rectangle(rect.Right - width, rect.Y, width, rect.Height);
- }
- else if (dock == DockStyle.Fill)
- {
- rect = dockPanel.DocumentWindowBounds;
- rect.Location = dockPanel.PointToScreen(rect.Location);
- }
-
- SetDragForm(rect);
- }
-
- private void SetOutline(DockPane pane, DockStyle dock, int contentIndex)
- {
- if (dock != DockStyle.Fill)
- {
- Rectangle rect = pane.DisplayingRectangle;
- if (dock == DockStyle.Right)
- {
- rect.X += rect.Width / 2;
- }
- if (dock == DockStyle.Bottom)
- {
- rect.Y += rect.Height / 2;
- }
- if (dock == DockStyle.Left || dock == DockStyle.Right)
- {
- rect.Width -= rect.Width / 2;
- }
- if (dock == DockStyle.Top || dock == DockStyle.Bottom)
- {
- rect.Height -= rect.Height / 2;
- }
- rect.Location = pane.PointToScreen(rect.Location);
-
- SetDragForm(rect);
- }
- else if (contentIndex == -1)
- {
- Rectangle rect = pane.DisplayingRectangle;
- rect.Location = pane.PointToScreen(rect.Location);
- SetDragForm(rect);
- }
- else
- {
- using (GraphicsPath path = pane.TabStripControl.GetOutline(contentIndex))
- {
- RectangleF rectF = path.GetBounds();
- Rectangle rect = new Rectangle((int) rectF.X, (int) rectF.Y, (int) rectF.Width,
- (int) rectF.Height);
- using (Matrix matrix = new Matrix(rect,
- new Point[] {new Point(0, 0), new Point(rect.Width, 0), new Point(0, rect.Height)}))
- {
- path.Transform(matrix);
- }
- Region region = new Region(path);
- SetDragForm(rect, region);
- }
- }
- }
-
- private void SetDragForm(Rectangle rect)
- {
- DragForm.Bounds = rect;
- if (rect == Rectangle.Empty)
- {
- DragForm.Region = new Region(Rectangle.Empty);
- }
- else if (DragForm.Region != null)
- {
- DragForm.Region = null;
- }
- }
-
- private void SetDragForm(Rectangle rect, Region region)
- {
- DragForm.Bounds = rect;
- DragForm.Region = region;
- }
-
- #endregion
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPanel.DragHandler.cs b/src/WinFormsUI/Docking/DockPanel.DragHandler.cs
deleted file mode 100644
index eb29365b..00000000
--- a/src/WinFormsUI/Docking/DockPanel.DragHandler.cs
+++ /dev/null
@@ -1,169 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Windows.Forms;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.ComponentModel;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- partial class DockPanel
- {
- ///
- /// DragHandlerBase is the base class for drag handlers. The derived class should:
- /// 1. Define its public method BeginDrag. From within this public BeginDrag method,
- /// DragHandlerBase.BeginDrag should be called to initialize the mouse capture
- /// and message filtering.
- /// 2. Override the OnDragging and OnEndDrag methods.
- ///
- private abstract class DragHandlerBase : NativeWindow, IMessageFilter
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- protected DragHandlerBase()
- {
- }
-
- #endregion
-
- #region Properties
-
- protected abstract Control DragControl { get; }
-
- protected Point StartMousePosition { get; private set; } = Point.Empty;
-
- #endregion
-
- #region Overrides
-
- protected sealed override void WndProc(ref Message m)
- {
- if (m.Msg == (int) Win32.Msgs.WM_CANCELMODE || m.Msg == (int) Win32.Msgs.WM_CAPTURECHANGED)
- {
- EndDrag(true);
- }
-
- base.WndProc(ref m);
- }
-
- #endregion
-
- #region Private Methods
-
- private void EndDrag(bool abort)
- {
- ReleaseHandle();
- Application.RemoveMessageFilter(this);
- DragControl.FindForm().Capture = false;
-
- OnEndDrag(abort);
- }
-
- bool IMessageFilter.PreFilterMessage(ref Message m)
- {
- if (m.Msg == (int) Win32.Msgs.WM_MOUSEMOVE)
- {
- OnDragging();
- }
- else if (m.Msg == (int) Win32.Msgs.WM_LBUTTONUP)
- {
- EndDrag(false);
- }
- else if (m.Msg == (int) Win32.Msgs.WM_CAPTURECHANGED)
- {
- EndDrag(true);
- }
- else if (m.Msg == (int) Win32.Msgs.WM_KEYDOWN && (int) m.WParam == (int) Keys.Escape)
- {
- EndDrag(true);
- }
-
- return OnPreFilterMessage(ref m);
- }
-
- #endregion
-
- protected bool BeginDrag()
- {
- // Avoid re-entrance;
- lock (this)
- {
- if (DragControl == null)
- {
- return false;
- }
-
- StartMousePosition = Control.MousePosition;
-
- if (!NativeMethods.DragDetect(DragControl.Handle, StartMousePosition))
- {
- return false;
- }
-
- DragControl.FindForm().Capture = true;
- AssignHandle(DragControl.FindForm().Handle);
- Application.AddMessageFilter(this);
- return true;
- }
- }
-
- protected abstract void OnDragging();
-
- protected abstract void OnEndDrag(bool abort);
-
- protected virtual bool OnPreFilterMessage(ref Message m)
- {
- return false;
- }
- }
-
- private abstract class DragHandler : DragHandlerBase
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- protected DragHandler(DockPanel dockPanel)
- {
- DockPanel = dockPanel;
- }
-
- #endregion
-
- #region Properties
-
- public DockPanel DockPanel { get; }
-
- protected IDragSource DragSource { get; set; }
-
- protected sealed override Control DragControl
- {
- get { return DragSource == null ? null : DragSource.DragControl; }
- }
-
- #endregion
-
- #region Overrides
-
- protected sealed override bool OnPreFilterMessage(ref Message m)
- {
- if ((m.Msg == (int) Win32.Msgs.WM_KEYDOWN || m.Msg == (int) Win32.Msgs.WM_KEYUP) &&
- ((int) m.WParam == (int) Keys.ControlKey || (int) m.WParam == (int) Keys.ShiftKey))
- {
- OnDragging();
- }
-
- return base.OnPreFilterMessage(ref m);
- }
-
- #endregion
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPanel.FocusManager.cs b/src/WinFormsUI/Docking/DockPanel.FocusManager.cs
deleted file mode 100644
index 1c425557..00000000
--- a/src/WinFormsUI/Docking/DockPanel.FocusManager.cs
+++ /dev/null
@@ -1,731 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.ComponentModel;
-using System.Runtime.InteropServices;
-using System.Windows.Forms;
-using System.Diagnostics.CodeAnalysis;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal interface IContentFocusManager
- {
- #region Public methods
-
- void Activate(IDockContent content);
- void GiveUpFocus(IDockContent content);
- void AddToList(IDockContent content);
- void RemoveFromList(IDockContent content);
-
- #endregion
- }
-
- partial class DockPanel
- {
- #region Fields
-
- private static readonly object ActiveDocumentChangedEvent = new object();
-
- private static readonly object ActiveContentChangedEvent = new object();
-
- private static readonly object ActivePaneChangedEvent = new object();
-
- #endregion
-
- #region Events
-
- [LocalizedCategory("Category_PropertyChanged")]
- [LocalizedDescription("DockPanel_ActiveDocumentChanged_Description")]
- public event EventHandler ActiveDocumentChanged
- {
- add { Events.AddHandler(ActiveDocumentChangedEvent, value); }
- remove { Events.RemoveHandler(ActiveDocumentChangedEvent, value); }
- }
-
- [LocalizedCategory("Category_PropertyChanged")]
- [LocalizedDescription("DockPanel_ActiveContentChanged_Description")]
- public event EventHandler ActiveContentChanged
- {
- add { Events.AddHandler(ActiveContentChangedEvent, value); }
- remove { Events.RemoveHandler(ActiveContentChangedEvent, value); }
- }
-
- [LocalizedCategory("Category_PropertyChanged")]
- [LocalizedDescription("DockPanel_ActivePaneChanged_Description")]
- public event EventHandler ActivePaneChanged
- {
- add { Events.AddHandler(ActivePaneChangedEvent, value); }
- remove { Events.RemoveHandler(ActivePaneChangedEvent, value); }
- }
-
- #endregion
-
- #region Properties
-
- private IFocusManager FocusManager
- {
- get { return m_focusManager; }
- }
-
- internal IContentFocusManager ContentFocusManager
- {
- get { return m_focusManager; }
- }
-
- [Browsable(false)]
- public IDockContent ActiveContent
- {
- get { return FocusManager.ActiveContent; }
- }
-
- [Browsable(false)]
- public DockPane ActivePane
- {
- get { return FocusManager.ActivePane; }
- }
-
- [Browsable(false)]
- public IDockContent ActiveDocument
- {
- get { return FocusManager.ActiveDocument; }
- }
-
- [Browsable(false)]
- public DockPane ActiveDocumentPane
- {
- get { return FocusManager.ActiveDocumentPane; }
- }
-
- #endregion
-
- #region Internals
-
- internal void SaveFocus()
- {
- DummyControl.Focus();
- }
-
- #endregion
-
- protected virtual void OnActiveDocumentChanged(EventArgs e)
- {
- EventHandler handler = (EventHandler) Events[ActiveDocumentChangedEvent];
- if (handler != null)
- {
- handler(this, e);
- }
- }
-
- protected void OnActiveContentChanged(EventArgs e)
- {
- EventHandler handler = (EventHandler) Events[ActiveContentChangedEvent];
- if (handler != null)
- {
- handler(this, e);
- }
- }
-
- protected virtual void OnActivePaneChanged(EventArgs e)
- {
- EventHandler handler = (EventHandler) Events[ActivePaneChangedEvent];
- if (handler != null)
- {
- handler(this, e);
- }
- }
-
- private interface IFocusManager
- {
- #region Properties
-
- bool IsFocusTrackingSuspended { get; }
- IDockContent ActiveContent { get; }
- DockPane ActivePane { get; }
- IDockContent ActiveDocument { get; }
- DockPane ActiveDocumentPane { get; }
-
- #endregion
-
- #region Public methods
-
- void SuspendFocusTracking();
- void ResumeFocusTracking();
-
- #endregion
- }
-
- private class FocusManagerImpl : Component, IContentFocusManager, IFocusManager
- {
- #region Fields
-
- private int m_countSuspendFocusTracking = 0;
-
- private bool m_disposed = false;
-
- private readonly LocalWindowsHook.HookEventHandler m_hookEventHandler;
-
- private readonly LocalWindowsHook m_localWindowsHook;
-
- #endregion
-
- #region cTor
-
- public FocusManagerImpl(DockPanel dockPanel)
- {
- DockPanel = dockPanel;
- m_localWindowsHook = new LocalWindowsHook(Win32.HookType.WH_CALLWNDPROCRET);
- m_hookEventHandler = new LocalWindowsHook.HookEventHandler(HookEventHandler);
- m_localWindowsHook.HookInvoked += m_hookEventHandler;
- m_localWindowsHook.Install();
- }
-
- #endregion
-
- #region Properties
-
- public DockPanel DockPanel { get; }
-
- private IDockContent ContentActivating { get; set; } = null;
-
- private List ListContent { get; } = new List();
-
- private IDockContent LastActiveContent { get; set; } = null;
-
- public bool IsFocusTrackingSuspended
- {
- get { return m_countSuspendFocusTracking != 0; }
- }
-
- private bool InRefreshActiveWindow { get; set; } = false;
-
- public DockPane ActivePane { get; private set; } = null;
-
- public IDockContent ActiveContent { get; private set; } = null;
-
- public DockPane ActiveDocumentPane { get; private set; } = null;
-
- public IDockContent ActiveDocument { get; private set; } = null;
-
- #endregion
-
- #region Public methods
-
- public void Activate(IDockContent content)
- {
- if (IsFocusTrackingSuspended)
- {
- ContentActivating = content;
- return;
- }
-
- if (content == null)
- {
- return;
- }
- DockContentHandler handler = content.DockHandler;
- if (handler.Form.IsDisposed)
- {
- return; // Should not reach here, but better than throwing an exception
- }
- if (ContentContains(content, handler.ActiveWindowHandle))
- {
- NativeMethods.SetFocus(handler.ActiveWindowHandle);
- }
- if (!handler.Form.ContainsFocus)
- {
- if (!handler.Form.SelectNextControl(handler.Form.ActiveControl, true, true, true, true))
- // Since DockContent Form is not selectalbe, use Win32 SetFocus instead
- {
- NativeMethods.SetFocus(handler.Form.Handle);
- }
- }
- }
-
- public void AddToList(IDockContent content)
- {
- if (ListContent.Contains(content) || IsInActiveList(content))
- {
- return;
- }
-
- ListContent.Add(content);
- }
-
- public void RemoveFromList(IDockContent content)
- {
- if (IsInActiveList(content))
- {
- RemoveFromActiveList(content);
- }
- if (ListContent.Contains(content))
- {
- ListContent.Remove(content);
- }
- }
-
- public void GiveUpFocus(IDockContent content)
- {
- DockContentHandler handler = content.DockHandler;
- if (!handler.Form.ContainsFocus)
- {
- return;
- }
-
- if (IsFocusTrackingSuspended)
- {
- DockPanel.DummyControl.Focus();
- }
-
- if (LastActiveContent == content)
- {
- IDockContent prev = handler.PreviousActive;
- if (prev != null)
- {
- Activate(prev);
- }
- else if (ListContent.Count > 0)
- {
- Activate(ListContent[ListContent.Count - 1]);
- }
- }
- else if (LastActiveContent != null)
- {
- Activate(LastActiveContent);
- }
- else if (ListContent.Count > 0)
- {
- Activate(ListContent[ListContent.Count - 1]);
- }
- }
-
- public void SuspendFocusTracking()
- {
- m_countSuspendFocusTracking++;
- m_localWindowsHook.HookInvoked -= m_hookEventHandler;
- }
-
- public void ResumeFocusTracking()
- {
- if (m_countSuspendFocusTracking > 0)
- {
- m_countSuspendFocusTracking--;
- }
-
- if (m_countSuspendFocusTracking == 0)
- {
- if (ContentActivating != null)
- {
- Activate(ContentActivating);
- ContentActivating = null;
- }
- m_localWindowsHook.HookInvoked += m_hookEventHandler;
- if (!InRefreshActiveWindow)
- {
- RefreshActiveWindow();
- }
- }
- }
-
- #endregion
-
- #region Internals
-
- internal void SetActiveContent()
- {
- IDockContent value = ActivePane == null ? null : ActivePane.ActiveContent;
-
- if (ActiveContent == value)
- {
- return;
- }
-
- if (ActiveContent != null)
- {
- ActiveContent.DockHandler.IsActivated = false;
- }
-
- ActiveContent = value;
-
- if (ActiveContent != null)
- {
- ActiveContent.DockHandler.IsActivated = true;
- if (!DockHelper.IsDockStateAutoHide(ActiveContent.DockHandler.DockState))
- {
- AddLastToActiveList(ActiveContent);
- }
- }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void Dispose(bool disposing)
- {
- lock (this)
- {
- if (!m_disposed && disposing)
- {
- m_localWindowsHook.Dispose();
- m_disposed = true;
- }
-
- base.Dispose(disposing);
- }
- }
-
- #endregion
-
- #region Private Methods
-
- private bool IsInActiveList(IDockContent content)
- {
- return !(content.DockHandler.NextActive == null && LastActiveContent != content);
- }
-
- private void AddLastToActiveList(IDockContent content)
- {
- IDockContent last = LastActiveContent;
- if (last == content)
- {
- return;
- }
-
- DockContentHandler handler = content.DockHandler;
-
- if (IsInActiveList(content))
- {
- RemoveFromActiveList(content);
- }
-
- handler.PreviousActive = last;
- handler.NextActive = null;
- LastActiveContent = content;
- if (last != null)
- {
- last.DockHandler.NextActive = LastActiveContent;
- }
- }
-
- private void RemoveFromActiveList(IDockContent content)
- {
- if (LastActiveContent == content)
- {
- LastActiveContent = content.DockHandler.PreviousActive;
- }
-
- IDockContent prev = content.DockHandler.PreviousActive;
- IDockContent next = content.DockHandler.NextActive;
- if (prev != null)
- {
- prev.DockHandler.NextActive = next;
- }
- if (next != null)
- {
- next.DockHandler.PreviousActive = prev;
- }
-
- content.DockHandler.PreviousActive = null;
- content.DockHandler.NextActive = null;
- }
-
- private static bool ContentContains(IDockContent content, IntPtr hWnd)
- {
- Control control = Control.FromChildHandle(hWnd);
- for (Control parent = control; parent != null; parent = parent.Parent)
- {
- if (parent == content.DockHandler.Form)
- {
- return true;
- }
- }
-
- return false;
- }
-
- private DockPane GetPaneFromHandle(IntPtr hWnd)
- {
- Control control = Control.FromChildHandle(hWnd);
-
- IDockContent content = null;
- DockPane pane = null;
- for (; control != null; control = control.Parent)
- {
- content = control as IDockContent;
- if (content != null)
- {
- content.DockHandler.ActiveWindowHandle = hWnd;
- }
-
- if (content != null && content.DockHandler.DockPanel == DockPanel)
- {
- return content.DockHandler.Pane;
- }
-
- pane = control as DockPane;
- if (pane != null && pane.DockPanel == DockPanel)
- {
- break;
- }
- }
-
- return pane;
- }
-
- private void RefreshActiveWindow()
- {
- SuspendFocusTracking();
- InRefreshActiveWindow = true;
-
- DockPane oldActivePane = ActivePane;
- IDockContent oldActiveContent = ActiveContent;
- IDockContent oldActiveDocument = ActiveDocument;
-
- SetActivePane();
- SetActiveContent();
- SetActiveDocumentPane();
- SetActiveDocument();
- DockPanel.AutoHideWindow.RefreshActivePane();
-
- ResumeFocusTracking();
- InRefreshActiveWindow = false;
-
- if (oldActiveContent != ActiveContent)
- {
- DockPanel.OnActiveContentChanged(EventArgs.Empty);
- }
- if (oldActiveDocument != ActiveDocument)
- {
- DockPanel.OnActiveDocumentChanged(EventArgs.Empty);
- }
- if (oldActivePane != ActivePane)
- {
- DockPanel.OnActivePaneChanged(EventArgs.Empty);
- }
- }
-
- private void SetActivePane()
- {
- DockPane value = GetPaneFromHandle(NativeMethods.GetFocus());
- if (ActivePane == value)
- {
- return;
- }
-
- if (ActivePane != null)
- {
- ActivePane.SetIsActivated(false);
- }
-
- ActivePane = value;
-
- if (ActivePane != null)
- {
- ActivePane.SetIsActivated(true);
- }
- }
-
- private void SetActiveDocumentPane()
- {
- DockPane value = null;
-
- if (ActivePane != null && ActivePane.DockState == DockState.Document)
- {
- value = ActivePane;
- }
-
- if (value == null && DockPanel.DockWindows != null)
- {
- if (ActiveDocumentPane == null)
- {
- value = DockPanel.DockWindows[DockState.Document].DefaultPane;
- }
- else if (ActiveDocumentPane.DockPanel != DockPanel ||
- ActiveDocumentPane.DockState != DockState.Document)
- {
- value = DockPanel.DockWindows[DockState.Document].DefaultPane;
- }
- else
- {
- value = ActiveDocumentPane;
- }
- }
-
- if (ActiveDocumentPane == value)
- {
- return;
- }
-
- if (ActiveDocumentPane != null)
- {
- ActiveDocumentPane.SetIsActiveDocumentPane(false);
- }
-
- ActiveDocumentPane = value;
-
- if (ActiveDocumentPane != null)
- {
- ActiveDocumentPane.SetIsActiveDocumentPane(true);
- }
- }
-
- private void SetActiveDocument()
- {
- IDockContent value = ActiveDocumentPane == null ? null : ActiveDocumentPane.ActiveContent;
-
- if (ActiveDocument == value)
- {
- return;
- }
-
- ActiveDocument = value;
- }
-
- #endregion
-
- #region Events handler
-
- // Windows hook event handler
- private void HookEventHandler(object sender, HookEventArgs e)
- {
- Win32.Msgs msg = (Win32.Msgs) Marshal.ReadInt32(e.lParam, IntPtr.Size * 3);
-
- if (msg == Win32.Msgs.WM_KILLFOCUS)
- {
- IntPtr wParam = Marshal.ReadIntPtr(e.lParam, IntPtr.Size * 2);
- DockPane pane = GetPaneFromHandle(wParam);
- if (pane == null)
- {
- RefreshActiveWindow();
- }
- }
- else if (msg == Win32.Msgs.WM_SETFOCUS)
- {
- RefreshActiveWindow();
- }
- }
-
- #endregion
-
- private class HookEventArgs : EventArgs
- {
- #region Fields
-
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] public int HookCode;
-
- public IntPtr lParam;
-
- [SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")] public IntPtr wParam;
-
- #endregion
- }
-
- private class LocalWindowsHook : IDisposable
- {
- #region Fields
-
- private readonly NativeMethods.HookProc m_filterFunc = null;
-
- // Internal properties
- private IntPtr m_hHook = IntPtr.Zero;
-
- private readonly Win32.HookType m_hookType;
-
- #endregion
-
- #region cTor
-
- public LocalWindowsHook(Win32.HookType hook)
- {
- m_hookType = hook;
- m_filterFunc = new NativeMethods.HookProc(this.CoreHookProc);
- }
-
- #endregion
-
- #region Delegates
-
- // Event delegate
- public delegate void HookEventHandler(object sender, HookEventArgs e);
-
- #endregion
-
- #region Events
-
- // Event: HookInvoked
- public event HookEventHandler HookInvoked;
-
- #endregion
-
- #region Public methods
-
- // Default filter function
- public IntPtr CoreHookProc(int code, IntPtr wParam, IntPtr lParam)
- {
- if (code < 0)
- {
- return NativeMethods.CallNextHookEx(m_hHook, code, wParam, lParam);
- }
-
- // Let clients determine what to do
- HookEventArgs e = new HookEventArgs();
- e.HookCode = code;
- e.wParam = wParam;
- e.lParam = lParam;
- OnHookInvoked(e);
-
- // Yield to the next hook in the chain
- return NativeMethods.CallNextHookEx(m_hHook, code, wParam, lParam);
- }
-
- // Install the hook
- public void Install()
- {
- if (m_hHook != IntPtr.Zero)
- {
- Uninstall();
- }
-
- int threadId = NativeMethods.GetCurrentThreadId();
- m_hHook = NativeMethods.SetWindowsHookEx(m_hookType, m_filterFunc, IntPtr.Zero, threadId);
- }
-
- // Uninstall the hook
- public void Uninstall()
- {
- if (m_hHook != IntPtr.Zero)
- {
- NativeMethods.UnhookWindowsHookEx(m_hHook);
- m_hHook = IntPtr.Zero;
- }
- }
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- #endregion
-
- protected void OnHookInvoked(HookEventArgs e)
- {
- if (HookInvoked != null)
- {
- HookInvoked(this, e);
- }
- }
-
- ~LocalWindowsHook()
- {
- Dispose(false);
- }
-
- protected virtual void Dispose(bool disposing)
- {
- Uninstall();
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPanel.MdiClientController.cs b/src/WinFormsUI/Docking/DockPanel.MdiClientController.cs
deleted file mode 100644
index 996896c8..00000000
--- a/src/WinFormsUI/Docking/DockPanel.MdiClientController.cs
+++ /dev/null
@@ -1,534 +0,0 @@
-using System;
-using System.Drawing;
-using System.Windows.Forms;
-using System.ComponentModel;
-using System.ComponentModel.Design;
-using System.Runtime.InteropServices;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- partial class DockPanel
- {
- #region Fields
-
- private MdiClientController m_mdiClientController = null;
-
- #endregion
-
- #region Properties
-
- private bool MdiClientExists
- {
- get { return GetMdiClientController().MdiClient != null; }
- }
-
- #endregion
-
- #region Internals
-
- internal Rectangle RectangleToMdiClient(Rectangle rect)
- {
- if (MdiClientExists)
- {
- return GetMdiClientController().MdiClient.RectangleToClient(rect);
- }
- else
- {
- return Rectangle.Empty;
- }
- }
-
- #endregion
-
- #region Private Methods
-
- private MdiClientController GetMdiClientController()
- {
- if (m_mdiClientController == null)
- {
- m_mdiClientController = new MdiClientController();
- m_mdiClientController.HandleAssigned += new EventHandler(MdiClientHandleAssigned);
- m_mdiClientController.MdiChildActivate += new EventHandler(ParentFormMdiChildActivate);
- m_mdiClientController.Layout += new LayoutEventHandler(MdiClient_Layout);
- }
-
- return m_mdiClientController;
- }
-
- private void SetMdiClientBounds(Rectangle bounds)
- {
- GetMdiClientController().MdiClient.Bounds = bounds;
- }
-
- private void SuspendMdiClientLayout()
- {
- if (GetMdiClientController().MdiClient != null)
- {
- GetMdiClientController().MdiClient.SuspendLayout();
- }
- }
-
- private void ResumeMdiClientLayout(bool perform)
- {
- if (GetMdiClientController().MdiClient != null)
- {
- GetMdiClientController().MdiClient.ResumeLayout(perform);
- }
- }
-
- private void PerformMdiClientLayout()
- {
- if (GetMdiClientController().MdiClient != null)
- {
- GetMdiClientController().MdiClient.PerformLayout();
- }
- }
-
- // Called when:
- // 1. DockPanel.DocumentStyle changed
- // 2. DockPanel.Visible changed
- // 3. MdiClientController.Handle assigned
- private void SetMdiClient()
- {
- MdiClientController controller = GetMdiClientController();
-
- if (this.DocumentStyle == DocumentStyle.DockingMdi)
- {
- controller.AutoScroll = false;
- controller.BorderStyle = BorderStyle.None;
- if (MdiClientExists)
- {
- controller.MdiClient.Dock = DockStyle.Fill;
- }
- }
- else if (DocumentStyle == DocumentStyle.DockingSdi || DocumentStyle == DocumentStyle.DockingWindow)
- {
- controller.AutoScroll = true;
- controller.BorderStyle = BorderStyle.Fixed3D;
- if (MdiClientExists)
- {
- controller.MdiClient.Dock = DockStyle.Fill;
- }
- }
- else if (this.DocumentStyle == DocumentStyle.SystemMdi)
- {
- controller.AutoScroll = true;
- controller.BorderStyle = BorderStyle.Fixed3D;
- if (controller.MdiClient != null)
- {
- controller.MdiClient.Dock = DockStyle.None;
- controller.MdiClient.Bounds = SystemMdiClientBounds;
- }
- }
- }
-
- #endregion
-
- #region Events handler
-
- private void ParentFormMdiChildActivate(object sender, EventArgs e)
- {
- if (GetMdiClientController().ParentForm == null)
- {
- return;
- }
-
- IDockContent content = GetMdiClientController().ParentForm.ActiveMdiChild as IDockContent;
- if (content == null)
- {
- return;
- }
-
- if (content.DockHandler.DockPanel == this && content.DockHandler.Pane != null)
- {
- content.DockHandler.Pane.ActiveContent = content;
- }
- }
-
- #endregion
-
- // This class comes from Jacob Slusser's MdiClientController class:
- // http://www.codeproject.com/cs/miscctrl/mdiclientcontroller.asp
- private class MdiClientController : NativeWindow, IComponent, IDisposable
- {
- #region Fields
-
- private bool m_autoScroll = true;
- private BorderStyle m_borderStyle = BorderStyle.Fixed3D;
- private Form m_parentForm = null;
- private ISite m_site = null;
-
- #endregion
-
- #region cTor
-
- public MdiClientController()
- {
- }
-
- #endregion
-
- #region Events
-
- public event EventHandler Disposed;
-
- public event EventHandler HandleAssigned;
-
- public event EventHandler MdiChildActivate;
-
- public event LayoutEventHandler Layout;
-
- public event PaintEventHandler Paint;
-
- #endregion
-
- #region Properties
-
- public bool AutoScroll
- {
- get { return m_autoScroll; }
- set
- {
- // By default the MdiClient control scrolls. It can appear though that
- // there are no scrollbars by turning them off when the non-client
- // area is calculated. I decided to expose this method following
- // the .NET vernacular of an AutoScroll property.
- m_autoScroll = value;
- if (MdiClient != null)
- {
- UpdateStyles();
- }
- }
- }
-
- public BorderStyle BorderStyle
- {
- set
- {
- // Error-check the enum.
- if (!Enum.IsDefined(typeof(BorderStyle), value))
- {
- throw new InvalidEnumArgumentException();
- }
-
- m_borderStyle = value;
-
- if (MdiClient == null)
- {
- return;
- }
-
- // This property can actually be visible in design-mode,
- // but to keep it consistent with the others,
- // prevent this from being show at design-time.
- if (Site != null && Site.DesignMode)
- {
- return;
- }
-
- // There is no BorderStyle property exposed by the MdiClient class,
- // but this can be controlled by Win32 functions. A Win32 ExStyle
- // of WS_EX_CLIENTEDGE is equivalent to a Fixed3D border and a
- // Style of WS_BORDER is equivalent to a FixedSingle border.
-
- // This code is inspired Jason Dori's article:
- // "Adding designable borders to user controls".
- // http://www.codeproject.com/cs/miscctrl/CsAddingBorders.asp
-
- // Get styles using Win32 calls
- int style = NativeMethods.GetWindowLong(MdiClient.Handle, (int) Win32.GetWindowLongIndex.GWL_STYLE);
- int exStyle =
- NativeMethods.GetWindowLong(MdiClient.Handle, (int) Win32.GetWindowLongIndex.GWL_EXSTYLE);
-
- // Add or remove style flags as necessary.
- switch (m_borderStyle)
- {
- case BorderStyle.Fixed3D:
- exStyle |= (int) Win32.WindowExStyles.WS_EX_CLIENTEDGE;
- style &= ~(int) Win32.WindowStyles.WS_BORDER;
- break;
-
- case BorderStyle.FixedSingle:
- exStyle &= ~(int) Win32.WindowExStyles.WS_EX_CLIENTEDGE;
- style |= (int) Win32.WindowStyles.WS_BORDER;
- break;
-
- case BorderStyle.None:
- style &= ~(int) Win32.WindowStyles.WS_BORDER;
- exStyle &= ~(int) Win32.WindowExStyles.WS_EX_CLIENTEDGE;
- break;
- }
-
- // Set the styles using Win32 calls
- NativeMethods.SetWindowLong(MdiClient.Handle, (int) Win32.GetWindowLongIndex.GWL_STYLE, style);
- NativeMethods.SetWindowLong(MdiClient.Handle, (int) Win32.GetWindowLongIndex.GWL_EXSTYLE, exStyle);
-
- // Cause an update of the non-client area.
- UpdateStyles();
- }
- }
-
- public MdiClient MdiClient { get; private set; } = null;
-
- [Browsable(false)]
- public Form ParentForm
- {
- get { return m_parentForm; }
- set
- {
- // If the ParentForm has previously been set,
- // unwire events connected to the old parent.
- if (m_parentForm != null)
- {
- m_parentForm.HandleCreated -= new EventHandler(ParentFormHandleCreated);
- m_parentForm.MdiChildActivate -= new EventHandler(ParentFormMdiChildActivate);
- }
-
- m_parentForm = value;
-
- if (m_parentForm == null)
- {
- return;
- }
-
- // If the parent form has not been created yet,
- // wait to initialize the MDI client until it is.
- if (m_parentForm.IsHandleCreated)
- {
- InitializeMdiClient();
- RefreshProperties();
- }
- else
- {
- m_parentForm.HandleCreated += new EventHandler(ParentFormHandleCreated);
- }
-
- m_parentForm.MdiChildActivate += new EventHandler(ParentFormMdiChildActivate);
- }
- }
-
- public ISite Site
- {
- get { return m_site; }
- set
- {
- m_site = value;
-
- if (m_site == null)
- {
- return;
- }
-
- // If the component is dropped onto a form during design-time,
- // set the ParentForm property.
- IDesignerHost host = value.GetService(typeof(IDesignerHost)) as IDesignerHost;
- if (host != null)
- {
- Form parent = host.RootComponent as Form;
- if (parent != null)
- {
- ParentForm = parent;
- }
- }
- }
- }
-
- #endregion
-
- #region Public methods
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- public void RenewMdiClient()
- {
- // Reinitialize the MdiClient and its properties.
- InitializeMdiClient();
- RefreshProperties();
- }
-
- #endregion
-
- #region Overrides
-
- protected override void WndProc(ref Message m)
- {
- switch (m.Msg)
- {
- case (int) Win32.Msgs.WM_NCCALCSIZE:
- // If AutoScroll is set to false, hide the scrollbars when the control
- // calculates its non-client area.
- if (!AutoScroll)
- {
- NativeMethods.ShowScrollBar(m.HWnd, (int) Win32.ScrollBars.SB_BOTH, 0 /*false*/);
- }
- break;
- }
-
- base.WndProc(ref m);
- }
-
- #endregion
-
- #region Private Methods
-
- private void InitializeMdiClient()
- {
- // If the mdiClient has previously been set, unwire events connected
- // to the old MDI.
- if (MdiClient != null)
- {
- MdiClient.HandleDestroyed -= new EventHandler(MdiClientHandleDestroyed);
- MdiClient.Layout -= new LayoutEventHandler(MdiClientLayout);
- }
-
- if (ParentForm == null)
- {
- return;
- }
-
- // Get the MdiClient from the parent form.
- foreach (Control control in ParentForm.Controls)
- {
- // If the form is an MDI container, it will contain an MdiClient control
- // just as it would any other control.
-
- MdiClient = control as MdiClient;
- if (MdiClient == null)
- {
- continue;
- }
-
- // Assign the MdiClient Handle to the NativeWindow.
- ReleaseHandle();
- AssignHandle(MdiClient.Handle);
-
- // Raise the HandleAssigned event.
- OnHandleAssigned(EventArgs.Empty);
-
- // Monitor the MdiClient for when its handle is destroyed.
- MdiClient.HandleDestroyed += new EventHandler(MdiClientHandleDestroyed);
- MdiClient.Layout += new LayoutEventHandler(MdiClientLayout);
-
- break;
- }
- }
-
- private void RefreshProperties()
- {
- // Refresh all the properties
- BorderStyle = m_borderStyle;
- AutoScroll = m_autoScroll;
- }
-
- private void UpdateStyles()
- {
- // To show style changes, the non-client area must be repainted. Using the
- // control's Invalidate method does not affect the non-client area.
- // Instead use a Win32 call to signal the style has changed.
- NativeMethods.SetWindowPos(MdiClient.Handle, IntPtr.Zero, 0, 0, 0, 0,
- Win32.FlagsSetWindowPos.SWP_NOACTIVATE |
- Win32.FlagsSetWindowPos.SWP_NOMOVE |
- Win32.FlagsSetWindowPos.SWP_NOSIZE |
- Win32.FlagsSetWindowPos.SWP_NOZORDER |
- Win32.FlagsSetWindowPos.SWP_NOOWNERZORDER |
- Win32.FlagsSetWindowPos.SWP_FRAMECHANGED);
- }
-
- #endregion
-
- #region Events handler
-
- private void ParentFormHandleCreated(object sender, EventArgs e)
- {
- // The form has been created, unwire the event, and initialize the MdiClient.
- this.m_parentForm.HandleCreated -= new EventHandler(ParentFormHandleCreated);
- InitializeMdiClient();
- RefreshProperties();
- }
-
- private void ParentFormMdiChildActivate(object sender, EventArgs e)
- {
- OnMdiChildActivate(e);
- }
-
- private void MdiClientLayout(object sender, LayoutEventArgs e)
- {
- OnLayout(e);
- }
-
- private void MdiClientHandleDestroyed(object sender, EventArgs e)
- {
- // If the MdiClient handle has been released, drop the reference and
- // release the handle.
- if (MdiClient != null)
- {
- MdiClient.HandleDestroyed -= new EventHandler(MdiClientHandleDestroyed);
- MdiClient = null;
- }
-
- ReleaseHandle();
- }
-
- #endregion
-
- protected virtual void Dispose(bool disposing)
- {
- if (disposing)
- {
- lock (this)
- {
- if (Site != null && Site.Container != null)
- {
- Site.Container.Remove(this);
- }
-
- if (Disposed != null)
- {
- Disposed(this, EventArgs.Empty);
- }
- }
- }
- }
-
- protected virtual void OnHandleAssigned(EventArgs e)
- {
- // Raise the HandleAssigned event.
- if (HandleAssigned != null)
- {
- HandleAssigned(this, e);
- }
- }
-
- protected virtual void OnMdiChildActivate(EventArgs e)
- {
- // Raise the MdiChildActivate event
- if (MdiChildActivate != null)
- {
- MdiChildActivate(this, e);
- }
- }
-
- protected virtual void OnLayout(LayoutEventArgs e)
- {
- // Raise the Layout event
- if (Layout != null)
- {
- Layout(this, e);
- }
- }
-
- protected virtual void OnPaint(PaintEventArgs e)
- {
- // Raise the Paint event.
- if (Paint != null)
- {
- Paint(this, e);
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPanel.Persistor.cs b/src/WinFormsUI/Docking/DockPanel.Persistor.cs
deleted file mode 100644
index 49d54ff2..00000000
--- a/src/WinFormsUI/Docking/DockPanel.Persistor.cs
+++ /dev/null
@@ -1,816 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.Windows.Forms;
-using System.Drawing;
-using WeifenLuo.WinFormsUI.Docking;
-using System.IO;
-using System.Text;
-using System.Xml;
-using System.Globalization;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- partial class DockPanel
- {
- #region Public methods
-
- public void SaveAsXml(string fileName)
- {
- Persistor.SaveAsXml(this, fileName);
- }
-
- public void SaveAsXml(string fileName, Encoding encoding)
- {
- Persistor.SaveAsXml(this, fileName, encoding);
- }
-
- public void SaveAsXml(Stream stream, Encoding encoding)
- {
- Persistor.SaveAsXml(this, stream, encoding);
- }
-
- public void SaveAsXml(Stream stream, Encoding encoding, bool upstream)
- {
- Persistor.SaveAsXml(this, stream, encoding, upstream);
- }
-
- public void LoadFromXml(string fileName, DeserializeDockContent deserializeContent)
- {
- Persistor.LoadFromXml(this, fileName, deserializeContent);
- }
-
- public void LoadFromXml(Stream stream, DeserializeDockContent deserializeContent)
- {
- Persistor.LoadFromXml(this, stream, deserializeContent);
- }
-
- public void LoadFromXml(Stream stream, DeserializeDockContent deserializeContent, bool closeStream)
- {
- Persistor.LoadFromXml(this, stream, deserializeContent, closeStream);
- }
-
- #endregion
-
- private static class Persistor
- {
- #region Fields
-
- private const string ConfigFileVersion = "1.0";
- private static readonly string[] CompatibleConfigFileVersions = new string[] { };
-
- #endregion
-
- #region Public methods
-
- public static void SaveAsXml(DockPanel dockPanel, string fileName)
- {
- SaveAsXml(dockPanel, fileName, Encoding.Unicode);
- }
-
- public static void SaveAsXml(DockPanel dockPanel, string fileName, Encoding encoding)
- {
- FileStream fs = new FileStream(fileName, FileMode.Create);
- try
- {
- SaveAsXml(dockPanel, fs, encoding);
- }
- finally
- {
- fs.Close();
- }
- }
-
- public static void SaveAsXml(DockPanel dockPanel, Stream stream, Encoding encoding)
- {
- SaveAsXml(dockPanel, stream, encoding, false);
- }
-
- public static void SaveAsXml(DockPanel dockPanel, Stream stream, Encoding encoding, bool upstream)
- {
- XmlTextWriter xmlOut = new XmlTextWriter(stream, encoding);
-
- // Use indenting for readability
- xmlOut.Formatting = Formatting.Indented;
-
- if (!upstream)
- {
- xmlOut.WriteStartDocument();
- }
-
- // Always begin file with identification and warning
- xmlOut.WriteComment(Strings.DockPanel_Persistor_XmlFileComment1);
- xmlOut.WriteComment(Strings.DockPanel_Persistor_XmlFileComment2);
-
- // Associate a version number with the root element so that future version of the code
- // will be able to be backwards compatible or at least recognise out of date versions
- xmlOut.WriteStartElement("DockPanel");
- xmlOut.WriteAttributeString("FormatVersion", ConfigFileVersion);
- xmlOut.WriteAttributeString("DockLeftPortion",
- dockPanel.DockLeftPortion.ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("DockRightPortion",
- dockPanel.DockRightPortion.ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("DockTopPortion",
- dockPanel.DockTopPortion.ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("DockBottomPortion",
- dockPanel.DockBottomPortion.ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("ActiveDocumentPane",
- dockPanel.Panes.IndexOf(dockPanel.ActiveDocumentPane).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("ActivePane",
- dockPanel.Panes.IndexOf(dockPanel.ActivePane).ToString(CultureInfo.InvariantCulture));
-
- // Contents
- xmlOut.WriteStartElement("Contents");
- xmlOut.WriteAttributeString("Count", dockPanel.Contents.Count.ToString(CultureInfo.InvariantCulture));
- foreach (IDockContent content in dockPanel.Contents)
- {
- xmlOut.WriteStartElement("Content");
- xmlOut.WriteAttributeString("ID",
- dockPanel.Contents.IndexOf(content).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("PersistString", content.DockHandler.PersistString);
- xmlOut.WriteAttributeString("AutoHidePortion",
- content.DockHandler.AutoHidePortion.ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("IsHidden",
- content.DockHandler.IsHidden.ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("IsFloat",
- content.DockHandler.IsFloat.ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteEndElement();
- }
- xmlOut.WriteEndElement();
-
- // Panes
- xmlOut.WriteStartElement("Panes");
- xmlOut.WriteAttributeString("Count", dockPanel.Panes.Count.ToString(CultureInfo.InvariantCulture));
- foreach (DockPane pane in dockPanel.Panes)
- {
- xmlOut.WriteStartElement("Pane");
- xmlOut.WriteAttributeString("ID",
- dockPanel.Panes.IndexOf(pane).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("DockState", pane.DockState.ToString());
- xmlOut.WriteAttributeString("ActiveContent",
- dockPanel.Contents.IndexOf(pane.ActiveContent).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteStartElement("Contents");
- xmlOut.WriteAttributeString("Count", pane.Contents.Count.ToString(CultureInfo.InvariantCulture));
- foreach (IDockContent content in pane.Contents)
- {
- xmlOut.WriteStartElement("Content");
- xmlOut.WriteAttributeString("ID",
- pane.Contents.IndexOf(content).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("RefID",
- dockPanel.Contents.IndexOf(content).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteEndElement();
- }
- xmlOut.WriteEndElement();
- xmlOut.WriteEndElement();
- }
- xmlOut.WriteEndElement();
-
- // DockWindows
- xmlOut.WriteStartElement("DockWindows");
- int dockWindowId = 0;
- foreach (DockWindow dw in dockPanel.DockWindows)
- {
- xmlOut.WriteStartElement("DockWindow");
- xmlOut.WriteAttributeString("ID", dockWindowId.ToString(CultureInfo.InvariantCulture));
- dockWindowId++;
- xmlOut.WriteAttributeString("DockState", dw.DockState.ToString());
- xmlOut.WriteAttributeString("ZOrderIndex",
- dockPanel.Controls.IndexOf(dw).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteStartElement("NestedPanes");
- xmlOut.WriteAttributeString("Count", dw.NestedPanes.Count.ToString(CultureInfo.InvariantCulture));
- foreach (DockPane pane in dw.NestedPanes)
- {
- xmlOut.WriteStartElement("Pane");
- xmlOut.WriteAttributeString("ID",
- dw.NestedPanes.IndexOf(pane).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("RefID",
- dockPanel.Panes.IndexOf(pane).ToString(CultureInfo.InvariantCulture));
- NestedDockingStatus status = pane.NestedDockingStatus;
- xmlOut.WriteAttributeString("PrevPane",
- dockPanel.Panes.IndexOf(status.PreviousPane).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("Alignment", status.Alignment.ToString());
- xmlOut.WriteAttributeString("Proportion",
- status.Proportion.ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteEndElement();
- }
- xmlOut.WriteEndElement();
- xmlOut.WriteEndElement();
- }
- xmlOut.WriteEndElement();
-
- // FloatWindows
- RectangleConverter rectConverter = new RectangleConverter();
- xmlOut.WriteStartElement("FloatWindows");
- xmlOut.WriteAttributeString("Count",
- dockPanel.FloatWindows.Count.ToString(CultureInfo.InvariantCulture));
- foreach (FloatWindow fw in dockPanel.FloatWindows)
- {
- xmlOut.WriteStartElement("FloatWindow");
- xmlOut.WriteAttributeString("ID",
- dockPanel.FloatWindows.IndexOf(fw).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("Bounds", rectConverter.ConvertToInvariantString(fw.Bounds));
- xmlOut.WriteAttributeString("ZOrderIndex",
- fw.DockPanel.FloatWindows.IndexOf(fw).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteStartElement("NestedPanes");
- xmlOut.WriteAttributeString("Count", fw.NestedPanes.Count.ToString(CultureInfo.InvariantCulture));
- foreach (DockPane pane in fw.NestedPanes)
- {
- xmlOut.WriteStartElement("Pane");
- xmlOut.WriteAttributeString("ID",
- fw.NestedPanes.IndexOf(pane).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("RefID",
- dockPanel.Panes.IndexOf(pane).ToString(CultureInfo.InvariantCulture));
- NestedDockingStatus status = pane.NestedDockingStatus;
- xmlOut.WriteAttributeString("PrevPane",
- dockPanel.Panes.IndexOf(status.PreviousPane).ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteAttributeString("Alignment", status.Alignment.ToString());
- xmlOut.WriteAttributeString("Proportion",
- status.Proportion.ToString(CultureInfo.InvariantCulture));
- xmlOut.WriteEndElement();
- }
- xmlOut.WriteEndElement();
- xmlOut.WriteEndElement();
- }
- xmlOut.WriteEndElement(); //
-
- xmlOut.WriteEndElement();
-
- if (!upstream)
- {
- xmlOut.WriteEndDocument();
- xmlOut.Close();
- }
- else
- {
- xmlOut.Flush();
- }
- }
-
- public static void LoadFromXml(DockPanel dockPanel, string fileName,
- DeserializeDockContent deserializeContent)
- {
- FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
- try
- {
- LoadFromXml(dockPanel, fs, deserializeContent);
- }
- finally
- {
- fs.Close();
- }
- }
-
- public static void LoadFromXml(DockPanel dockPanel, Stream stream,
- DeserializeDockContent deserializeContent)
- {
- LoadFromXml(dockPanel, stream, deserializeContent, true);
- }
-
- public static void LoadFromXml(DockPanel dockPanel, Stream stream,
- DeserializeDockContent deserializeContent, bool closeStream)
- {
- if (dockPanel.Contents.Count != 0)
- {
- //TODO this happens if a session is loaded and the dialog is just closed, this needs to be adressed
- throw new InvalidOperationException(Strings.DockPanel_LoadFromXml_AlreadyInitialized);
- }
-
- XmlTextReader xmlIn = new XmlTextReader(stream);
- xmlIn.WhitespaceHandling = WhitespaceHandling.None;
- xmlIn.MoveToContent();
-
- while (!xmlIn.Name.Equals("DockPanel"))
- {
- if (!MoveToNextElement(xmlIn))
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
- }
-
- string formatVersion = xmlIn.GetAttribute("FormatVersion");
- if (!IsFormatVersionValid(formatVersion))
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidFormatVersion);
- }
-
- DockPanelStruct dockPanelStruct = new DockPanelStruct();
- dockPanelStruct.DockLeftPortion =
- Convert.ToDouble(xmlIn.GetAttribute("DockLeftPortion"), CultureInfo.InvariantCulture);
- dockPanelStruct.DockRightPortion = Convert.ToDouble(xmlIn.GetAttribute("DockRightPortion"),
- CultureInfo.InvariantCulture);
- dockPanelStruct.DockTopPortion =
- Convert.ToDouble(xmlIn.GetAttribute("DockTopPortion"), CultureInfo.InvariantCulture);
- dockPanelStruct.DockBottomPortion = Convert.ToDouble(xmlIn.GetAttribute("DockBottomPortion"),
- CultureInfo.InvariantCulture);
- dockPanelStruct.IndexActiveDocumentPane = Convert.ToInt32(xmlIn.GetAttribute("ActiveDocumentPane"),
- CultureInfo.InvariantCulture);
- dockPanelStruct.IndexActivePane =
- Convert.ToInt32(xmlIn.GetAttribute("ActivePane"), CultureInfo.InvariantCulture);
-
- // Load Contents
- MoveToNextElement(xmlIn);
- if (xmlIn.Name != "Contents")
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
- ContentStruct[] contents = LoadContents(xmlIn);
-
- // Load Panes
- if (xmlIn.Name != "Panes")
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
- PaneStruct[] panes = LoadPanes(xmlIn);
-
- // Load DockWindows
- if (xmlIn.Name != "DockWindows")
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
- DockWindowStruct[] dockWindows = LoadDockWindows(xmlIn, dockPanel);
-
- // Load FloatWindows
- if (xmlIn.Name != "FloatWindows")
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
- FloatWindowStruct[] floatWindows = LoadFloatWindows(xmlIn);
-
- if (closeStream)
- {
- xmlIn.Close();
- }
-
- dockPanel.SuspendLayout(true);
-
- dockPanel.DockLeftPortion = dockPanelStruct.DockLeftPortion;
- dockPanel.DockRightPortion = dockPanelStruct.DockRightPortion;
- dockPanel.DockTopPortion = dockPanelStruct.DockTopPortion;
- dockPanel.DockBottomPortion = dockPanelStruct.DockBottomPortion;
-
- // Set DockWindow ZOrders
- int prevMaxDockWindowZOrder = int.MaxValue;
- for (int i = 0; i < dockWindows.Length; i++)
- {
- int maxDockWindowZOrder = -1;
- int index = -1;
- for (int j = 0; j < dockWindows.Length; j++)
- {
- if (dockWindows[j].ZOrderIndex > maxDockWindowZOrder &&
- dockWindows[j].ZOrderIndex < prevMaxDockWindowZOrder)
- {
- maxDockWindowZOrder = dockWindows[j].ZOrderIndex;
- index = j;
- }
- }
-
- dockPanel.DockWindows[dockWindows[index].DockState].BringToFront();
- prevMaxDockWindowZOrder = maxDockWindowZOrder;
- }
-
- // Create Contents
- for (int i = 0; i < contents.Length; i++)
- {
- IDockContent content = deserializeContent(contents[i].PersistString);
- if (content == null)
- {
- content = new DummyContent();
- }
- content.DockHandler.DockPanel = dockPanel;
- content.DockHandler.AutoHidePortion = contents[i].AutoHidePortion;
- content.DockHandler.IsHidden = true;
- content.DockHandler.IsFloat = contents[i].IsFloat;
- }
-
- // Create panes
- for (int i = 0; i < panes.Length; i++)
- {
- DockPane pane = null;
- for (int j = 0; j < panes[i].IndexContents.Length; j++)
- {
- IDockContent content = dockPanel.Contents[panes[i].IndexContents[j]];
- if (j == 0)
- {
- pane = dockPanel.DockPaneFactory.CreateDockPane(content, panes[i].DockState, false);
- }
- else if (panes[i].DockState == DockState.Float)
- {
- content.DockHandler.FloatPane = pane;
- }
- else
- {
- content.DockHandler.PanelPane = pane;
- }
- }
- }
-
- // Assign Panes to DockWindows
- for (int i = 0; i < dockWindows.Length; i++)
- {
- for (int j = 0; j < dockWindows[i].NestedPanes.Length; j++)
- {
- DockWindow dw = dockPanel.DockWindows[dockWindows[i].DockState];
- int indexPane = dockWindows[i].NestedPanes[j].IndexPane;
- DockPane pane = dockPanel.Panes[indexPane];
- int indexPrevPane = dockWindows[i].NestedPanes[j].IndexPrevPane;
- DockPane prevPane = indexPrevPane == -1
- ? dw.NestedPanes.GetDefaultPreviousPane(pane)
- : dockPanel.Panes[indexPrevPane];
- DockAlignment alignment = dockWindows[i].NestedPanes[j].Alignment;
- double proportion = dockWindows[i].NestedPanes[j].Proportion;
- pane.DockTo(dw, prevPane, alignment, proportion);
- if (panes[indexPane].DockState == dw.DockState)
- {
- panes[indexPane].ZOrderIndex = dockWindows[i].ZOrderIndex;
- }
- }
- }
-
- // Create float windows
- for (int i = 0; i < floatWindows.Length; i++)
- {
- FloatWindow fw = null;
- for (int j = 0; j < floatWindows[i].NestedPanes.Length; j++)
- {
- int indexPane = floatWindows[i].NestedPanes[j].IndexPane;
- DockPane pane = dockPanel.Panes[indexPane];
- if (j == 0)
- {
- fw = dockPanel.FloatWindowFactory.CreateFloatWindow(dockPanel, pane,
- floatWindows[i].Bounds);
- }
- else
- {
- int indexPrevPane = floatWindows[i].NestedPanes[j].IndexPrevPane;
- DockPane prevPane = indexPrevPane == -1 ? null : dockPanel.Panes[indexPrevPane];
- DockAlignment alignment = floatWindows[i].NestedPanes[j].Alignment;
- double proportion = floatWindows[i].NestedPanes[j].Proportion;
- pane.DockTo(fw, prevPane, alignment, proportion);
- }
-
- if (panes[indexPane].DockState == fw.DockState)
- {
- panes[indexPane].ZOrderIndex = floatWindows[i].ZOrderIndex;
- }
- }
- }
-
- // sort IDockContent by its Pane's ZOrder
- int[] sortedContents = null;
- if (contents.Length > 0)
- {
- sortedContents = new int[contents.Length];
- for (int i = 0; i < contents.Length; i++)
- {
- sortedContents[i] = i;
- }
-
- int lastDocument = contents.Length;
- for (int i = 0; i < contents.Length - 1; i++)
- {
- for (int j = i + 1; j < contents.Length; j++)
- {
- DockPane pane1 = dockPanel.Contents[sortedContents[i]].DockHandler.Pane;
- int ZOrderIndex1 = pane1 == null ? 0 : panes[dockPanel.Panes.IndexOf(pane1)].ZOrderIndex;
- DockPane pane2 = dockPanel.Contents[sortedContents[j]].DockHandler.Pane;
- int ZOrderIndex2 = pane2 == null ? 0 : panes[dockPanel.Panes.IndexOf(pane2)].ZOrderIndex;
- if (ZOrderIndex1 > ZOrderIndex2)
- {
- int temp = sortedContents[i];
- sortedContents[i] = sortedContents[j];
- sortedContents[j] = temp;
- }
- }
- }
- }
-
- // show non-document IDockContent first to avoid screen flickers
- for (int i = 0; i < contents.Length; i++)
- {
- IDockContent content = dockPanel.Contents[sortedContents[i]];
- if (content.DockHandler.Pane != null && content.DockHandler.Pane.DockState != DockState.Document)
- {
- content.DockHandler.IsHidden = contents[sortedContents[i]].IsHidden;
- }
- }
-
- // after all non-document IDockContent, show document IDockContent
- for (int i = 0; i < contents.Length; i++)
- {
- IDockContent content = dockPanel.Contents[sortedContents[i]];
- if (content.DockHandler.Pane != null && content.DockHandler.Pane.DockState == DockState.Document)
- {
- content.DockHandler.IsHidden = contents[sortedContents[i]].IsHidden;
- }
- }
-
- for (int i = 0; i < panes.Length; i++)
- {
- dockPanel.Panes[i].ActiveContent = panes[i].IndexActiveContent == -1
- ? null
- : dockPanel.Contents[panes[i].IndexActiveContent];
- }
-
- if (dockPanelStruct.IndexActiveDocumentPane != -1)
- {
- dockPanel.Panes[dockPanelStruct.IndexActiveDocumentPane].Activate();
- }
-
- if (dockPanelStruct.IndexActivePane != -1)
- {
- dockPanel.Panes[dockPanelStruct.IndexActivePane].Activate();
- }
-
- for (int i = dockPanel.Contents.Count - 1; i >= 0; i--)
- {
- if (dockPanel.Contents[i] is DummyContent)
- {
- dockPanel.Contents[i].DockHandler.Form.Close();
- }
- }
-
- dockPanel.ResumeLayout(true, true);
- }
-
- #endregion
-
- #region Private Methods
-
- private static ContentStruct[] LoadContents(XmlTextReader xmlIn)
- {
- int countOfContents = Convert.ToInt32(xmlIn.GetAttribute("Count"), CultureInfo.InvariantCulture);
- ContentStruct[] contents = new ContentStruct[countOfContents];
- MoveToNextElement(xmlIn);
- for (int i = 0; i < countOfContents; i++)
- {
- int id = Convert.ToInt32(xmlIn.GetAttribute("ID"), CultureInfo.InvariantCulture);
- if (xmlIn.Name != "Content" || id != i)
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
-
- contents[i].PersistString = xmlIn.GetAttribute("PersistString");
- contents[i].AutoHidePortion = Convert.ToDouble(xmlIn.GetAttribute("AutoHidePortion"),
- CultureInfo.InvariantCulture);
- contents[i].IsHidden =
- Convert.ToBoolean(xmlIn.GetAttribute("IsHidden"), CultureInfo.InvariantCulture);
- contents[i].IsFloat =
- Convert.ToBoolean(xmlIn.GetAttribute("IsFloat"), CultureInfo.InvariantCulture);
- MoveToNextElement(xmlIn);
- }
-
- return contents;
- }
-
- private static PaneStruct[] LoadPanes(XmlTextReader xmlIn)
- {
- EnumConverter dockStateConverter = new EnumConverter(typeof(DockState));
- int countOfPanes = Convert.ToInt32(xmlIn.GetAttribute("Count"), CultureInfo.InvariantCulture);
- PaneStruct[] panes = new PaneStruct[countOfPanes];
- MoveToNextElement(xmlIn);
- for (int i = 0; i < countOfPanes; i++)
- {
- int id = Convert.ToInt32(xmlIn.GetAttribute("ID"), CultureInfo.InvariantCulture);
- if (xmlIn.Name != "Pane" || id != i)
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
-
- panes[i].DockState = (DockState) dockStateConverter.ConvertFrom(xmlIn.GetAttribute("DockState"));
- panes[i].IndexActiveContent = Convert.ToInt32(xmlIn.GetAttribute("ActiveContent"),
- CultureInfo.InvariantCulture);
- panes[i].ZOrderIndex = -1;
-
- MoveToNextElement(xmlIn);
- if (xmlIn.Name != "Contents")
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
- int countOfPaneContents =
- Convert.ToInt32(xmlIn.GetAttribute("Count"), CultureInfo.InvariantCulture);
- panes[i].IndexContents = new int[countOfPaneContents];
- MoveToNextElement(xmlIn);
- for (int j = 0; j < countOfPaneContents; j++)
- {
- int id2 = Convert.ToInt32(xmlIn.GetAttribute("ID"), CultureInfo.InvariantCulture);
- if (xmlIn.Name != "Content" || id2 != j)
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
-
- panes[i].IndexContents[j] =
- Convert.ToInt32(xmlIn.GetAttribute("RefID"), CultureInfo.InvariantCulture);
- MoveToNextElement(xmlIn);
- }
- }
-
- return panes;
- }
-
- private static DockWindowStruct[] LoadDockWindows(XmlTextReader xmlIn, DockPanel dockPanel)
- {
- EnumConverter dockStateConverter = new EnumConverter(typeof(DockState));
- EnumConverter dockAlignmentConverter = new EnumConverter(typeof(DockAlignment));
- int countOfDockWindows = dockPanel.DockWindows.Count;
- DockWindowStruct[] dockWindows = new DockWindowStruct[countOfDockWindows];
- MoveToNextElement(xmlIn);
- for (int i = 0; i < countOfDockWindows; i++)
- {
- int id = Convert.ToInt32(xmlIn.GetAttribute("ID"), CultureInfo.InvariantCulture);
- if (xmlIn.Name != "DockWindow" || id != i)
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
-
- dockWindows[i].DockState =
- (DockState) dockStateConverter.ConvertFrom(xmlIn.GetAttribute("DockState"));
- dockWindows[i].ZOrderIndex =
- Convert.ToInt32(xmlIn.GetAttribute("ZOrderIndex"), CultureInfo.InvariantCulture);
- MoveToNextElement(xmlIn);
- if (xmlIn.Name != "DockList" && xmlIn.Name != "NestedPanes")
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
- int countOfNestedPanes = Convert.ToInt32(xmlIn.GetAttribute("Count"), CultureInfo.InvariantCulture);
- dockWindows[i].NestedPanes = new NestedPane[countOfNestedPanes];
- MoveToNextElement(xmlIn);
- for (int j = 0; j < countOfNestedPanes; j++)
- {
- int id2 = Convert.ToInt32(xmlIn.GetAttribute("ID"), CultureInfo.InvariantCulture);
- if (xmlIn.Name != "Pane" || id2 != j)
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
- dockWindows[i].NestedPanes[j].IndexPane = Convert.ToInt32(xmlIn.GetAttribute("RefID"),
- CultureInfo.InvariantCulture);
- dockWindows[i].NestedPanes[j].IndexPrevPane = Convert.ToInt32(xmlIn.GetAttribute("PrevPane"),
- CultureInfo.InvariantCulture);
- dockWindows[i].NestedPanes[j].Alignment =
- (DockAlignment) dockAlignmentConverter.ConvertFrom(xmlIn.GetAttribute("Alignment"));
- dockWindows[i].NestedPanes[j].Proportion = Convert.ToDouble(xmlIn.GetAttribute("Proportion"),
- CultureInfo.InvariantCulture);
- MoveToNextElement(xmlIn);
- }
- }
-
- return dockWindows;
- }
-
- private static FloatWindowStruct[] LoadFloatWindows(XmlTextReader xmlIn)
- {
- EnumConverter dockAlignmentConverter = new EnumConverter(typeof(DockAlignment));
- RectangleConverter rectConverter = new RectangleConverter();
- int countOfFloatWindows = Convert.ToInt32(xmlIn.GetAttribute("Count"), CultureInfo.InvariantCulture);
- FloatWindowStruct[] floatWindows = new FloatWindowStruct[countOfFloatWindows];
- MoveToNextElement(xmlIn);
- for (int i = 0; i < countOfFloatWindows; i++)
- {
- int id = Convert.ToInt32(xmlIn.GetAttribute("ID"), CultureInfo.InvariantCulture);
- if (xmlIn.Name != "FloatWindow" || id != i)
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
-
- floatWindows[i].Bounds =
- (Rectangle) rectConverter.ConvertFromInvariantString(xmlIn.GetAttribute("Bounds"));
- floatWindows[i].ZOrderIndex =
- Convert.ToInt32(xmlIn.GetAttribute("ZOrderIndex"), CultureInfo.InvariantCulture);
- MoveToNextElement(xmlIn);
- if (xmlIn.Name != "DockList" && xmlIn.Name != "NestedPanes")
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
- int countOfNestedPanes = Convert.ToInt32(xmlIn.GetAttribute("Count"), CultureInfo.InvariantCulture);
- floatWindows[i].NestedPanes = new NestedPane[countOfNestedPanes];
- MoveToNextElement(xmlIn);
- for (int j = 0; j < countOfNestedPanes; j++)
- {
- int id2 = Convert.ToInt32(xmlIn.GetAttribute("ID"), CultureInfo.InvariantCulture);
- if (xmlIn.Name != "Pane" || id2 != j)
- {
- throw new ArgumentException(Strings.DockPanel_LoadFromXml_InvalidXmlFormat);
- }
- floatWindows[i].NestedPanes[j].IndexPane = Convert.ToInt32(xmlIn.GetAttribute("RefID"),
- CultureInfo.InvariantCulture);
- floatWindows[i].NestedPanes[j].IndexPrevPane = Convert.ToInt32(xmlIn.GetAttribute("PrevPane"),
- CultureInfo.InvariantCulture);
- floatWindows[i].NestedPanes[j].Alignment =
- (DockAlignment) dockAlignmentConverter.ConvertFrom(xmlIn.GetAttribute("Alignment"));
- floatWindows[i].NestedPanes[j].Proportion = Convert.ToDouble(xmlIn.GetAttribute("Proportion"),
- CultureInfo.InvariantCulture);
- MoveToNextElement(xmlIn);
- }
- }
-
- return floatWindows;
- }
-
- private static bool MoveToNextElement(XmlTextReader xmlIn)
- {
- if (!xmlIn.Read())
- {
- return false;
- }
-
- while (xmlIn.NodeType == XmlNodeType.EndElement)
- {
- if (!xmlIn.Read())
- {
- return false;
- }
- }
-
- return true;
- }
-
- private static bool IsFormatVersionValid(string formatVersion)
- {
- if (formatVersion == ConfigFileVersion)
- {
- return true;
- }
-
- foreach (string s in CompatibleConfigFileVersions)
- {
- if (s == formatVersion)
- {
- return true;
- }
- }
-
- return false;
- }
-
- #endregion
-
- private class DummyContent : DockContent
- {
- }
-
- private struct DockPanelStruct
- {
- public double DockLeftPortion { get; set; }
-
- public double DockRightPortion { get; set; }
-
- public double DockTopPortion { get; set; }
-
- public double DockBottomPortion { get; set; }
-
- public int IndexActiveDocumentPane { get; set; }
-
- public int IndexActivePane { get; set; }
- }
-
- private struct ContentStruct
- {
- public string PersistString { get; set; }
-
- public double AutoHidePortion { get; set; }
-
- public bool IsHidden { get; set; }
-
- public bool IsFloat { get; set; }
- }
-
- private struct PaneStruct
- {
- public DockState DockState { get; set; }
-
- public int IndexActiveContent { get; set; }
-
- public int[] IndexContents { get; set; }
-
- public int ZOrderIndex { get; set; }
- }
-
- private struct NestedPane
- {
- public int IndexPane { get; set; }
-
- public int IndexPrevPane { get; set; }
-
- public DockAlignment Alignment { get; set; }
-
- public double Proportion { get; set; }
- }
-
- private struct DockWindowStruct
- {
- public DockState DockState { get; set; }
-
- public int ZOrderIndex { get; set; }
-
- public NestedPane[] NestedPanes { get; set; }
- }
-
- private struct FloatWindowStruct
- {
- public Rectangle Bounds { get; set; }
-
- public int ZOrderIndex { get; set; }
-
- public NestedPane[] NestedPanes { get; set; }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPanel.SplitterDragHandler.cs b/src/WinFormsUI/Docking/DockPanel.SplitterDragHandler.cs
deleted file mode 100644
index 74838ae2..00000000
--- a/src/WinFormsUI/Docking/DockPanel.SplitterDragHandler.cs
+++ /dev/null
@@ -1,230 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Windows.Forms;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.ComponentModel;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- partial class DockPanel
- {
- #region Fields
-
- private SplitterDragHandler m_splitterDragHandler = null;
-
- #endregion
-
- #region Internals
-
- internal void BeginDrag(ISplitterDragSource dragSource, Rectangle rectSplitter)
- {
- GetSplitterDragHandler().BeginDrag(dragSource, rectSplitter);
- }
-
- #endregion
-
- #region Private Methods
-
- private SplitterDragHandler GetSplitterDragHandler()
- {
- if (m_splitterDragHandler == null)
- {
- m_splitterDragHandler = new SplitterDragHandler(this);
- }
- return m_splitterDragHandler;
- }
-
- #endregion
-
- private sealed class SplitterDragHandler : DragHandler
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public SplitterDragHandler(DockPanel dockPanel)
- : base(dockPanel)
- {
- }
-
- #endregion
-
- #region Properties
-
- public new ISplitterDragSource DragSource
- {
- get { return base.DragSource as ISplitterDragSource; }
- private set { base.DragSource = value; }
- }
-
- private SplitterOutline Outline { get; set; }
-
- private Rectangle RectSplitter { get; set; }
-
- #endregion
-
- #region Public methods
-
- public void BeginDrag(ISplitterDragSource dragSource, Rectangle rectSplitter)
- {
- DragSource = dragSource;
- RectSplitter = rectSplitter;
-
- if (!BeginDrag())
- {
- DragSource = null;
- return;
- }
-
- Outline = new SplitterOutline();
- Outline.Show(rectSplitter);
- DragSource.BeginDrag(rectSplitter);
- }
-
- #endregion
-
- #region Overrides
-
- protected override void OnDragging()
- {
- Outline.Show(GetSplitterOutlineBounds(Control.MousePosition));
- }
-
- protected override void OnEndDrag(bool abort)
- {
- DockPanel.SuspendLayout(true);
-
- Outline.Close();
-
- if (!abort)
- {
- DragSource.MoveSplitter(GetMovingOffset(Control.MousePosition));
- }
-
- DragSource.EndDrag();
- DockPanel.ResumeLayout(true, true);
- }
-
- #endregion
-
- #region Private Methods
-
- private int GetMovingOffset(Point ptMouse)
- {
- Rectangle rect = GetSplitterOutlineBounds(ptMouse);
- if (DragSource.IsVertical)
- {
- return rect.X - RectSplitter.X;
- }
- else
- {
- return rect.Y - RectSplitter.Y;
- }
- }
-
- private Rectangle GetSplitterOutlineBounds(Point ptMouse)
- {
- Rectangle rectLimit = DragSource.DragLimitBounds;
-
- Rectangle rect = RectSplitter;
- if (rectLimit.Width <= 0 || rectLimit.Height <= 0)
- {
- return rect;
- }
-
- if (DragSource.IsVertical)
- {
- rect.X += ptMouse.X - StartMousePosition.X;
- rect.Height = rectLimit.Height;
- }
- else
- {
- rect.Y += ptMouse.Y - StartMousePosition.Y;
- rect.Width = rectLimit.Width;
- }
-
- if (rect.Left < rectLimit.Left)
- {
- rect.X = rectLimit.X;
- }
- if (rect.Top < rectLimit.Top)
- {
- rect.Y = rectLimit.Y;
- }
- if (rect.Right > rectLimit.Right)
- {
- rect.X -= rect.Right - rectLimit.Right;
- }
- if (rect.Bottom > rectLimit.Bottom)
- {
- rect.Y -= rect.Bottom - rectLimit.Bottom;
- }
-
- return rect;
- }
-
- #endregion
-
- private class SplitterOutline
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public SplitterOutline()
- {
- DragForm = new DragForm();
- SetDragForm(Rectangle.Empty);
- DragForm.BackColor = Color.Black;
- DragForm.Opacity = 0.7;
- DragForm.Show(false);
- }
-
- #endregion
-
- #region Properties
-
- private DragForm DragForm { get; }
-
- #endregion
-
- #region Public methods
-
- public void Show(Rectangle rect)
- {
- SetDragForm(rect);
- }
-
- public void Close()
- {
- DragForm.Close();
- }
-
- #endregion
-
- #region Private Methods
-
- private void SetDragForm(Rectangle rect)
- {
- DragForm.Bounds = rect;
- if (rect == Rectangle.Empty)
- {
- DragForm.Region = new Region(Rectangle.Empty);
- }
- else if (DragForm.Region != null)
- {
- DragForm.Region = null;
- }
- }
-
- #endregion
- }
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPanel.bmp b/src/WinFormsUI/Docking/DockPanel.bmp
deleted file mode 100644
index 10d6858f..00000000
Binary files a/src/WinFormsUI/Docking/DockPanel.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/DockPanel.cs b/src/WinFormsUI/Docking/DockPanel.cs
deleted file mode 100644
index 6012c27b..00000000
--- a/src/WinFormsUI/Docking/DockPanel.cs
+++ /dev/null
@@ -1,1208 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Diagnostics.CodeAnalysis;
-using System.Drawing;
-using System.Windows.Forms;
-
-// To simplify the process of finding the toolbox bitmap resource:
-// #1 Create an internal class called "resfinder" outside of the root namespace.
-// #2 Use "resfinder" in the toolbox bitmap attribute instead of the control name.
-// #3 use the "." string to locate the resource.
-// See: http://www.bobpowell.net/toolboxbitmap.htm
-#pragma warning disable CS8981 // The type name only contains lower-cased ascii characters. Such names may become reserved for the language.
-internal class resfinder
-#pragma warning restore CS8981 // The type name only contains lower-cased ascii characters. Such names may become reserved for the language.
-{
-}
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- [SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters", MessageId = "0#")]
- public delegate IDockContent DeserializeDockContent(string persistString);
-
- [LocalizedDescription("DockPanel_Description")]
- [Designer(typeof(System.Windows.Forms.Design.ControlDesigner))]
- [ToolboxBitmap(typeof(resfinder), "WeifenLuo.WinFormsUI.Docking.DockPanel.bmp")]
- [DefaultProperty("DocumentStyle")]
- [DefaultEvent("ActiveContentChanged")]
- public partial class DockPanel : Panel
- {
- #region Fields
-
- private static readonly object ContentAddedEvent = new object();
-
- private static readonly object ContentRemovedEvent = new object();
-
- private AutoHideStripBase m_autoHideStripControl = null;
-
- private Color m_BackColor;
-
- private Rectangle[] m_clipRects = null;
-
- private bool m_disposed = false;
-
- private double m_dockBottomPortion = 0.25;
-
- private double m_dockLeftPortion = 0.25;
-
- private double m_dockRightPortion = 0.25;
-
- private double m_dockTopPortion = 0.25;
-
- private DocumentStyle m_documentStyle = DocumentStyle.DockingMdi;
-
- private PaintEventHandler m_dummyControlPaintEventHandler = null;
- private readonly FocusManagerImpl m_focusManager;
-
- private bool m_rightToLeftLayout = false;
-
- private bool m_showDocumentIcon = false;
-
- #endregion
-
- #region cTor
-
- public DockPanel()
- {
- m_focusManager = new FocusManagerImpl(this);
- Extender = new DockPanelExtender(this);
- Panes = new DockPaneCollection();
- FloatWindows = new FloatWindowCollection();
-
- SuspendLayout();
-
- AutoHideWindow = new AutoHideWindowControl(this);
- AutoHideWindow.Visible = false;
- SetAutoHideWindowParent();
-
- DummyControl = new DummyControl();
- DummyControl.Bounds = new Rectangle(0, 0, 1, 1);
- Controls.Add(DummyControl);
-
- DockWindows = new DockWindowCollection(this);
- Controls.AddRange(new Control[]
- {
- DockWindows[DockState.Document],
- DockWindows[DockState.DockLeft],
- DockWindows[DockState.DockRight],
- DockWindows[DockState.DockTop],
- DockWindows[DockState.DockBottom]
- });
-
- DummyContent = new DockContent();
- ResumeLayout();
- }
-
- #endregion
-
- #region Events
-
- [LocalizedCategory("Category_DockingNotification")]
- [LocalizedDescription("DockPanel_ContentAdded_Description")]
- public event EventHandler ContentAdded
- {
- add { Events.AddHandler(ContentAddedEvent, value); }
- remove { Events.RemoveHandler(ContentAddedEvent, value); }
- }
-
- [LocalizedCategory("Category_DockingNotification")]
- [LocalizedDescription("DockPanel_ContentRemoved_Description")]
- public event EventHandler ContentRemoved
- {
- add { Events.AddHandler(ContentRemovedEvent, value); }
- remove { Events.RemoveHandler(ContentRemovedEvent, value); }
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// Determines the color with which the client rectangle will be drawn.
- /// If this property is used instead of the BackColor it will not have any influence on the borders to the surrounding controls (DockPane).
- /// The BackColor property changes the borders of surrounding controls (DockPane).
- /// Alternatively both properties may be used (BackColor to draw and define the color of the borders and DockBackColor to define the color of the client rectangle).
- /// For Backgroundimages: Set your prefered Image, then set the DockBackColor and the BackColor to the same Color (Control)
- ///
- [Description("Determines the color with which the client rectangle will be drawn.\r\n" +
- "If this property is used instead of the BackColor it will not have any influence on the borders to the surrounding controls (DockPane).\r\n" +
- "The BackColor property changes the borders of surrounding controls (DockPane).\r\n" +
- "Alternatively both properties may be used (BackColor to draw and define the color of the borders and DockBackColor to define the color of the client rectangle).\r\n" +
- "For Backgroundimages: Set your prefered Image, then set the DockBackColor and the BackColor to the same Color (Control).")]
- public Color DockBackColor
- {
- get { return !m_BackColor.IsEmpty ? m_BackColor : base.BackColor; }
- set
- {
- if (m_BackColor != value)
- {
- m_BackColor = value;
- Refresh();
- }
- }
- }
-
- internal AutoHideStripBase AutoHideStripControl
- {
- get
- {
- if (m_autoHideStripControl == null)
- {
- m_autoHideStripControl = AutoHideStripFactory.CreateAutoHideStrip(this);
- Controls.Add(m_autoHideStripControl);
- }
- return m_autoHideStripControl;
- }
- }
-
- [Browsable(false)]
- public IDockContent ActiveAutoHideContent
- {
- get { return AutoHideWindow.ActiveContent; }
- set { AutoHideWindow.ActiveContent = value; }
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockPanel_AllowEndUserDocking_Description")]
- [DefaultValue(true)]
- public bool AllowEndUserDocking { get; set; } = true;
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockPanel_AllowEndUserNestedDocking_Description")]
- [DefaultValue(true)]
- public bool AllowEndUserNestedDocking { get; set; } = true;
-
- [Browsable(false)]
- public DockContentCollection Contents { get; } = new DockContentCollection();
-
- internal DockContent DummyContent { get; }
-
- [DefaultValue(false)]
- [LocalizedCategory("Appearance")]
- [LocalizedDescription("DockPanel_RightToLeftLayout_Description")]
- public bool RightToLeftLayout
- {
- get { return m_rightToLeftLayout; }
- set
- {
- if (m_rightToLeftLayout == value)
- {
- return;
- }
-
- m_rightToLeftLayout = value;
- foreach (FloatWindow floatWindow in FloatWindows)
- {
- floatWindow.RightToLeftLayout = value;
- }
- }
- }
-
- [DefaultValue(false)]
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockPanel_ShowDocumentIcon_Description")]
- public bool ShowDocumentIcon
- {
- get { return m_showDocumentIcon; }
- set
- {
- if (m_showDocumentIcon == value)
- {
- return;
- }
-
- m_showDocumentIcon = value;
- Refresh();
- }
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockPanel_DockPanelSkin")]
- public DockPanelSkin Skin { get; set; } = new DockPanelSkin();
-
- [DefaultValue(DocumentTabStripLocation.Top)]
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockPanel_DocumentTabStripLocation")]
- public DocumentTabStripLocation DocumentTabStripLocation { get; set; } = DocumentTabStripLocation.Top;
-
- [Browsable(false)]
- public DockPanelExtender Extender { get; }
-
- [Browsable(false)]
- public DockPanelExtender.IDockPaneFactory DockPaneFactory
- {
- get { return Extender.DockPaneFactory; }
- }
-
- [Browsable(false)]
- public DockPanelExtender.IFloatWindowFactory FloatWindowFactory
- {
- get { return Extender.FloatWindowFactory; }
- }
-
- internal DockPanelExtender.IDockPaneCaptionFactory DockPaneCaptionFactory
- {
- get { return Extender.DockPaneCaptionFactory; }
- }
-
- internal DockPanelExtender.IDockPaneStripFactory DockPaneStripFactory
- {
- get { return Extender.DockPaneStripFactory; }
- }
-
- internal DockPanelExtender.IAutoHideStripFactory AutoHideStripFactory
- {
- get { return Extender.AutoHideStripFactory; }
- }
-
- [Browsable(false)]
- public DockPaneCollection Panes { get; }
-
- internal Rectangle DockArea
- {
- get
- {
- return new Rectangle(DockPadding.Left, DockPadding.Top,
- ClientRectangle.Width - DockPadding.Left - DockPadding.Right,
- ClientRectangle.Height - DockPadding.Top - DockPadding.Bottom);
- }
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockPanel_DockBottomPortion_Description")]
- [DefaultValue(0.25)]
- public double DockBottomPortion
- {
- get { return m_dockBottomPortion; }
- set
- {
- if (value <= 0)
- {
- throw new ArgumentOutOfRangeException("value");
- }
-
- if (value == m_dockBottomPortion)
- {
- return;
- }
-
- m_dockBottomPortion = value;
-
- if (m_dockBottomPortion < 1 && m_dockTopPortion < 1)
- {
- if (m_dockTopPortion + m_dockBottomPortion > 1)
- {
- m_dockTopPortion = 1 - m_dockBottomPortion;
- }
- }
-
- PerformLayout();
- }
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockPanel_DockLeftPortion_Description")]
- [DefaultValue(0.25)]
- public double DockLeftPortion
- {
- get { return m_dockLeftPortion; }
- set
- {
- if (value <= 0)
- {
- throw new ArgumentOutOfRangeException("value");
- }
-
- if (value == m_dockLeftPortion)
- {
- return;
- }
-
- m_dockLeftPortion = value;
-
- if (m_dockLeftPortion < 1 && m_dockRightPortion < 1)
- {
- if (m_dockLeftPortion + m_dockRightPortion > 1)
- {
- m_dockRightPortion = 1 - m_dockLeftPortion;
- }
- }
- PerformLayout();
- }
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockPanel_DockRightPortion_Description")]
- [DefaultValue(0.25)]
- public double DockRightPortion
- {
- get { return m_dockRightPortion; }
- set
- {
- if (value <= 0)
- {
- throw new ArgumentOutOfRangeException("value");
- }
-
- if (value == m_dockRightPortion)
- {
- return;
- }
-
- m_dockRightPortion = value;
-
- if (m_dockLeftPortion < 1 && m_dockRightPortion < 1)
- {
- if (m_dockLeftPortion + m_dockRightPortion > 1)
- {
- m_dockLeftPortion = 1 - m_dockRightPortion;
- }
- }
- PerformLayout();
- }
- }
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockPanel_DockTopPortion_Description")]
- [DefaultValue(0.25)]
- public double DockTopPortion
- {
- get { return m_dockTopPortion; }
- set
- {
- if (value <= 0)
- {
- throw new ArgumentOutOfRangeException("value");
- }
-
- if (value == m_dockTopPortion)
- {
- return;
- }
-
- m_dockTopPortion = value;
-
- if (m_dockTopPortion < 1 && m_dockBottomPortion < 1)
- {
- if (m_dockTopPortion + m_dockBottomPortion > 1)
- {
- m_dockBottomPortion = 1 - m_dockTopPortion;
- }
- }
- PerformLayout();
- }
- }
-
- [Browsable(false)]
- public DockWindowCollection DockWindows { get; }
-
- [Browsable(false)]
- public int DocumentsCount
- {
- get
- {
- int count = 0;
- foreach (IDockContent content in Documents)
- {
- count++;
- }
-
- return count;
- }
- }
-
- [Browsable(false)]
- public IEnumerable Documents
- {
- get
- {
- foreach (IDockContent content in Contents)
- {
- if (content.DockHandler.DockState == DockState.Document)
- {
- yield return content;
- }
- }
- }
- }
-
- private Rectangle DocumentRectangle
- {
- get
- {
- Rectangle rect = DockArea;
- if (DockWindows[DockState.DockLeft].VisibleNestedPanes.Count != 0)
- {
- rect.X += (int)(DockArea.Width * DockLeftPortion);
- rect.Width -= (int)(DockArea.Width * DockLeftPortion);
- }
- if (DockWindows[DockState.DockRight].VisibleNestedPanes.Count != 0)
- {
- rect.Width -= (int)(DockArea.Width * DockRightPortion);
- }
- if (DockWindows[DockState.DockTop].VisibleNestedPanes.Count != 0)
- {
- rect.Y += (int)(DockArea.Height * DockTopPortion);
- rect.Height -= (int)(DockArea.Height * DockTopPortion);
- }
- if (DockWindows[DockState.DockBottom].VisibleNestedPanes.Count != 0)
- {
- rect.Height -= (int)(DockArea.Height * DockBottomPortion);
- }
-
- return rect;
- }
- }
-
- private Control DummyControl { get; }
-
- [Browsable(false)]
- public FloatWindowCollection FloatWindows { get; }
-
- [Category("Layout")]
- [LocalizedDescription("DockPanel_DefaultFloatWindowSize_Description")]
- public Size DefaultFloatWindowSize { get; set; } = new Size(300, 300);
-
- [LocalizedCategory("Category_Docking")]
- [LocalizedDescription("DockPanel_DocumentStyle_Description")]
- [DefaultValue(DocumentStyle.DockingMdi)]
- public DocumentStyle DocumentStyle
- {
- get { return m_documentStyle; }
- set
- {
- if (value == m_documentStyle)
- {
- return;
- }
-
- if (!Enum.IsDefined(typeof(DocumentStyle), value))
- {
- throw new InvalidEnumArgumentException();
- }
-
- if (value == DocumentStyle.SystemMdi && DockWindows[DockState.Document].VisibleNestedPanes.Count > 0)
- {
- throw new InvalidEnumArgumentException();
- }
-
- m_documentStyle = value;
-
- SuspendLayout(true);
-
- SetAutoHideWindowParent();
- SetMdiClient();
- InvalidateWindowRegion();
-
- foreach (IDockContent content in Contents)
- {
- if (content.DockHandler.DockState == DockState.Document)
- {
- content.DockHandler.SetPaneAndVisible(content.DockHandler.Pane);
- }
- }
-
- PerformMdiClientLayout();
-
- ResumeLayout(true, true);
- }
- }
-
- internal Form ParentForm
- {
- get
- {
- if (!IsParentFormValid())
- {
- throw new InvalidOperationException(Strings.DockPanel_ParentForm_Invalid);
- }
-
- return GetMdiClientController().ParentForm;
- }
- }
-
- private Rectangle SystemMdiClientBounds
- {
- get
- {
- if (!IsParentFormValid() || !Visible)
- {
- return Rectangle.Empty;
- }
-
- Rectangle rect = ParentForm.RectangleToClient(RectangleToScreen(DocumentWindowBounds));
- return rect;
- }
- }
-
- internal Rectangle DocumentWindowBounds
- {
- get
- {
- Rectangle rectDocumentBounds = DisplayRectangle;
- if (DockWindows[DockState.DockLeft].Visible)
- {
- rectDocumentBounds.X += DockWindows[DockState.DockLeft].Width;
- rectDocumentBounds.Width -= DockWindows[DockState.DockLeft].Width;
- }
- if (DockWindows[DockState.DockRight].Visible)
- {
- rectDocumentBounds.Width -= DockWindows[DockState.DockRight].Width;
- }
- if (DockWindows[DockState.DockTop].Visible)
- {
- rectDocumentBounds.Y += DockWindows[DockState.DockTop].Height;
- rectDocumentBounds.Height -= DockWindows[DockState.DockTop].Height;
- }
- if (DockWindows[DockState.DockBottom].Visible)
- {
- rectDocumentBounds.Height -= DockWindows[DockState.DockBottom].Height;
- }
-
- return rectDocumentBounds;
- }
- }
-
- #endregion
-
- #region Public methods
-
- public void UpdateDockWindowZOrder(DockStyle dockStyle, bool fullPanelEdge)
- {
- if (dockStyle == DockStyle.Left)
- {
- if (fullPanelEdge)
- {
- DockWindows[DockState.DockLeft].SendToBack();
- }
- else
- {
- DockWindows[DockState.DockLeft].BringToFront();
- }
- }
- else if (dockStyle == DockStyle.Right)
- {
- if (fullPanelEdge)
- {
- DockWindows[DockState.DockRight].SendToBack();
- }
- else
- {
- DockWindows[DockState.DockRight].BringToFront();
- }
- }
- else if (dockStyle == DockStyle.Top)
- {
- if (fullPanelEdge)
- {
- DockWindows[DockState.DockTop].SendToBack();
- }
- else
- {
- DockWindows[DockState.DockTop].BringToFront();
- }
- }
- else if (dockStyle == DockStyle.Bottom)
- {
- if (fullPanelEdge)
- {
- DockWindows[DockState.DockBottom].SendToBack();
- }
- else
- {
- DockWindows[DockState.DockBottom].BringToFront();
- }
- }
- }
-
- public IDockContent[] DocumentsToArray()
- {
- int count = DocumentsCount;
- IDockContent[] documents = new IDockContent[count];
- int i = 0;
- foreach (IDockContent content in Documents)
- {
- documents[i] = content;
- i++;
- }
-
- return documents;
- }
-
- public void SetPaneIndex(DockPane pane, int index)
- {
- int oldIndex = Panes.IndexOf(pane);
- if (oldIndex == -1)
- {
- throw new ArgumentException(Strings.DockPanel_SetPaneIndex_InvalidPane);
- }
-
- if (index < 0 || index > Panes.Count - 1)
- {
- if (index != -1)
- {
- throw new ArgumentOutOfRangeException(Strings.DockPanel_SetPaneIndex_InvalidIndex);
- }
- }
-
- if (oldIndex == index)
- {
- return;
- }
- if (oldIndex == Panes.Count - 1 && index == -1)
- {
- return;
- }
-
- Panes.Remove(pane);
- if (index == -1)
- {
- Panes.Add(pane);
- }
- else if (oldIndex < index)
- {
- Panes.AddAt(pane, index - 1);
- }
- else
- {
- Panes.AddAt(pane, index);
- }
- }
-
- public void SuspendLayout(bool allWindows)
- {
- FocusManager.SuspendFocusTracking();
- SuspendLayout();
- if (allWindows)
- {
- SuspendMdiClientLayout();
- }
- }
-
- public void ResumeLayout(bool performLayout, bool allWindows)
- {
- FocusManager.ResumeFocusTracking();
- ResumeLayout(performLayout);
- if (allWindows)
- {
- ResumeMdiClientLayout(performLayout);
- }
- }
-
- #endregion
-
- #region Internals
-
- internal void ResetAutoHideStripControl()
- {
- if (m_autoHideStripControl != null)
- {
- m_autoHideStripControl.Dispose();
- }
-
- m_autoHideStripControl = null;
- }
-
- internal Rectangle GetTabStripRectangle(DockState dockState)
- {
- return AutoHideStripControl.GetTabStripRectangle(dockState);
- }
-
- internal void AddContent(IDockContent content)
- {
- if (content == null)
- {
- throw new ArgumentNullException();
- }
-
- if (!Contents.Contains(content))
- {
- Contents.Add(content);
- OnContentAdded(new DockContentEventArgs(content));
- }
- }
-
- internal void AddPane(DockPane pane)
- {
- if (Panes.Contains(pane))
- {
- return;
- }
-
- Panes.Add(pane);
- }
-
- internal void AddFloatWindow(FloatWindow floatWindow)
- {
- if (FloatWindows.Contains(floatWindow))
- {
- return;
- }
-
- FloatWindows.Add(floatWindow);
- }
-
- internal void RemoveContent(IDockContent content)
- {
- if (content == null)
- {
- throw new ArgumentNullException();
- }
-
- if (Contents.Contains(content))
- {
- Contents.Remove(content);
- OnContentRemoved(new DockContentEventArgs(content));
- }
- }
-
- internal void RemovePane(DockPane pane)
- {
- if (!Panes.Contains(pane))
- {
- return;
- }
-
- Panes.Remove(pane);
- }
-
- internal void RemoveFloatWindow(FloatWindow floatWindow)
- {
- if (!FloatWindows.Contains(floatWindow))
- {
- return;
- }
-
- FloatWindows.Remove(floatWindow);
- }
-
- #endregion
-
- #region Overrides
-
- protected override void Dispose(bool disposing)
- {
- lock (this)
- {
- if (!m_disposed && disposing)
- {
- m_focusManager.Dispose();
- if (m_mdiClientController != null)
- {
- m_mdiClientController.HandleAssigned -= new EventHandler(MdiClientHandleAssigned);
- m_mdiClientController.MdiChildActivate -= new EventHandler(ParentFormMdiChildActivate);
- m_mdiClientController.Layout -= new LayoutEventHandler(MdiClient_Layout);
- m_mdiClientController.Dispose();
- }
- FloatWindows.Dispose();
- Panes.Dispose();
- DummyContent.Dispose();
-
- m_disposed = true;
- }
-
- base.Dispose(disposing);
- }
- }
-
- protected override void OnRightToLeftChanged(EventArgs e)
- {
- base.OnRightToLeftChanged(e);
- foreach (FloatWindow floatWindow in FloatWindows)
- {
- if (floatWindow.RightToLeft != RightToLeft)
- {
- floatWindow.RightToLeft = RightToLeft;
- }
- }
- }
-
- protected override void OnLayout(LayoutEventArgs levent)
- {
- SuspendLayout(true);
-
- AutoHideStripControl.Bounds = ClientRectangle;
-
- CalculateDockPadding();
-
- DockWindows[DockState.DockLeft].Width = GetDockWindowSize(DockState.DockLeft);
- DockWindows[DockState.DockRight].Width = GetDockWindowSize(DockState.DockRight);
- DockWindows[DockState.DockTop].Height = GetDockWindowSize(DockState.DockTop);
- DockWindows[DockState.DockBottom].Height = GetDockWindowSize(DockState.DockBottom);
-
- AutoHideWindow.Bounds = GetAutoHideWindowBounds(AutoHideWindowRectangle);
-
- DockWindows[DockState.Document].BringToFront();
- AutoHideWindow.BringToFront();
-
- base.OnLayout(levent);
-
- if (DocumentStyle == DocumentStyle.SystemMdi && MdiClientExists)
- {
- SetMdiClientBounds(SystemMdiClientBounds);
- InvalidateWindowRegion();
- }
- else if (DocumentStyle == DocumentStyle.DockingMdi)
- {
- InvalidateWindowRegion();
- }
-
- ResumeLayout(true, true);
- }
-
- protected override void OnPaint(PaintEventArgs e)
- {
- base.OnPaint(e);
-
- if (DockBackColor == BackColor)
- {
- return;
- }
-
- Graphics g = e.Graphics;
- SolidBrush bgBrush = new SolidBrush(DockBackColor);
- g.FillRectangle(bgBrush, ClientRectangle);
- }
-
- protected override void OnParentChanged(EventArgs e)
- {
- SetAutoHideWindowParent();
- GetMdiClientController().ParentForm = this.Parent as Form;
- base.OnParentChanged(e);
- }
-
- protected override void OnVisibleChanged(EventArgs e)
- {
- base.OnVisibleChanged(e);
-
- if (Visible)
- {
- SetMdiClient();
- }
- }
-
- #endregion
-
- #region Private Methods
-
- private bool ShouldSerializeDefaultFloatWindowSize()
- {
- return DefaultFloatWindowSize != new Size(300, 300);
- }
-
- private int GetDockWindowSize(DockState dockState)
- {
- if (dockState == DockState.DockLeft || dockState == DockState.DockRight)
- {
- int width = ClientRectangle.Width - DockPadding.Left - DockPadding.Right;
- int dockLeftSize = m_dockLeftPortion >= 1 ? (int)m_dockLeftPortion : (int)(width * m_dockLeftPortion);
- int dockRightSize = m_dockRightPortion >= 1
- ? (int)m_dockRightPortion
- : (int)(width * m_dockRightPortion);
-
- if (dockLeftSize < MeasurePane.MinSize)
- {
- dockLeftSize = MeasurePane.MinSize;
- }
- if (dockRightSize < MeasurePane.MinSize)
- {
- dockRightSize = MeasurePane.MinSize;
- }
-
- if (dockLeftSize + dockRightSize > width - MeasurePane.MinSize)
- {
- int adjust = dockLeftSize + dockRightSize - (width - MeasurePane.MinSize);
- dockLeftSize -= adjust / 2;
- dockRightSize -= adjust / 2;
- }
-
- return dockState == DockState.DockLeft ? dockLeftSize : dockRightSize;
- }
- else if (dockState == DockState.DockTop || dockState == DockState.DockBottom)
- {
- int height = ClientRectangle.Height - DockPadding.Top - DockPadding.Bottom;
- int dockTopSize = m_dockTopPortion >= 1 ? (int)m_dockTopPortion : (int)(height * m_dockTopPortion);
- int dockBottomSize = m_dockBottomPortion >= 1
- ? (int)m_dockBottomPortion
- : (int)(height * m_dockBottomPortion);
-
- if (dockTopSize < MeasurePane.MinSize)
- {
- dockTopSize = MeasurePane.MinSize;
- }
- if (dockBottomSize < MeasurePane.MinSize)
- {
- dockBottomSize = MeasurePane.MinSize;
- }
-
- if (dockTopSize + dockBottomSize > height - MeasurePane.MinSize)
- {
- int adjust = dockTopSize + dockBottomSize - (height - MeasurePane.MinSize);
- dockTopSize -= adjust / 2;
- dockBottomSize -= adjust / 2;
- }
-
- return dockState == DockState.DockTop ? dockTopSize : dockBottomSize;
- }
- else
- {
- return 0;
- }
- }
-
- private void CalculateDockPadding()
- {
- DockPadding.All = 0;
-
- int height = AutoHideStripControl.MeasureHeight();
-
- if (AutoHideStripControl.GetNumberOfPanes(DockState.DockLeftAutoHide) > 0)
- {
- DockPadding.Left = height;
- }
- if (AutoHideStripControl.GetNumberOfPanes(DockState.DockRightAutoHide) > 0)
- {
- DockPadding.Right = height;
- }
- if (AutoHideStripControl.GetNumberOfPanes(DockState.DockTopAutoHide) > 0)
- {
- DockPadding.Top = height;
- }
- if (AutoHideStripControl.GetNumberOfPanes(DockState.DockBottomAutoHide) > 0)
- {
- DockPadding.Bottom = height;
- }
- }
-
- private bool IsParentFormValid()
- {
- if (DocumentStyle == DocumentStyle.DockingSdi || DocumentStyle == DocumentStyle.DockingWindow)
- {
- return true;
- }
-
- if (!MdiClientExists)
- {
- GetMdiClientController().RenewMdiClient();
- }
-
- return MdiClientExists;
- }
-
- private void SetAutoHideWindowParent()
- {
- Control parent;
- if (DocumentStyle == DocumentStyle.DockingMdi ||
- DocumentStyle == DocumentStyle.SystemMdi)
- {
- parent = this.Parent;
- }
- else
- {
- parent = this;
- }
- if (AutoHideWindow.Parent != parent)
- {
- AutoHideWindow.Parent = parent;
- AutoHideWindow.BringToFront();
- }
- }
-
- private void InvalidateWindowRegion()
- {
- if (DesignMode)
- {
- return;
- }
-
- if (m_dummyControlPaintEventHandler == null)
- {
- m_dummyControlPaintEventHandler = new PaintEventHandler(DummyControl_Paint);
- }
-
- DummyControl.Paint += m_dummyControlPaintEventHandler;
- DummyControl.Invalidate();
- }
-
- private void UpdateWindowRegion()
- {
- if (this.DocumentStyle == DocumentStyle.DockingMdi)
- {
- UpdateWindowRegion_ClipContent();
- }
- else if (this.DocumentStyle == DocumentStyle.DockingSdi ||
- this.DocumentStyle == DocumentStyle.DockingWindow)
- {
- UpdateWindowRegion_FullDocumentArea();
- }
- else if (this.DocumentStyle == DocumentStyle.SystemMdi)
- {
- UpdateWindowRegion_EmptyDocumentArea();
- }
- }
-
- private void UpdateWindowRegion_FullDocumentArea()
- {
- SetRegion(null);
- }
-
- private void UpdateWindowRegion_EmptyDocumentArea()
- {
- Rectangle rect = DocumentWindowBounds;
- SetRegion(new Rectangle[] { rect });
- }
-
- private void UpdateWindowRegion_ClipContent()
- {
- int count = 0;
- foreach (DockPane pane in this.Panes)
- {
- if (!pane.Visible || pane.DockState != DockState.Document)
- {
- continue;
- }
-
- count++;
- }
-
- if (count == 0)
- {
- SetRegion(null);
- return;
- }
-
- Rectangle[] rects = new Rectangle[count];
- int i = 0;
- foreach (DockPane pane in this.Panes)
- {
- if (!pane.Visible || pane.DockState != DockState.Document)
- {
- continue;
- }
-
- rects[i] = RectangleToClient(pane.RectangleToScreen(pane.ContentRectangle));
- i++;
- }
-
- SetRegion(rects);
- }
-
- private void SetRegion(Rectangle[] clipRects)
- {
- if (!IsClipRectsChanged(clipRects))
- {
- return;
- }
-
- m_clipRects = clipRects;
-
- if (m_clipRects == null || m_clipRects.GetLength(0) == 0)
- {
- Region = null;
- }
- else
- {
- Region region = new Region(new Rectangle(0, 0, this.Width, this.Height));
- foreach (Rectangle rect in m_clipRects)
- {
- region.Exclude(rect);
- }
- Region = region;
- }
- }
-
- private bool IsClipRectsChanged(Rectangle[] clipRects)
- {
- if (clipRects == null && m_clipRects == null)
- {
- return false;
- }
- else if (clipRects == null != (m_clipRects == null))
- {
- return true;
- }
-
- foreach (Rectangle rect in clipRects)
- {
- bool matched = false;
- foreach (Rectangle rect2 in m_clipRects)
- {
- if (rect == rect2)
- {
- matched = true;
- break;
- }
- }
- if (!matched)
- {
- return true;
- }
- }
-
- foreach (Rectangle rect2 in m_clipRects)
- {
- bool matched = false;
- foreach (Rectangle rect in clipRects)
- {
- if (rect == rect2)
- {
- matched = true;
- break;
- }
- }
- if (!matched)
- {
- return true;
- }
- }
- return false;
- }
-
- #endregion
-
- #region Events handler
-
- private void MdiClientHandleAssigned(object sender, EventArgs e)
- {
- SetMdiClient();
- PerformLayout();
- }
-
- private void MdiClient_Layout(object sender, LayoutEventArgs e)
- {
- if (DocumentStyle != DocumentStyle.DockingMdi)
- {
- return;
- }
-
- foreach (DockPane pane in Panes)
- {
- if (pane.DockState == DockState.Document)
- {
- pane.SetContentBounds();
- }
- }
-
- InvalidateWindowRegion();
- }
-
- private void DummyControl_Paint(object sender, PaintEventArgs e)
- {
- DummyControl.Paint -= m_dummyControlPaintEventHandler;
- UpdateWindowRegion();
- }
-
- #endregion
-
- protected virtual void OnContentAdded(DockContentEventArgs e)
- {
- ((EventHandler)Events[ContentAddedEvent])?.Invoke(this, e);
- }
-
- protected virtual void OnContentRemoved(DockContentEventArgs e)
- {
- ((EventHandler)Events[ContentRemovedEvent])?.Invoke(this, e);
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPanelExtender.cs b/src/WinFormsUI/Docking/DockPanelExtender.cs
deleted file mode 100644
index ddda208e..00000000
--- a/src/WinFormsUI/Docking/DockPanelExtender.cs
+++ /dev/null
@@ -1,315 +0,0 @@
-using System;
-using System.Drawing;
-using System.Diagnostics.CodeAnalysis;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public sealed class DockPanelExtender
- {
- #region Fields
-
- private IAutoHideStripFactory m_autoHideStripFactory = null;
-
- private IDockPaneCaptionFactory m_dockPaneCaptionFactory = null;
-
- private IDockPaneFactory m_dockPaneFactory = null;
-
- private IDockPaneStripFactory m_dockPaneStripFactory = null;
-
- private IFloatWindowFactory m_floatWindowFactory = null;
-
- #endregion
-
- #region cTor
-
- internal DockPanelExtender(DockPanel dockPanel)
- {
- DockPanel = dockPanel;
- }
-
- #endregion
-
- #region Properties
-
- private DockPanel DockPanel { get; }
-
- public IDockPaneFactory DockPaneFactory
- {
- get
- {
- if (m_dockPaneFactory == null)
- {
- m_dockPaneFactory = new DefaultDockPaneFactory();
- }
-
- return m_dockPaneFactory;
- }
- set
- {
- if (DockPanel.Panes.Count > 0)
- {
- throw new InvalidOperationException();
- }
-
- m_dockPaneFactory = value;
- }
- }
-
- public IFloatWindowFactory FloatWindowFactory
- {
- get
- {
- if (m_floatWindowFactory == null)
- {
- m_floatWindowFactory = new DefaultFloatWindowFactory();
- }
-
- return m_floatWindowFactory;
- }
- set
- {
- if (DockPanel.FloatWindows.Count > 0)
- {
- throw new InvalidOperationException();
- }
-
- m_floatWindowFactory = value;
- }
- }
-
- public IDockPaneCaptionFactory DockPaneCaptionFactory
- {
- get
- {
- if (m_dockPaneCaptionFactory == null)
- {
- m_dockPaneCaptionFactory = new DefaultDockPaneCaptionFactory();
- }
-
- return m_dockPaneCaptionFactory;
- }
- set
- {
- if (DockPanel.Panes.Count > 0)
- {
- throw new InvalidOperationException();
- }
-
- m_dockPaneCaptionFactory = value;
- }
- }
-
- public IDockPaneStripFactory DockPaneStripFactory
- {
- get
- {
- if (m_dockPaneStripFactory == null)
- {
- m_dockPaneStripFactory = new DefaultDockPaneStripFactory();
- }
-
- return m_dockPaneStripFactory;
- }
- set
- {
- if (DockPanel.Contents.Count > 0)
- {
- throw new InvalidOperationException();
- }
-
- m_dockPaneStripFactory = value;
- }
- }
-
- public IAutoHideStripFactory AutoHideStripFactory
- {
- get
- {
- if (m_autoHideStripFactory == null)
- {
- m_autoHideStripFactory = new DefaultAutoHideStripFactory();
- }
-
- return m_autoHideStripFactory;
- }
- set
- {
- if (DockPanel.Contents.Count > 0)
- {
- throw new InvalidOperationException();
- }
-
- if (m_autoHideStripFactory == value)
- {
- return;
- }
-
- m_autoHideStripFactory = value;
- DockPanel.ResetAutoHideStripControl();
- }
- }
-
- #endregion
-
- [SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
- public interface IDockPaneFactory
- {
- #region Public methods
-
- DockPane CreateDockPane(IDockContent content, DockState visibleState, bool show);
-
- [SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters", MessageId = "1#")]
- DockPane CreateDockPane(IDockContent content, FloatWindow floatWindow, bool show);
-
- DockPane CreateDockPane(IDockContent content, DockPane previousPane, DockAlignment alignment,
- double proportion, bool show);
-
- [SuppressMessage("Microsoft.Naming", "CA1720:AvoidTypeNamesInParameters", MessageId = "1#")]
- DockPane CreateDockPane(IDockContent content, Rectangle floatWindowBounds, bool show);
-
- #endregion
- }
-
- [SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
- public interface IFloatWindowFactory
- {
- #region Public methods
-
- FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane);
- FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds);
-
- #endregion
- }
-
- [SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
- public interface IDockPaneCaptionFactory
- {
- #region Public methods
-
- DockPaneCaptionBase CreateDockPaneCaption(DockPane pane);
-
- #endregion
- }
-
- [SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
- public interface IDockPaneStripFactory
- {
- #region Public methods
-
- DockPaneStripBase CreateDockPaneStrip(DockPane pane);
-
- #endregion
- }
-
- [SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
- public interface IAutoHideStripFactory
- {
- #region Public methods
-
- AutoHideStripBase CreateAutoHideStrip(DockPanel panel);
-
- #endregion
- }
-
- #region DefaultDockPaneFactory
-
- private class DefaultDockPaneFactory : IDockPaneFactory
- {
- #region Public methods
-
- public DockPane CreateDockPane(IDockContent content, DockState visibleState, bool show)
- {
- return new DockPane(content, visibleState, show);
- }
-
- public DockPane CreateDockPane(IDockContent content, FloatWindow floatWindow, bool show)
- {
- return new DockPane(content, floatWindow, show);
- }
-
- public DockPane CreateDockPane(IDockContent content, DockPane prevPane, DockAlignment alignment,
- double proportion, bool show)
- {
- return new DockPane(content, prevPane, alignment, proportion, show);
- }
-
- public DockPane CreateDockPane(IDockContent content, Rectangle floatWindowBounds, bool show)
- {
- return new DockPane(content, floatWindowBounds, show);
- }
-
- #endregion
- }
-
- #endregion
-
- #region DefaultFloatWindowFactory
-
- private class DefaultFloatWindowFactory : IFloatWindowFactory
- {
- #region Public methods
-
- public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane)
- {
- return new FloatWindow(dockPanel, pane);
- }
-
- public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds)
- {
- return new FloatWindow(dockPanel, pane, bounds);
- }
-
- #endregion
- }
-
- #endregion
-
- #region DefaultDockPaneCaptionFactory
-
- private class DefaultDockPaneCaptionFactory : IDockPaneCaptionFactory
- {
- #region Public methods
-
- public DockPaneCaptionBase CreateDockPaneCaption(DockPane pane)
- {
- return new VS2005DockPaneCaption(pane);
- }
-
- #endregion
- }
-
- #endregion
-
- #region DefaultDockPaneTabStripFactory
-
- private class DefaultDockPaneStripFactory : IDockPaneStripFactory
- {
- #region Public methods
-
- public DockPaneStripBase CreateDockPaneStrip(DockPane pane)
- {
- return new VS2005DockPaneStrip(pane);
- }
-
- #endregion
- }
-
- #endregion
-
- #region DefaultAutoHideStripFactory
-
- private class DefaultAutoHideStripFactory : IAutoHideStripFactory
- {
- #region Public methods
-
- public AutoHideStripBase CreateAutoHideStrip(DockPanel panel)
- {
- return new VS2005AutoHideStrip(panel);
- }
-
- #endregion
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockPanelSkin.cs b/src/WinFormsUI/Docking/DockPanelSkin.cs
deleted file mode 100644
index 1ab2758e..00000000
--- a/src/WinFormsUI/Docking/DockPanelSkin.cs
+++ /dev/null
@@ -1,482 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Drawing.Design;
-using System.Windows.Forms.Design;
-using System.ComponentModel;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- #region DockPanelSkin classes
-
- ///
- /// The skin to use when displaying the DockPanel.
- /// The skin allows custom gradient color schemes to be used when drawing the
- /// DockStrips and Tabs.
- ///
- [TypeConverter(typeof(DockPanelSkinConverter))]
- public class DockPanelSkin
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public DockPanelSkin()
- {
- AutoHideStripSkin = new AutoHideStripSkin();
- DockPaneStripSkin = new DockPaneStripSkin();
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// The skin used to display the auto hide strips and tabs.
- ///
- public AutoHideStripSkin AutoHideStripSkin { get; set; }
-
- ///
- /// The skin used to display the Document and ToolWindow style DockStrips and Tabs.
- ///
- public DockPaneStripSkin DockPaneStripSkin { get; set; }
-
- #endregion
- }
-
- ///
- /// The skin used to display the auto hide strip and tabs.
- ///
- [TypeConverter(typeof(AutoHideStripConverter))]
- public class AutoHideStripSkin
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public AutoHideStripSkin()
- {
- DockStripGradient = new DockPanelGradient();
- DockStripGradient.StartColor = SystemColors.ControlLight;
- DockStripGradient.EndColor = SystemColors.ControlLight;
-
- TabGradient = new TabGradient();
- TabGradient.TextColor = SystemColors.ControlDarkDark;
-
- TextFont = SystemFonts.MenuFont;
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// The gradient color skin for the DockStrips.
- ///
- public DockPanelGradient DockStripGradient { get; set; }
-
- ///
- /// The gradient color skin for the Tabs.
- ///
- public TabGradient TabGradient { get; set; }
-
- ///
- /// Font used in AutoHideStrip elements.
- ///
- public Font TextFont { get; set; }
-
- #endregion
- }
-
- ///
- /// The skin used to display the document and tool strips and tabs.
- ///
- [TypeConverter(typeof(DockPaneStripConverter))]
- public class DockPaneStripSkin
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public DockPaneStripSkin()
- {
- DocumentGradient = new DockPaneStripGradient();
- DocumentGradient.DockStripGradient.StartColor = SystemColors.Control;
- DocumentGradient.DockStripGradient.EndColor = SystemColors.Control;
- DocumentGradient.ActiveTabGradient.StartColor = SystemColors.ControlLightLight;
- DocumentGradient.ActiveTabGradient.EndColor = SystemColors.ControlLightLight;
- DocumentGradient.InactiveTabGradient.StartColor = SystemColors.ControlLight;
- DocumentGradient.InactiveTabGradient.EndColor = SystemColors.ControlLight;
-
- ToolWindowGradient = new DockPaneStripToolWindowGradient();
- ToolWindowGradient.DockStripGradient.StartColor = SystemColors.ControlLight;
- ToolWindowGradient.DockStripGradient.EndColor = SystemColors.ControlLight;
-
- ToolWindowGradient.ActiveTabGradient.StartColor = SystemColors.Control;
- ToolWindowGradient.ActiveTabGradient.EndColor = SystemColors.Control;
-
- ToolWindowGradient.InactiveTabGradient.StartColor = Color.Transparent;
- ToolWindowGradient.InactiveTabGradient.EndColor = Color.Transparent;
- ToolWindowGradient.InactiveTabGradient.TextColor = SystemColors.ControlDarkDark;
-
- ToolWindowGradient.ActiveCaptionGradient.StartColor = SystemColors.GradientActiveCaption;
- ToolWindowGradient.ActiveCaptionGradient.EndColor = SystemColors.ActiveCaption;
- ToolWindowGradient.ActiveCaptionGradient.LinearGradientMode = LinearGradientMode.Vertical;
- ToolWindowGradient.ActiveCaptionGradient.TextColor = SystemColors.ActiveCaptionText;
-
- ToolWindowGradient.InactiveCaptionGradient.StartColor = SystemColors.GradientInactiveCaption;
- ToolWindowGradient.InactiveCaptionGradient.EndColor = SystemColors.InactiveCaption;
- ToolWindowGradient.InactiveCaptionGradient.LinearGradientMode = LinearGradientMode.Vertical;
- ToolWindowGradient.InactiveCaptionGradient.TextColor = SystemColors.InactiveCaptionText;
-
- TextFont = SystemFonts.MenuFont;
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// The skin used to display the Document style DockPane strip and tab.
- ///
- public DockPaneStripGradient DocumentGradient { get; set; }
-
- ///
- /// The skin used to display the ToolWindow style DockPane strip and tab.
- ///
- public DockPaneStripToolWindowGradient ToolWindowGradient { get; set; }
-
- ///
- /// Font used in DockPaneStrip elements.
- ///
- public Font TextFont { get; set; }
-
- #endregion
- }
-
- ///
- /// The skin used to display the DockPane ToolWindow strip and tab.
- ///
- [TypeConverter(typeof(DockPaneStripGradientConverter))]
- public class DockPaneStripToolWindowGradient : DockPaneStripGradient
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public DockPaneStripToolWindowGradient()
- {
- ActiveCaptionGradient = new TabGradient();
- InactiveCaptionGradient = new TabGradient();
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// The skin used to display the active ToolWindow caption.
- ///
- public TabGradient ActiveCaptionGradient { get; set; }
-
- ///
- /// The skin used to display the inactive ToolWindow caption.
- ///
- public TabGradient InactiveCaptionGradient { get; set; }
-
- #endregion
- }
-
- ///
- /// The skin used to display the DockPane strip and tab.
- ///
- [TypeConverter(typeof(DockPaneStripGradientConverter))]
- public class DockPaneStripGradient
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public DockPaneStripGradient()
- {
- DockStripGradient = new DockPanelGradient();
- ActiveTabGradient = new TabGradient();
- InactiveTabGradient = new TabGradient();
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// The gradient color skin for the DockStrip.
- ///
- public DockPanelGradient DockStripGradient { get; set; }
-
- ///
- /// The skin used to display the active DockPane tabs.
- ///
- public TabGradient ActiveTabGradient { get; set; }
-
- ///
- /// The skin used to display the inactive DockPane tabs.
- ///
- public TabGradient InactiveTabGradient { get; set; }
-
- #endregion
- }
-
- ///
- /// The skin used to display the dock pane tab
- ///
- [TypeConverter(typeof(DockPaneTabGradientConverter))]
- public class TabGradient : DockPanelGradient
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public TabGradient()
- {
- TextColor = SystemColors.ControlText;
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// The text color.
- ///
- [DefaultValue(typeof(SystemColors), "ControlText")]
- public Color TextColor { get; set; }
-
- #endregion
- }
-
- ///
- /// The gradient color skin.
- ///
- [TypeConverter(typeof(DockPanelGradientConverter))]
- public class DockPanelGradient
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public DockPanelGradient()
- {
- StartColor = SystemColors.Control;
- EndColor = SystemColors.Control;
- LinearGradientMode = LinearGradientMode.Horizontal;
- }
-
- #endregion
-
- #region Properties
-
- ///
- /// The beginning gradient color.
- ///
- [DefaultValue(typeof(SystemColors), "Control")]
- public Color StartColor { get; set; }
-
- ///
- /// The ending gradient color.
- ///
- [DefaultValue(typeof(SystemColors), "Control")]
- public Color EndColor { get; set; }
-
- ///
- /// The gradient mode to display the colors.
- ///
- [DefaultValue(LinearGradientMode.Horizontal)]
- public LinearGradientMode LinearGradientMode { get; set; }
-
- #endregion
- }
-
- #endregion
-
- #region Converters
-
- public class DockPanelSkinConverter : ExpandableObjectConverter
- {
- #region Public methods
-
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(DockPanelSkin))
- {
- return true;
- }
-
- return base.CanConvertTo(context, destinationType);
- }
-
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture,
- object value, Type destinationType)
- {
- if (destinationType == typeof(string) && value is DockPanelSkin)
- {
- return "DockPanelSkin";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
-
- #endregion
- }
-
- public class DockPanelGradientConverter : ExpandableObjectConverter
- {
- #region Public methods
-
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(DockPanelGradient))
- {
- return true;
- }
-
- return base.CanConvertTo(context, destinationType);
- }
-
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture,
- object value, Type destinationType)
- {
- if (destinationType == typeof(string) && value is DockPanelGradient)
- {
- return "DockPanelGradient";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
-
- #endregion
- }
-
- public class AutoHideStripConverter : ExpandableObjectConverter
- {
- #region Public methods
-
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(AutoHideStripSkin))
- {
- return true;
- }
-
- return base.CanConvertTo(context, destinationType);
- }
-
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture,
- object value, Type destinationType)
- {
- if (destinationType == typeof(string) && value is AutoHideStripSkin)
- {
- return "AutoHideStripSkin";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
-
- #endregion
- }
-
- public class DockPaneStripConverter : ExpandableObjectConverter
- {
- #region Public methods
-
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(DockPaneStripSkin))
- {
- return true;
- }
-
- return base.CanConvertTo(context, destinationType);
- }
-
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture,
- object value, Type destinationType)
- {
- if (destinationType == typeof(string) && value is DockPaneStripSkin)
- {
- return "DockPaneStripSkin";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
-
- #endregion
- }
-
- public class DockPaneStripGradientConverter : ExpandableObjectConverter
- {
- #region Public methods
-
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(DockPaneStripGradient))
- {
- return true;
- }
-
- return base.CanConvertTo(context, destinationType);
- }
-
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture,
- object value, Type destinationType)
- {
- if (destinationType == typeof(string) && value is DockPaneStripGradient)
- {
- return "DockPaneStripGradient";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
-
- #endregion
- }
-
- public class DockPaneTabGradientConverter : ExpandableObjectConverter
- {
- #region Public methods
-
- public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
- {
- if (destinationType == typeof(TabGradient))
- {
- return true;
- }
-
- return base.CanConvertTo(context, destinationType);
- }
-
- public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture,
- object value, Type destinationType)
- {
- if (destinationType == typeof(string) && value is TabGradient)
- {
- return "DockPaneTabGradient";
- }
- return base.ConvertTo(context, culture, value, destinationType);
- }
-
- #endregion
- }
-
- #endregion
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockWindow.SplitterControl.cs b/src/WinFormsUI/Docking/DockWindow.SplitterControl.cs
deleted file mode 100644
index 5e8f761d..00000000
--- a/src/WinFormsUI/Docking/DockWindow.SplitterControl.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public partial class DockWindow
- {
- private class SplitterControl : SplitterBase
- {
- #region Properties
-
- protected override int SplitterSize
- {
- get { return Measures.SplitterSize; }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void StartDrag()
- {
- DockWindow window = Parent as DockWindow;
- if (window == null)
- {
- return;
- }
-
- window.DockPanel.BeginDrag(window, window.RectangleToScreen(Bounds));
- }
-
- #endregion
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockWindow.cs b/src/WinFormsUI/Docking/DockWindow.cs
deleted file mode 100644
index a5133b6f..00000000
--- a/src/WinFormsUI/Docking/DockWindow.cs
+++ /dev/null
@@ -1,283 +0,0 @@
-using System;
-using System.Windows.Forms;
-using System.Drawing;
-using System.Runtime.InteropServices;
-using System.ComponentModel;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- [ToolboxItem(false)]
- public partial class DockWindow : Panel, INestedPanesContainer, ISplitterDragSource
- {
- #region Fields
-
- private readonly SplitterControl m_splitter;
-
- #endregion
-
- #region cTor
-
- internal DockWindow(DockPanel dockPanel, DockState dockState)
- {
- NestedPanes = new NestedPaneCollection(this);
- DockPanel = dockPanel;
- DockState = dockState;
- Visible = false;
-
- SuspendLayout();
-
- if (DockState == DockState.DockLeft || DockState == DockState.DockRight ||
- DockState == DockState.DockTop || DockState == DockState.DockBottom)
- {
- m_splitter = new SplitterControl();
- Controls.Add(m_splitter);
- }
-
- if (DockState == DockState.DockLeft)
- {
- Dock = DockStyle.Left;
- m_splitter.Dock = DockStyle.Right;
- }
- else if (DockState == DockState.DockRight)
- {
- Dock = DockStyle.Right;
- m_splitter.Dock = DockStyle.Left;
- }
- else if (DockState == DockState.DockTop)
- {
- Dock = DockStyle.Top;
- m_splitter.Dock = DockStyle.Bottom;
- }
- else if (DockState == DockState.DockBottom)
- {
- Dock = DockStyle.Bottom;
- m_splitter.Dock = DockStyle.Top;
- }
- else if (DockState == DockState.Document)
- {
- Dock = DockStyle.Fill;
- }
-
- ResumeLayout();
- }
-
- #endregion
-
- #region Properties
-
- public VisibleNestedPaneCollection VisibleNestedPanes
- {
- get { return NestedPanes.VisibleNestedPanes; }
- }
-
- public NestedPaneCollection NestedPanes { get; }
-
- public DockPanel DockPanel { get; }
-
- public DockState DockState { get; }
-
- public bool IsFloat
- {
- get { return DockState == DockState.Float; }
- }
-
- internal DockPane DefaultPane
- {
- get { return VisibleNestedPanes.Count == 0 ? null : VisibleNestedPanes[0]; }
- }
-
- public virtual Rectangle DisplayingRectangle
- {
- get
- {
- Rectangle rect = ClientRectangle;
- // if DockWindow is document, exclude the border
- if (DockState == DockState.Document)
- {
- rect.X += 1;
- rect.Y += 1;
- rect.Width -= 2;
- rect.Height -= 2;
- }
- // exclude the splitter
- else if (DockState == DockState.DockLeft)
- {
- rect.Width -= Measures.SplitterSize;
- }
- else if (DockState == DockState.DockRight)
- {
- rect.X += Measures.SplitterSize;
- rect.Width -= Measures.SplitterSize;
- }
- else if (DockState == DockState.DockTop)
- {
- rect.Height -= Measures.SplitterSize;
- }
- else if (DockState == DockState.DockBottom)
- {
- rect.Y += Measures.SplitterSize;
- rect.Height -= Measures.SplitterSize;
- }
-
- return rect;
- }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void OnPaint(PaintEventArgs e)
- {
- // if DockWindow is document, draw the border
- if (DockState == DockState.Document)
- {
- e.Graphics.DrawRectangle(SystemPens.ControlDark, ClientRectangle.X, ClientRectangle.Y,
- ClientRectangle.Width - 1, ClientRectangle.Height - 1);
- }
-
- base.OnPaint(e);
- }
-
- protected override void OnLayout(LayoutEventArgs levent)
- {
- VisibleNestedPanes.Refresh();
- if (VisibleNestedPanes.Count == 0)
- {
- if (Visible)
- {
- Visible = false;
- }
- }
- else if (!Visible)
- {
- Visible = true;
- VisibleNestedPanes.Refresh();
- }
-
- base.OnLayout(levent);
- }
-
- #endregion
-
- #region ISplitterDragSource Members
-
- void ISplitterDragSource.BeginDrag(Rectangle rectSplitter)
- {
- }
-
- void ISplitterDragSource.EndDrag()
- {
- }
-
- bool ISplitterDragSource.IsVertical
- {
- get { return DockState == DockState.DockLeft || DockState == DockState.DockRight; }
- }
-
- Rectangle ISplitterDragSource.DragLimitBounds
- {
- get
- {
- Rectangle rectLimit = DockPanel.DockArea;
- Point location;
- if ((Control.ModifierKeys & Keys.Shift) == 0)
- {
- location = Location;
- }
- else
- {
- location = DockPanel.DockArea.Location;
- }
-
- if (((ISplitterDragSource) this).IsVertical)
- {
- rectLimit.X += MeasurePane.MinSize;
- rectLimit.Width -= 2 * MeasurePane.MinSize;
- rectLimit.Y = location.Y;
- if ((Control.ModifierKeys & Keys.Shift) == 0)
- {
- rectLimit.Height = Height;
- }
- }
- else
- {
- rectLimit.Y += MeasurePane.MinSize;
- rectLimit.Height -= 2 * MeasurePane.MinSize;
- rectLimit.X = location.X;
- if ((Control.ModifierKeys & Keys.Shift) == 0)
- {
- rectLimit.Width = Width;
- }
- }
-
- return DockPanel.RectangleToScreen(rectLimit);
- }
- }
-
- void ISplitterDragSource.MoveSplitter(int offset)
- {
- if ((Control.ModifierKeys & Keys.Shift) != 0)
- {
- SendToBack();
- }
-
- Rectangle rectDockArea = DockPanel.DockArea;
- if (DockState == DockState.DockLeft && rectDockArea.Width > 0)
- {
- if (DockPanel.DockLeftPortion > 1)
- {
- DockPanel.DockLeftPortion = Width + offset;
- }
- else
- {
- DockPanel.DockLeftPortion += (double) offset / (double) rectDockArea.Width;
- }
- }
- else if (DockState == DockState.DockRight && rectDockArea.Width > 0)
- {
- if (DockPanel.DockRightPortion > 1)
- {
- DockPanel.DockRightPortion = Width - offset;
- }
- else
- {
- DockPanel.DockRightPortion -= (double) offset / (double) rectDockArea.Width;
- }
- }
- else if (DockState == DockState.DockBottom && rectDockArea.Height > 0)
- {
- if (DockPanel.DockBottomPortion > 1)
- {
- DockPanel.DockBottomPortion = Height - offset;
- }
- else
- {
- DockPanel.DockBottomPortion -= (double) offset / (double) rectDockArea.Height;
- }
- }
- else if (DockState == DockState.DockTop && rectDockArea.Height > 0)
- {
- if (DockPanel.DockTopPortion > 1)
- {
- DockPanel.DockTopPortion = Height + offset;
- }
- else
- {
- DockPanel.DockTopPortion += (double) offset / (double) rectDockArea.Height;
- }
- }
- }
-
- #region IDragSource Members
-
- Control IDragSource.DragControl
- {
- get { return this; }
- }
-
- #endregion
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DockWindowCollection.cs b/src/WinFormsUI/Docking/DockWindowCollection.cs
deleted file mode 100644
index 0c0af785..00000000
--- a/src/WinFormsUI/Docking/DockWindowCollection.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public class DockWindowCollection : ReadOnlyCollection
- {
- #region cTor
-
- internal DockWindowCollection(DockPanel dockPanel)
- : base(new List())
- {
- Items.Add(new DockWindow(dockPanel, DockState.Document));
- Items.Add(new DockWindow(dockPanel, DockState.DockLeft));
- Items.Add(new DockWindow(dockPanel, DockState.DockRight));
- Items.Add(new DockWindow(dockPanel, DockState.DockTop));
- Items.Add(new DockWindow(dockPanel, DockState.DockBottom));
- }
-
- #endregion
-
- #region Properties
-
- public DockWindow this[DockState dockState]
- {
- get
- {
- if (dockState == DockState.Document)
- {
- return Items[0];
- }
- else if (dockState == DockState.DockLeft || dockState == DockState.DockLeftAutoHide)
- {
- return Items[1];
- }
- else if (dockState == DockState.DockRight || dockState == DockState.DockRightAutoHide)
- {
- return Items[2];
- }
- else if (dockState == DockState.DockTop || dockState == DockState.DockTopAutoHide)
- {
- return Items[3];
- }
- else if (dockState == DockState.DockBottom || dockState == DockState.DockBottomAutoHide)
- {
- return Items[4];
- }
-
- throw new ArgumentOutOfRangeException();
- }
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DragForm.cs b/src/WinFormsUI/Docking/DragForm.cs
deleted file mode 100644
index f250e21c..00000000
--- a/src/WinFormsUI/Docking/DragForm.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-using System;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- // Inspired by Chris Sano's article:
- // http://msdn.microsoft.com/smartclient/default.aspx?pull=/library/en-us/dnwinforms/html/colorpicker.asp
- // In Sano's article, the DragForm needs to meet the following criteria:
- // (1) it was not to show up in the task bar;
- // ShowInTaskBar = false
- // (2) it needed to be the top-most window;
- // TopMost = true (not necessary here)
- // (3) its icon could not show up in the ALT+TAB window if the user pressed ALT+TAB during a drag-and-drop;
- // FormBorderStyle = FormBorderStyle.None;
- // Create with WS_EX_TOOLWINDOW window style.
- // Compares with the solution in the artile by setting FormBorderStyle as FixedToolWindow,
- // and then clip the window caption and border, this way is much simplier.
- // (4) it was not to steal focus from the application when displayed.
- // User Win32 ShowWindow API with SW_SHOWNOACTIVATE
- // In addition, this form should only for display and therefore should act as transparent, otherwise
- // WindowFromPoint will return this form, instead of the control beneath. Need BOTH of the following to
- // achieve this (don't know why, spent hours to try it out :( ):
- // 1. Enabled = false;
- // 2. WM_NCHITTEST returns HTTRANSPARENT
- internal class DragForm : Form
- {
- #region cTor
-
- public DragForm()
- {
- FormBorderStyle = FormBorderStyle.None;
- ShowInTaskbar = false;
- SetStyle(ControlStyles.Selectable, false);
- Enabled = false;
- }
-
- #endregion
-
- #region Properties
-
- protected override CreateParams CreateParams
- {
- get
- {
- CreateParams createParams = base.CreateParams;
- createParams.ExStyle |= (int) Win32.WindowExStyles.WS_EX_TOOLWINDOW;
- return createParams;
- }
- }
-
- #endregion
-
- #region Public methods
-
- public virtual void Show(bool bActivate)
- {
- if (bActivate)
- {
- Show();
- }
- else
- {
- NativeMethods.ShowWindow(Handle, (int) Win32.ShowWindowStyles.SW_SHOWNOACTIVATE);
- }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void WndProc(ref Message m)
- {
- if (m.Msg == (int) Win32.Msgs.WM_NCHITTEST)
- {
- m.Result = (IntPtr) Win32.HitTest.HTTRANSPARENT;
- return;
- }
-
- base.WndProc(ref m);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/DummyControl.cs b/src/WinFormsUI/Docking/DummyControl.cs
deleted file mode 100644
index 7933d0ca..00000000
--- a/src/WinFormsUI/Docking/DummyControl.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal class DummyControl : Control
- {
- #region cTor
-
- public DummyControl()
- {
- SetStyle(ControlStyles.Selectable, false);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Enums.cs b/src/WinFormsUI/Docking/Enums.cs
deleted file mode 100644
index 4a748031..00000000
--- a/src/WinFormsUI/Docking/Enums.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using System;
-using System.ComponentModel;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- [Flags]
- [Serializable]
- [Editor(typeof(DockAreasEditor), typeof(System.Drawing.Design.UITypeEditor))]
- public enum DockAreas
- {
- Float = 1,
- DockLeft = 2,
- DockRight = 4,
- DockTop = 8,
- DockBottom = 16,
- Document = 32
- }
-
- public enum DockState
- {
- Unknown = 0,
- Float = 1,
- DockTopAutoHide = 2,
- DockLeftAutoHide = 3,
- DockBottomAutoHide = 4,
- DockRightAutoHide = 5,
- Document = 6,
- DockTop = 7,
- DockLeft = 8,
- DockBottom = 9,
- DockRight = 10,
- Hidden = 11
- }
-
- public enum DockAlignment
- {
- Left,
- Right,
- Top,
- Bottom
- }
-
- public enum DocumentStyle
- {
- DockingMdi,
- DockingWindow,
- DockingSdi,
- SystemMdi,
- }
-
- ///
- /// The location to draw the DockPaneStrip for Document style windows.
- ///
- public enum DocumentTabStripLocation
- {
- Top,
- Bottom
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/FloatWindow.cs b/src/WinFormsUI/Docking/FloatWindow.cs
deleted file mode 100644
index e341137a..00000000
--- a/src/WinFormsUI/Docking/FloatWindow.cs
+++ /dev/null
@@ -1,551 +0,0 @@
-using System;
-using System.Diagnostics.CodeAnalysis;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public class FloatWindow : Form, INestedPanesContainer, IDockDragSource
- {
- #region Fields
-
- internal const int WM_CHECKDISPOSE = (int) (Win32.Msgs.WM_USER + 1);
-
- #endregion
-
- #region cTor
-
- internal protected FloatWindow(DockPanel dockPanel, DockPane pane)
- {
- InternalConstruct(dockPanel, pane, false, Rectangle.Empty);
- }
-
- internal protected FloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds)
- {
- InternalConstruct(dockPanel, pane, true, bounds);
- }
-
- #endregion
-
- #region Properties
-
- public bool AllowEndUserDocking { get; set; } = true;
-
- public NestedPaneCollection NestedPanes { get; private set; }
-
- public VisibleNestedPaneCollection VisibleNestedPanes
- {
- get { return NestedPanes.VisibleNestedPanes; }
- }
-
- public DockPanel DockPanel { get; private set; }
-
- public DockState DockState
- {
- get { return DockState.Float; }
- }
-
- public bool IsFloat
- {
- get { return DockState == DockState.Float; }
- }
-
- public virtual Rectangle DisplayingRectangle
- {
- get { return ClientRectangle; }
- }
-
- #endregion
-
- #region Internals
-
- internal bool IsDockStateValid(DockState dockState)
- {
- foreach (DockPane pane in NestedPanes)
- foreach (IDockContent content in pane.Contents)
- {
- if (!DockHelper.IsDockStateValid(dockState, content.DockHandler.DockAreas))
- {
- return false;
- }
- }
-
- return true;
- }
-
-
- [SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId =
- "System.Windows.Forms.Control.set_Text(System.String)")]
- internal void SetText()
- {
- DockPane theOnlyPane = VisibleNestedPanes.Count == 1 ? VisibleNestedPanes[0] : null;
-
- if (theOnlyPane == null)
- {
- Text = " "; // use " " instead of string.Empty because the whole title bar will disappear when ControlBox is set to false.
- }
- else if (theOnlyPane.ActiveContent == null)
- {
- Text = " ";
- }
- else
- {
- Text = theOnlyPane.ActiveContent.DockHandler.TabText;
- }
- }
-
- internal void RefreshChanges()
- {
- if (IsDisposed)
- {
- return;
- }
-
- if (VisibleNestedPanes.Count == 0)
- {
- ControlBox = true;
- return;
- }
-
- for (int i = VisibleNestedPanes.Count - 1; i >= 0; i--)
- {
- DockContentCollection contents = VisibleNestedPanes[i].Contents;
- for (int j = contents.Count - 1; j >= 0; j--)
- {
- IDockContent content = contents[j];
- if (content.DockHandler.DockState != DockState.Float)
- {
- continue;
- }
-
- if (content.DockHandler.CloseButton && content.DockHandler.CloseButtonVisible)
- {
- ControlBox = true;
- return;
- }
- }
- }
- //Only if there is a ControlBox do we turn it off
- //old code caused a flash of the window.
- if (ControlBox)
- {
- ControlBox = false;
- }
- }
-
- internal void TestDrop(IDockDragSource dragSource, DockOutlineBase dockOutline)
- {
- if (VisibleNestedPanes.Count == 1)
- {
- DockPane pane = VisibleNestedPanes[0];
- if (!dragSource.CanDockTo(pane))
- {
- return;
- }
-
- Point ptMouse = Control.MousePosition;
- uint lParam = Win32Helper.MakeLong(ptMouse.X, ptMouse.Y);
- if (NativeMethods.SendMessage(Handle, (int) Win32.Msgs.WM_NCHITTEST, 0, lParam) ==
- (uint) Win32.HitTest.HTCAPTION)
- {
- dockOutline.Show(VisibleNestedPanes[0], -1);
- }
- }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- if (DockPanel != null)
- {
- DockPanel.RemoveFloatWindow(this);
- }
- DockPanel = null;
- }
- base.Dispose(disposing);
- }
-
- protected override void OnActivated(EventArgs e)
- {
- DockPanel.FloatWindows.BringWindowToFront(this);
- base.OnActivated(e);
- // Propagate the Activated event to the visible panes content objects
- foreach (DockPane pane in VisibleNestedPanes)
- foreach (IDockContent content in pane.Contents)
- {
- content.OnActivated(e);
- }
- }
-
- protected override void OnDeactivate(EventArgs e)
- {
- base.OnDeactivate(e);
- // Propagate the Deactivate event to the visible panes content objects
- foreach (DockPane pane in VisibleNestedPanes)
- foreach (IDockContent content in pane.Contents)
- {
- content.OnDeactivate(e);
- }
- }
-
- protected override void OnLayout(LayoutEventArgs levent)
- {
- VisibleNestedPanes.Refresh();
- RefreshChanges();
- Visible = VisibleNestedPanes.Count > 0;
- SetText();
-
- base.OnLayout(levent);
- }
-
- protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
- {
- Rectangle rectWorkArea = SystemInformation.VirtualScreen;
-
- if (y + height > rectWorkArea.Bottom)
- {
- y -= y + height - rectWorkArea.Bottom;
- }
-
- if (y < rectWorkArea.Top)
- {
- y += rectWorkArea.Top - y;
- }
-
- base.SetBoundsCore(x, y, width, height, specified);
- }
-
- protected override void WndProc(ref Message m)
- {
- if (m.Msg == (int) Win32.Msgs.WM_NCLBUTTONDOWN)
- {
- if (IsDisposed)
- {
- return;
- }
-
- uint result = NativeMethods.SendMessage(this.Handle, (int) Win32.Msgs.WM_NCHITTEST, 0, (uint) m.LParam);
- if (result == 2 && DockPanel.AllowEndUserDocking && this.AllowEndUserDocking) // HITTEST_CAPTION
- {
- Activate();
- DockPanel.BeginDrag(this);
- }
- else
- {
- base.WndProc(ref m);
- }
-
- return;
- }
- else if (m.Msg == (int) Win32.Msgs.WM_NCRBUTTONDOWN)
- {
- uint result = NativeMethods.SendMessage(this.Handle, (int) Win32.Msgs.WM_NCHITTEST, 0, (uint) m.LParam);
- if (result == 2) // HITTEST_CAPTION
- {
- DockPane theOnlyPane = VisibleNestedPanes.Count == 1 ? VisibleNestedPanes[0] : null;
- if (theOnlyPane != null && theOnlyPane.ActiveContent != null)
- {
- theOnlyPane.ShowTabPageContextMenu(this, PointToClient(Control.MousePosition));
- return;
- }
- }
-
- base.WndProc(ref m);
- return;
- }
- else if (m.Msg == (int) Win32.Msgs.WM_CLOSE)
- {
- if (NestedPanes.Count == 0)
- {
- base.WndProc(ref m);
- return;
- }
-
- for (int i = NestedPanes.Count - 1; i >= 0; i--)
- {
- DockContentCollection contents = NestedPanes[i].Contents;
- for (int j = contents.Count - 1; j >= 0; j--)
- {
- IDockContent content = contents[j];
- if (content.DockHandler.DockState != DockState.Float)
- {
- continue;
- }
-
- if (!content.DockHandler.CloseButton)
- {
- continue;
- }
-
- if (content.DockHandler.HideOnClose)
- {
- content.DockHandler.Hide();
- }
- else
- {
- content.DockHandler.Close();
- }
- }
- }
-
- return;
- }
- else if (m.Msg == (int) Win32.Msgs.WM_NCLBUTTONDBLCLK)
- {
- uint result = NativeMethods.SendMessage(this.Handle, (int) Win32.Msgs.WM_NCHITTEST, 0, (uint) m.LParam);
- if (result != 2) // HITTEST_CAPTION
- {
- base.WndProc(ref m);
- return;
- }
-
- DockPanel.SuspendLayout(true);
-
- // Restore to panel
- foreach (DockPane pane in NestedPanes)
- {
- if (pane.DockState != DockState.Float)
- {
- continue;
- }
- pane.RestoreToPanel();
- }
-
-
- DockPanel.ResumeLayout(true, true);
- return;
- }
- else if (m.Msg == WM_CHECKDISPOSE)
- {
- if (NestedPanes.Count == 0)
- {
- Dispose();
- }
-
- return;
- }
-
- base.WndProc(ref m);
- }
-
- #endregion
-
- #region Private Methods
-
- private void InternalConstruct(DockPanel dockPanel, DockPane pane, bool boundsSpecified, Rectangle bounds)
- {
- if (dockPanel == null)
- {
- throw new ArgumentNullException(Strings.FloatWindow_Constructor_NullDockPanel);
- }
-
- NestedPanes = new NestedPaneCollection(this);
-
- FormBorderStyle = FormBorderStyle.SizableToolWindow;
- ShowInTaskbar = false;
- if (dockPanel.RightToLeft != RightToLeft)
- {
- RightToLeft = dockPanel.RightToLeft;
- }
- if (RightToLeftLayout != dockPanel.RightToLeftLayout)
- {
- RightToLeftLayout = dockPanel.RightToLeftLayout;
- }
-
- SuspendLayout();
- if (boundsSpecified)
- {
- Bounds = bounds;
- StartPosition = FormStartPosition.Manual;
- }
- else
- {
- StartPosition = FormStartPosition.WindowsDefaultLocation;
- Size = dockPanel.DefaultFloatWindowSize;
- }
-
- DockPanel = dockPanel;
- Owner = DockPanel.FindForm();
- DockPanel.AddFloatWindow(this);
- if (pane != null)
- {
- pane.FloatWindow = this;
- }
-
- ResumeLayout();
- }
-
- #endregion
-
- #region IDockDragSource Members
-
- #region IDragSource Members
-
- Control IDragSource.DragControl
- {
- get { return this; }
- }
-
- #endregion
-
- bool IDockDragSource.IsDockStateValid(DockState dockState)
- {
- return IsDockStateValid(dockState);
- }
-
- bool IDockDragSource.CanDockTo(DockPane pane)
- {
- if (!IsDockStateValid(pane.DockState))
- {
- return false;
- }
-
- if (pane.FloatWindow == this)
- {
- return false;
- }
-
- return true;
- }
-
- Rectangle IDockDragSource.BeginDrag(Point ptMouse)
- {
- return Bounds;
- }
-
- public void FloatAt(Rectangle floatWindowBounds)
- {
- Bounds = floatWindowBounds;
- }
-
- public void DockTo(DockPane pane, DockStyle dockStyle, int contentIndex)
- {
- if (dockStyle == DockStyle.Fill)
- {
- for (int i = NestedPanes.Count - 1; i >= 0; i--)
- {
- DockPane paneFrom = NestedPanes[i];
- for (int j = paneFrom.Contents.Count - 1; j >= 0; j--)
- {
- IDockContent c = paneFrom.Contents[j];
- c.DockHandler.Pane = pane;
- if (contentIndex != -1)
- {
- pane.SetContentIndex(c, contentIndex);
- }
- c.DockHandler.Activate();
- }
- }
- }
- else
- {
- DockAlignment alignment = DockAlignment.Left;
- if (dockStyle == DockStyle.Left)
- {
- alignment = DockAlignment.Left;
- }
- else if (dockStyle == DockStyle.Right)
- {
- alignment = DockAlignment.Right;
- }
- else if (dockStyle == DockStyle.Top)
- {
- alignment = DockAlignment.Top;
- }
- else if (dockStyle == DockStyle.Bottom)
- {
- alignment = DockAlignment.Bottom;
- }
-
- MergeNestedPanes(VisibleNestedPanes, pane.NestedPanesContainer.NestedPanes, pane, alignment, 0.5);
- }
- }
-
- public void DockTo(DockPanel panel, DockStyle dockStyle)
- {
- if (panel != DockPanel)
- {
- throw new ArgumentException(Strings.IDockDragSource_DockTo_InvalidPanel, "panel");
- }
-
- NestedPaneCollection nestedPanesTo = null;
-
- if (dockStyle == DockStyle.Top)
- {
- nestedPanesTo = DockPanel.DockWindows[DockState.DockTop].NestedPanes;
- }
- else if (dockStyle == DockStyle.Bottom)
- {
- nestedPanesTo = DockPanel.DockWindows[DockState.DockBottom].NestedPanes;
- }
- else if (dockStyle == DockStyle.Left)
- {
- nestedPanesTo = DockPanel.DockWindows[DockState.DockLeft].NestedPanes;
- }
- else if (dockStyle == DockStyle.Right)
- {
- nestedPanesTo = DockPanel.DockWindows[DockState.DockRight].NestedPanes;
- }
- else if (dockStyle == DockStyle.Fill)
- {
- nestedPanesTo = DockPanel.DockWindows[DockState.Document].NestedPanes;
- }
-
- DockPane prevPane = null;
- for (int i = nestedPanesTo.Count - 1; i >= 0; i--)
- {
- if (nestedPanesTo[i] != VisibleNestedPanes[0])
- {
- prevPane = nestedPanesTo[i];
- }
- }
- MergeNestedPanes(VisibleNestedPanes, nestedPanesTo, prevPane, DockAlignment.Left, 0.5);
- }
-
- private static void MergeNestedPanes(VisibleNestedPaneCollection nestedPanesFrom,
- NestedPaneCollection nestedPanesTo, DockPane prevPane, DockAlignment alignment, double proportion)
- {
- if (nestedPanesFrom.Count == 0)
- {
- return;
- }
-
- int count = nestedPanesFrom.Count;
- DockPane[] panes = new DockPane[count];
- DockPane[] prevPanes = new DockPane[count];
- DockAlignment[] alignments = new DockAlignment[count];
- double[] proportions = new double[count];
-
- for (int i = 0; i < count; i++)
- {
- panes[i] = nestedPanesFrom[i];
- prevPanes[i] = nestedPanesFrom[i].NestedDockingStatus.PreviousPane;
- alignments[i] = nestedPanesFrom[i].NestedDockingStatus.Alignment;
- proportions[i] = nestedPanesFrom[i].NestedDockingStatus.Proportion;
- }
-
- DockPane pane = panes[0].DockTo(nestedPanesTo.Container, prevPane, alignment, proportion);
- panes[0].DockState = nestedPanesTo.DockState;
-
- for (int i = 1; i < count; i++)
- {
- for (int j = i; j < count; j++)
- {
- if (prevPanes[j] == panes[i - 1])
- {
- prevPanes[j] = pane;
- }
- }
- pane = panes[i].DockTo(nestedPanesTo.Container, prevPanes[i], alignments[i], proportions[i]);
- panes[i].DockState = nestedPanesTo.DockState;
- }
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/FloatWindowCollection.cs b/src/WinFormsUI/Docking/FloatWindowCollection.cs
deleted file mode 100644
index fa5434b5..00000000
--- a/src/WinFormsUI/Docking/FloatWindowCollection.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public class FloatWindowCollection : ReadOnlyCollection
- {
- #region cTor
-
- internal FloatWindowCollection()
- : base(new List())
- {
- }
-
- #endregion
-
- #region Internals
-
- internal int Add(FloatWindow fw)
- {
- if (Items.Contains(fw))
- {
- return Items.IndexOf(fw);
- }
-
- Items.Add(fw);
- return Count - 1;
- }
-
- internal void Dispose()
- {
- for (int i = Count - 1; i >= 0; i--)
- {
- this[i].Close();
- }
- }
-
- internal void Remove(FloatWindow fw)
- {
- Items.Remove(fw);
- }
-
- internal void BringWindowToFront(FloatWindow fw)
- {
- Items.Remove(fw);
- Items.Add(fw);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Helpers/DockHelper.cs b/src/WinFormsUI/Docking/Helpers/DockHelper.cs
deleted file mode 100644
index 1d7c5112..00000000
--- a/src/WinFormsUI/Docking/Helpers/DockHelper.cs
+++ /dev/null
@@ -1,153 +0,0 @@
-using System;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal static class DockHelper
- {
- #region Public methods
-
- public static bool IsDockStateAutoHide(DockState dockState)
- {
- if (dockState == DockState.DockLeftAutoHide ||
- dockState == DockState.DockRightAutoHide ||
- dockState == DockState.DockTopAutoHide ||
- dockState == DockState.DockBottomAutoHide)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- public static bool IsDockStateValid(DockState dockState, DockAreas dockableAreas)
- {
- if ((dockableAreas & DockAreas.Float) == 0 &&
- dockState == DockState.Float)
- {
- return false;
- }
- else if ((dockableAreas & DockAreas.Document) == 0 &&
- dockState == DockState.Document)
- {
- return false;
- }
- else if ((dockableAreas & DockAreas.DockLeft) == 0 &&
- (dockState == DockState.DockLeft || dockState == DockState.DockLeftAutoHide))
- {
- return false;
- }
- else if ((dockableAreas & DockAreas.DockRight) == 0 &&
- (dockState == DockState.DockRight || dockState == DockState.DockRightAutoHide))
- {
- return false;
- }
- else if ((dockableAreas & DockAreas.DockTop) == 0 &&
- (dockState == DockState.DockTop || dockState == DockState.DockTopAutoHide))
- {
- return false;
- }
- else if ((dockableAreas & DockAreas.DockBottom) == 0 &&
- (dockState == DockState.DockBottom || dockState == DockState.DockBottomAutoHide))
- {
- return false;
- }
- else
- {
- return true;
- }
- }
-
- public static bool IsDockWindowState(DockState state)
- {
- if (state == DockState.DockTop || state == DockState.DockBottom || state == DockState.DockLeft ||
- state == DockState.DockRight || state == DockState.Document)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
-
- public static DockState ToggleAutoHideState(DockState state)
- {
- if (state == DockState.DockLeft)
- {
- return DockState.DockLeftAutoHide;
- }
- else if (state == DockState.DockRight)
- {
- return DockState.DockRightAutoHide;
- }
- else if (state == DockState.DockTop)
- {
- return DockState.DockTopAutoHide;
- }
- else if (state == DockState.DockBottom)
- {
- return DockState.DockBottomAutoHide;
- }
- else if (state == DockState.DockLeftAutoHide)
- {
- return DockState.DockLeft;
- }
- else if (state == DockState.DockRightAutoHide)
- {
- return DockState.DockRight;
- }
- else if (state == DockState.DockTopAutoHide)
- {
- return DockState.DockTop;
- }
- else if (state == DockState.DockBottomAutoHide)
- {
- return DockState.DockBottom;
- }
- else
- {
- return state;
- }
- }
-
- public static DockPane PaneAtPoint(Point pt, DockPanel dockPanel)
- {
- for (Control control = Win32Helper.ControlAtPoint(pt); control != null; control = control.Parent)
- {
- IDockContent content = control as IDockContent;
- if (content != null && content.DockHandler.DockPanel == dockPanel)
- {
- return content.DockHandler.Pane;
- }
-
- DockPane pane = control as DockPane;
- if (pane != null && pane.DockPanel == dockPanel)
- {
- return pane;
- }
- }
-
- return null;
- }
-
- public static FloatWindow FloatWindowAtPoint(Point pt, DockPanel dockPanel)
- {
- for (Control control = Win32Helper.ControlAtPoint(pt); control != null; control = control.Parent)
- {
- FloatWindow floatWindow = control as FloatWindow;
- if (floatWindow != null && floatWindow.DockPanel == dockPanel)
- {
- return floatWindow;
- }
- }
-
- return null;
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Helpers/DrawHelper.cs b/src/WinFormsUI/Docking/Helpers/DrawHelper.cs
deleted file mode 100644
index 742697bb..00000000
--- a/src/WinFormsUI/Docking/Helpers/DrawHelper.cs
+++ /dev/null
@@ -1,112 +0,0 @@
-using System;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Drawing.Imaging;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal static class DrawHelper
- {
- #region Public methods
-
- public static Point RtlTransform(Control control, Point point)
- {
- if (control.RightToLeft != RightToLeft.Yes)
- {
- return point;
- }
- else
- {
- return new Point(control.Right - point.X, point.Y);
- }
- }
-
- public static Rectangle RtlTransform(Control control, Rectangle rectangle)
- {
- if (control.RightToLeft != RightToLeft.Yes)
- {
- return rectangle;
- }
- else
- {
- return new Rectangle(control.ClientRectangle.Right - rectangle.Right, rectangle.Y, rectangle.Width,
- rectangle.Height);
- }
- }
-
- public static GraphicsPath GetRoundedCornerTab(GraphicsPath graphicsPath, Rectangle rect, bool upCorner)
- {
- if (graphicsPath == null)
- {
- graphicsPath = new GraphicsPath();
- }
- else
- {
- graphicsPath.Reset();
- }
-
- int curveSize = 6;
- if (upCorner)
- {
- graphicsPath.AddLine(rect.Left, rect.Bottom, rect.Left, rect.Top + curveSize / 2);
- graphicsPath.AddArc(new Rectangle(rect.Left, rect.Top, curveSize, curveSize), 180, 90);
- graphicsPath.AddLine(rect.Left + curveSize / 2, rect.Top, rect.Right - curveSize / 2, rect.Top);
- graphicsPath.AddArc(new Rectangle(rect.Right - curveSize, rect.Top, curveSize, curveSize), -90, 90);
- graphicsPath.AddLine(rect.Right, rect.Top + curveSize / 2, rect.Right, rect.Bottom);
- }
- else
- {
- graphicsPath.AddLine(rect.Right, rect.Top, rect.Right, rect.Bottom - curveSize / 2);
- graphicsPath.AddArc(
- new Rectangle(rect.Right - curveSize, rect.Bottom - curveSize, curveSize, curveSize), 0, 90);
- graphicsPath.AddLine(rect.Right - curveSize / 2, rect.Bottom, rect.Left + curveSize / 2, rect.Bottom);
- graphicsPath.AddArc(new Rectangle(rect.Left, rect.Bottom - curveSize, curveSize, curveSize), 90, 90);
- graphicsPath.AddLine(rect.Left, rect.Bottom - curveSize / 2, rect.Left, rect.Top);
- }
-
- return graphicsPath;
- }
-
- public static GraphicsPath CalculateGraphicsPathFromBitmap(Bitmap bitmap)
- {
- return CalculateGraphicsPathFromBitmap(bitmap, Color.Empty);
- }
-
- // From http://edu.cnzz.cn/show_3281.html
- public static GraphicsPath CalculateGraphicsPathFromBitmap(Bitmap bitmap, Color colorTransparent)
- {
- GraphicsPath graphicsPath = new GraphicsPath();
- if (colorTransparent == Color.Empty)
- {
- colorTransparent = bitmap.GetPixel(0, 0);
- }
-
- for (int row = 0; row < bitmap.Height; row++)
- {
- int colOpaquePixel = 0;
- for (int col = 0; col < bitmap.Width; col++)
- {
- if (bitmap.GetPixel(col, row) != colorTransparent)
- {
- colOpaquePixel = col;
- int colNext = col;
- for (colNext = colOpaquePixel; colNext < bitmap.Width; colNext++)
- {
- if (bitmap.GetPixel(colNext, row) == colorTransparent)
- {
- break;
- }
- }
-
- graphicsPath.AddRectangle(new Rectangle(colOpaquePixel, row, colNext - colOpaquePixel, 1));
- col = colNext;
- }
- }
- }
- return graphicsPath;
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Helpers/ResourceHelper.cs b/src/WinFormsUI/Docking/Helpers/ResourceHelper.cs
deleted file mode 100644
index 2e1759ca..00000000
--- a/src/WinFormsUI/Docking/Helpers/ResourceHelper.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using System;
-using System.Drawing;
-using System.Reflection;
-using System.Resources;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal static class ResourceHelper
- {
- #region Fields
-
- private static ResourceManager _resourceManager = null;
-
- #endregion
-
- #region Properties
-
- private static ResourceManager ResourceManager
- {
- get
- {
- if (_resourceManager == null)
- {
- _resourceManager = new ResourceManager("WeifenLuo.WinFormsUI.Docking.Strings",
- typeof(ResourceHelper).Assembly);
- }
- return _resourceManager;
- }
- }
-
- #endregion
-
- #region Public methods
-
- public static string GetString(string name)
- {
- return ResourceManager.GetString(name);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Helpers/Win32Helper.cs b/src/WinFormsUI/Docking/Helpers/Win32Helper.cs
deleted file mode 100644
index f2cb2bcb..00000000
--- a/src/WinFormsUI/Docking/Helpers/Win32Helper.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal static class Win32Helper
- {
- #region Public methods
-
- public static Control ControlAtPoint(Point pt)
- {
- return Control.FromChildHandle(NativeMethods.WindowFromPoint(pt));
- }
-
- public static uint MakeLong(int low, int high)
- {
- return (uint) ((high << 16) + low);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/InertButtonBase.cs b/src/WinFormsUI/Docking/InertButtonBase.cs
deleted file mode 100644
index f7891057..00000000
--- a/src/WinFormsUI/Docking/InertButtonBase.cs
+++ /dev/null
@@ -1,145 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Windows.Forms;
-using System.Drawing;
-using System.Drawing.Imaging;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal abstract class InertButtonBase : Control
- {
- #region Fields
-
- private bool m_isMouseOver = false;
-
- #endregion
-
- #region cTor
-
- protected InertButtonBase()
- {
- SetStyle(ControlStyles.SupportsTransparentBackColor, true);
- BackColor = Color.Transparent;
- }
-
- #endregion
-
- #region Properties
-
- public abstract Bitmap Image { get; }
-
- protected bool IsMouseOver
- {
- get { return m_isMouseOver; }
- private set
- {
- if (m_isMouseOver == value)
- {
- return;
- }
-
- m_isMouseOver = value;
- Invalidate();
- }
- }
-
- protected override Size DefaultSize
- {
- get { return Resources.DockPane_Close.Size; }
- }
-
- #endregion
-
- #region Public methods
-
- public void RefreshChanges()
- {
- if (IsDisposed)
- {
- return;
- }
-
- bool mouseOver = ClientRectangle.Contains(PointToClient(Control.MousePosition));
- if (mouseOver != IsMouseOver)
- {
- IsMouseOver = mouseOver;
- }
-
- OnRefreshChanges();
- }
-
- #endregion
-
- #region Overrides
-
- protected override void OnMouseMove(MouseEventArgs e)
- {
- base.OnMouseMove(e);
- bool over = ClientRectangle.Contains(e.X, e.Y);
- if (IsMouseOver != over)
- {
- IsMouseOver = over;
- }
- }
-
- protected override void OnMouseEnter(EventArgs e)
- {
- base.OnMouseEnter(e);
- if (!IsMouseOver)
- {
- IsMouseOver = true;
- }
- }
-
- protected override void OnMouseLeave(EventArgs e)
- {
- base.OnMouseLeave(e);
- if (IsMouseOver)
- {
- IsMouseOver = false;
- }
- }
-
- protected override void OnPaint(PaintEventArgs e)
- {
- if (IsMouseOver && Enabled)
- {
- using (Pen pen = new Pen(ForeColor))
- {
- e.Graphics.DrawRectangle(pen, Rectangle.Inflate(ClientRectangle, -1, -1));
- }
- }
-
- using (ImageAttributes imageAttributes = new ImageAttributes())
- {
- ColorMap[] colorMap = new ColorMap[2];
- colorMap[0] = new ColorMap();
- colorMap[0].OldColor = Color.FromArgb(0, 0, 0);
- colorMap[0].NewColor = ForeColor;
- colorMap[1] = new ColorMap();
- colorMap[1].OldColor = Image.GetPixel(0, 0);
- colorMap[1].NewColor = Color.Transparent;
-
- imageAttributes.SetRemapTable(colorMap);
-
- e.Graphics.DrawImage(
- Image,
- new Rectangle(0, 0, Image.Width, Image.Height),
- 0, 0,
- Image.Width,
- Image.Height,
- GraphicsUnit.Pixel,
- imageAttributes);
- }
-
- base.OnPaint(e);
- }
-
- #endregion
-
- protected virtual void OnRefreshChanges()
- {
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Interfaces.cs b/src/WinFormsUI/Docking/Interfaces.cs
deleted file mode 100644
index 6654370f..00000000
--- a/src/WinFormsUI/Docking/Interfaces.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-using System;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public interface IDockContent
- {
- #region Properties
-
- DockContentHandler DockHandler { get; }
-
- #endregion
-
- #region Public methods
-
- void OnActivated(EventArgs e);
- void OnDeactivate(EventArgs e);
-
- #endregion
- }
-
- public interface INestedPanesContainer
- {
- #region Properties
-
- DockState DockState { get; }
- Rectangle DisplayingRectangle { get; }
- NestedPaneCollection NestedPanes { get; }
- VisibleNestedPaneCollection VisibleNestedPanes { get; }
- bool IsFloat { get; }
-
- #endregion
- }
-
- internal interface IDragSource
- {
- #region Properties
-
- Control DragControl { get; }
-
- #endregion
- }
-
- internal interface IDockDragSource : IDragSource
- {
- #region Public methods
-
- Rectangle BeginDrag(Point ptMouse);
- bool IsDockStateValid(DockState dockState);
- bool CanDockTo(DockPane pane);
- void FloatAt(Rectangle floatWindowBounds);
- void DockTo(DockPane pane, DockStyle dockStyle, int contentIndex);
- void DockTo(DockPanel panel, DockStyle dockStyle);
-
- #endregion
- }
-
- internal interface ISplitterDragSource : IDragSource
- {
- #region Properties
-
- bool IsVertical { get; }
- Rectangle DragLimitBounds { get; }
-
- #endregion
-
- #region Public methods
-
- void BeginDrag(Rectangle rectSplitter);
- void EndDrag();
- void MoveSplitter(int offset);
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Localization.cs b/src/WinFormsUI/Docking/Localization.cs
deleted file mode 100644
index ddb98192..00000000
--- a/src/WinFormsUI/Docking/Localization.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-using System;
-using System.ComponentModel;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- [AttributeUsage(AttributeTargets.All)]
- internal sealed class LocalizedDescriptionAttribute : DescriptionAttribute
- {
- #region Fields
-
- private bool m_initialized = false;
-
- #endregion
-
- #region cTor
-
- public LocalizedDescriptionAttribute(string key) : base(key)
- {
- }
-
- #endregion
-
- #region Properties
-
- public override string Description
- {
- get
- {
- if (!m_initialized)
- {
- string key = base.Description;
- DescriptionValue = ResourceHelper.GetString(key);
- if (DescriptionValue == null)
- {
- DescriptionValue = string.Empty;
- }
-
- m_initialized = true;
- }
-
- return DescriptionValue;
- }
- }
-
- #endregion
- }
-
- [AttributeUsage(AttributeTargets.All)]
- internal sealed class LocalizedCategoryAttribute : CategoryAttribute
- {
- #region cTor
-
- public LocalizedCategoryAttribute(string key) : base(key)
- {
- }
-
- #endregion
-
- #region Overrides
-
- protected override string GetLocalizedString(string key)
- {
- return ResourceHelper.GetString(key);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Measures.cs b/src/WinFormsUI/Docking/Measures.cs
deleted file mode 100644
index a5607852..00000000
--- a/src/WinFormsUI/Docking/Measures.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal static class Measures
- {
- #region Fields
-
- public const int SplitterSize = 4;
-
- #endregion
- }
-
- internal static class MeasurePane
- {
- #region Fields
-
- public const int MinSize = 24;
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/NestedDockingStatus.cs b/src/WinFormsUI/Docking/NestedDockingStatus.cs
deleted file mode 100644
index c65a5f1c..00000000
--- a/src/WinFormsUI/Docking/NestedDockingStatus.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-using System;
-using System.Drawing;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public sealed class NestedDockingStatus
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- internal NestedDockingStatus(DockPane pane)
- {
- DockPane = pane;
- }
-
- #endregion
-
- #region Properties
-
- public DockPane DockPane { get; } = null;
-
- public NestedPaneCollection NestedPanes { get; private set; } = null;
-
- public DockPane PreviousPane { get; private set; } = null;
-
- public DockAlignment Alignment { get; private set; } = DockAlignment.Left;
-
- public double Proportion { get; private set; } = 0.5;
-
- public bool IsDisplaying { get; private set; } = false;
-
- public DockPane DisplayingPreviousPane { get; private set; } = null;
-
- public DockAlignment DisplayingAlignment { get; private set; } = DockAlignment.Left;
-
- public double DisplayingProportion { get; private set; } = 0.5;
-
- public Rectangle LogicalBounds { get; private set; } = Rectangle.Empty;
-
- public Rectangle PaneBounds { get; private set; } = Rectangle.Empty;
-
- public Rectangle SplitterBounds { get; private set; } = Rectangle.Empty;
-
- #endregion
-
- #region Internals
-
- internal void SetStatus(NestedPaneCollection nestedPanes, DockPane previousPane, DockAlignment alignment,
- double proportion)
- {
- NestedPanes = nestedPanes;
- PreviousPane = previousPane;
- Alignment = alignment;
- Proportion = proportion;
- }
-
- internal void SetDisplayingStatus(bool isDisplaying, DockPane displayingPreviousPane,
- DockAlignment displayingAlignment, double displayingProportion)
- {
- IsDisplaying = isDisplaying;
- DisplayingPreviousPane = displayingPreviousPane;
- DisplayingAlignment = displayingAlignment;
- DisplayingProportion = displayingProportion;
- }
-
- internal void SetDisplayingBounds(Rectangle logicalBounds, Rectangle paneBounds, Rectangle splitterBounds)
- {
- LogicalBounds = logicalBounds;
- PaneBounds = paneBounds;
- SplitterBounds = splitterBounds;
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/NestedPaneCollection.cs b/src/WinFormsUI/Docking/NestedPaneCollection.cs
deleted file mode 100644
index 61c6eff9..00000000
--- a/src/WinFormsUI/Docking/NestedPaneCollection.cs
+++ /dev/null
@@ -1,212 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Drawing;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public sealed class NestedPaneCollection : ReadOnlyCollection
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- internal NestedPaneCollection(INestedPanesContainer container)
- : base(new List())
- {
- Container = container;
- VisibleNestedPanes = new VisibleNestedPaneCollection(this);
- }
-
- #endregion
-
- #region Properties
-
- public INestedPanesContainer Container { get; }
-
- public VisibleNestedPaneCollection VisibleNestedPanes { get; }
-
- public DockState DockState
- {
- get { return Container.DockState; }
- }
-
- public bool IsFloat
- {
- get { return DockState == DockState.Float; }
- }
-
- #endregion
-
- #region Public methods
-
- public DockPane GetDefaultPreviousPane(DockPane pane)
- {
- for (int i = Count - 1; i >= 0; i--)
- {
- if (this[i] != pane)
- {
- return this[i];
- }
- }
-
- return null;
- }
-
- #endregion
-
- #region Internals
-
- internal void Add(DockPane pane)
- {
- if (pane == null)
- {
- return;
- }
-
- NestedPaneCollection oldNestedPanes =
- pane.NestedPanesContainer == null ? null : pane.NestedPanesContainer.NestedPanes;
- if (oldNestedPanes != null)
- {
- oldNestedPanes.InternalRemove(pane);
- }
- Items.Add(pane);
- if (oldNestedPanes != null)
- {
- oldNestedPanes.CheckFloatWindowDispose();
- }
- }
-
- ///
- /// Switches a pane with its first child in the pane hierarchy. (The actual hiding happens elsewhere.)
- ///
- /// Pane to switch
- internal void SwitchPaneWithFirstChild(DockPane pane)
- {
- if (!Contains(pane))
- {
- return;
- }
-
- NestedDockingStatus statusPane = pane.NestedDockingStatus;
- DockPane lastNestedPane = null;
- for (int i = Count - 1; i > IndexOf(pane); i--)
- {
- if (this[i].NestedDockingStatus.PreviousPane == pane)
- {
- lastNestedPane = this[i];
- break;
- }
- }
-
- if (lastNestedPane != null)
- {
- int indexLastNestedPane = IndexOf(lastNestedPane);
- Items[IndexOf(pane)] = lastNestedPane;
- Items[indexLastNestedPane] = pane;
- NestedDockingStatus lastNestedDock = lastNestedPane.NestedDockingStatus;
-
- DockAlignment newAlignment;
- if (lastNestedDock.Alignment == DockAlignment.Left)
- {
- newAlignment = DockAlignment.Right;
- }
- else if (lastNestedDock.Alignment == DockAlignment.Right)
- {
- newAlignment = DockAlignment.Left;
- }
- else if (lastNestedDock.Alignment == DockAlignment.Top)
- {
- newAlignment = DockAlignment.Bottom;
- }
- else
- {
- newAlignment = DockAlignment.Top;
- }
- double newProportion = 1 - lastNestedDock.Proportion;
-
- lastNestedDock.SetStatus(this, statusPane.PreviousPane, statusPane.Alignment, statusPane.Proportion);
- for (int i = indexLastNestedPane - 1; i > IndexOf(lastNestedPane); i--)
- {
- NestedDockingStatus status = this[i].NestedDockingStatus;
- if (status.PreviousPane == pane)
- {
- status.SetStatus(this, lastNestedPane, status.Alignment, status.Proportion);
- }
- }
-
- statusPane.SetStatus(this, lastNestedPane, newAlignment, newProportion);
- }
- }
-
- internal void Remove(DockPane pane)
- {
- InternalRemove(pane);
- CheckFloatWindowDispose();
- }
-
- #endregion
-
- #region Private Methods
-
- private void CheckFloatWindowDispose()
- {
- if (Count == 0 && Container.DockState == DockState.Float)
- {
- FloatWindow floatWindow = (FloatWindow) Container;
- if (!floatWindow.Disposing && !floatWindow.IsDisposed)
- {
- NativeMethods.PostMessage(((FloatWindow) Container).Handle, FloatWindow.WM_CHECKDISPOSE, 0, 0);
- }
- }
- }
-
- private void InternalRemove(DockPane pane)
- {
- if (!Contains(pane))
- {
- return;
- }
-
- NestedDockingStatus statusPane = pane.NestedDockingStatus;
- DockPane lastNestedPane = null;
- for (int i = Count - 1; i > IndexOf(pane); i--)
- {
- if (this[i].NestedDockingStatus.PreviousPane == pane)
- {
- lastNestedPane = this[i];
- break;
- }
- }
-
- if (lastNestedPane != null)
- {
- int indexLastNestedPane = IndexOf(lastNestedPane);
- Items.Remove(lastNestedPane);
- Items[IndexOf(pane)] = lastNestedPane;
- NestedDockingStatus lastNestedDock = lastNestedPane.NestedDockingStatus;
- lastNestedDock.SetStatus(this, statusPane.PreviousPane, statusPane.Alignment, statusPane.Proportion);
- for (int i = indexLastNestedPane - 1; i > IndexOf(lastNestedPane); i--)
- {
- NestedDockingStatus status = this[i].NestedDockingStatus;
- if (status.PreviousPane == pane)
- {
- status.SetStatus(this, lastNestedPane, status.Alignment, status.Proportion);
- }
- }
- }
- else
- {
- Items.Remove(pane);
- }
-
- statusPane.SetStatus(null, null, DockAlignment.Left, 0.5);
- statusPane.SetDisplayingStatus(false, null, DockAlignment.Left, 0.5);
- statusPane.SetDisplayingBounds(Rectangle.Empty, Rectangle.Empty, Rectangle.Empty);
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Resources.Designer.cs b/src/WinFormsUI/Docking/Resources.Designer.cs
deleted file mode 100644
index 38344cce..00000000
--- a/src/WinFormsUI/Docking/Resources.Designer.cs
+++ /dev/null
@@ -1,293 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace WeifenLuo.WinFormsUI.Docking {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WeifenLuo.WinFormsUI.Docking.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PaneDiamond {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PaneDiamond", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PaneDiamond_Bottom {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PaneDiamond_Bottom", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PaneDiamond_Fill {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PaneDiamond_Fill", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PaneDiamond_HotSpot {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PaneDiamond_HotSpot", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PaneDiamond_HotSpotIndex {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PaneDiamond_HotSpotIndex", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PaneDiamond_Left {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PaneDiamond_Left", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PaneDiamond_Right {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PaneDiamond_Right", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PaneDiamond_Top {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PaneDiamond_Top", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PanelBottom {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PanelBottom", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PanelBottom_Active {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PanelBottom_Active", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PanelFill {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PanelFill", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PanelFill_Active {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PanelFill_Active", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PanelLeft {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PanelLeft", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PanelLeft_Active {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PanelLeft_Active", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PanelRight {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PanelRight", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PanelRight_Active {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PanelRight_Active", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PanelTop {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PanelTop", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockIndicator_PanelTop_Active {
- get {
- object obj = ResourceManager.GetObject("DockIndicator_PanelTop_Active", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockPane_AutoHide {
- get {
- object obj = ResourceManager.GetObject("DockPane_AutoHide", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockPane_Close {
- get {
- object obj = ResourceManager.GetObject("DockPane_Close", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockPane_Dock {
- get {
- object obj = ResourceManager.GetObject("DockPane_Dock", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockPane_Option {
- get {
- object obj = ResourceManager.GetObject("DockPane_Option", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Drawing.Bitmap.
- ///
- internal static System.Drawing.Bitmap DockPane_OptionOverflow {
- get {
- object obj = ResourceManager.GetObject("DockPane_OptionOverflow", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
- }
-}
diff --git a/src/WinFormsUI/Docking/Resources.resx b/src/WinFormsUI/Docking/Resources.resx
deleted file mode 100644
index 3032913d..00000000
--- a/src/WinFormsUI/Docking/Resources.resx
+++ /dev/null
@@ -1,190 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- Resources\DockIndicator_PaneDiamond.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PaneDiamond_Bottom.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\Dockindicator_PaneDiamond_Fill.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PaneDiamond_Hotspot.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PaneDiamond_HotspotIndex.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PaneDiamond_Left.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PaneDiamond_Right.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PaneDiamond_Top.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PanelBottom.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PanelBottom_Active.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PanelFill.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PanelFill_Active.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PanelLeft.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PanelLeft_Active.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PanelRight.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PanelRight_Active.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PanelTop.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockIndicator_PanelTop_Active.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockPane_AutoHide.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockPane_Close.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockPane_Dock.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockPane_Option.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- Resources\DockPane_OptionOverflow.bmp;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond.bmp
deleted file mode 100644
index 70e70e28..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Bottom.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Bottom.bmp
deleted file mode 100644
index d95ec697..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Bottom.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Hotspot.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Hotspot.bmp
deleted file mode 100644
index e801d382..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Hotspot.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_HotspotIndex.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_HotspotIndex.bmp
deleted file mode 100644
index e5ef472c..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_HotspotIndex.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Left.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Left.bmp
deleted file mode 100644
index 1fbda61c..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Left.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Right.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Right.bmp
deleted file mode 100644
index 1de97a09..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Right.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Top.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Top.bmp
deleted file mode 100644
index 95122a0f..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PaneDiamond_Top.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelBottom.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PanelBottom.bmp
deleted file mode 100644
index ad851ea1..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelBottom.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelBottom_Active.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PanelBottom_Active.bmp
deleted file mode 100644
index 212fb0d3..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelBottom_Active.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelFill.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PanelFill.bmp
deleted file mode 100644
index 21a1b274..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelFill.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelFill_Active.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PanelFill_Active.bmp
deleted file mode 100644
index d58b00f9..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelFill_Active.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelLeft.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PanelLeft.bmp
deleted file mode 100644
index 551fd886..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelLeft.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelLeft_Active.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PanelLeft_Active.bmp
deleted file mode 100644
index 5182318e..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelLeft_Active.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelRight.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PanelRight.bmp
deleted file mode 100644
index 003cbb02..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelRight.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelRight_Active.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PanelRight_Active.bmp
deleted file mode 100644
index dad42355..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelRight_Active.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelTop.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PanelTop.bmp
deleted file mode 100644
index f6293fd2..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelTop.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelTop_Active.bmp b/src/WinFormsUI/Docking/Resources/DockIndicator_PanelTop_Active.bmp
deleted file mode 100644
index 563549eb..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockIndicator_PanelTop_Active.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockPane_AutoHide.bmp b/src/WinFormsUI/Docking/Resources/DockPane_AutoHide.bmp
deleted file mode 100644
index 2f395fc0..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockPane_AutoHide.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockPane_Close.bmp b/src/WinFormsUI/Docking/Resources/DockPane_Close.bmp
deleted file mode 100644
index a7748a67..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockPane_Close.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockPane_Dock.bmp b/src/WinFormsUI/Docking/Resources/DockPane_Dock.bmp
deleted file mode 100644
index 6a9d145e..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockPane_Dock.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockPane_Option.bmp b/src/WinFormsUI/Docking/Resources/DockPane_Option.bmp
deleted file mode 100644
index 0d9927a7..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockPane_Option.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/DockPane_OptionOverflow.bmp b/src/WinFormsUI/Docking/Resources/DockPane_OptionOverflow.bmp
deleted file mode 100644
index 02e4bf29..00000000
Binary files a/src/WinFormsUI/Docking/Resources/DockPane_OptionOverflow.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/Resources/Dockindicator_PaneDiamond_Fill.bmp b/src/WinFormsUI/Docking/Resources/Dockindicator_PaneDiamond_Fill.bmp
deleted file mode 100644
index cbe0a156..00000000
Binary files a/src/WinFormsUI/Docking/Resources/Dockindicator_PaneDiamond_Fill.bmp and /dev/null differ
diff --git a/src/WinFormsUI/Docking/SplitterBase.cs b/src/WinFormsUI/Docking/SplitterBase.cs
deleted file mode 100644
index 4897b8f8..00000000
--- a/src/WinFormsUI/Docking/SplitterBase.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal class SplitterBase : Control
- {
- #region cTor
-
- public SplitterBase()
- {
- SetStyle(ControlStyles.Selectable, false);
- }
-
- #endregion
-
- #region Properties
-
- public override DockStyle Dock
- {
- get { return base.Dock; }
- set
- {
- SuspendLayout();
- base.Dock = value;
-
- if (Dock == DockStyle.Left || Dock == DockStyle.Right)
- {
- Width = SplitterSize;
- }
- else if (Dock == DockStyle.Top || Dock == DockStyle.Bottom)
- {
- Height = SplitterSize;
- }
- else
- {
- Bounds = Rectangle.Empty;
- }
-
- if (Dock == DockStyle.Left || Dock == DockStyle.Right)
- {
- Cursor = Cursors.VSplit;
- }
- else if (Dock == DockStyle.Top || Dock == DockStyle.Bottom)
- {
- Cursor = Cursors.HSplit;
- }
- else
- {
- Cursor = Cursors.Default;
- }
-
- ResumeLayout();
- }
- }
-
- protected virtual int SplitterSize
- {
- get { return 0; }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void OnMouseDown(MouseEventArgs e)
- {
- base.OnMouseDown(e);
-
- if (e.Button != MouseButtons.Left)
- {
- return;
- }
-
- StartDrag();
- }
-
- protected override void WndProc(ref Message m)
- {
- // eat the WM_MOUSEACTIVATE message
- if (m.Msg == (int) Win32.Msgs.WM_MOUSEACTIVATE)
- {
- return;
- }
-
- base.WndProc(ref m);
- }
-
- #endregion
-
- protected virtual void StartDrag()
- {
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Strings.Designer.cs b/src/WinFormsUI/Docking/Strings.Designer.cs
deleted file mode 100644
index 468be951..00000000
--- a/src/WinFormsUI/Docking/Strings.Designer.cs
+++ /dev/null
@@ -1,774 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace WeifenLuo.WinFormsUI.Docking {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Strings {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Strings() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WeifenLuo.WinFormsUI.Docking.Strings", typeof(Strings).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to Docking.
- ///
- internal static string Category_Docking {
- get {
- return ResourceManager.GetString("Category_Docking", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Docking Notification.
- ///
- internal static string Category_DockingNotification {
- get {
- return ResourceManager.GetString("Category_DockingNotification", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Property Changed.
- ///
- internal static string Category_PropertyChanged {
- get {
- return ResourceManager.GetString("Category_PropertyChanged", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to (Float).
- ///
- internal static string DockAreaEditor_FloatCheckBoxText {
- get {
- return ResourceManager.GetString("DockAreaEditor_FloatCheckBoxText", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Determines if end user drag and drop docking is allowed..
- ///
- internal static string DockContent_AllowEndUserDocking_Description {
- get {
- return ResourceManager.GetString("DockContent_AllowEndUserDocking_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The size to display the content in auto hide mode. Value < 1 to specify the size in portion; value >= 1 to specify the size in pixel..
- ///
- internal static string DockContent_AutoHidePortion_Description {
- get {
- return ResourceManager.GetString("DockContent_AutoHidePortion_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Enable/Disable the close button of the content..
- ///
- internal static string DockContent_CloseButton_Description {
- get {
- return ResourceManager.GetString("DockContent_CloseButton_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Shows or hides the close button of the content. This property does not function with System MDI Document Style..
- ///
- internal static string DockContent_CloseButtonVisible_Description {
- get {
- return ResourceManager.GetString("DockContent_CloseButtonVisible_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The form must be of type IDockContent..
- ///
- internal static string DockContent_Constructor_InvalidForm {
- get {
- return ResourceManager.GetString("DockContent_Constructor_InvalidForm", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Gets or sets a value indicating in which area of the DockPanel the content allowed to show..
- ///
- internal static string DockContent_DockAreas_Description {
- get {
- return ResourceManager.GetString("DockContent_DockAreas_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Occurs when the value of DockState property changed..
- ///
- internal static string DockContent_DockStateChanged_Description {
- get {
- return ResourceManager.GetString("DockContent_DockStateChanged_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Indicates the content will be hidden instead of being closed..
- ///
- internal static string DockContent_HideOnClose_Description {
- get {
- return ResourceManager.GetString("DockContent_HideOnClose_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The desired docking state when first showing..
- ///
- internal static string DockContent_ShowHint_Description {
- get {
- return ResourceManager.GetString("DockContent_ShowHint_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Context menu displayed for the dock pane tab strip..
- ///
- internal static string DockContent_TabPageContextMenu_Description {
- get {
- return ResourceManager.GetString("DockContent_TabPageContextMenu_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The tab text displayed in the dock pane. If not set, the Text property will be used..
- ///
- internal static string DockContent_TabText_Description {
- get {
- return ResourceManager.GetString("DockContent_TabText_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The text displayed when mouse hovers over the tab..
- ///
- internal static string DockContent_ToolTipText_Description {
- get {
- return ResourceManager.GetString("DockContent_ToolTipText_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The provided value is out of range..
- ///
- internal static string DockContentHandler_AutoHidePortion_OutOfRange {
- get {
- return ResourceManager.GetString("DockContentHandler_AutoHidePortion_OutOfRange", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid Value: The value of DockAreas conflicts with current DockState..
- ///
- internal static string DockContentHandler_DockAreas_InvalidValue {
- get {
- return ResourceManager.GetString("DockContentHandler_DockAreas_InvalidValue", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The pane is invalid. Check the IsFloat and DockPanel properties of this dock pane..
- ///
- internal static string DockContentHandler_DockPane_InvalidValue {
- get {
- return ResourceManager.GetString("DockContentHandler_DockPane_InvalidValue", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The pane is invalid. Check the IsFloat and DockPanel properties of this dock pane..
- ///
- internal static string DockContentHandler_FloatPane_InvalidValue {
- get {
- return ResourceManager.GetString("DockContentHandler_FloatPane_InvalidValue", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid value, conflicts with DockableAreas property..
- ///
- internal static string DockContentHandler_IsFloat_InvalidValue {
- get {
- return ResourceManager.GetString("DockContentHandler_IsFloat_InvalidValue", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The dock state is invalid..
- ///
- internal static string DockContentHandler_SetDockState_InvalidState {
- get {
- return ResourceManager.GetString("DockContentHandler_SetDockState_InvalidState", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The dock panel is null..
- ///
- internal static string DockContentHandler_SetDockState_NullPanel {
- get {
- return ResourceManager.GetString("DockContentHandler_SetDockState_NullPanel", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid beforeContent, it must be contained by the pane..
- ///
- internal static string DockContentHandler_Show_InvalidBeforeContent {
- get {
- return ResourceManager.GetString("DockContentHandler_Show_InvalidBeforeContent", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid DockState: Content can not be showed as "Unknown" or "Hidden"..
- ///
- internal static string DockContentHandler_Show_InvalidDockState {
- get {
- return ResourceManager.GetString("DockContentHandler_Show_InvalidDockState", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The previous pane is invalid. It can not be null, and its docking state must not be auto-hide..
- ///
- internal static string DockContentHandler_Show_InvalidPrevPane {
- get {
- return ResourceManager.GetString("DockContentHandler_Show_InvalidPrevPane", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to DockPanel can not be null..
- ///
- internal static string DockContentHandler_Show_NullDockPanel {
- get {
- return ResourceManager.GetString("DockContentHandler_Show_NullDockPanel", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The Pane can not be null..
- ///
- internal static string DockContentHandler_Show_NullPane {
- get {
- return ResourceManager.GetString("DockContentHandler_Show_NullPane", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid value, check DockableAreas property..
- ///
- internal static string DockContentHandler_ShowHint_InvalidValue {
- get {
- return ResourceManager.GetString("DockContentHandler_ShowHint_InvalidValue", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Context menu displayed for the dock pane tab strip..
- ///
- internal static string DockHandler_TabPageContextMenuStrip_Description {
- get {
- return ResourceManager.GetString("DockHandler_TabPageContextMenuStrip_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Press SHIFT for docking to full side..
- ///
- internal static string DockIndicator_ToolTipText {
- get {
- return ResourceManager.GetString("DockIndicator_ToolTipText", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid Content: ActiveContent must be one of the visible contents, or null if there is no visible content..
- ///
- internal static string DockPane_ActiveContent_InvalidValue {
- get {
- return ResourceManager.GetString("DockPane_ActiveContent_InvalidValue", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid argument: Content can not be "null"..
- ///
- internal static string DockPane_Constructor_NullContent {
- get {
- return ResourceManager.GetString("DockPane_Constructor_NullContent", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid argument: The content's DockPanel can not be "null"..
- ///
- internal static string DockPane_Constructor_NullDockPanel {
- get {
- return ResourceManager.GetString("DockPane_Constructor_NullDockPanel", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The specified container conflicts with the IsFloat property..
- ///
- internal static string DockPane_DockTo_InvalidContainer {
- get {
- return ResourceManager.GetString("DockPane_DockTo_InvalidContainer", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The previous pane does not exist in the nested docking pane collection..
- ///
- internal static string DockPane_DockTo_NoPrevPane {
- get {
- return ResourceManager.GetString("DockPane_DockTo_NoPrevPane", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The container can not be null..
- ///
- internal static string DockPane_DockTo_NullContainer {
- get {
- return ResourceManager.GetString("DockPane_DockTo_NullContainer", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The previous pane can not be null when the nested docking pane collection is not empty..
- ///
- internal static string DockPane_DockTo_NullPrevPane {
- get {
- return ResourceManager.GetString("DockPane_DockTo_NullPrevPane", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The previous pane can not be itself..
- ///
- internal static string DockPane_DockTo_SelfPrevPane {
- get {
- return ResourceManager.GetString("DockPane_DockTo_SelfPrevPane", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to FloatWindow property can not be set to "null" when DockState is DockState.Float..
- ///
- internal static string DockPane_FloatWindow_InvalidValue {
- get {
- return ResourceManager.GetString("DockPane_FloatWindow_InvalidValue", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid Content: Content not within the collection..
- ///
- internal static string DockPane_SetContentIndex_InvalidContent {
- get {
- return ResourceManager.GetString("DockPane_SetContentIndex_InvalidContent", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid Index: The index is out of range..
- ///
- internal static string DockPane_SetContentIndex_InvalidIndex {
- get {
- return ResourceManager.GetString("DockPane_SetContentIndex_InvalidIndex", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The state for the dock pane is invalid..
- ///
- internal static string DockPane_SetDockState_InvalidState {
- get {
- return ResourceManager.GetString("DockPane_SetDockState_InvalidState", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Auto Hide.
- ///
- internal static string DockPaneCaption_ToolTipAutoHide {
- get {
- return ResourceManager.GetString("DockPaneCaption_ToolTipAutoHide", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Close.
- ///
- internal static string DockPaneCaption_ToolTipClose {
- get {
- return ResourceManager.GetString("DockPaneCaption_ToolTipClose", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Options.
- ///
- internal static string DockPaneCaption_ToolTipOptions {
- get {
- return ResourceManager.GetString("DockPaneCaption_ToolTipOptions", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid Content: The content must be auto-hide state and associates with this DockPanel..
- ///
- internal static string DockPanel_ActiveAutoHideContent_InvalidValue {
- get {
- return ResourceManager.GetString("DockPanel_ActiveAutoHideContent_InvalidValue", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Occurs when the value of ActiveContentProperty changed..
- ///
- internal static string DockPanel_ActiveContentChanged_Description {
- get {
- return ResourceManager.GetString("DockPanel_ActiveContentChanged_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Occurs when the value of ActiveDocument property changed..
- ///
- internal static string DockPanel_ActiveDocumentChanged_Description {
- get {
- return ResourceManager.GetString("DockPanel_ActiveDocumentChanged_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Occurs when the value of ActivePane property changed..
- ///
- internal static string DockPanel_ActivePaneChanged_Description {
- get {
- return ResourceManager.GetString("DockPanel_ActivePaneChanged_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Determines if the drag and drop docking is allowed..
- ///
- internal static string DockPanel_AllowEndUserDocking_Description {
- get {
- return ResourceManager.GetString("DockPanel_AllowEndUserDocking_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Determines if the drag and drop nested docking is allowed..
- ///
- internal static string DockPanel_AllowEndUserNestedDocking_Description {
- get {
- return ResourceManager.GetString("DockPanel_AllowEndUserNestedDocking_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Occurs when a content added to the DockPanel..
- ///
- internal static string DockPanel_ContentAdded_Description {
- get {
- return ResourceManager.GetString("DockPanel_ContentAdded_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Occurs when a content removed from the DockPanel..
- ///
- internal static string DockPanel_ContentRemoved_Description {
- get {
- return ResourceManager.GetString("DockPanel_ContentRemoved_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The default size of float window..
- ///
- internal static string DockPanel_DefaultFloatWindowSize_Description {
- get {
- return ResourceManager.GetString("DockPanel_DefaultFloatWindowSize_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Provides Visual Studio .Net style docking..
- ///
- internal static string DockPanel_Description {
- get {
- return ResourceManager.GetString("DockPanel_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Size of the bottom docking window. Value < 1 to specify the size in portion; value > 1 to specify the size in pixels..
- ///
- internal static string DockPanel_DockBottomPortion_Description {
- get {
- return ResourceManager.GetString("DockPanel_DockBottomPortion_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Size of the left docking window. Value < 1 to specify the size in portion; value > 1 to specify the size in pixels..
- ///
- internal static string DockPanel_DockLeftPortion_Description {
- get {
- return ResourceManager.GetString("DockPanel_DockLeftPortion_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The visual skin to use when displaying the docked windows..
- ///
- internal static string DockPanel_DockPanelSkin {
- get {
- return ResourceManager.GetString("DockPanel_DockPanelSkin", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Size of the right docking window. Value < 1 to specify the size in portion; value > 1 to specify the size in pixels..
- ///
- internal static string DockPanel_DockRightPortion_Description {
- get {
- return ResourceManager.GetString("DockPanel_DockRightPortion_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Size of the top docking window. Value < 1 to specify the size in portion; value > 1 to specify the size in pixels..
- ///
- internal static string DockPanel_DockTopPortion_Description {
- get {
- return ResourceManager.GetString("DockPanel_DockTopPortion_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The style of the document window..
- ///
- internal static string DockPanel_DocumentStyle_Description {
- get {
- return ResourceManager.GetString("DockPanel_DocumentStyle_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Determines where the tab strip for Document style content is drawn..
- ///
- internal static string DockPanel_DocumentTabStripLocation {
- get {
- return ResourceManager.GetString("DockPanel_DocumentTabStripLocation", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The DockPanel has already been initialized..
- ///
- internal static string DockPanel_LoadFromXml_AlreadyInitialized {
- get {
- return ResourceManager.GetString("DockPanel_LoadFromXml_AlreadyInitialized", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The configuration file's version is invalid..
- ///
- internal static string DockPanel_LoadFromXml_InvalidFormatVersion {
- get {
- return ResourceManager.GetString("DockPanel_LoadFromXml_InvalidFormatVersion", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to The XML file format is invalid..
- ///
- internal static string DockPanel_LoadFromXml_InvalidXmlFormat {
- get {
- return ResourceManager.GetString("DockPanel_LoadFromXml_InvalidXmlFormat", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid parent form. When using DockingMdi or SystemMdi document style, the DockPanel control must be the child control of the main MDI container form..
- ///
- internal static string DockPanel_ParentForm_Invalid {
- get {
- return ResourceManager.GetString("DockPanel_ParentForm_Invalid", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to DockPanel configuration file. Author: Weifen Luo, all rights reserved..
- ///
- internal static string DockPanel_Persistor_XmlFileComment1 {
- get {
- return ResourceManager.GetString("DockPanel_Persistor_XmlFileComment1", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to !!! AUTOMATICALLY GENERATED FILE. DO NOT MODIFY !!!.
- ///
- internal static string DockPanel_Persistor_XmlFileComment2 {
- get {
- return ResourceManager.GetString("DockPanel_Persistor_XmlFileComment2", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Indicates whether the control layout is right-to-left when the RightToLeft property is set to Yes..
- ///
- internal static string DockPanel_RightToLeftLayout_Description {
- get {
- return ResourceManager.GetString("DockPanel_RightToLeftLayout_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid Index: The index is out of range..
- ///
- internal static string DockPanel_SetPaneIndex_InvalidIndex {
- get {
- return ResourceManager.GetString("DockPanel_SetPaneIndex_InvalidIndex", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid Pane: DockPane not within the collection..
- ///
- internal static string DockPanel_SetPaneIndex_InvalidPane {
- get {
- return ResourceManager.GetString("DockPanel_SetPaneIndex_InvalidPane", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Determines if the document icon will be displayed in the tab strip..
- ///
- internal static string DockPanel_ShowDocumentIcon_Description {
- get {
- return ResourceManager.GetString("DockPanel_ShowDocumentIcon_Description", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Close.
- ///
- internal static string DockPaneStrip_ToolTipClose {
- get {
- return ResourceManager.GetString("DockPaneStrip_ToolTipClose", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Window List.
- ///
- internal static string DockPaneStrip_ToolTipWindowList {
- get {
- return ResourceManager.GetString("DockPaneStrip_ToolTipWindowList", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid argument: DockPanel can not be "null"..
- ///
- internal static string FloatWindow_Constructor_NullDockPanel {
- get {
- return ResourceManager.GetString("FloatWindow_Constructor_NullDockPanel", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid Index: The index is out of range..
- ///
- internal static string FloatWindow_SetPaneIndex_InvalidIndex {
- get {
- return ResourceManager.GetString("FloatWindow_SetPaneIndex_InvalidIndex", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid Pane: DockPane not within the collection..
- ///
- internal static string FloatWindow_SetPaneIndex_InvalidPane {
- get {
- return ResourceManager.GetString("FloatWindow_SetPaneIndex_InvalidPane", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Invalid DockPanel..
- ///
- internal static string IDockDragSource_DockTo_InvalidPanel {
- get {
- return ResourceManager.GetString("IDockDragSource_DockTo_InvalidPanel", resourceCulture);
- }
- }
- }
-}
diff --git a/src/WinFormsUI/Docking/Strings.resx b/src/WinFormsUI/Docking/Strings.resx
deleted file mode 100644
index d5ff49d5..00000000
--- a/src/WinFormsUI/Docking/Strings.resx
+++ /dev/null
@@ -1,357 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Docking
-
-
- Docking Notification
-
-
- Property Changed
-
-
- (Float)
-
-
- Determines if end user drag and drop docking is allowed.
-
-
- The size to display the content in auto hide mode. Value < 1 to specify the size in portion; value >= 1 to specify the size in pixel.
-
-
- Enable/Disable the close button of the content.
-
-
- The form must be of type IDockContent.
-
-
- Gets or sets a value indicating in which area of the DockPanel the content allowed to show.
-
-
- Occurs when the value of DockState property changed.
-
-
- Indicates the content will be hidden instead of being closed.
-
-
- The desired docking state when first showing.
-
-
- Context menu displayed for the dock pane tab strip.
-
-
- The tab text displayed in the dock pane. If not set, the Text property will be used.
-
-
- The text displayed when mouse hovers over the tab.
-
-
- The provided value is out of range.
-
-
- Invalid Value: The value of DockAreas conflicts with current DockState.
-
-
- The pane is invalid. Check the IsFloat and DockPanel properties of this dock pane.
-
-
- The pane is invalid. Check the IsFloat and DockPanel properties of this dock pane.
-
-
- Invalid value, conflicts with DockableAreas property.
-
-
- The dock state is invalid.
-
-
- The dock panel is null.
-
-
- Invalid beforeContent, it must be contained by the pane.
-
-
- Invalid DockState: Content can not be showed as "Unknown" or "Hidden".
-
-
- The previous pane is invalid. It can not be null, and its docking state must not be auto-hide.
-
-
- DockPanel can not be null.
-
-
- The Pane can not be null.
-
-
- Invalid value, check DockableAreas property.
-
-
- Context menu displayed for the dock pane tab strip.
-
-
- Press SHIFT for docking to full side.
-
-
- Invalid Content: ActiveContent must be one of the visible contents, or null if there is no visible content.
-
-
- Invalid argument: Content can not be "null".
-
-
- Invalid argument: The content's DockPanel can not be "null".
-
-
- The specified container conflicts with the IsFloat property.
-
-
- The previous pane does not exist in the nested docking pane collection.
-
-
- The container can not be null.
-
-
- The previous pane can not be null when the nested docking pane collection is not empty.
-
-
- The previous pane can not be itself.
-
-
- FloatWindow property can not be set to "null" when DockState is DockState.Float.
-
-
- Invalid Content: Content not within the collection.
-
-
- Invalid Index: The index is out of range.
-
-
- The state for the dock pane is invalid.
-
-
- Auto Hide
-
-
- Close
-
-
- Options
-
-
- Invalid Content: The content must be auto-hide state and associates with this DockPanel.
-
-
- Occurs when the value of ActiveContentProperty changed.
-
-
- Occurs when the value of ActiveDocument property changed.
-
-
- Occurs when the value of ActivePane property changed.
-
-
- Determines if the drag and drop docking is allowed.
-
-
- Determines if the drag and drop nested docking is allowed.
-
-
- Occurs when a content added to the DockPanel.
-
-
- Occurs when a content removed from the DockPanel.
-
-
- The default size of float window.
-
-
- Provides Visual Studio .Net style docking.
-
-
- Size of the bottom docking window. Value < 1 to specify the size in portion; value > 1 to specify the size in pixels.
-
-
- Size of the left docking window. Value < 1 to specify the size in portion; value > 1 to specify the size in pixels.
-
-
- Size of the right docking window. Value < 1 to specify the size in portion; value > 1 to specify the size in pixels.
-
-
- Size of the top docking window. Value < 1 to specify the size in portion; value > 1 to specify the size in pixels.
-
-
- The style of the document window.
-
-
- The DockPanel has already been initialized.
-
-
- The configuration file's version is invalid.
-
-
- The XML file format is invalid.
-
-
- Invalid parent form. When using DockingMdi or SystemMdi document style, the DockPanel control must be the child control of the main MDI container form.
-
-
- DockPanel configuration file. Author: Weifen Luo, all rights reserved.
-
-
- !!! AUTOMATICALLY GENERATED FILE. DO NOT MODIFY !!!
-
-
- Indicates whether the control layout is right-to-left when the RightToLeft property is set to Yes.
-
-
- Invalid Index: The index is out of range.
-
-
- Invalid Pane: DockPane not within the collection.
-
-
- Determines if the document icon will be displayed in the tab strip.
-
-
- Close
-
-
- Window List
-
-
- Invalid argument: DockPanel can not be "null".
-
-
- Invalid Index: The index is out of range.
-
-
- Invalid Pane: DockPane not within the collection.
-
-
- Invalid DockPanel.
-
-
- Shows or hides the close button of the content. This property does not function with System MDI Document Style.
-
-
- The visual skin to use when displaying the docked windows.
-
-
- Determines where the tab strip for Document style content is drawn.
-
-
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/VS2005AutoHideStrip.cs b/src/WinFormsUI/Docking/VS2005AutoHideStrip.cs
deleted file mode 100644
index 8f2f992d..00000000
--- a/src/WinFormsUI/Docking/VS2005AutoHideStrip.cs
+++ /dev/null
@@ -1,604 +0,0 @@
-using System;
-using System.Drawing;
-using System.Windows.Forms;
-using System.Drawing.Drawing2D;
-using System.ComponentModel;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal class VS2005AutoHideStrip : AutoHideStripBase
- {
- #region Fields
-
- private const int _ImageHeight = 16;
- private const int _ImageWidth = 16;
- private const int _ImageGapTop = 2;
- private const int _ImageGapLeft = 4;
- private const int _ImageGapRight = 2;
- private const int _ImageGapBottom = 2;
- private const int _TextGapLeft = 0;
- private const int _TextGapRight = 0;
- private const int _TabGapTop = 3;
- private const int _TabGapLeft = 4;
- private const int _TabGapBetween = 10;
-
- private static StringFormat _stringFormatTabHorizontal;
-
- private static StringFormat _stringFormatTabVertical;
-
- private static DockState[] _dockStates;
-
- private static GraphicsPath _graphicsPath;
-
- #endregion
-
- #region cTor
-
- public VS2005AutoHideStrip(DockPanel panel)
- : base(panel)
- {
- SetStyle(ControlStyles.ResizeRedraw |
- ControlStyles.UserPaint |
- ControlStyles.AllPaintingInWmPaint |
- ControlStyles.OptimizedDoubleBuffer, true);
- BackColor = SystemColors.ControlLight;
- }
-
- #endregion
-
- #region Properties
-
- public Font TextFont
- {
- get { return DockPanel.Skin.AutoHideStripSkin.TextFont; }
- }
-
- private StringFormat StringFormatTabHorizontal
- {
- get
- {
- if (_stringFormatTabHorizontal == null)
- {
- _stringFormatTabHorizontal = new StringFormat();
- _stringFormatTabHorizontal.Alignment = StringAlignment.Near;
- _stringFormatTabHorizontal.LineAlignment = StringAlignment.Center;
- _stringFormatTabHorizontal.FormatFlags = StringFormatFlags.NoWrap;
- _stringFormatTabHorizontal.Trimming = StringTrimming.None;
- }
-
- if (RightToLeft == RightToLeft.Yes)
- {
- _stringFormatTabHorizontal.FormatFlags |= StringFormatFlags.DirectionRightToLeft;
- }
- else
- {
- _stringFormatTabHorizontal.FormatFlags &= ~StringFormatFlags.DirectionRightToLeft;
- }
-
- return _stringFormatTabHorizontal;
- }
- }
-
- private StringFormat StringFormatTabVertical
- {
- get
- {
- if (_stringFormatTabVertical == null)
- {
- _stringFormatTabVertical = new StringFormat();
- _stringFormatTabVertical.Alignment = StringAlignment.Near;
- _stringFormatTabVertical.LineAlignment = StringAlignment.Center;
- _stringFormatTabVertical.FormatFlags =
- StringFormatFlags.NoWrap | StringFormatFlags.DirectionVertical;
- _stringFormatTabVertical.Trimming = StringTrimming.None;
- }
- if (RightToLeft == RightToLeft.Yes)
- {
- _stringFormatTabVertical.FormatFlags |= StringFormatFlags.DirectionRightToLeft;
- }
- else
- {
- _stringFormatTabVertical.FormatFlags &= ~StringFormatFlags.DirectionRightToLeft;
- }
-
- return _stringFormatTabVertical;
- }
- }
-
- private static int ImageHeight
- {
- get { return _ImageHeight; }
- }
-
- private static int ImageWidth
- {
- get { return _ImageWidth; }
- }
-
- private static int ImageGapTop
- {
- get { return _ImageGapTop; }
- }
-
- private static int ImageGapLeft
- {
- get { return _ImageGapLeft; }
- }
-
- private static int ImageGapRight
- {
- get { return _ImageGapRight; }
- }
-
- private static int ImageGapBottom
- {
- get { return _ImageGapBottom; }
- }
-
- private static int TextGapLeft
- {
- get { return _TextGapLeft; }
- }
-
- private static int TextGapRight
- {
- get { return _TextGapRight; }
- }
-
- private static int TabGapTop
- {
- get { return _TabGapTop; }
- }
-
- private static int TabGapLeft
- {
- get { return _TabGapLeft; }
- }
-
- private static int TabGapBetween
- {
- get { return _TabGapBetween; }
- }
-
- private static Pen PenTabBorder
- {
- get { return SystemPens.GrayText; }
- }
-
- private static Matrix MatrixIdentity { get; } = new Matrix();
-
- private static DockState[] DockStates
- {
- get
- {
- if (_dockStates == null)
- {
- _dockStates = new DockState[4];
- _dockStates[0] = DockState.DockLeftAutoHide;
- _dockStates[1] = DockState.DockRightAutoHide;
- _dockStates[2] = DockState.DockTopAutoHide;
- _dockStates[3] = DockState.DockBottomAutoHide;
- }
- return _dockStates;
- }
- }
-
- internal static GraphicsPath GraphicsPath
- {
- get
- {
- if (_graphicsPath == null)
- {
- _graphicsPath = new GraphicsPath();
- }
-
- return _graphicsPath;
- }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void OnPaint(PaintEventArgs e)
- {
- Graphics g = e.Graphics;
-
- Color startColor = DockPanel.Skin.AutoHideStripSkin.DockStripGradient.StartColor;
- Color endColor = DockPanel.Skin.AutoHideStripSkin.DockStripGradient.EndColor;
- LinearGradientMode gradientMode = DockPanel.Skin.AutoHideStripSkin.DockStripGradient.LinearGradientMode;
- using (LinearGradientBrush brush =
- new LinearGradientBrush(ClientRectangle, startColor, endColor, gradientMode))
- {
- g.FillRectangle(brush, ClientRectangle);
- }
-
- DrawTabStrip(g);
- }
-
- protected override void OnLayout(LayoutEventArgs levent)
- {
- CalculateTabs();
- base.OnLayout(levent);
- }
-
- protected override IDockContent HitTest(Point ptMouse)
- {
- foreach (DockState state in DockStates)
- {
- Rectangle rectTabStrip = GetLogicalTabStripRectangle(state, true);
- if (!rectTabStrip.Contains(ptMouse))
- {
- continue;
- }
-
- foreach (Pane pane in GetPanes(state))
- {
- foreach (TabVS2005 tab in pane.AutoHideTabs)
- {
- GraphicsPath path = GetTabOutline(tab, true, true);
- if (path.IsVisible(ptMouse))
- {
- return tab.Content;
- }
- }
- }
- }
-
- return null;
- }
-
- protected internal override int MeasureHeight()
- {
- return Math.Max(ImageGapBottom +
- ImageGapTop + ImageHeight,
- TextFont.Height) + TabGapTop;
- }
-
- protected override void OnRefreshChanges()
- {
- CalculateTabs();
- Invalidate();
- }
-
- protected override AutoHideStripBase.Tab CreateTab(IDockContent content)
- {
- return new TabVS2005(content);
- }
-
- #endregion
-
- #region Private Methods
-
- private void DrawTabStrip(Graphics g)
- {
- DrawTabStrip(g, DockState.DockTopAutoHide);
- DrawTabStrip(g, DockState.DockBottomAutoHide);
- DrawTabStrip(g, DockState.DockLeftAutoHide);
- DrawTabStrip(g, DockState.DockRightAutoHide);
- }
-
- private void DrawTabStrip(Graphics g, DockState dockState)
- {
- Rectangle rectTabStrip = GetLogicalTabStripRectangle(dockState);
-
- if (rectTabStrip.IsEmpty)
- {
- return;
- }
-
- Matrix matrixIdentity = g.Transform;
- if (dockState == DockState.DockLeftAutoHide || dockState == DockState.DockRightAutoHide)
- {
- Matrix matrixRotated = new Matrix();
- matrixRotated.RotateAt(90, new PointF((float) rectTabStrip.X + (float) rectTabStrip.Height / 2,
- (float) rectTabStrip.Y + (float) rectTabStrip.Height / 2));
- g.Transform = matrixRotated;
- }
-
- foreach (Pane pane in GetPanes(dockState))
- {
- foreach (TabVS2005 tab in pane.AutoHideTabs)
- {
- DrawTab(g, tab);
- }
- }
- g.Transform = matrixIdentity;
- }
-
- private void CalculateTabs()
- {
- CalculateTabs(DockState.DockTopAutoHide);
- CalculateTabs(DockState.DockBottomAutoHide);
- CalculateTabs(DockState.DockLeftAutoHide);
- CalculateTabs(DockState.DockRightAutoHide);
- }
-
- private void CalculateTabs(DockState dockState)
- {
- Rectangle rectTabStrip = GetLogicalTabStripRectangle(dockState);
-
- int imageHeight = rectTabStrip.Height - ImageGapTop - ImageGapBottom;
- int imageWidth = ImageWidth;
- if (imageHeight > ImageHeight)
- {
- imageWidth = ImageWidth * (imageHeight / ImageHeight);
- }
-
- int x = TabGapLeft + rectTabStrip.X;
- foreach (Pane pane in GetPanes(dockState))
- {
- foreach (TabVS2005 tab in pane.AutoHideTabs)
- {
- int width = imageWidth + ImageGapLeft + ImageGapRight +
- TextRenderer.MeasureText(tab.Content.DockHandler.TabText, TextFont).Width +
- TextGapLeft + TextGapRight;
- tab.TabX = x;
- tab.TabWidth = width;
- x += width;
- }
-
- x += TabGapBetween;
- }
- }
-
- private Rectangle RtlTransform(Rectangle rect, DockState dockState)
- {
- Rectangle rectTransformed;
- if (dockState == DockState.DockLeftAutoHide || dockState == DockState.DockRightAutoHide)
- {
- rectTransformed = rect;
- }
- else
- {
- rectTransformed = DrawHelper.RtlTransform(this, rect);
- }
-
- return rectTransformed;
- }
-
- private GraphicsPath GetTabOutline(TabVS2005 tab, bool transformed, bool rtlTransform)
- {
- DockState dockState = tab.Content.DockHandler.DockState;
- Rectangle rectTab = GetTabRectangle(tab, transformed);
- if (rtlTransform)
- {
- rectTab = RtlTransform(rectTab, dockState);
- }
- bool upTab = dockState == DockState.DockLeftAutoHide || dockState == DockState.DockBottomAutoHide;
- DrawHelper.GetRoundedCornerTab(GraphicsPath, rectTab, upTab);
-
- return GraphicsPath;
- }
-
- private void DrawTab(Graphics g, TabVS2005 tab)
- {
- Rectangle rectTabOrigin = GetTabRectangle(tab);
- if (rectTabOrigin.IsEmpty)
- {
- return;
- }
-
- DockState dockState = tab.Content.DockHandler.DockState;
- IDockContent content = tab.Content;
-
- GraphicsPath path = GetTabOutline(tab, false, true);
-
- Color startColor = DockPanel.Skin.AutoHideStripSkin.TabGradient.StartColor;
- Color endColor = DockPanel.Skin.AutoHideStripSkin.TabGradient.EndColor;
- LinearGradientMode gradientMode = DockPanel.Skin.AutoHideStripSkin.TabGradient.LinearGradientMode;
- g.FillPath(new LinearGradientBrush(rectTabOrigin, startColor, endColor, gradientMode), path);
- g.DrawPath(PenTabBorder, path);
-
- // Set no rotate for drawing icon and text
- Matrix matrixRotate = g.Transform;
- g.Transform = MatrixIdentity;
-
- // Draw the icon
- Rectangle rectImage = rectTabOrigin;
- rectImage.X += ImageGapLeft;
- rectImage.Y += ImageGapTop;
- int imageHeight = rectTabOrigin.Height - ImageGapTop - ImageGapBottom;
- int imageWidth = ImageWidth;
- if (imageHeight > ImageHeight)
- {
- imageWidth = ImageWidth * (imageHeight / ImageHeight);
- }
- rectImage.Height = imageHeight;
- rectImage.Width = imageWidth;
- rectImage = GetTransformedRectangle(dockState, rectImage);
-
- if (dockState == DockState.DockLeftAutoHide || dockState == DockState.DockRightAutoHide)
- {
- // The DockState is DockLeftAutoHide or DockRightAutoHide, so rotate the image 90 degrees to the right.
- Rectangle rectTransform = RtlTransform(rectImage, dockState);
- Point[] rotationPoints =
- {
- new Point(rectTransform.X + rectTransform.Width, rectTransform.Y),
- new Point(rectTransform.X + rectTransform.Width, rectTransform.Y + rectTransform.Height),
- new Point(rectTransform.X, rectTransform.Y)
- };
-
- using (Icon rotatedIcon = new Icon(((Form) content).Icon, 16, 16))
- {
- g.DrawImage(rotatedIcon.ToBitmap(), rotationPoints);
- }
- }
- else
- {
- // Draw the icon normally without any rotation.
- g.DrawIcon(((Form) content).Icon, RtlTransform(rectImage, dockState));
- }
-
- // Draw the text
- Rectangle rectText = rectTabOrigin;
- rectText.X += ImageGapLeft + imageWidth + ImageGapRight + TextGapLeft;
- rectText.Width -= ImageGapLeft + imageWidth + ImageGapRight + TextGapLeft;
- rectText = RtlTransform(GetTransformedRectangle(dockState, rectText), dockState);
-
- Color textColor = DockPanel.Skin.AutoHideStripSkin.TabGradient.TextColor;
-
- if (dockState == DockState.DockLeftAutoHide || dockState == DockState.DockRightAutoHide)
- {
- g.DrawString(content.DockHandler.TabText, TextFont, new SolidBrush(textColor), rectText,
- StringFormatTabVertical);
- }
- else
- {
- g.DrawString(content.DockHandler.TabText, TextFont, new SolidBrush(textColor), rectText,
- StringFormatTabHorizontal);
- }
-
- // Set rotate back
- g.Transform = matrixRotate;
- }
-
- private Rectangle GetLogicalTabStripRectangle(DockState dockState)
- {
- return GetLogicalTabStripRectangle(dockState, false);
- }
-
- private Rectangle GetLogicalTabStripRectangle(DockState dockState, bool transformed)
- {
- if (!DockHelper.IsDockStateAutoHide(dockState))
- {
- return Rectangle.Empty;
- }
-
- int leftPanes = GetPanes(DockState.DockLeftAutoHide).Count;
- int rightPanes = GetPanes(DockState.DockRightAutoHide).Count;
- int topPanes = GetPanes(DockState.DockTopAutoHide).Count;
- int bottomPanes = GetPanes(DockState.DockBottomAutoHide).Count;
-
- int x, y, width, height;
-
- height = MeasureHeight();
- if (dockState == DockState.DockLeftAutoHide && leftPanes > 0)
- {
- x = 0;
- y = topPanes == 0 ? 0 : height;
- width = Height - (topPanes == 0 ? 0 : height) - (bottomPanes == 0 ? 0 : height);
- }
- else if (dockState == DockState.DockRightAutoHide && rightPanes > 0)
- {
- x = Width - height;
- if (leftPanes != 0 && x < height)
- {
- x = height;
- }
- y = topPanes == 0 ? 0 : height;
- width = Height - (topPanes == 0 ? 0 : height) - (bottomPanes == 0 ? 0 : height);
- }
- else if (dockState == DockState.DockTopAutoHide && topPanes > 0)
- {
- x = leftPanes == 0 ? 0 : height;
- y = 0;
- width = Width - (leftPanes == 0 ? 0 : height) - (rightPanes == 0 ? 0 : height);
- }
- else if (dockState == DockState.DockBottomAutoHide && bottomPanes > 0)
- {
- x = leftPanes == 0 ? 0 : height;
- y = Height - height;
- if (topPanes != 0 && y < height)
- {
- y = height;
- }
- width = Width - (leftPanes == 0 ? 0 : height) - (rightPanes == 0 ? 0 : height);
- }
- else
- {
- return Rectangle.Empty;
- }
-
- if (!transformed)
- {
- return new Rectangle(x, y, width, height);
- }
- else
- {
- return GetTransformedRectangle(dockState, new Rectangle(x, y, width, height));
- }
- }
-
- private Rectangle GetTabRectangle(TabVS2005 tab)
- {
- return GetTabRectangle(tab, false);
- }
-
- private Rectangle GetTabRectangle(TabVS2005 tab, bool transformed)
- {
- DockState dockState = tab.Content.DockHandler.DockState;
- Rectangle rectTabStrip = GetLogicalTabStripRectangle(dockState);
-
- if (rectTabStrip.IsEmpty)
- {
- return Rectangle.Empty;
- }
-
- int x = tab.TabX;
- int y = rectTabStrip.Y +
- (dockState == DockState.DockTopAutoHide || dockState == DockState.DockRightAutoHide
- ? 0
- : TabGapTop);
- int width = tab.TabWidth;
- int height = rectTabStrip.Height - TabGapTop;
-
- if (!transformed)
- {
- return new Rectangle(x, y, width, height);
- }
- else
- {
- return GetTransformedRectangle(dockState, new Rectangle(x, y, width, height));
- }
- }
-
- private Rectangle GetTransformedRectangle(DockState dockState, Rectangle rect)
- {
- if (dockState != DockState.DockLeftAutoHide && dockState != DockState.DockRightAutoHide)
- {
- return rect;
- }
-
- PointF[] pts = new PointF[1];
- // the center of the rectangle
- pts[0].X = (float) rect.X + (float) rect.Width / 2;
- pts[0].Y = (float) rect.Y + (float) rect.Height / 2;
- Rectangle rectTabStrip = GetLogicalTabStripRectangle(dockState);
- Matrix matrix = new Matrix();
- matrix.RotateAt(90, new PointF((float) rectTabStrip.X + (float) rectTabStrip.Height / 2,
- (float) rectTabStrip.Y + (float) rectTabStrip.Height / 2));
- matrix.TransformPoints(pts);
-
- return new Rectangle((int) (pts[0].X - (float) rect.Height / 2 + .5F),
- (int) (pts[0].Y - (float) rect.Width / 2 + .5F),
- rect.Height, rect.Width);
- }
-
- #endregion
-
- private class TabVS2005 : Tab
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- internal TabVS2005(IDockContent content)
- : base(content)
- {
- }
-
- #endregion
-
- #region Properties
-
- public int TabX { get; set; } = 0;
-
- public int TabWidth { get; set; } = 0;
-
- #endregion
- }
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/VS2005DockPaneCaption.cs b/src/WinFormsUI/Docking/VS2005DockPaneCaption.cs
deleted file mode 100644
index 04c283c4..00000000
--- a/src/WinFormsUI/Docking/VS2005DockPaneCaption.cs
+++ /dev/null
@@ -1,582 +0,0 @@
-using System;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Windows.Forms;
-using System.ComponentModel;
-using System.Windows.Forms.VisualStyles;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal class VS2005DockPaneCaption : DockPaneCaptionBase
- {
- #region Fields
-
- private static Bitmap _imageButtonClose;
-
- private static Bitmap _imageButtonAutoHide;
-
- private static Bitmap _imageButtonDock;
-
- private static Bitmap _imageButtonOptions;
-
- private static string _toolTipClose;
-
- private static string _toolTipOptions;
-
- private static string _toolTipAutoHide;
-
- private static Blend _activeBackColorGradientBlend;
-
- private static readonly TextFormatFlags _textFormat =
- TextFormatFlags.SingleLine |
- TextFormatFlags.EndEllipsis |
- TextFormatFlags.VerticalCenter;
-
- private InertButton m_buttonAutoHide;
-
- private InertButton m_buttonClose;
-
- private InertButton m_buttonOptions;
-
- private readonly ToolTip m_toolTip;
-
- #endregion
-
- #region cTor
-
- public VS2005DockPaneCaption(DockPane pane) : base(pane)
- {
- SuspendLayout();
-
- Components = new Container();
- m_toolTip = new ToolTip(Components);
-
- ResumeLayout();
- }
-
- #endregion
-
- #region Properties
-
- private static Bitmap ImageButtonClose
- {
- get
- {
- if (_imageButtonClose == null)
- {
- _imageButtonClose = Resources.DockPane_Close;
- }
-
- return _imageButtonClose;
- }
- }
-
- private InertButton ButtonClose
- {
- get
- {
- if (m_buttonClose == null)
- {
- m_buttonClose = new InertButton(this, ImageButtonClose, ImageButtonClose);
- m_toolTip.SetToolTip(m_buttonClose, ToolTipClose);
- m_buttonClose.Click += new EventHandler(Close_Click);
- Controls.Add(m_buttonClose);
- }
-
- return m_buttonClose;
- }
- }
-
- private static Bitmap ImageButtonAutoHide
- {
- get
- {
- if (_imageButtonAutoHide == null)
- {
- _imageButtonAutoHide = Resources.DockPane_AutoHide;
- }
-
- return _imageButtonAutoHide;
- }
- }
-
- private static Bitmap ImageButtonDock
- {
- get
- {
- if (_imageButtonDock == null)
- {
- _imageButtonDock = Resources.DockPane_Dock;
- }
-
- return _imageButtonDock;
- }
- }
-
- private InertButton ButtonAutoHide
- {
- get
- {
- if (m_buttonAutoHide == null)
- {
- m_buttonAutoHide = new InertButton(this, ImageButtonDock, ImageButtonAutoHide);
- m_toolTip.SetToolTip(m_buttonAutoHide, ToolTipAutoHide);
- m_buttonAutoHide.Click += new EventHandler(AutoHide_Click);
- Controls.Add(m_buttonAutoHide);
- }
-
- return m_buttonAutoHide;
- }
- }
-
- private static Bitmap ImageButtonOptions
- {
- get
- {
- if (_imageButtonOptions == null)
- {
- _imageButtonOptions = Resources.DockPane_Option;
- }
-
- return _imageButtonOptions;
- }
- }
-
- private InertButton ButtonOptions
- {
- get
- {
- if (m_buttonOptions == null)
- {
- m_buttonOptions = new InertButton(this, ImageButtonOptions, ImageButtonOptions);
- m_toolTip.SetToolTip(m_buttonOptions, ToolTipOptions);
- m_buttonOptions.Click += new EventHandler(Options_Click);
- Controls.Add(m_buttonOptions);
- }
- return m_buttonOptions;
- }
- }
-
- private IContainer Components { get; }
-
- private static int TextGapTop
- {
- get { return _TextGapTop; }
- }
-
- public Font TextFont
- {
- get { return DockPane.DockPanel.Skin.DockPaneStripSkin.TextFont; }
- }
-
- private static int TextGapBottom
- {
- get { return _TextGapBottom; }
- }
-
- private static int TextGapLeft
- {
- get { return _TextGapLeft; }
- }
-
- private static int TextGapRight
- {
- get { return _TextGapRight; }
- }
-
- private static int ButtonGapTop
- {
- get { return _ButtonGapTop; }
- }
-
- private static int ButtonGapBottom
- {
- get { return _ButtonGapBottom; }
- }
-
- private static int ButtonGapLeft
- {
- get { return _ButtonGapLeft; }
- }
-
- private static int ButtonGapRight
- {
- get { return _ButtonGapRight; }
- }
-
- private static int ButtonGapBetween
- {
- get { return _ButtonGapBetween; }
- }
-
- private static string ToolTipClose
- {
- get
- {
- if (_toolTipClose == null)
- {
- _toolTipClose = Strings.DockPaneCaption_ToolTipClose;
- }
- return _toolTipClose;
- }
- }
-
- private static string ToolTipOptions
- {
- get
- {
- if (_toolTipOptions == null)
- {
- _toolTipOptions = Strings.DockPaneCaption_ToolTipOptions;
- }
-
- return _toolTipOptions;
- }
- }
-
- private static string ToolTipAutoHide
- {
- get
- {
- if (_toolTipAutoHide == null)
- {
- _toolTipAutoHide = Strings.DockPaneCaption_ToolTipAutoHide;
- }
- return _toolTipAutoHide;
- }
- }
-
- private static Blend ActiveBackColorGradientBlend
- {
- get
- {
- if (_activeBackColorGradientBlend == null)
- {
- Blend blend = new Blend(2);
-
- blend.Factors = new float[] {0.5F, 1.0F};
- blend.Positions = new float[] {0.0F, 1.0F};
- _activeBackColorGradientBlend = blend;
- }
-
- return _activeBackColorGradientBlend;
- }
- }
-
- private Color TextColor
- {
- get
- {
- if (DockPane.IsActivated)
- {
- return DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveCaptionGradient.TextColor;
- }
- else
- {
- return DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.InactiveCaptionGradient
- .TextColor;
- }
- }
- }
-
- private TextFormatFlags TextFormat
- {
- get
- {
- if (RightToLeft == RightToLeft.No)
- {
- return _textFormat;
- }
- else
- {
- return _textFormat | TextFormatFlags.RightToLeft | TextFormatFlags.Right;
- }
- }
- }
-
- private bool CloseButtonEnabled
- {
- get { return DockPane.ActiveContent != null ? DockPane.ActiveContent.DockHandler.CloseButton : false; }
- }
-
- ///
- /// Determines whether the close button is visible on the content
- ///
- private bool CloseButtonVisible
- {
- get
- {
- return DockPane.ActiveContent != null ? DockPane.ActiveContent.DockHandler.CloseButtonVisible : false;
- }
- }
-
- private bool ShouldShowAutoHideButton
- {
- get { return !DockPane.IsFloat; }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- Components.Dispose();
- }
- base.Dispose(disposing);
- }
-
- protected internal override int MeasureHeight()
- {
- int height = TextFont.Height + TextGapTop + TextGapBottom;
-
- if (height < ButtonClose.Image.Height + ButtonGapTop + ButtonGapBottom)
- {
- height = ButtonClose.Image.Height + ButtonGapTop + ButtonGapBottom;
- }
-
- return height;
- }
-
- protected override void OnPaint(PaintEventArgs e)
- {
- base.OnPaint(e);
- DrawCaption(e.Graphics);
- }
-
- protected override void OnLayout(LayoutEventArgs levent)
- {
- SetButtonsPosition();
- base.OnLayout(levent);
- }
-
- protected override void OnRefreshChanges()
- {
- SetButtons();
- Invalidate();
- }
-
- protected override void OnRightToLeftChanged(EventArgs e)
- {
- base.OnRightToLeftChanged(e);
- PerformLayout();
- }
-
- #endregion
-
- #region Private Methods
-
- private void DrawCaption(Graphics g)
- {
- if (ClientRectangle.Width == 0 || ClientRectangle.Height == 0)
- {
- return;
- }
-
- if (DockPane.IsActivated)
- {
- Color startColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveCaptionGradient
- .StartColor;
- Color endColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveCaptionGradient
- .EndColor;
- LinearGradientMode gradientMode = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient
- .ActiveCaptionGradient.LinearGradientMode;
- using (LinearGradientBrush brush =
- new LinearGradientBrush(ClientRectangle, startColor, endColor, gradientMode))
- {
- brush.Blend = ActiveBackColorGradientBlend;
- g.FillRectangle(brush, ClientRectangle);
- }
- }
- else
- {
- Color startColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.InactiveCaptionGradient
- .StartColor;
- Color endColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.InactiveCaptionGradient
- .EndColor;
- LinearGradientMode gradientMode = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient
- .InactiveCaptionGradient.LinearGradientMode;
- using (LinearGradientBrush brush =
- new LinearGradientBrush(ClientRectangle, startColor, endColor, gradientMode))
- {
- g.FillRectangle(brush, ClientRectangle);
- }
- }
-
- Rectangle rectCaption = ClientRectangle;
-
- Rectangle rectCaptionText = rectCaption;
- rectCaptionText.X += TextGapLeft;
- rectCaptionText.Width -= TextGapLeft + TextGapRight;
- rectCaptionText.Width -= ButtonGapLeft + ButtonClose.Width + ButtonGapRight;
- if (ShouldShowAutoHideButton)
- {
- rectCaptionText.Width -= ButtonAutoHide.Width + ButtonGapBetween;
- }
- if (HasTabPageContextMenu)
- {
- rectCaptionText.Width -= ButtonOptions.Width + ButtonGapBetween;
- }
- rectCaptionText.Y += TextGapTop;
- rectCaptionText.Height -= TextGapTop + TextGapBottom;
-
- Color colorText;
- if (DockPane.IsActivated)
- {
- colorText = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveCaptionGradient
- .TextColor;
- }
- else
- {
- colorText = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.InactiveCaptionGradient
- .TextColor;
- }
-
- TextRenderer.DrawText(g, DockPane.CaptionText, TextFont, DrawHelper.RtlTransform(this, rectCaptionText),
- colorText, TextFormat);
- }
-
- private void SetButtons()
- {
- ButtonClose.Enabled = CloseButtonEnabled;
- ButtonClose.Visible = CloseButtonVisible;
- ButtonAutoHide.Visible = ShouldShowAutoHideButton;
- ButtonOptions.Visible = HasTabPageContextMenu;
- ButtonClose.RefreshChanges();
- ButtonAutoHide.RefreshChanges();
- ButtonOptions.RefreshChanges();
-
- SetButtonsPosition();
- }
-
- private void SetButtonsPosition()
- {
- // set the size and location for close and auto-hide buttons
- Rectangle rectCaption = ClientRectangle;
- int buttonWidth = ButtonClose.Image.Width;
- int buttonHeight = ButtonClose.Image.Height;
- int height = rectCaption.Height - ButtonGapTop - ButtonGapBottom;
- if (buttonHeight < height)
- {
- buttonWidth = buttonWidth * (height / buttonHeight);
- buttonHeight = height;
- }
- Size buttonSize = new Size(buttonWidth, buttonHeight);
- int x = rectCaption.X + rectCaption.Width - 1 - ButtonGapRight - m_buttonClose.Width;
- int y = rectCaption.Y + ButtonGapTop;
- Point point = new Point(x, y);
- ButtonClose.Bounds = DrawHelper.RtlTransform(this, new Rectangle(point, buttonSize));
-
- // If the close button is not visible draw the auto hide button overtop.
- // Otherwise it is drawn to the left of the close button.
- if (CloseButtonVisible)
- {
- point.Offset(-(buttonWidth + ButtonGapBetween), 0);
- }
-
- ButtonAutoHide.Bounds = DrawHelper.RtlTransform(this, new Rectangle(point, buttonSize));
- if (ShouldShowAutoHideButton)
- {
- point.Offset(-(buttonWidth + ButtonGapBetween), 0);
- }
- ButtonOptions.Bounds = DrawHelper.RtlTransform(this, new Rectangle(point, buttonSize));
- }
-
- #endregion
-
- #region Events handler
-
- private void Close_Click(object sender, EventArgs e)
- {
- DockPane.CloseActiveContent();
- }
-
- private void AutoHide_Click(object sender, EventArgs e)
- {
- DockPane.DockState = DockHelper.ToggleAutoHideState(DockPane.DockState);
- if (DockHelper.IsDockStateAutoHide(DockPane.DockState))
- {
- DockPane.DockPanel.ActiveAutoHideContent = null;
- DockPane.NestedDockingStatus.NestedPanes.SwitchPaneWithFirstChild(DockPane);
- }
- }
-
- private void Options_Click(object sender, EventArgs e)
- {
- ShowTabPageContextMenu(PointToClient(Control.MousePosition));
- }
-
- #endregion
-
- private sealed class InertButton : InertButtonBase
- {
- #region Fields
-
- private readonly Bitmap m_image;
- private readonly Bitmap m_imageAutoHide;
-
- #endregion
-
- #region cTor
-
- public InertButton(VS2005DockPaneCaption dockPaneCaption, Bitmap image, Bitmap imageAutoHide)
- : base()
- {
- DockPaneCaption = dockPaneCaption;
- m_image = image;
- m_imageAutoHide = imageAutoHide;
- RefreshChanges();
- }
-
- #endregion
-
- #region Properties
-
- private VS2005DockPaneCaption DockPaneCaption { get; }
-
- public bool IsAutoHide
- {
- get { return DockPaneCaption.DockPane.IsAutoHide; }
- }
-
- public override Bitmap Image
- {
- get { return IsAutoHide ? m_imageAutoHide : m_image; }
- }
-
- #endregion
-
- #region Overrides
-
- protected override void OnRefreshChanges()
- {
- if (DockPaneCaption.DockPane.DockPanel != null)
- {
- if (DockPaneCaption.TextColor != ForeColor)
- {
- ForeColor = DockPaneCaption.TextColor;
- Invalidate();
- }
- }
- }
-
- #endregion
- }
-
- #region consts
-
- private const int _TextGapTop = 2;
- private const int _TextGapBottom = 0;
- private const int _TextGapLeft = 3;
- private const int _TextGapRight = 3;
- private const int _ButtonGapTop = 2;
- private const int _ButtonGapBottom = 1;
- private const int _ButtonGapBetween = 1;
- private const int _ButtonGapLeft = 1;
- private const int _ButtonGapRight = 2;
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/VS2005DockPaneStrip.cs b/src/WinFormsUI/Docking/VS2005DockPaneStrip.cs
deleted file mode 100644
index 27885e55..00000000
--- a/src/WinFormsUI/Docking/VS2005DockPaneStrip.cs
+++ /dev/null
@@ -1,1707 +0,0 @@
-using System;
-using System.Drawing;
-using System.Drawing.Drawing2D;
-using System.Windows.Forms;
-using System.ComponentModel;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal class VS2005DockPaneStrip : DockPaneStripBase
- {
- #region cTor
-
- public VS2005DockPaneStrip(DockPane pane)
- : base(pane)
- {
- SetStyle(ControlStyles.ResizeRedraw |
- ControlStyles.UserPaint |
- ControlStyles.AllPaintingInWmPaint |
- ControlStyles.OptimizedDoubleBuffer, true);
-
- SuspendLayout();
-
- Components = new Container();
- m_toolTip = new ToolTip(Components);
- SelectMenu = new ContextMenuStrip(Components);
-
- ResumeLayout();
- }
-
- #endregion
-
- #region Properties
-
- private Rectangle TabStripRectangle
- {
- get
- {
- if (Appearance == DockPane.AppearanceStyle.Document)
- {
- return TabStripRectangle_Document;
- }
- else
- {
- return TabStripRectangle_ToolWindow;
- }
- }
- }
-
- private Rectangle TabStripRectangle_ToolWindow
- {
- get
- {
- Rectangle rect = ClientRectangle;
- return new Rectangle(rect.X, rect.Top + ToolWindowStripGapTop, rect.Width,
- rect.Height - ToolWindowStripGapTop - ToolWindowStripGapBottom);
- }
- }
-
- private Rectangle TabStripRectangle_Document
- {
- get
- {
- Rectangle rect = ClientRectangle;
- return new Rectangle(rect.X, rect.Top + DocumentStripGapTop, rect.Width,
- rect.Height - DocumentStripGapTop - ToolWindowStripGapBottom);
- }
- }
-
- private Rectangle TabsRectangle
- {
- get
- {
- if (Appearance == DockPane.AppearanceStyle.ToolWindow)
- {
- return TabStripRectangle;
- }
-
- Rectangle rectWindow = TabStripRectangle;
- int x = rectWindow.X;
- int y = rectWindow.Y;
- int width = rectWindow.Width;
- int height = rectWindow.Height;
-
- x += DocumentTabGapLeft;
- width -= DocumentTabGapLeft +
- DocumentTabGapRight +
- DocumentButtonGapRight +
- ButtonClose.Width +
- ButtonWindowList.Width +
- 2 * DocumentButtonGapBetween;
-
- return new Rectangle(x, y, width, height);
- }
- }
-
- private ContextMenuStrip SelectMenu { get; }
-
- private static Bitmap ImageButtonClose
- {
- get
- {
- if (m_imageButtonClose == null)
- {
- m_imageButtonClose = Resources.DockPane_Close;
- }
-
- return m_imageButtonClose;
- }
- }
-
- private InertButton ButtonClose
- {
- get
- {
- if (m_buttonClose == null)
- {
- m_buttonClose = new InertButton(ImageButtonClose, ImageButtonClose);
- m_toolTip.SetToolTip(m_buttonClose, ToolTipClose);
- m_buttonClose.Click += new EventHandler(Close_Click);
- Controls.Add(m_buttonClose);
- }
-
- return m_buttonClose;
- }
- }
-
- private static Bitmap ImageButtonWindowList
- {
- get
- {
- if (m_imageButtonWindowList == null)
- {
- m_imageButtonWindowList = Resources.DockPane_Option;
- }
-
- return m_imageButtonWindowList;
- }
- }
-
- private static Bitmap ImageButtonWindowListOverflow
- {
- get
- {
- if (m_imageButtonWindowListOverflow == null)
- {
- m_imageButtonWindowListOverflow = Resources.DockPane_OptionOverflow;
- }
-
- return m_imageButtonWindowListOverflow;
- }
- }
-
- private InertButton ButtonWindowList
- {
- get
- {
- if (m_buttonWindowList == null)
- {
- m_buttonWindowList = new InertButton(ImageButtonWindowList, ImageButtonWindowListOverflow);
- m_toolTip.SetToolTip(m_buttonWindowList, ToolTipSelect);
- m_buttonWindowList.Click += new EventHandler(WindowList_Click);
- Controls.Add(m_buttonWindowList);
- }
-
- return m_buttonWindowList;
- }
- }
-
- private static GraphicsPath GraphicsPath
- {
- get { return VS2005AutoHideStrip.GraphicsPath; }
- }
-
- private IContainer Components { get; }
-
- public Font TextFont
- {
- get { return DockPane.DockPanel.Skin.DockPaneStripSkin.TextFont; }
- }
-
- private Font BoldFont
- {
- get
- {
- if (IsDisposed)
- {
- return null;
- }
-
- if (m_boldFont == null)
- {
- m_font = TextFont;
- m_boldFont = new Font(TextFont, FontStyle.Bold);
- }
- else if (m_font != TextFont)
- {
- m_boldFont.Dispose();
- m_font = TextFont;
- m_boldFont = new Font(TextFont, FontStyle.Bold);
- }
-
- return m_boldFont;
- }
- }
-
- private int StartDisplayingTab
- {
- get { return m_startDisplayingTab; }
- set
- {
- m_startDisplayingTab = value;
- Invalidate();
- }
- }
-
- private int EndDisplayingTab { get; set; } = 0;
-
- private int FirstDisplayingTab { get; set; } = 0;
-
- private bool DocumentTabsOverflow
- {
- set
- {
- if (m_documentTabsOverflow == value)
- {
- return;
- }
-
- m_documentTabsOverflow = value;
- if (value)
- {
- ButtonWindowList.ImageCategory = 1;
- }
- else
- {
- ButtonWindowList.ImageCategory = 0;
- }
- }
- }
-
- private static int ToolWindowStripGapTop
- {
- get { return _ToolWindowStripGapTop; }
- }
-
- private static int ToolWindowStripGapBottom
- {
- get { return _ToolWindowStripGapBottom; }
- }
-
- private static int ToolWindowStripGapLeft
- {
- get { return _ToolWindowStripGapLeft; }
- }
-
- private static int ToolWindowStripGapRight
- {
- get { return _ToolWindowStripGapRight; }
- }
-
- private static int ToolWindowImageHeight
- {
- get { return _ToolWindowImageHeight; }
- }
-
- private static int ToolWindowImageWidth
- {
- get { return _ToolWindowImageWidth; }
- }
-
- private static int ToolWindowImageGapTop
- {
- get { return _ToolWindowImageGapTop; }
- }
-
- private static int ToolWindowImageGapBottom
- {
- get { return _ToolWindowImageGapBottom; }
- }
-
- private static int ToolWindowImageGapLeft
- {
- get { return _ToolWindowImageGapLeft; }
- }
-
- private static int ToolWindowImageGapRight
- {
- get { return _ToolWindowImageGapRight; }
- }
-
- private static int ToolWindowTextGapRight
- {
- get { return _ToolWindowTextGapRight; }
- }
-
- private static int ToolWindowTabSeperatorGapTop
- {
- get { return _ToolWindowTabSeperatorGapTop; }
- }
-
- private static int ToolWindowTabSeperatorGapBottom
- {
- get { return _ToolWindowTabSeperatorGapBottom; }
- }
-
- private static string ToolTipClose
- {
- get
- {
- if (m_toolTipClose == null)
- {
- m_toolTipClose = Strings.DockPaneStrip_ToolTipClose;
- }
- return m_toolTipClose;
- }
- }
-
- private static string ToolTipSelect
- {
- get
- {
- if (m_toolTipSelect == null)
- {
- m_toolTipSelect = Strings.DockPaneStrip_ToolTipWindowList;
- }
- return m_toolTipSelect;
- }
- }
-
- private TextFormatFlags ToolWindowTextFormat
- {
- get
- {
- TextFormatFlags textFormat = TextFormatFlags.EndEllipsis |
- TextFormatFlags.HorizontalCenter |
- TextFormatFlags.SingleLine |
- TextFormatFlags.VerticalCenter;
- if (RightToLeft == RightToLeft.Yes)
- {
- return textFormat | TextFormatFlags.RightToLeft | TextFormatFlags.Right;
- }
- else
- {
- return textFormat;
- }
- }
- }
-
- private static int DocumentStripGapTop
- {
- get { return _DocumentStripGapTop; }
- }
-
- private static int DocumentStripGapBottom
- {
- get { return _DocumentStripGapBottom; }
- }
-
- private TextFormatFlags DocumentTextFormat
- {
- get
- {
- TextFormatFlags textFormat = TextFormatFlags.EndEllipsis |
- TextFormatFlags.SingleLine |
- TextFormatFlags.VerticalCenter |
- TextFormatFlags.HorizontalCenter;
- if (RightToLeft == RightToLeft.Yes)
- {
- return textFormat | TextFormatFlags.RightToLeft;
- }
- else
- {
- return textFormat;
- }
- }
- }
-
- private static int DocumentTabMaxWidth
- {
- get { return _DocumentTabMaxWidth; }
- }
-
- private static int DocumentButtonGapTop
- {
- get { return _DocumentButtonGapTop; }
- }
-
- private static int DocumentButtonGapBottom
- {
- get { return _DocumentButtonGapBottom; }
- }
-
- private static int DocumentButtonGapBetween
- {
- get { return _DocumentButtonGapBetween; }
- }
-
- private static int DocumentButtonGapRight
- {
- get { return _DocumentButtonGapRight; }
- }
-
- private static int DocumentTabGapTop
- {
- get { return _DocumentTabGapTop; }
- }
-
- private static int DocumentTabGapLeft
- {
- get { return _DocumentTabGapLeft; }
- }
-
- private static int DocumentTabGapRight
- {
- get { return _DocumentTabGapRight; }
- }
-
- private static int DocumentIconGapBottom
- {
- get { return _DocumentIconGapBottom; }
- }
-
- private static int DocumentIconGapLeft
- {
- get { return _DocumentIconGapLeft; }
- }
-
- private static int DocumentIconGapRight
- {
- get { return _DocumentIconGapRight; }
- }
-
- private static int DocumentIconWidth
- {
- get { return _DocumentIconWidth; }
- }
-
- private static int DocumentIconHeight
- {
- get { return _DocumentIconHeight; }
- }
-
- private static int DocumentTextGapRight
- {
- get { return _DocumentTextGapRight; }
- }
-
- private static Pen PenToolWindowTabBorder
- {
- get { return SystemPens.GrayText; }
- }
-
- private static Pen PenDocumentTabActiveBorder
- {
- get { return SystemPens.ControlDarkDark; }
- }
-
- private static Pen PenDocumentTabInactiveBorder
- {
- get { return SystemPens.GrayText; }
- }
-
- #endregion
-
- #region Overrides
-
- protected internal override DockPaneStripBase.Tab CreateTab(IDockContent content)
- {
- return new TabVS2005(content);
- }
-
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- Components.Dispose();
- if (m_boldFont != null)
- {
- m_boldFont.Dispose();
- m_boldFont = null;
- }
- }
- base.Dispose(disposing);
- }
-
- protected internal override int MeasureHeight()
- {
- if (Appearance == DockPane.AppearanceStyle.ToolWindow)
- {
- return MeasureHeight_ToolWindow();
- }
- else
- {
- return MeasureHeight_Document();
- }
- }
-
- protected override void OnPaint(PaintEventArgs e)
- {
- Rectangle rect = TabsRectangle;
-
- if (Appearance == DockPane.AppearanceStyle.Document)
- {
- rect.X -= DocumentTabGapLeft;
-
- // Add these values back in so that the DockStrip color is drawn
- // beneath the close button and window list button.
- rect.Width += DocumentTabGapLeft +
- DocumentTabGapRight +
- DocumentButtonGapRight +
- ButtonClose.Width +
- ButtonWindowList.Width;
-
- // It is possible depending on the DockPanel DocumentStyle to have
- // a Document without a DockStrip.
- if (rect.Width > 0 && rect.Height > 0)
- {
- Color startColor = DockPane.DockPanel.Skin.DockPaneStripSkin.DocumentGradient.DockStripGradient
- .StartColor;
- Color endColor = DockPane.DockPanel.Skin.DockPaneStripSkin.DocumentGradient.DockStripGradient
- .EndColor;
- LinearGradientMode gradientMode = DockPane.DockPanel.Skin.DockPaneStripSkin.DocumentGradient
- .DockStripGradient.LinearGradientMode;
- using (LinearGradientBrush brush = new LinearGradientBrush(rect, startColor, endColor, gradientMode)
- )
- {
- e.Graphics.FillRectangle(brush, rect);
- }
- }
- }
- else
- {
- Color startColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.DockStripGradient
- .StartColor;
- Color endColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.DockStripGradient
- .EndColor;
- LinearGradientMode gradientMode = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient
- .DockStripGradient.LinearGradientMode;
- using (LinearGradientBrush brush = new LinearGradientBrush(rect, startColor, endColor, gradientMode))
- {
- e.Graphics.FillRectangle(brush, rect);
- }
- }
- base.OnPaint(e);
- CalculateTabs();
- if (Appearance == DockPane.AppearanceStyle.Document && DockPane.ActiveContent != null)
- {
- if (EnsureDocumentTabVisible(DockPane.ActiveContent, false))
- {
- CalculateTabs();
- }
- }
-
- DrawTabStrip(e.Graphics);
- }
-
- protected override void OnRefreshChanges()
- {
- SetInertButtons();
- Invalidate();
- }
-
- protected internal override GraphicsPath GetOutline(int index)
- {
- if (Appearance == DockPane.AppearanceStyle.Document)
- {
- return GetOutline_Document(index);
- }
- else
- {
- return GetOutline_ToolWindow(index);
- }
- }
-
- protected internal override void EnsureTabVisible(IDockContent content)
- {
- if (Appearance != DockPane.AppearanceStyle.Document || !Tabs.Contains(content))
- {
- return;
- }
-
- CalculateTabs();
- EnsureDocumentTabVisible(content, true);
- }
-
- protected override void OnLayout(LayoutEventArgs levent)
- {
- if (Appearance == DockPane.AppearanceStyle.Document)
- {
- LayoutButtons();
- OnRefreshChanges();
- }
-
- base.OnLayout(levent);
- }
-
- protected internal override int HitTest(Point ptMouse)
- {
- if (!TabsRectangle.Contains(ptMouse))
- {
- return -1;
- }
-
- foreach (Tab tab in Tabs)
- {
- GraphicsPath path = GetTabOutline(tab, true, false);
- if (path.IsVisible(ptMouse))
- {
- return Tabs.IndexOf(tab);
- }
- }
- return -1;
- }
-
- protected override void OnMouseHover(EventArgs e)
- {
- int index = HitTest(PointToClient(Control.MousePosition));
- string toolTip = string.Empty;
-
- base.OnMouseHover(e);
-
- if (index != -1)
- {
- TabVS2005 tab = Tabs[index] as TabVS2005;
- if (!string.IsNullOrEmpty(tab.Content.DockHandler.ToolTipText))
- {
- toolTip = tab.Content.DockHandler.ToolTipText;
- }
- else if (tab.MaxWidth > tab.TabWidth)
- {
- toolTip = tab.Content.DockHandler.TabText;
- }
- }
-
- if (m_toolTip.GetToolTip(this) != toolTip)
- {
- m_toolTip.Active = false;
- m_toolTip.SetToolTip(this, toolTip);
- m_toolTip.Active = true;
- }
-
- // requires further tracking of mouse hover behavior,
- ResetMouseEventArgs();
- }
-
- protected override void OnRightToLeftChanged(EventArgs e)
- {
- base.OnRightToLeftChanged(e);
- PerformLayout();
- }
-
- #endregion
-
- #region Private Methods
-
- private int MeasureHeight_ToolWindow()
- {
- if (DockPane.IsAutoHide || Tabs.Count <= 1)
- {
- return 0;
- }
-
- int height = Math.Max(TextFont.Height,
- ToolWindowImageHeight + ToolWindowImageGapTop + ToolWindowImageGapBottom)
- + ToolWindowStripGapTop + ToolWindowStripGapBottom;
-
- return height;
- }
-
- private int MeasureHeight_Document()
- {
- int height = Math.Max(TextFont.Height + DocumentTabGapTop,
- ButtonClose.Height + DocumentButtonGapTop + DocumentButtonGapBottom)
- + DocumentStripGapBottom + DocumentStripGapTop;
-
- return height;
- }
-
- private GraphicsPath GetOutline_Document(int index)
- {
- Rectangle rectTab = GetTabRectangle(index);
- rectTab.X -= rectTab.Height / 2;
- rectTab.Intersect(TabsRectangle);
- rectTab = RectangleToScreen(DrawHelper.RtlTransform(this, rectTab));
- Rectangle rectPaneClient = DockPane.RectangleToScreen(DockPane.ClientRectangle);
-
- GraphicsPath path = new GraphicsPath();
- GraphicsPath pathTab = GetTabOutline_Document(Tabs[index], true, true, true);
- path.AddPath(pathTab, true);
-
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- path.AddLine(rectTab.Right, rectTab.Top, rectPaneClient.Right, rectTab.Top);
- path.AddLine(rectPaneClient.Right, rectTab.Top, rectPaneClient.Right, rectPaneClient.Top);
- path.AddLine(rectPaneClient.Right, rectPaneClient.Top, rectPaneClient.Left, rectPaneClient.Top);
- path.AddLine(rectPaneClient.Left, rectPaneClient.Top, rectPaneClient.Left, rectTab.Top);
- path.AddLine(rectPaneClient.Left, rectTab.Top, rectTab.Right, rectTab.Top);
- }
- else
- {
- path.AddLine(rectTab.Right, rectTab.Bottom, rectPaneClient.Right, rectTab.Bottom);
- path.AddLine(rectPaneClient.Right, rectTab.Bottom, rectPaneClient.Right, rectPaneClient.Bottom);
- path.AddLine(rectPaneClient.Right, rectPaneClient.Bottom, rectPaneClient.Left, rectPaneClient.Bottom);
- path.AddLine(rectPaneClient.Left, rectPaneClient.Bottom, rectPaneClient.Left, rectTab.Bottom);
- path.AddLine(rectPaneClient.Left, rectTab.Bottom, rectTab.Right, rectTab.Bottom);
- }
- return path;
- }
-
- private GraphicsPath GetOutline_ToolWindow(int index)
- {
- Rectangle rectTab = GetTabRectangle(index);
- rectTab.Intersect(TabsRectangle);
- rectTab = RectangleToScreen(DrawHelper.RtlTransform(this, rectTab));
- Rectangle rectPaneClient = DockPane.RectangleToScreen(DockPane.ClientRectangle);
-
- GraphicsPath path = new GraphicsPath();
- GraphicsPath pathTab = GetTabOutline(Tabs[index], true, true);
- path.AddPath(pathTab, true);
- path.AddLine(rectTab.Left, rectTab.Top, rectPaneClient.Left, rectTab.Top);
- path.AddLine(rectPaneClient.Left, rectTab.Top, rectPaneClient.Left, rectPaneClient.Top);
- path.AddLine(rectPaneClient.Left, rectPaneClient.Top, rectPaneClient.Right, rectPaneClient.Top);
- path.AddLine(rectPaneClient.Right, rectPaneClient.Top, rectPaneClient.Right, rectTab.Top);
- path.AddLine(rectPaneClient.Right, rectTab.Top, rectTab.Right, rectTab.Top);
- return path;
- }
-
- private void CalculateTabs()
- {
- if (Appearance == DockPane.AppearanceStyle.ToolWindow)
- {
- CalculateTabs_ToolWindow();
- }
- else
- {
- CalculateTabs_Document();
- }
- }
-
- private void CalculateTabs_ToolWindow()
- {
- if (Tabs.Count <= 1 || DockPane.IsAutoHide)
- {
- return;
- }
-
- Rectangle rectTabStrip = TabStripRectangle;
-
- // Calculate tab widths
- int countTabs = Tabs.Count;
- foreach (TabVS2005 tab in Tabs)
- {
- tab.MaxWidth = GetMaxTabWidth(Tabs.IndexOf(tab));
- tab.Flag = false;
- }
-
- // Set tab whose max width less than average width
- bool anyWidthWithinAverage = true;
- int totalWidth = rectTabStrip.Width - ToolWindowStripGapLeft - ToolWindowStripGapRight;
- int totalAllocatedWidth = 0;
- int averageWidth = totalWidth / countTabs;
- int remainedTabs = countTabs;
- for (anyWidthWithinAverage = true; anyWidthWithinAverage && remainedTabs > 0;)
- {
- anyWidthWithinAverage = false;
- foreach (TabVS2005 tab in Tabs)
- {
- if (tab.Flag)
- {
- continue;
- }
-
- if (tab.MaxWidth <= averageWidth)
- {
- tab.Flag = true;
- tab.TabWidth = tab.MaxWidth;
- totalAllocatedWidth += tab.TabWidth;
- anyWidthWithinAverage = true;
- remainedTabs--;
- }
- }
- if (remainedTabs != 0)
- {
- averageWidth = (totalWidth - totalAllocatedWidth) / remainedTabs;
- }
- }
-
- // If any tab width not set yet, set it to the average width
- if (remainedTabs > 0)
- {
- int roundUpWidth = totalWidth - totalAllocatedWidth - averageWidth * remainedTabs;
- foreach (TabVS2005 tab in Tabs)
- {
- if (tab.Flag)
- {
- continue;
- }
-
- tab.Flag = true;
- if (roundUpWidth > 0)
- {
- tab.TabWidth = averageWidth + 1;
- roundUpWidth--;
- }
- else
- {
- tab.TabWidth = averageWidth;
- }
- }
- }
-
- // Set the X position of the tabs
- int x = rectTabStrip.X + ToolWindowStripGapLeft;
- foreach (TabVS2005 tab in Tabs)
- {
- tab.TabX = x;
- x += tab.TabWidth;
- }
- }
-
- private bool CalculateDocumentTab(Rectangle rectTabStrip, ref int x, int index)
- {
- bool overflow = false;
-
- TabVS2005 tab = Tabs[index] as TabVS2005;
- tab.MaxWidth = GetMaxTabWidth(index);
- int width = Math.Min(tab.MaxWidth, DocumentTabMaxWidth);
- if (x + width < rectTabStrip.Right || index == StartDisplayingTab)
- {
- tab.TabX = x;
- tab.TabWidth = width;
- EndDisplayingTab = index;
- }
- else
- {
- tab.TabX = 0;
- tab.TabWidth = 0;
- overflow = true;
- }
- x += width;
-
- return overflow;
- }
-
- ///
- /// Calculate which tabs are displayed and in what order.
- ///
- private void CalculateTabs_Document()
- {
- if (m_startDisplayingTab >= Tabs.Count)
- {
- m_startDisplayingTab = 0;
- }
-
- Rectangle rectTabStrip = TabsRectangle;
-
- int x = rectTabStrip.X + rectTabStrip.Height / 2;
- bool overflow = false;
-
- // Originally all new documents that were considered overflow
- // (not enough pane strip space to show all tabs) were added to
- // the far left (assuming not right to left) and the tabs on the
- // right were dropped from view. If StartDisplayingTab is not 0
- // then we are dealing with making sure a specific tab is kept in focus.
- if (m_startDisplayingTab > 0)
- {
- int tempX = x;
- TabVS2005 tab = Tabs[m_startDisplayingTab] as TabVS2005;
- tab.MaxWidth = GetMaxTabWidth(m_startDisplayingTab);
-
- // Add the active tab and tabs to the left
- for (int i = StartDisplayingTab; i >= 0; i--)
- {
- CalculateDocumentTab(rectTabStrip, ref tempX, i);
- }
-
- // Store which tab is the first one displayed so that it
- // will be drawn correctly (without part of the tab cut off)
- FirstDisplayingTab = EndDisplayingTab;
-
- tempX = x; // Reset X location because we are starting over
-
- // Start with the first tab displayed - name is a little misleading.
- // Loop through each tab and set its location. If there is not enough
- // room for all of them overflow will be returned.
- for (int i = EndDisplayingTab; i < Tabs.Count; i++)
- {
- overflow = CalculateDocumentTab(rectTabStrip, ref tempX, i);
- }
-
- // If not all tabs are shown then we have an overflow.
- if (FirstDisplayingTab != 0)
- {
- overflow = true;
- }
- }
- else
- {
- for (int i = StartDisplayingTab; i < Tabs.Count; i++)
- {
- overflow = CalculateDocumentTab(rectTabStrip, ref x, i);
- }
- for (int i = 0; i < StartDisplayingTab; i++)
- {
- overflow = CalculateDocumentTab(rectTabStrip, ref x, i);
- }
-
- FirstDisplayingTab = StartDisplayingTab;
- }
-
- if (!overflow)
- {
- m_startDisplayingTab = 0;
- FirstDisplayingTab = 0;
- x = rectTabStrip.X + rectTabStrip.Height / 2;
- foreach (TabVS2005 tab in Tabs)
- {
- tab.TabX = x;
- x += tab.TabWidth;
- }
- }
- DocumentTabsOverflow = overflow;
- }
-
- private bool EnsureDocumentTabVisible(IDockContent content, bool repaint)
- {
- int index = Tabs.IndexOf(content);
- TabVS2005 tab = Tabs[index] as TabVS2005;
- if (tab.TabWidth != 0)
- {
- return false;
- }
-
- StartDisplayingTab = index;
- if (repaint)
- {
- Invalidate();
- }
-
- return true;
- }
-
- private int GetMaxTabWidth(int index)
- {
- if (Appearance == DockPane.AppearanceStyle.ToolWindow)
- {
- return GetMaxTabWidth_ToolWindow(index);
- }
- else
- {
- return GetMaxTabWidth_Document(index);
- }
- }
-
- private int GetMaxTabWidth_ToolWindow(int index)
- {
- IDockContent content = Tabs[index].Content;
- Size sizeString = TextRenderer.MeasureText(content.DockHandler.TabText, TextFont);
- return ToolWindowImageWidth + sizeString.Width + ToolWindowImageGapLeft
- + ToolWindowImageGapRight + ToolWindowTextGapRight;
- }
-
- private int GetMaxTabWidth_Document(int index)
- {
- IDockContent content = Tabs[index].Content;
-
- int height = GetTabRectangle_Document(index).Height;
-
- Size sizeText = TextRenderer.MeasureText(content.DockHandler.TabText, BoldFont,
- new Size(DocumentTabMaxWidth, height), DocumentTextFormat);
-
- if (DockPane.DockPanel.ShowDocumentIcon)
- {
- return sizeText.Width + DocumentIconWidth + DocumentIconGapLeft + DocumentIconGapRight +
- DocumentTextGapRight;
- }
- else
- {
- return sizeText.Width + DocumentIconGapLeft + DocumentTextGapRight;
- }
- }
-
- private void DrawTabStrip(Graphics g)
- {
- if (Appearance == DockPane.AppearanceStyle.Document)
- {
- DrawTabStrip_Document(g);
- }
- else
- {
- DrawTabStrip_ToolWindow(g);
- }
- }
-
- private void DrawTabStrip_Document(Graphics g)
- {
- int count = Tabs.Count;
- if (count == 0)
- {
- return;
- }
-
- Rectangle rectTabStrip = TabStripRectangle;
-
- // Draw the tabs
- Rectangle rectTabOnly = TabsRectangle;
- Rectangle rectTab = Rectangle.Empty;
- TabVS2005 tabActive = null;
- g.SetClip(DrawHelper.RtlTransform(this, rectTabOnly));
- for (int i = 0; i < count; i++)
- {
- rectTab = GetTabRectangle(i);
- if (Tabs[i].Content == DockPane.ActiveContent)
- {
- tabActive = Tabs[i] as TabVS2005;
- continue;
- }
- if (rectTab.IntersectsWith(rectTabOnly))
- {
- DrawTab(g, Tabs[i] as TabVS2005, rectTab);
- }
- }
-
- g.SetClip(rectTabStrip);
-
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- g.DrawLine(PenDocumentTabActiveBorder, rectTabStrip.Left, rectTabStrip.Top + 1,
- rectTabStrip.Right, rectTabStrip.Top + 1);
- }
- else
- {
- g.DrawLine(PenDocumentTabActiveBorder, rectTabStrip.Left, rectTabStrip.Bottom - 1,
- rectTabStrip.Right, rectTabStrip.Bottom - 1);
- }
-
- g.SetClip(DrawHelper.RtlTransform(this, rectTabOnly));
- if (tabActive != null)
- {
- rectTab = GetTabRectangle(Tabs.IndexOf(tabActive));
- if (rectTab.IntersectsWith(rectTabOnly))
- {
- DrawTab(g, tabActive, rectTab);
- }
- }
- }
-
- private void DrawTabStrip_ToolWindow(Graphics g)
- {
- Rectangle rectTabStrip = TabStripRectangle;
-
- g.DrawLine(PenToolWindowTabBorder, rectTabStrip.Left, rectTabStrip.Top,
- rectTabStrip.Right, rectTabStrip.Top);
-
- for (int i = 0; i < Tabs.Count; i++)
- {
- DrawTab(g, Tabs[i] as TabVS2005, GetTabRectangle(i));
- }
- }
-
- private Rectangle GetTabRectangle(int index)
- {
- if (Appearance == DockPane.AppearanceStyle.ToolWindow)
- {
- return GetTabRectangle_ToolWindow(index);
- }
- else
- {
- return GetTabRectangle_Document(index);
- }
- }
-
- private Rectangle GetTabRectangle_ToolWindow(int index)
- {
- Rectangle rectTabStrip = TabStripRectangle;
-
- TabVS2005 tab = (TabVS2005) Tabs[index];
- return new Rectangle(tab.TabX, rectTabStrip.Y, tab.TabWidth, rectTabStrip.Height);
- }
-
- private Rectangle GetTabRectangle_Document(int index)
- {
- Rectangle rectTabStrip = TabStripRectangle;
- TabVS2005 tab = (TabVS2005) Tabs[index];
-
- Rectangle rect = new Rectangle();
- rect.X = tab.TabX;
- rect.Width = tab.TabWidth;
- rect.Height = rectTabStrip.Height - DocumentTabGapTop;
-
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- rect.Y = rectTabStrip.Y + DocumentStripGapBottom;
- }
- else
- {
- rect.Y = rectTabStrip.Y + DocumentTabGapTop;
- }
-
- return rect;
- }
-
- private void DrawTab(Graphics g, TabVS2005 tab, Rectangle rect)
- {
- if (Appearance == DockPane.AppearanceStyle.ToolWindow)
- {
- DrawTab_ToolWindow(g, tab, rect);
- }
- else
- {
- DrawTab_Document(g, tab, rect);
- }
- }
-
- private GraphicsPath GetTabOutline(Tab tab, bool rtlTransform, bool toScreen)
- {
- if (Appearance == DockPane.AppearanceStyle.ToolWindow)
- {
- return GetTabOutline_ToolWindow(tab, rtlTransform, toScreen);
- }
- else
- {
- return GetTabOutline_Document(tab, rtlTransform, toScreen, false);
- }
- }
-
- private GraphicsPath GetTabOutline_ToolWindow(Tab tab, bool rtlTransform, bool toScreen)
- {
- Rectangle rect = GetTabRectangle(Tabs.IndexOf(tab));
- if (rtlTransform)
- {
- rect = DrawHelper.RtlTransform(this, rect);
- }
- if (toScreen)
- {
- rect = RectangleToScreen(rect);
- }
-
- DrawHelper.GetRoundedCornerTab(GraphicsPath, rect, false);
- return GraphicsPath;
- }
-
- private GraphicsPath GetTabOutline_Document(Tab tab, bool rtlTransform, bool toScreen, bool full)
- {
- int curveSize = 6;
-
- GraphicsPath.Reset();
- Rectangle rect = GetTabRectangle(Tabs.IndexOf(tab));
- if (rtlTransform)
- {
- rect = DrawHelper.RtlTransform(this, rect);
- }
- if (toScreen)
- {
- rect = RectangleToScreen(rect);
- }
-
- // Draws the full angle piece for active content (or first tab)
- if (tab.Content == DockPane.ActiveContent || full || Tabs.IndexOf(tab) == FirstDisplayingTab)
- {
- if (RightToLeft == RightToLeft.Yes)
- {
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- // For some reason the next line draws a line that is not hidden like it is when drawing the tab strip on top.
- // It is not needed so it has been commented out.
- //GraphicsPath.AddLine(rect.Right, rect.Bottom, rect.Right + rect.Height / 2, rect.Bottom);
- GraphicsPath.AddLine(rect.Right + rect.Height / 2, rect.Top,
- rect.Right - rect.Height / 2 + curveSize / 2, rect.Bottom - curveSize / 2);
- }
- else
- {
- GraphicsPath.AddLine(rect.Right, rect.Bottom, rect.Right + rect.Height / 2, rect.Bottom);
- GraphicsPath.AddLine(rect.Right + rect.Height / 2, rect.Bottom,
- rect.Right - rect.Height / 2 + curveSize / 2, rect.Top + curveSize / 2);
- }
- }
- else
- {
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- // For some reason the next line draws a line that is not hidden like it is when drawing the tab strip on top.
- // It is not needed so it has been commented out.
- //GraphicsPath.AddLine(rect.Left, rect.Top, rect.Left - rect.Height / 2, rect.Top);
- GraphicsPath.AddLine(rect.Left - rect.Height / 2, rect.Top,
- rect.Left + rect.Height / 2 - curveSize / 2, rect.Bottom - curveSize / 2);
- }
- else
- {
- GraphicsPath.AddLine(rect.Left, rect.Bottom, rect.Left - rect.Height / 2, rect.Bottom);
- GraphicsPath.AddLine(rect.Left - rect.Height / 2, rect.Bottom,
- rect.Left + rect.Height / 2 - curveSize / 2, rect.Top + curveSize / 2);
- }
- }
- }
- // Draws the partial angle for non-active content
- else
- {
- if (RightToLeft == RightToLeft.Yes)
- {
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- GraphicsPath.AddLine(rect.Right, rect.Top, rect.Right, rect.Top + rect.Height / 2);
- GraphicsPath.AddLine(rect.Right, rect.Top + rect.Height / 2,
- rect.Right - rect.Height / 2 + curveSize / 2, rect.Bottom - curveSize / 2);
- }
- else
- {
- GraphicsPath.AddLine(rect.Right, rect.Bottom, rect.Right, rect.Bottom - rect.Height / 2);
- GraphicsPath.AddLine(rect.Right, rect.Bottom - rect.Height / 2,
- rect.Right - rect.Height / 2 + curveSize / 2, rect.Top + curveSize / 2);
- }
- }
- else
- {
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- GraphicsPath.AddLine(rect.Left, rect.Top, rect.Left, rect.Top + rect.Height / 2);
- GraphicsPath.AddLine(rect.Left, rect.Top + rect.Height / 2,
- rect.Left + rect.Height / 2 - curveSize / 2, rect.Bottom - curveSize / 2);
- }
- else
- {
- GraphicsPath.AddLine(rect.Left, rect.Bottom, rect.Left, rect.Bottom - rect.Height / 2);
- GraphicsPath.AddLine(rect.Left, rect.Bottom - rect.Height / 2,
- rect.Left + rect.Height / 2 - curveSize / 2, rect.Top + curveSize / 2);
- }
- }
- }
-
- if (RightToLeft == RightToLeft.Yes)
- {
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- // Draws the bottom horizontal line (short side)
- GraphicsPath.AddLine(rect.Right - rect.Height / 2 - curveSize / 2, rect.Bottom,
- rect.Left + curveSize / 2, rect.Bottom);
-
- // Drawing the rounded corner is not necessary. The path is automatically connected
- //GraphicsPath.AddArc(new Rectangle(rect.Left, rect.Top, curveSize, curveSize), 180, 90);
- }
- else
- {
- // Draws the bottom horizontal line (short side)
- GraphicsPath.AddLine(rect.Right - rect.Height / 2 - curveSize / 2, rect.Top,
- rect.Left + curveSize / 2, rect.Top);
- GraphicsPath.AddArc(new Rectangle(rect.Left, rect.Top, curveSize, curveSize), 180, 90);
- }
- }
- else
- {
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- // Draws the bottom horizontal line (short side)
- GraphicsPath.AddLine(rect.Left + rect.Height / 2 + curveSize / 2, rect.Bottom,
- rect.Right - curveSize / 2, rect.Bottom);
-
- // Drawing the rounded corner is not necessary. The path is automatically connected
- //GraphicsPath.AddArc(new Rectangle(rect.Right - curveSize, rect.Bottom, curveSize, curveSize), 90, -90);
- }
- else
- {
- // Draws the top horizontal line (short side)
- GraphicsPath.AddLine(rect.Left + rect.Height / 2 + curveSize / 2, rect.Top,
- rect.Right - curveSize / 2, rect.Top);
-
- // Draws the rounded corner oppposite the angled side
- GraphicsPath.AddArc(new Rectangle(rect.Right - curveSize, rect.Top, curveSize, curveSize), -90, 90);
- }
- }
-
- if (Tabs.IndexOf(tab) != EndDisplayingTab && Tabs.IndexOf(tab) != Tabs.Count - 1 &&
- Tabs[Tabs.IndexOf(tab) + 1].Content == DockPane.ActiveContent && !full)
- {
- if (RightToLeft == RightToLeft.Yes)
- {
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- GraphicsPath.AddLine(rect.Left, rect.Bottom - curveSize / 2, rect.Left,
- rect.Bottom - rect.Height / 2);
- GraphicsPath.AddLine(rect.Left, rect.Bottom - rect.Height / 2, rect.Left + rect.Height / 2,
- rect.Top);
- }
- else
- {
- GraphicsPath.AddLine(rect.Left, rect.Top + curveSize / 2, rect.Left,
- rect.Top + rect.Height / 2);
- GraphicsPath.AddLine(rect.Left, rect.Top + rect.Height / 2, rect.Left + rect.Height / 2,
- rect.Bottom);
- }
- }
- else
- {
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- GraphicsPath.AddLine(rect.Right, rect.Bottom - curveSize / 2, rect.Right,
- rect.Bottom - rect.Height / 2);
- GraphicsPath.AddLine(rect.Right, rect.Bottom - rect.Height / 2, rect.Right - rect.Height / 2,
- rect.Top);
- }
- else
- {
- GraphicsPath.AddLine(rect.Right, rect.Top + curveSize / 2, rect.Right,
- rect.Top + rect.Height / 2);
- GraphicsPath.AddLine(rect.Right, rect.Top + rect.Height / 2, rect.Right - rect.Height / 2,
- rect.Bottom);
- }
- }
- }
- else
- {
- // Draw the vertical line opposite the angled side
- if (RightToLeft == RightToLeft.Yes)
- {
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- GraphicsPath.AddLine(rect.Left, rect.Bottom - curveSize / 2, rect.Left, rect.Top);
- }
- else
- {
- GraphicsPath.AddLine(rect.Left, rect.Top + curveSize / 2, rect.Left, rect.Bottom);
- }
- }
- else
- {
- if (DockPane.DockPanel.DocumentTabStripLocation == DocumentTabStripLocation.Bottom)
- {
- GraphicsPath.AddLine(rect.Right, rect.Bottom - curveSize / 2, rect.Right, rect.Top);
- }
- else
- {
- GraphicsPath.AddLine(rect.Right, rect.Top + curveSize / 2, rect.Right, rect.Bottom);
- }
- }
- }
-
- return GraphicsPath;
- }
-
- private void DrawTab_ToolWindow(Graphics g, TabVS2005 tab, Rectangle rect)
- {
- Rectangle rectIcon = new Rectangle(
- rect.X + ToolWindowImageGapLeft,
- rect.Y + rect.Height - 1 - ToolWindowImageGapBottom - ToolWindowImageHeight,
- ToolWindowImageWidth, ToolWindowImageHeight);
- Rectangle rectText = rectIcon;
- rectText.X += rectIcon.Width + ToolWindowImageGapRight;
- rectText.Width = rect.Width - rectIcon.Width - ToolWindowImageGapLeft -
- ToolWindowImageGapRight - ToolWindowTextGapRight;
-
- Rectangle rectTab = DrawHelper.RtlTransform(this, rect);
- rectText = DrawHelper.RtlTransform(this, rectText);
- rectIcon = DrawHelper.RtlTransform(this, rectIcon);
- GraphicsPath path = GetTabOutline(tab, true, false);
- if (DockPane.ActiveContent == tab.Content)
- {
- Color startColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveTabGradient
- .StartColor;
- Color endColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveTabGradient
- .EndColor;
- LinearGradientMode gradientMode = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient
- .ActiveTabGradient.LinearGradientMode;
- g.FillPath(new LinearGradientBrush(rectTab, startColor, endColor, gradientMode), path);
- g.DrawPath(PenToolWindowTabBorder, path);
-
- Color textColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.ActiveTabGradient
- .TextColor;
- TextRenderer.DrawText(g, tab.Content.DockHandler.TabText, TextFont, rectText, textColor,
- ToolWindowTextFormat);
- }
- else
- {
- Color startColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.InactiveTabGradient
- .StartColor;
- Color endColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.InactiveTabGradient
- .EndColor;
- LinearGradientMode gradientMode = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient
- .InactiveTabGradient.LinearGradientMode;
- g.FillPath(new LinearGradientBrush(rectTab, startColor, endColor, gradientMode), path);
-
- if (Tabs.IndexOf(DockPane.ActiveContent) != Tabs.IndexOf(tab) + 1)
- {
- Point pt1 = new Point(rect.Right, rect.Top + ToolWindowTabSeperatorGapTop);
- Point pt2 = new Point(rect.Right, rect.Bottom - ToolWindowTabSeperatorGapBottom);
- g.DrawLine(PenToolWindowTabBorder, DrawHelper.RtlTransform(this, pt1),
- DrawHelper.RtlTransform(this, pt2));
- }
-
- Color textColor = DockPane.DockPanel.Skin.DockPaneStripSkin.ToolWindowGradient.InactiveTabGradient
- .TextColor;
- TextRenderer.DrawText(g, tab.Content.DockHandler.TabText, TextFont, rectText, textColor,
- ToolWindowTextFormat);
- }
-
- if (rectTab.Contains(rectIcon))
- {
- g.DrawIcon(tab.Content.DockHandler.Icon, rectIcon);
- }
- }
-
- private void DrawTab_Document(Graphics g, TabVS2005 tab, Rectangle rect)
- {
- if (tab.TabWidth == 0)
- {
- return;
- }
-
- Rectangle rectIcon = new Rectangle(
- rect.X + DocumentIconGapLeft,
- rect.Y + rect.Height - 1 - DocumentIconGapBottom - DocumentIconHeight,
- DocumentIconWidth, DocumentIconHeight);
- Rectangle rectText = rectIcon;
- if (DockPane.DockPanel.ShowDocumentIcon)
- {
- rectText.X += rectIcon.Width + DocumentIconGapRight;
- rectText.Y = rect.Y;
- rectText.Width = rect.Width - rectIcon.Width - DocumentIconGapLeft -
- DocumentIconGapRight - DocumentTextGapRight;
- rectText.Height = rect.Height;
- }
- else
- {
- rectText.Width = rect.Width - DocumentIconGapLeft - DocumentTextGapRight;
- }
-
- Rectangle rectTab = DrawHelper.RtlTransform(this, rect);
- Rectangle rectBack = DrawHelper.RtlTransform(this, rect);
- rectBack.Width += rect.X;
- rectBack.X = 0;
-
- rectText = DrawHelper.RtlTransform(this, rectText);
- rectIcon = DrawHelper.RtlTransform(this, rectIcon);
- GraphicsPath path = GetTabOutline(tab, true, false);
- if (DockPane.ActiveContent == tab.Content)
- {
- Color startColor = DockPane.DockPanel.Skin.DockPaneStripSkin.DocumentGradient.ActiveTabGradient
- .StartColor;
- Color endColor = DockPane.DockPanel.Skin.DockPaneStripSkin.DocumentGradient.ActiveTabGradient.EndColor;
- LinearGradientMode gradientMode = DockPane.DockPanel.Skin.DockPaneStripSkin.DocumentGradient
- .ActiveTabGradient.LinearGradientMode;
- g.FillPath(new LinearGradientBrush(rectBack, startColor, endColor, gradientMode), path);
- g.DrawPath(PenDocumentTabActiveBorder, path);
-
- Color textColor = DockPane.DockPanel.Skin.DockPaneStripSkin.DocumentGradient.ActiveTabGradient
- .TextColor;
- if (DockPane.IsActiveDocumentPane)
- {
- TextRenderer.DrawText(g, tab.Content.DockHandler.TabText, BoldFont, rectText, textColor,
- DocumentTextFormat);
- }
- else
- {
- TextRenderer.DrawText(g, tab.Content.DockHandler.TabText, TextFont, rectText, textColor,
- DocumentTextFormat);
- }
- }
- else
- {
- Color startColor = DockPane.DockPanel.Skin.DockPaneStripSkin.DocumentGradient.InactiveTabGradient
- .StartColor;
- Color endColor = DockPane.DockPanel.Skin.DockPaneStripSkin.DocumentGradient.InactiveTabGradient
- .EndColor;
- LinearGradientMode gradientMode = DockPane.DockPanel.Skin.DockPaneStripSkin.DocumentGradient
- .InactiveTabGradient.LinearGradientMode;
- g.FillPath(new LinearGradientBrush(rectBack, startColor, endColor, gradientMode), path);
- g.DrawPath(PenDocumentTabInactiveBorder, path);
-
- Color textColor = DockPane.DockPanel.Skin.DockPaneStripSkin.DocumentGradient.InactiveTabGradient
- .TextColor;
- TextRenderer.DrawText(g, tab.Content.DockHandler.TabText, TextFont, rectText, textColor,
- DocumentTextFormat);
- }
-
- if (rectTab.Contains(rectIcon) && DockPane.DockPanel.ShowDocumentIcon)
- {
- g.DrawIcon(tab.Content.DockHandler.Icon, rectIcon);
- }
- }
-
- private void SetInertButtons()
- {
- if (Appearance == DockPane.AppearanceStyle.ToolWindow)
- {
- if (m_buttonClose != null)
- {
- m_buttonClose.Left = -m_buttonClose.Width;
- }
-
- if (m_buttonWindowList != null)
- {
- m_buttonWindowList.Left = -m_buttonWindowList.Width;
- }
- }
- else
- {
- ButtonClose.Enabled = DockPane.ActiveContent == null
- ? true
- : DockPane.ActiveContent.DockHandler.CloseButton;
- m_closeButtonVisible = DockPane.ActiveContent == null
- ? true
- : DockPane.ActiveContent.DockHandler.CloseButtonVisible;
- ButtonClose.Visible = m_closeButtonVisible;
- ButtonClose.RefreshChanges();
- ButtonWindowList.RefreshChanges();
- }
- }
-
- private void LayoutButtons()
- {
- Rectangle rectTabStrip = TabStripRectangle;
-
- // Set position and size of the buttons
- int buttonWidth = ButtonClose.Image.Width;
- int buttonHeight = ButtonClose.Image.Height;
- int height = rectTabStrip.Height - DocumentButtonGapTop - DocumentButtonGapBottom;
- if (buttonHeight < height)
- {
- buttonWidth = buttonWidth * (height / buttonHeight);
- buttonHeight = height;
- }
- Size buttonSize = new Size(buttonWidth, buttonHeight);
-
- int x = rectTabStrip.X + rectTabStrip.Width - DocumentTabGapLeft
- - DocumentButtonGapRight - buttonWidth;
- int y = rectTabStrip.Y + DocumentButtonGapTop;
- Point point = new Point(x, y);
- ButtonClose.Bounds = DrawHelper.RtlTransform(this, new Rectangle(point, buttonSize));
-
- // If the close button is not visible draw the window list button overtop.
- // Otherwise it is drawn to the left of the close button.
- if (m_closeButtonVisible)
- {
- point.Offset(-(DocumentButtonGapBetween + buttonWidth), 0);
- }
-
- ButtonWindowList.Bounds = DrawHelper.RtlTransform(this, new Rectangle(point, buttonSize));
- }
-
- #endregion
-
- #region Events handler
-
- private void WindowList_Click(object sender, EventArgs e)
- {
- int x = 0;
- int y = ButtonWindowList.Location.Y + ButtonWindowList.Height;
-
- SelectMenu.Items.Clear();
- foreach (TabVS2005 tab in Tabs)
- {
- IDockContent content = tab.Content;
- ToolStripItem item =
- SelectMenu.Items.Add(content.DockHandler.TabText, content.DockHandler.Icon.ToBitmap());
- item.Tag = tab.Content;
- item.Click += new EventHandler(ContextMenuItem_Click);
- }
- SelectMenu.Show(ButtonWindowList, x, y);
- }
-
- private void ContextMenuItem_Click(object sender, EventArgs e)
- {
- ToolStripMenuItem item = sender as ToolStripMenuItem;
- if (item != null)
- {
- IDockContent content = (IDockContent) item.Tag;
- DockPane.ActiveContent = content;
- }
- }
-
- private void Close_Click(object sender, EventArgs e)
- {
- DockPane.CloseActiveContent();
- }
-
- #endregion
-
- private class TabVS2005 : Tab
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- public TabVS2005(IDockContent content)
- : base(content)
- {
- }
-
- #endregion
-
- #region Properties
-
- public int TabX { get; set; }
-
- public int TabWidth { get; set; }
-
- public int MaxWidth { get; set; }
-
- protected internal bool Flag { get; set; }
-
- #endregion
- }
-
- private sealed class InertButton : InertButtonBase
- {
- #region Fields
-
- private readonly Bitmap m_image0;
- private readonly Bitmap m_image1;
-
- private int m_imageCategory = 0;
-
- #endregion
-
- #region cTor
-
- public InertButton(Bitmap image0, Bitmap image1)
- : base()
- {
- m_image0 = image0;
- m_image1 = image1;
- }
-
- #endregion
-
- #region Properties
-
- public int ImageCategory
- {
- get { return m_imageCategory; }
- set
- {
- if (m_imageCategory == value)
- {
- return;
- }
-
- m_imageCategory = value;
- Invalidate();
- }
- }
-
- public override Bitmap Image
- {
- get { return ImageCategory == 0 ? m_image0 : m_image1; }
- }
-
- #endregion
- }
-
- #region Constants
-
- private const int _ToolWindowStripGapTop = 0;
- private const int _ToolWindowStripGapBottom = 1;
- private const int _ToolWindowStripGapLeft = 0;
- private const int _ToolWindowStripGapRight = 0;
- private const int _ToolWindowImageHeight = 16;
- private const int _ToolWindowImageWidth = 16;
- private const int _ToolWindowImageGapTop = 3;
- private const int _ToolWindowImageGapBottom = 1;
- private const int _ToolWindowImageGapLeft = 2;
- private const int _ToolWindowImageGapRight = 0;
- private const int _ToolWindowTextGapRight = 3;
- private const int _ToolWindowTabSeperatorGapTop = 3;
- private const int _ToolWindowTabSeperatorGapBottom = 3;
-
- private const int _DocumentStripGapTop = 0;
- private const int _DocumentStripGapBottom = 1;
- private const int _DocumentTabMaxWidth = 200;
- private const int _DocumentButtonGapTop = 4;
- private const int _DocumentButtonGapBottom = 4;
- private const int _DocumentButtonGapBetween = 0;
- private const int _DocumentButtonGapRight = 3;
- private const int _DocumentTabGapTop = 3;
- private const int _DocumentTabGapLeft = 3;
- private const int _DocumentTabGapRight = 3;
- private const int _DocumentIconGapBottom = 2;
- private const int _DocumentIconGapLeft = 8;
- private const int _DocumentIconGapRight = 0;
- private const int _DocumentIconHeight = 16;
- private const int _DocumentIconWidth = 16;
- private const int _DocumentTextGapRight = 3;
-
- #endregion
-
- #region Members
-
- private static Bitmap m_imageButtonClose;
- private InertButton m_buttonClose;
- private static Bitmap m_imageButtonWindowList;
- private static Bitmap m_imageButtonWindowListOverflow;
- private InertButton m_buttonWindowList;
- private readonly ToolTip m_toolTip;
- private Font m_font;
- private Font m_boldFont;
- private int m_startDisplayingTab = 0;
- private bool m_documentTabsOverflow = false;
- private static string m_toolTipSelect;
- private static string m_toolTipClose;
- private bool m_closeButtonVisible = false;
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/VisibleNestedPaneCollection.cs b/src/WinFormsUI/Docking/VisibleNestedPaneCollection.cs
deleted file mode 100644
index 864915d3..00000000
--- a/src/WinFormsUI/Docking/VisibleNestedPaneCollection.cs
+++ /dev/null
@@ -1,203 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.Drawing;
-using System.Windows.Forms;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- public sealed class VisibleNestedPaneCollection : ReadOnlyCollection
- {
- #region Fields
-
- #endregion
-
- #region cTor
-
- internal VisibleNestedPaneCollection(NestedPaneCollection nestedPanes)
- : base(new List())
- {
- NestedPanes = nestedPanes;
- }
-
- #endregion
-
- #region Properties
-
- public NestedPaneCollection NestedPanes { get; }
-
- public INestedPanesContainer Container
- {
- get { return NestedPanes.Container; }
- }
-
- public DockState DockState
- {
- get { return NestedPanes.DockState; }
- }
-
- public bool IsFloat
- {
- get { return NestedPanes.IsFloat; }
- }
-
- #endregion
-
- #region Internals
-
- internal void Refresh()
- {
- Items.Clear();
- for (int i = 0; i < NestedPanes.Count; i++)
- {
- DockPane pane = NestedPanes[i];
- NestedDockingStatus status = pane.NestedDockingStatus;
- status.SetDisplayingStatus(true, status.PreviousPane, status.Alignment, status.Proportion);
- Items.Add(pane);
- }
-
- foreach (DockPane pane in NestedPanes)
- {
- if (pane.DockState != DockState || pane.IsHidden)
- {
- pane.Bounds = Rectangle.Empty;
- pane.SplitterBounds = Rectangle.Empty;
- Remove(pane);
- }
- }
-
- CalculateBounds();
-
- foreach (DockPane pane in this)
- {
- NestedDockingStatus status = pane.NestedDockingStatus;
- pane.Bounds = status.PaneBounds;
- pane.SplitterBounds = status.SplitterBounds;
- pane.SplitterAlignment = status.Alignment;
- }
- }
-
- #endregion
-
- #region Private Methods
-
- private void Remove(DockPane pane)
- {
- if (!Contains(pane))
- {
- return;
- }
-
- NestedDockingStatus statusPane = pane.NestedDockingStatus;
- DockPane lastNestedPane = null;
- for (int i = Count - 1; i > IndexOf(pane); i--)
- {
- if (this[i].NestedDockingStatus.PreviousPane == pane)
- {
- lastNestedPane = this[i];
- break;
- }
- }
-
- if (lastNestedPane != null)
- {
- int indexLastNestedPane = IndexOf(lastNestedPane);
- Items.Remove(lastNestedPane);
- Items[IndexOf(pane)] = lastNestedPane;
- NestedDockingStatus lastNestedDock = lastNestedPane.NestedDockingStatus;
- lastNestedDock.SetDisplayingStatus(true, statusPane.DisplayingPreviousPane,
- statusPane.DisplayingAlignment, statusPane.DisplayingProportion);
- for (int i = indexLastNestedPane - 1; i > IndexOf(lastNestedPane); i--)
- {
- NestedDockingStatus status = this[i].NestedDockingStatus;
- if (status.PreviousPane == pane)
- {
- status.SetDisplayingStatus(true, lastNestedPane, status.DisplayingAlignment,
- status.DisplayingProportion);
- }
- }
- }
- else
- {
- Items.Remove(pane);
- }
-
- statusPane.SetDisplayingStatus(false, null, DockAlignment.Left, 0.5);
- }
-
- private void CalculateBounds()
- {
- if (Count == 0)
- {
- return;
- }
-
- this[0].NestedDockingStatus.SetDisplayingBounds(Container.DisplayingRectangle,
- Container.DisplayingRectangle, Rectangle.Empty);
-
- for (int i = 1; i < Count; i++)
- {
- DockPane pane = this[i];
- NestedDockingStatus status = pane.NestedDockingStatus;
- DockPane prevPane = status.DisplayingPreviousPane;
- NestedDockingStatus statusPrev = prevPane.NestedDockingStatus;
-
- Rectangle rect = statusPrev.PaneBounds;
- bool bVerticalSplitter = status.DisplayingAlignment == DockAlignment.Left ||
- status.DisplayingAlignment == DockAlignment.Right;
-
- Rectangle rectThis = rect;
- Rectangle rectPrev = rect;
- Rectangle rectSplitter = rect;
- if (status.DisplayingAlignment == DockAlignment.Left)
- {
- rectThis.Width = (int) ((double) rect.Width * status.DisplayingProportion) -
- Measures.SplitterSize / 2;
- rectSplitter.X = rectThis.X + rectThis.Width;
- rectSplitter.Width = Measures.SplitterSize;
- rectPrev.X = rectSplitter.X + rectSplitter.Width;
- rectPrev.Width = rect.Width - rectThis.Width - rectSplitter.Width;
- }
- else if (status.DisplayingAlignment == DockAlignment.Right)
- {
- rectPrev.Width = rect.Width - (int) ((double) rect.Width * status.DisplayingProportion) -
- Measures.SplitterSize / 2;
- rectSplitter.X = rectPrev.X + rectPrev.Width;
- rectSplitter.Width = Measures.SplitterSize;
- rectThis.X = rectSplitter.X + rectSplitter.Width;
- rectThis.Width = rect.Width - rectPrev.Width - rectSplitter.Width;
- }
- else if (status.DisplayingAlignment == DockAlignment.Top)
- {
- rectThis.Height = (int) ((double) rect.Height * status.DisplayingProportion) -
- Measures.SplitterSize / 2;
- rectSplitter.Y = rectThis.Y + rectThis.Height;
- rectSplitter.Height = Measures.SplitterSize;
- rectPrev.Y = rectSplitter.Y + rectSplitter.Height;
- rectPrev.Height = rect.Height - rectThis.Height - rectSplitter.Height;
- }
- else if (status.DisplayingAlignment == DockAlignment.Bottom)
- {
- rectPrev.Height = rect.Height - (int) ((double) rect.Height * status.DisplayingProportion) -
- Measures.SplitterSize / 2;
- rectSplitter.Y = rectPrev.Y + rectPrev.Height;
- rectSplitter.Height = Measures.SplitterSize;
- rectThis.Y = rectSplitter.Y + rectSplitter.Height;
- rectThis.Height = rect.Height - rectPrev.Height - rectSplitter.Height;
- }
- else
- {
- rectThis = Rectangle.Empty;
- }
-
- rectSplitter.Intersect(rect);
- rectThis.Intersect(rect);
- rectPrev.Intersect(rect);
- status.SetDisplayingBounds(rect, rectThis, rectSplitter);
- statusPrev.SetDisplayingBounds(statusPrev.LogicalBounds, rectPrev, statusPrev.SplitterBounds);
- }
- }
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Win32/Enums.cs b/src/WinFormsUI/Docking/Win32/Enums.cs
deleted file mode 100644
index bf80c4b4..00000000
--- a/src/WinFormsUI/Docking/Win32/Enums.cs
+++ /dev/null
@@ -1,369 +0,0 @@
-using System;
-
-namespace WeifenLuo.WinFormsUI.Docking.Win32
-{
- [Flags]
- internal enum FlagsSetWindowPos : uint
- {
- SWP_NOSIZE = 0x0001,
- SWP_NOMOVE = 0x0002,
- SWP_NOZORDER = 0x0004,
- SWP_NOREDRAW = 0x0008,
- SWP_NOACTIVATE = 0x0010,
- SWP_FRAMECHANGED = 0x0020,
- SWP_SHOWWINDOW = 0x0040,
- SWP_HIDEWINDOW = 0x0080,
- SWP_NOCOPYBITS = 0x0100,
- SWP_NOOWNERZORDER = 0x0200,
- SWP_NOSENDCHANGING = 0x0400,
- SWP_DRAWFRAME = 0x0020,
- SWP_NOREPOSITION = 0x0200,
- SWP_DEFERERASE = 0x2000,
- SWP_ASYNCWINDOWPOS = 0x4000
- }
-
- internal enum ShowWindowStyles : short
- {
- SW_HIDE = 0,
- SW_SHOWNORMAL = 1,
- SW_NORMAL = 1,
- SW_SHOWMINIMIZED = 2,
- SW_SHOWMAXIMIZED = 3,
- SW_MAXIMIZE = 3,
- SW_SHOWNOACTIVATE = 4,
- SW_SHOW = 5,
- SW_MINIMIZE = 6,
- SW_SHOWMINNOACTIVE = 7,
- SW_SHOWNA = 8,
- SW_RESTORE = 9,
- SW_SHOWDEFAULT = 10,
- SW_FORCEMINIMIZE = 11,
- SW_MAX = 11
- }
-
- internal enum WindowStyles : uint
- {
- WS_OVERLAPPED = 0x00000000,
- WS_POPUP = 0x80000000,
- WS_CHILD = 0x40000000,
- WS_MINIMIZE = 0x20000000,
- WS_VISIBLE = 0x10000000,
- WS_DISABLED = 0x08000000,
- WS_CLIPSIBLINGS = 0x04000000,
- WS_CLIPCHILDREN = 0x02000000,
- WS_MAXIMIZE = 0x01000000,
- WS_CAPTION = 0x00C00000,
- WS_BORDER = 0x00800000,
- WS_DLGFRAME = 0x00400000,
- WS_VSCROLL = 0x00200000,
- WS_HSCROLL = 0x00100000,
- WS_SYSMENU = 0x00080000,
- WS_THICKFRAME = 0x00040000,
- WS_GROUP = 0x00020000,
- WS_TABSTOP = 0x00010000,
- WS_MINIMIZEBOX = 0x00020000,
- WS_MAXIMIZEBOX = 0x00010000,
- WS_TILED = 0x00000000,
- WS_ICONIC = 0x20000000,
- WS_SIZEBOX = 0x00040000,
- WS_POPUPWINDOW = 0x80880000,
- WS_OVERLAPPEDWINDOW = 0x00CF0000,
- WS_TILEDWINDOW = 0x00CF0000,
- WS_CHILDWINDOW = 0x40000000
- }
-
- internal enum WindowExStyles
- {
- WS_EX_DLGMODALFRAME = 0x00000001,
- WS_EX_NOPARENTNOTIFY = 0x00000004,
- WS_EX_TOPMOST = 0x00000008,
- WS_EX_ACCEPTFILES = 0x00000010,
- WS_EX_TRANSPARENT = 0x00000020,
- WS_EX_MDICHILD = 0x00000040,
- WS_EX_TOOLWINDOW = 0x00000080,
- WS_EX_WINDOWEDGE = 0x00000100,
- WS_EX_CLIENTEDGE = 0x00000200,
- WS_EX_CONTEXTHELP = 0x00000400,
- WS_EX_RIGHT = 0x00001000,
- WS_EX_LEFT = 0x00000000,
- WS_EX_RTLREADING = 0x00002000,
- WS_EX_LTRREADING = 0x00000000,
- WS_EX_LEFTSCROLLBAR = 0x00004000,
- WS_EX_RIGHTSCROLLBAR = 0x00000000,
- WS_EX_CONTROLPARENT = 0x00010000,
- WS_EX_STATICEDGE = 0x00020000,
- WS_EX_APPWINDOW = 0x00040000,
- WS_EX_OVERLAPPEDWINDOW = 0x00000300,
- WS_EX_PALETTEWINDOW = 0x00000188,
- WS_EX_LAYERED = 0x00080000
- }
-
- internal enum Msgs
- {
- WM_NULL = 0x0000,
- WM_CREATE = 0x0001,
- WM_DESTROY = 0x0002,
- WM_MOVE = 0x0003,
- WM_SIZE = 0x0005,
- WM_ACTIVATE = 0x0006,
- WM_SETFOCUS = 0x0007,
- WM_KILLFOCUS = 0x0008,
- WM_ENABLE = 0x000A,
- WM_SETREDRAW = 0x000B,
- WM_SETTEXT = 0x000C,
- WM_GETTEXT = 0x000D,
- WM_GETTEXTLENGTH = 0x000E,
- WM_PAINT = 0x000F,
- WM_CLOSE = 0x0010,
- WM_QUERYENDSESSION = 0x0011,
- WM_QUIT = 0x0012,
- WM_QUERYOPEN = 0x0013,
- WM_ERASEBKGND = 0x0014,
- WM_SYSCOLORCHANGE = 0x0015,
- WM_ENDSESSION = 0x0016,
- WM_SHOWWINDOW = 0x0018,
- WM_WININICHANGE = 0x001A,
- WM_SETTINGCHANGE = 0x001A,
- WM_DEVMODECHANGE = 0x001B,
- WM_ACTIVATEAPP = 0x001C,
- WM_FONTCHANGE = 0x001D,
- WM_TIMECHANGE = 0x001E,
- WM_CANCELMODE = 0x001F,
- WM_SETCURSOR = 0x0020,
- WM_MOUSEACTIVATE = 0x0021,
- WM_CHILDACTIVATE = 0x0022,
- WM_QUEUESYNC = 0x0023,
- WM_GETMINMAXINFO = 0x0024,
- WM_PAINTICON = 0x0026,
- WM_ICONERASEBKGND = 0x0027,
- WM_NEXTDLGCTL = 0x0028,
- WM_SPOOLERSTATUS = 0x002A,
- WM_DRAWITEM = 0x002B,
- WM_MEASUREITEM = 0x002C,
- WM_DELETEITEM = 0x002D,
- WM_VKEYTOITEM = 0x002E,
- WM_CHARTOITEM = 0x002F,
- WM_SETFONT = 0x0030,
- WM_GETFONT = 0x0031,
- WM_SETHOTKEY = 0x0032,
- WM_GETHOTKEY = 0x0033,
- WM_QUERYDRAGICON = 0x0037,
- WM_COMPAREITEM = 0x0039,
- WM_GETOBJECT = 0x003D,
- WM_COMPACTING = 0x0041,
- WM_COMMNOTIFY = 0x0044,
- WM_WINDOWPOSCHANGING = 0x0046,
- WM_WINDOWPOSCHANGED = 0x0047,
- WM_POWER = 0x0048,
- WM_COPYDATA = 0x004A,
- WM_CANCELJOURNAL = 0x004B,
- WM_NOTIFY = 0x004E,
- WM_INPUTLANGCHANGEREQUEST = 0x0050,
- WM_INPUTLANGCHANGE = 0x0051,
- WM_TCARD = 0x0052,
- WM_HELP = 0x0053,
- WM_USERCHANGED = 0x0054,
- WM_NOTIFYFORMAT = 0x0055,
- WM_CONTEXTMENU = 0x007B,
- WM_STYLECHANGING = 0x007C,
- WM_STYLECHANGED = 0x007D,
- WM_DISPLAYCHANGE = 0x007E,
- WM_GETICON = 0x007F,
- WM_SETICON = 0x0080,
- WM_NCCREATE = 0x0081,
- WM_NCDESTROY = 0x0082,
- WM_NCCALCSIZE = 0x0083,
- WM_NCHITTEST = 0x0084,
- WM_NCPAINT = 0x0085,
- WM_NCACTIVATE = 0x0086,
- WM_GETDLGCODE = 0x0087,
- WM_SYNCPAINT = 0x0088,
- WM_NCMOUSEMOVE = 0x00A0,
- WM_NCLBUTTONDOWN = 0x00A1,
- WM_NCLBUTTONUP = 0x00A2,
- WM_NCLBUTTONDBLCLK = 0x00A3,
- WM_NCRBUTTONDOWN = 0x00A4,
- WM_NCRBUTTONUP = 0x00A5,
- WM_NCRBUTTONDBLCLK = 0x00A6,
- WM_NCMBUTTONDOWN = 0x00A7,
- WM_NCMBUTTONUP = 0x00A8,
- WM_NCMBUTTONDBLCLK = 0x00A9,
- WM_KEYDOWN = 0x0100,
- WM_KEYUP = 0x0101,
- WM_CHAR = 0x0102,
- WM_DEADCHAR = 0x0103,
- WM_SYSKEYDOWN = 0x0104,
- WM_SYSKEYUP = 0x0105,
- WM_SYSCHAR = 0x0106,
- WM_SYSDEADCHAR = 0x0107,
- WM_KEYLAST = 0x0108,
- WM_IME_STARTCOMPOSITION = 0x010D,
- WM_IME_ENDCOMPOSITION = 0x010E,
- WM_IME_COMPOSITION = 0x010F,
- WM_IME_KEYLAST = 0x010F,
- WM_INITDIALOG = 0x0110,
- WM_COMMAND = 0x0111,
- WM_SYSCOMMAND = 0x0112,
- WM_TIMER = 0x0113,
- WM_HSCROLL = 0x0114,
- WM_VSCROLL = 0x0115,
- WM_INITMENU = 0x0116,
- WM_INITMENUPOPUP = 0x0117,
- WM_MENUSELECT = 0x011F,
- WM_MENUCHAR = 0x0120,
- WM_ENTERIDLE = 0x0121,
- WM_MENURBUTTONUP = 0x0122,
- WM_MENUDRAG = 0x0123,
- WM_MENUGETOBJECT = 0x0124,
- WM_UNINITMENUPOPUP = 0x0125,
- WM_MENUCOMMAND = 0x0126,
- WM_CTLCOLORMSGBOX = 0x0132,
- WM_CTLCOLOREDIT = 0x0133,
- WM_CTLCOLORLISTBOX = 0x0134,
- WM_CTLCOLORBTN = 0x0135,
- WM_CTLCOLORDLG = 0x0136,
- WM_CTLCOLORSCROLLBAR = 0x0137,
- WM_CTLCOLORSTATIC = 0x0138,
- WM_MOUSEMOVE = 0x0200,
- WM_LBUTTONDOWN = 0x0201,
- WM_LBUTTONUP = 0x0202,
- WM_LBUTTONDBLCLK = 0x0203,
- WM_RBUTTONDOWN = 0x0204,
- WM_RBUTTONUP = 0x0205,
- WM_RBUTTONDBLCLK = 0x0206,
- WM_MBUTTONDOWN = 0x0207,
- WM_MBUTTONUP = 0x0208,
- WM_MBUTTONDBLCLK = 0x0209,
- WM_MOUSEWHEEL = 0x020A,
- WM_PARENTNOTIFY = 0x0210,
- WM_ENTERMENULOOP = 0x0211,
- WM_EXITMENULOOP = 0x0212,
- WM_NEXTMENU = 0x0213,
- WM_SIZING = 0x0214,
- WM_CAPTURECHANGED = 0x0215,
- WM_MOVING = 0x0216,
- WM_DEVICECHANGE = 0x0219,
- WM_MDICREATE = 0x0220,
- WM_MDIDESTROY = 0x0221,
- WM_MDIACTIVATE = 0x0222,
- WM_MDIRESTORE = 0x0223,
- WM_MDINEXT = 0x0224,
- WM_MDIMAXIMIZE = 0x0225,
- WM_MDITILE = 0x0226,
- WM_MDICASCADE = 0x0227,
- WM_MDIICONARRANGE = 0x0228,
- WM_MDIGETACTIVE = 0x0229,
- WM_MDISETMENU = 0x0230,
- WM_ENTERSIZEMOVE = 0x0231,
- WM_EXITSIZEMOVE = 0x0232,
- WM_DROPFILES = 0x0233,
- WM_MDIREFRESHMENU = 0x0234,
- WM_IME_SETCONTEXT = 0x0281,
- WM_IME_NOTIFY = 0x0282,
- WM_IME_CONTROL = 0x0283,
- WM_IME_COMPOSITIONFULL = 0x0284,
- WM_IME_SELECT = 0x0285,
- WM_IME_CHAR = 0x0286,
- WM_IME_REQUEST = 0x0288,
- WM_IME_KEYDOWN = 0x0290,
- WM_IME_KEYUP = 0x0291,
- WM_MOUSEHOVER = 0x02A1,
- WM_MOUSELEAVE = 0x02A3,
- WM_CUT = 0x0300,
- WM_COPY = 0x0301,
- WM_PASTE = 0x0302,
- WM_CLEAR = 0x0303,
- WM_UNDO = 0x0304,
- WM_RENDERFORMAT = 0x0305,
- WM_RENDERALLFORMATS = 0x0306,
- WM_DESTROYCLIPBOARD = 0x0307,
- WM_DRAWCLIPBOARD = 0x0308,
- WM_PAINTCLIPBOARD = 0x0309,
- WM_VSCROLLCLIPBOARD = 0x030A,
- WM_SIZECLIPBOARD = 0x030B,
- WM_ASKCBFORMATNAME = 0x030C,
- WM_CHANGECBCHAIN = 0x030D,
- WM_HSCROLLCLIPBOARD = 0x030E,
- WM_QUERYNEWPALETTE = 0x030F,
- WM_PALETTEISCHANGING = 0x0310,
- WM_PALETTECHANGED = 0x0311,
- WM_HOTKEY = 0x0312,
- WM_PRINT = 0x0317,
- WM_PRINTCLIENT = 0x0318,
- WM_HANDHELDFIRST = 0x0358,
- WM_HANDHELDLAST = 0x035F,
- WM_AFXFIRST = 0x0360,
- WM_AFXLAST = 0x037F,
- WM_PENWINFIRST = 0x0380,
- WM_PENWINLAST = 0x038F,
- WM_APP = 0x8000,
- WM_USER = 0x0400
- }
-
- internal enum HitTest
- {
- HTERROR = -2,
- HTTRANSPARENT = -1,
- HTNOWHERE = 0,
- HTCLIENT = 1,
- HTCAPTION = 2,
- HTSYSMENU = 3,
- HTGROWBOX = 4,
- HTSIZE = 4,
- HTMENU = 5,
- HTHSCROLL = 6,
- HTVSCROLL = 7,
- HTMINBUTTON = 8,
- HTMAXBUTTON = 9,
- HTLEFT = 10,
- HTRIGHT = 11,
- HTTOP = 12,
- HTTOPLEFT = 13,
- HTTOPRIGHT = 14,
- HTBOTTOM = 15,
- HTBOTTOMLEFT = 16,
- HTBOTTOMRIGHT = 17,
- HTBORDER = 18,
- HTREDUCE = 8,
- HTZOOM = 9,
- HTSIZEFIRST = 10,
- HTSIZELAST = 17,
- HTOBJECT = 19,
- HTCLOSE = 20,
- HTHELP = 21
- }
-
- internal enum ScrollBars : uint
- {
- SB_HORZ = 0,
- SB_VERT = 1,
- SB_CTL = 2,
- SB_BOTH = 3
- }
-
- internal enum GetWindowLongIndex : int
- {
- GWL_STYLE = -16,
- GWL_EXSTYLE = -20
- }
-
- // Hook Types
- internal enum HookType : int
- {
- WH_JOURNALRECORD = 0,
- WH_JOURNALPLAYBACK = 1,
- WH_KEYBOARD = 2,
- WH_GETMESSAGE = 3,
- WH_CALLWNDPROC = 4,
- WH_CBT = 5,
- WH_SYSMSGFILTER = 6,
- WH_MOUSE = 7,
- WH_HARDWARE = 8,
- WH_DEBUG = 9,
- WH_SHELL = 10,
- WH_FOREGROUNDIDLE = 11,
- WH_CALLWNDPROCRET = 12,
- WH_KEYBOARD_LL = 13,
- WH_MOUSE_LL = 14
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/Docking/Win32/NativeMethods.cs b/src/WinFormsUI/Docking/Win32/NativeMethods.cs
deleted file mode 100644
index a4c85b62..00000000
--- a/src/WinFormsUI/Docking/Win32/NativeMethods.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-using System;
-using System.Drawing;
-using System.Runtime.InteropServices;
-using System.Diagnostics.CodeAnalysis;
-using WeifenLuo.WinFormsUI.Docking.Win32;
-
-namespace WeifenLuo.WinFormsUI.Docking
-{
- internal static class NativeMethods
- {
- #region Delegates
-
- public delegate IntPtr HookProc(int code, IntPtr wParam, IntPtr lParam);
-
- #endregion
-
- #region Public methods
-
- [DllImport("User32.dll", CharSet = CharSet.Auto)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool DragDetect(IntPtr hWnd, Point pt);
-
- [DllImport("User32.dll", CharSet = CharSet.Auto)]
- public static extern IntPtr GetFocus();
-
- [DllImport("User32.dll", CharSet = CharSet.Auto)]
- public static extern IntPtr SetFocus(IntPtr hWnd);
-
- [DllImport("User32.dll", CharSet = CharSet.Auto)]
- [return: MarshalAs(UnmanagedType.Bool)]
- public static extern bool PostMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam);
-
- [DllImport("User32.dll", CharSet = CharSet.Auto)]
- public static extern uint SendMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam);
-
- [DllImport("User32.dll", CharSet = CharSet.Auto)]
- public static extern int ShowWindow(IntPtr hWnd, short cmdShow);
-
- [DllImport("User32.dll", CharSet = CharSet.Auto)]
- public static extern int SetWindowPos(IntPtr hWnd, IntPtr hWndAfter, int X, int Y, int Width, int Height,
- FlagsSetWindowPos flags);
-
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- public static extern int GetWindowLong(IntPtr hWnd, int Index);
-
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- public static extern int SetWindowLong(IntPtr hWnd, int Index, int Value);
-
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- public static extern int ShowScrollBar(IntPtr hWnd, int wBar, int bShow);
-
- [DllImport("user32.dll", CharSet = CharSet.Auto)]
- //*********************************
- // FxCop bug, suppress the message
- //*********************************
- [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", MessageId = "0")]
- public static extern IntPtr WindowFromPoint(Point point);
-
- [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
- public static extern int GetCurrentThreadId();
-
- [DllImport("user32.dll")]
- public static extern IntPtr
- SetWindowsHookEx(Win32.HookType code, HookProc func, IntPtr hInstance, int threadID);
-
- [DllImport("user32.dll")]
- public static extern int UnhookWindowsHookEx(IntPtr hhook);
-
- [DllImport("user32.dll")]
- public static extern IntPtr CallNextHookEx(IntPtr hhook, int code, IntPtr wParam, IntPtr lParam);
-
- #endregion
- }
-}
\ No newline at end of file
diff --git a/src/WinFormsUI/WinFormsUI.csproj b/src/WinFormsUI/WinFormsUI.csproj
deleted file mode 100644
index 664ada6d..00000000
--- a/src/WinFormsUI/WinFormsUI.csproj
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
- net8.0-windows
- true
- Library
- WeifenLuo.WinFormsUI
- WeifenLuo.WinFormsUI.Docking
- true
- ..\Solution Items\Key.snk
- SAK
- SAK
- false
- SAK
- SAK
- publish\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 0
- 1.0.0.%2a
- false
- false
- true
- false
- true
- true
- false
- $(SolutionDir)..\bin\$(Configuration)
- CA1416;
-
-
- False
-
-
- True
-
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- UserControl
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- UserControl
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- Component
-
-
- Component
-
-
-
-
- Key.snk
-
-
-
-
-
-
diff --git a/src/WinFormsUI/WinFormsUI.csproj.vspscc b/src/WinFormsUI/WinFormsUI.csproj.vspscc
deleted file mode 100644
index feffdeca..00000000
--- a/src/WinFormsUI/WinFormsUI.csproj.vspscc
+++ /dev/null
@@ -1,10 +0,0 @@
-""
-{
-"FILE_VERSION" = "9237"
-"ENLISTMENT_CHOICE" = "NEVER"
-"PROJECT_FILE_RELATIVE_PATH" = ""
-"NUMBER_OF_EXCLUDED_FILES" = "0"
-"ORIGINAL_PROJECT_FILE_PATH" = ""
-"NUMBER_OF_NESTED_PROJECTS" = "0"
-"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
-}
diff --git a/src/WinFormsUI/license.txt b/src/WinFormsUI/license.txt
deleted file mode 100644
index 290b9a43..00000000
--- a/src/WinFormsUI/license.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-The MIT License
-
-Copyright (c) 2007 Weifen Luo (email: weifenluo@yahoo.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.