From c39af6c1907c042f4a5a68e2c97cc0d8a8192d42 Mon Sep 17 00:00:00 2001 From: Robin Date: Sat, 5 Dec 2015 14:16:37 +0000 Subject: [PATCH] DockPanel now tracks active content --- DarkUI/Docking/DarkDockContent.cs | 19 +++++++++++++++---- DarkUI/Docking/DarkDockPanel.cs | 25 +++++++++++++++++++++++++ DarkUI/Docking/DarkToolWindow.cs | 20 +++++++++++++++++--- 3 files changed, 57 insertions(+), 7 deletions(-) diff --git a/DarkUI/Docking/DarkDockContent.cs b/DarkUI/Docking/DarkDockContent.cs index 351ec4f..5f1adcf 100644 --- a/DarkUI/Docking/DarkDockContent.cs +++ b/DarkUI/Docking/DarkDockContent.cs @@ -1,4 +1,5 @@ using DarkUI.Config; +using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; @@ -59,10 +60,6 @@ namespace DarkUI.Docking [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public DarkDockGroup DockGroup { get; internal set; } - [Browsable(false)] - [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public bool IsActive { get; internal set; } - #endregion #region Constructor Region @@ -81,5 +78,19 @@ namespace DarkUI.Docking } #endregion + + #region Event Handler Region + + protected override void OnEnter(EventArgs e) + { + base.OnEnter(e); + + if (DockPanel == null) + return; + + DockPanel.ActiveContent = this; + } + + #endregion } } diff --git a/DarkUI/Docking/DarkDockPanel.cs b/DarkUI/Docking/DarkDockPanel.cs index 66e6ae5..4160818 100644 --- a/DarkUI/Docking/DarkDockPanel.cs +++ b/DarkUI/Docking/DarkDockPanel.cs @@ -13,10 +13,35 @@ namespace DarkUI.Docking private List _contents; private Dictionary _regions; + private DarkDockContent _activeContent; + #endregion #region Property Region + public DarkDockContent ActiveContent + { + get { return _activeContent; } + internal set + { + _activeContent = value; + + ActiveGroup = _activeContent.DockGroup; + ActiveRegion = ActiveGroup.DockRegion; + + foreach (var content in _contents) + content.Invalidate(); + } + } + + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public DarkDockRegion ActiveRegion { get; internal set; } + + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public DarkDockGroup ActiveGroup { get; internal set; } + [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public IMessageFilter MessageFilter { get; private set; } diff --git a/DarkUI/Docking/DarkToolWindow.cs b/DarkUI/Docking/DarkToolWindow.cs index ab07471..280ac3b 100644 --- a/DarkUI/Docking/DarkToolWindow.cs +++ b/DarkUI/Docking/DarkToolWindow.cs @@ -33,6 +33,18 @@ namespace DarkUI.Docking #endregion + #region Method Region + + private bool IsActive() + { + if (DockPanel == null) + return false; + + return DockPanel.ActiveContent == this; + } + + #endregion + #region Paint Region protected override void OnPaint(PaintEventArgs e) @@ -45,10 +57,12 @@ namespace DarkUI.Docking g.FillRectangle(b, ClientRectangle); } + var isActive = IsActive(); + // Draw header - var bgColor = IsActive ? Colors.BlueBackground : Colors.HeaderBackground; - var darkColor = IsActive ? Colors.DarkBlueBorder : Colors.DarkBorder; - var lightColor = IsActive ? Colors.LightBlueBorder : Colors.LightBorder; + var bgColor = isActive ? Colors.BlueBackground : Colors.HeaderBackground; + var darkColor = isActive ? Colors.DarkBlueBorder : Colors.DarkBorder; + var lightColor = isActive ? Colors.LightBlueBorder : Colors.LightBorder; using (var b = new SolidBrush(bgColor)) {