228 lines
7.2 KiB
C#
228 lines
7.2 KiB
C#
using System.Drawing;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using System.Windows.Forms;
|
|
using static WeifenLuo.WinFormsUI.Docking.DockPanel;
|
|
using static WeifenLuo.WinFormsUI.Docking.DockPanel.DockDragHandler;
|
|
|
|
namespace WeifenLuo.WinFormsUI.Docking
|
|
{
|
|
public sealed class DockPanelExtender
|
|
{
|
|
[SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
|
|
public interface IDockPaneFactory
|
|
{
|
|
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);
|
|
}
|
|
|
|
public interface IDockPaneSplitterControlFactory
|
|
{
|
|
DockPane.SplitterControlBase CreateSplitterControl(DockPane pane);
|
|
}
|
|
|
|
public interface IWindowSplitterControlFactory
|
|
{
|
|
SplitterBase CreateSplitterControl(ISplitterHost host);
|
|
}
|
|
|
|
[SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
|
|
public interface IFloatWindowFactory
|
|
{
|
|
FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane);
|
|
FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds);
|
|
}
|
|
|
|
public interface IDockWindowFactory
|
|
{
|
|
DockWindow CreateDockWindow(DockPanel dockPanel, DockState dockState);
|
|
}
|
|
|
|
[SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
|
|
public interface IDockPaneCaptionFactory
|
|
{
|
|
DockPaneCaptionBase CreateDockPaneCaption(DockPane pane);
|
|
}
|
|
|
|
[SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
|
|
public interface IDockPaneStripFactory
|
|
{
|
|
DockPaneStripBase CreateDockPaneStrip(DockPane pane);
|
|
}
|
|
|
|
[SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
|
|
public interface IAutoHideStripFactory
|
|
{
|
|
AutoHideStripBase CreateAutoHideStrip(DockPanel panel);
|
|
}
|
|
|
|
public interface IAutoHideWindowFactory
|
|
{
|
|
AutoHideWindowControl CreateAutoHideWindow(DockPanel panel);
|
|
}
|
|
|
|
public interface IPaneIndicatorFactory
|
|
{
|
|
IPaneIndicator CreatePaneIndicator(ThemeBase theme);
|
|
}
|
|
|
|
public interface IPanelIndicatorFactory
|
|
{
|
|
IPanelIndicator CreatePanelIndicator(DockStyle style, ThemeBase theme);
|
|
}
|
|
|
|
public interface IDockOutlineFactory
|
|
{
|
|
DockOutlineBase CreateDockOutline();
|
|
}
|
|
|
|
public interface IDockIndicatorFactory
|
|
{
|
|
DockIndicator CreateDockIndicator(DockDragHandler dockDragHandler);
|
|
}
|
|
|
|
#region DefaultDockPaneFactory
|
|
|
|
private class DefaultDockPaneFactory : IDockPaneFactory
|
|
{
|
|
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
|
|
|
|
#region DefaultFloatWindowFactory
|
|
|
|
private class DefaultFloatWindowFactory : IFloatWindowFactory
|
|
{
|
|
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
|
|
|
|
private IDockPaneFactory m_dockPaneFactory = null;
|
|
|
|
public IDockPaneFactory DockPaneFactory
|
|
{
|
|
get
|
|
{
|
|
if (m_dockPaneFactory == null)
|
|
{
|
|
m_dockPaneFactory = new DefaultDockPaneFactory();
|
|
}
|
|
|
|
return m_dockPaneFactory;
|
|
}
|
|
set
|
|
{
|
|
m_dockPaneFactory = value;
|
|
}
|
|
}
|
|
|
|
public IDockPaneSplitterControlFactory DockPaneSplitterControlFactory { get; set; }
|
|
|
|
public IWindowSplitterControlFactory WindowSplitterControlFactory { get; set; }
|
|
|
|
private IFloatWindowFactory m_floatWindowFactory = null;
|
|
|
|
public IFloatWindowFactory FloatWindowFactory
|
|
{
|
|
get
|
|
{
|
|
if (m_floatWindowFactory == null)
|
|
{
|
|
m_floatWindowFactory = new DefaultFloatWindowFactory();
|
|
}
|
|
|
|
return m_floatWindowFactory;
|
|
}
|
|
set
|
|
{
|
|
m_floatWindowFactory = value;
|
|
}
|
|
}
|
|
|
|
public IDockWindowFactory DockWindowFactory { get; set; }
|
|
|
|
public IDockPaneCaptionFactory DockPaneCaptionFactory { get; set; }
|
|
|
|
public IDockPaneStripFactory DockPaneStripFactory { get; set; }
|
|
|
|
private IAutoHideStripFactory m_autoHideStripFactory = null;
|
|
|
|
public IAutoHideStripFactory AutoHideStripFactory
|
|
{
|
|
get
|
|
{
|
|
return m_autoHideStripFactory;
|
|
}
|
|
set
|
|
{
|
|
if (m_autoHideStripFactory == value)
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_autoHideStripFactory = value;
|
|
}
|
|
}
|
|
|
|
private IAutoHideWindowFactory m_autoHideWindowFactory;
|
|
|
|
public IAutoHideWindowFactory AutoHideWindowFactory
|
|
{
|
|
get { return m_autoHideWindowFactory; }
|
|
set
|
|
{
|
|
if (m_autoHideWindowFactory == value)
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_autoHideWindowFactory = value;
|
|
}
|
|
}
|
|
|
|
public IPaneIndicatorFactory PaneIndicatorFactory { get; set; }
|
|
|
|
public IPanelIndicatorFactory PanelIndicatorFactory { get; set; }
|
|
|
|
public IDockOutlineFactory DockOutlineFactory { get; set; }
|
|
|
|
public IDockIndicatorFactory DockIndicatorFactory { get; set; }
|
|
}
|
|
}
|