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)] [ToolboxItem(false)]
public class DarkDockContent : UserControl 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 #region Field Region
private string _dockText; private string _dockText;
@ -74,8 +38,7 @@ namespace DarkUI.Docking
_dockText = value; _dockText = value;
if (DockHeaderChanged != null) // todo: trigger tabs to re-calculate in parent group
DockHeaderChanged(this, new DockTextChangedEventArgs(this, oldText, _dockText));
Invalidate(); Invalidate();
} }
@ -123,19 +86,8 @@ namespace DarkUI.Docking
public virtual void Close() public virtual void Close()
{ {
var e = new DockContentClosingEventArgs(this);
if (Closing != null)
Closing(this, e);
if (e.Cancel)
return;
if (DockPanel != null) if (DockPanel != null)
DockPanel.RemoveContent(this); DockPanel.RemoveContent(this);
if (Closed != null)
Closed(this, new DockContentEventArgs(this));
} }
#endregion #endregion

View File

@ -131,6 +131,11 @@ namespace DarkUI.Docking
UpdateTabArea(); UpdateTabArea();
} }
public List<DarkDockContent> GetContents()
{
return _contents.ToList();
}
private void UpdateTabArea() private void UpdateTabArea()
{ {
if (DockArea == DarkDockArea.Document) if (DockArea == DarkDockArea.Document)
@ -292,6 +297,9 @@ namespace DarkUI.Docking
if (DockArea != DarkDockArea.Document) if (DockArea != DarkDockArea.Document)
return; return;
if (VisibleContent == null)
return;
var width = ClientRectangle.Width - Padding.Horizontal - _tabArea.DropdownRectangle.Width; var width = ClientRectangle.Width - Padding.Horizontal - _tabArea.DropdownRectangle.Width;
var offsetArea = new Rectangle(Padding.Left, 0, width, 0); var offsetArea = new Rectangle(Padding.Left, 0, width, 0);

View File

@ -40,7 +40,7 @@ namespace DarkUI.Docking
public DarkDockContent ActiveContent public DarkDockContent ActiveContent
{ {
get { return _activeContent; } get { return _activeContent; }
internal set set
{ {
// Don't let content visibility changes re-trigger event // Don't let content visibility changes re-trigger event
if (_switchingContent) if (_switchingContent)
@ -71,6 +71,16 @@ namespace DarkUI.Docking
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public DarkDockGroup ActiveGroup { get; internal set; } public DarkDockGroup ActiveGroup { get; internal set; }
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public DarkDockContent ActiveDocument
{
get
{
return _regions[DarkDockArea.Document].ActiveDocument;
}
}
[Browsable(false)] [Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public IMessageFilter MessageFilter { get; private set; } public IMessageFilter MessageFilter { get; private set; }
@ -154,6 +164,11 @@ namespace DarkUI.Docking
return _contents.Contains(dockContent); return _contents.Contains(dockContent);
} }
public List<DarkDockContent> GetDocuments()
{
return _regions[DarkDockArea.Document].GetContents();
}
private void CreateRegions() private void CreateRegions()
{ {
var documentRegion = new DarkDockRegion(this, DarkDockArea.Document); var documentRegion = new DarkDockRegion(this, DarkDockArea.Document);

View File

@ -26,6 +26,17 @@ namespace DarkUI.Docking
public DarkDockArea DockArea { get; private set; } public DarkDockArea DockArea { get; private set; }
public DarkDockContent ActiveDocument
{
get
{
if (DockArea != DarkDockArea.Document || _groups.Count == 0)
return null;
return _groups[0].VisibleContent;
}
}
#endregion #endregion
#region Constructor Region #region Constructor Region
@ -90,6 +101,16 @@ namespace DarkUI.Docking
PositionGroups(); PositionGroups();
} }
public List<DarkDockContent> GetContents()
{
var result = new List<DarkDockContent>();
foreach (var group in _groups)
result.AddRange(group.GetContents());
return result;
}
private DarkDockGroup CreateGroup() private DarkDockGroup CreateGroup()
{ {
var order = 0; var order = 0;