diff --git a/DarkUI/Docking/DarkDockContent.cs b/DarkUI/Docking/DarkDockContent.cs index 08b85f6..e64bfdc 100644 --- a/DarkUI/Docking/DarkDockContent.cs +++ b/DarkUI/Docking/DarkDockContent.cs @@ -15,45 +15,9 @@ namespace DarkUI.Docking } } - public class DockContentClosingEventArgs : EventArgs - { - public DarkDockContent Content { get; private set; } - - public bool Cancel { get; set; } - - public DockContentClosingEventArgs(DarkDockContent content) - { - Content = content; - } - } - - public class DockTextChangedEventArgs : EventArgs - { - public DarkDockContent Content { get; private set; } - - public string OldText { get; private set; } - - public string NewText { get; private set; } - - public DockTextChangedEventArgs(DarkDockContent content, string oldText, string newText) - { - Content = content; - OldText = oldText; - NewText = newText; - } - } - [ToolboxItem(false)] public class DarkDockContent : UserControl { - #region Event Region - - public event EventHandler Closing; - public event EventHandler Closed; - public event EventHandler DockHeaderChanged; - - #endregion - #region Field Region private string _dockText; @@ -74,8 +38,7 @@ namespace DarkUI.Docking _dockText = value; - if (DockHeaderChanged != null) - DockHeaderChanged(this, new DockTextChangedEventArgs(this, oldText, _dockText)); + // todo: trigger tabs to re-calculate in parent group Invalidate(); } @@ -123,19 +86,8 @@ namespace DarkUI.Docking public virtual void Close() { - var e = new DockContentClosingEventArgs(this); - - if (Closing != null) - Closing(this, e); - - if (e.Cancel) - return; - if (DockPanel != null) DockPanel.RemoveContent(this); - - if (Closed != null) - Closed(this, new DockContentEventArgs(this)); } #endregion diff --git a/DarkUI/Docking/DarkDockGroup.cs b/DarkUI/Docking/DarkDockGroup.cs index cf168bf..c430bf6 100644 --- a/DarkUI/Docking/DarkDockGroup.cs +++ b/DarkUI/Docking/DarkDockGroup.cs @@ -131,6 +131,11 @@ namespace DarkUI.Docking UpdateTabArea(); } + public List GetContents() + { + return _contents.ToList(); + } + private void UpdateTabArea() { if (DockArea == DarkDockArea.Document) @@ -292,6 +297,9 @@ namespace DarkUI.Docking if (DockArea != DarkDockArea.Document) return; + if (VisibleContent == null) + return; + var width = ClientRectangle.Width - Padding.Horizontal - _tabArea.DropdownRectangle.Width; var offsetArea = new Rectangle(Padding.Left, 0, width, 0); diff --git a/DarkUI/Docking/DarkDockPanel.cs b/DarkUI/Docking/DarkDockPanel.cs index d43be7c..425ece9 100644 --- a/DarkUI/Docking/DarkDockPanel.cs +++ b/DarkUI/Docking/DarkDockPanel.cs @@ -40,7 +40,7 @@ namespace DarkUI.Docking public DarkDockContent ActiveContent { get { return _activeContent; } - internal set + set { // Don't let content visibility changes re-trigger event if (_switchingContent) @@ -71,6 +71,16 @@ namespace DarkUI.Docking [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public DarkDockGroup ActiveGroup { get; internal set; } + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public DarkDockContent ActiveDocument + { + get + { + return _regions[DarkDockArea.Document].ActiveDocument; + } + } + [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public IMessageFilter MessageFilter { get; private set; } @@ -154,6 +164,11 @@ namespace DarkUI.Docking return _contents.Contains(dockContent); } + public List GetDocuments() + { + return _regions[DarkDockArea.Document].GetContents(); + } + private void CreateRegions() { var documentRegion = new DarkDockRegion(this, DarkDockArea.Document); diff --git a/DarkUI/Docking/DarkDockRegion.cs b/DarkUI/Docking/DarkDockRegion.cs index 52d64f1..8610bf1 100644 --- a/DarkUI/Docking/DarkDockRegion.cs +++ b/DarkUI/Docking/DarkDockRegion.cs @@ -26,6 +26,17 @@ namespace DarkUI.Docking public DarkDockArea DockArea { get; private set; } + public DarkDockContent ActiveDocument + { + get + { + if (DockArea != DarkDockArea.Document || _groups.Count == 0) + return null; + + return _groups[0].VisibleContent; + } + } + #endregion #region Constructor Region @@ -90,6 +101,16 @@ namespace DarkUI.Docking PositionGroups(); } + public List GetContents() + { + var result = new List(); + + foreach (var group in _groups) + result.AddRange(group.GetContents()); + + return result; + } + private DarkDockGroup CreateGroup() { var order = 0;