Added ActiveDocument and GetContents

This commit is contained in:
Robin 2015-12-08 00:23:01 +00:00
parent a464a213fa
commit b676410b3f
4 changed files with 46 additions and 50 deletions

View File

@ -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<DockContentClosingEventArgs> Closing;
public event EventHandler<DockContentEventArgs> Closed;
public event EventHandler<DockTextChangedEventArgs> 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

View File

@ -131,6 +131,11 @@ namespace DarkUI.Docking
UpdateTabArea();
}
public List<DarkDockContent> 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);

View File

@ -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<DarkDockContent> GetDocuments()
{
return _regions[DarkDockArea.Document].GetContents();
}
private void CreateRegions()
{
var documentRegion = new DarkDockRegion(this, DarkDockArea.Document);

View File

@ -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<DarkDockContent> GetContents()
{
var result = new List<DarkDockContent>();
foreach (var group in _groups)
result.AddRange(group.GetContents());
return result;
}
private DarkDockGroup CreateGroup()
{
var order = 0;