------ #### RaUIV4 V4.0.2311.0701 - *.[全新]整合了MyDb、ryControls、MyDb_MySQL等dll文件到RaUI一个项目。 - *.[新增]新增ApkOp类,可以轻松获取APK信息。 - *.[新增]新增JsonExt扩展类,让Json操作更简单。 - *.[新增]新增WebP类,可以支持webp格式的图片。 - *.[改进]ryQuickSQL中的AddField方法改为自动替换已存在的同名值。 - *.[修复]ryQuickSQL中的AddFieldCalc方法无法正常计算的BUG。
431 lines
13 KiB
C#
431 lines
13 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using System.Windows.Forms;
|
|
#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释
|
|
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
|
|
{
|
|
DockPanel.AutoHideWindowControl CreateAutoHideWindow(DockPanel panel);
|
|
}
|
|
|
|
public interface IPaneIndicatorFactory
|
|
{
|
|
DockPanel.IPaneIndicator CreatePaneIndicator(ThemeBase theme);
|
|
}
|
|
|
|
public interface IPanelIndicatorFactory
|
|
{
|
|
DockPanel.IPanelIndicator CreatePanelIndicator(DockStyle style, ThemeBase theme);
|
|
}
|
|
|
|
public interface IDockOutlineFactory
|
|
{
|
|
DockOutlineBase CreateDockOutline();
|
|
}
|
|
|
|
public interface IDockIndicatorFactory
|
|
{
|
|
DockPanel.DockDragHandler.DockIndicator CreateDockIndicator(DockPanel.DockDragHandler dockDragHandler);
|
|
}
|
|
|
|
public class DefaultDockIndicatorFactory : IDockIndicatorFactory
|
|
{
|
|
public DockPanel.DockDragHandler.DockIndicator CreateDockIndicator(DockPanel.DockDragHandler dockDragHandler)
|
|
{
|
|
return new DockPanel.DockDragHandler.DockIndicator(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 DefaultDockPaneSplitterControlFactory
|
|
|
|
private class DefaultDockPaneSplitterControlFactory : IDockPaneSplitterControlFactory
|
|
{
|
|
public DockPane.SplitterControlBase CreateSplitterControl(DockPane pane)
|
|
{
|
|
return new DockPane.DefaultSplitterControl(pane);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region DefaultWindowSplitterControlFactory
|
|
|
|
private class DefaultWindowSplitterControlFactory : IWindowSplitterControlFactory
|
|
{
|
|
public SplitterBase CreateSplitterControl(ISplitterHost host)
|
|
{
|
|
return new DockWindow.DefaultSplitterControl(host);
|
|
}
|
|
}
|
|
|
|
#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
|
|
|
|
#region DefaultDockWindowFactory
|
|
|
|
private class DefaultDockWindowFactory : IDockWindowFactory
|
|
{
|
|
public DockWindow CreateDockWindow(DockPanel dockPanel, DockState dockState)
|
|
{
|
|
return new DefaultDockWindow(dockPanel, dockState);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region DefaultDockPaneCaptionFactory
|
|
|
|
private class DefaultDockPaneCaptionFactory : IDockPaneCaptionFactory
|
|
{
|
|
public DockPaneCaptionBase CreateDockPaneCaption(DockPane pane)
|
|
{
|
|
return new VS2005DockPaneCaption(pane);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region DefaultDockPaneTabStripFactory
|
|
|
|
private class DefaultDockPaneStripFactory : IDockPaneStripFactory
|
|
{
|
|
public DockPaneStripBase CreateDockPaneStrip(DockPane pane)
|
|
{
|
|
return new VS2005DockPaneStrip(pane);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region DefaultAutoHideStripFactory
|
|
|
|
private class DefaultAutoHideStripFactory : IAutoHideStripFactory
|
|
{
|
|
public AutoHideStripBase CreateAutoHideStrip(DockPanel panel)
|
|
{
|
|
return new VS2005AutoHideStrip(panel);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region DefaultAutoHideWindowFactory
|
|
|
|
public class DefaultAutoHideWindowFactory : IAutoHideWindowFactory
|
|
{
|
|
public DockPanel.AutoHideWindowControl CreateAutoHideWindow(DockPanel panel)
|
|
{
|
|
return new DockPanel.DefaultAutoHideWindowControl(panel);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
public class DefaultPaneIndicatorFactory : IPaneIndicatorFactory
|
|
{
|
|
public DockPanel.IPaneIndicator CreatePaneIndicator(ThemeBase theme)
|
|
{
|
|
return new DockPanel.DefaultPaneIndicator();
|
|
}
|
|
}
|
|
|
|
public class DefaultPanelIndicatorFactory : IPanelIndicatorFactory
|
|
{
|
|
public DockPanel.IPanelIndicator CreatePanelIndicator(DockStyle style, ThemeBase theme)
|
|
{
|
|
return new DockPanel.DefaultPanelIndicator(style);
|
|
}
|
|
}
|
|
|
|
public class DefaultDockOutlineFactory : IDockOutlineFactory
|
|
{
|
|
public DockOutlineBase CreateDockOutline()
|
|
{
|
|
return new DockPanel.DefaultDockOutline();
|
|
}
|
|
}
|
|
|
|
private IDockPaneFactory m_dockPaneFactory = null;
|
|
|
|
public IDockPaneFactory DockPaneFactory
|
|
{
|
|
get
|
|
{
|
|
if (m_dockPaneFactory == null)
|
|
m_dockPaneFactory = new DefaultDockPaneFactory();
|
|
|
|
return m_dockPaneFactory;
|
|
}
|
|
set
|
|
{
|
|
m_dockPaneFactory = value;
|
|
}
|
|
}
|
|
|
|
private IDockPaneSplitterControlFactory m_dockPaneSplitterControlFactory;
|
|
|
|
public IDockPaneSplitterControlFactory DockPaneSplitterControlFactory
|
|
{
|
|
get
|
|
{
|
|
return m_dockPaneSplitterControlFactory ??
|
|
(m_dockPaneSplitterControlFactory = new DefaultDockPaneSplitterControlFactory());
|
|
}
|
|
|
|
set
|
|
{
|
|
m_dockPaneSplitterControlFactory = value;
|
|
}
|
|
}
|
|
|
|
private IWindowSplitterControlFactory m_dockWindowSplitterControlFactory;
|
|
|
|
public IWindowSplitterControlFactory WindowSplitterControlFactory
|
|
{
|
|
get
|
|
{
|
|
return m_dockWindowSplitterControlFactory ??
|
|
(m_dockWindowSplitterControlFactory = new DefaultWindowSplitterControlFactory());
|
|
}
|
|
|
|
set
|
|
{
|
|
m_dockWindowSplitterControlFactory = value;
|
|
}
|
|
}
|
|
|
|
private IFloatWindowFactory m_floatWindowFactory = null;
|
|
|
|
public IFloatWindowFactory FloatWindowFactory
|
|
{
|
|
get
|
|
{
|
|
if (m_floatWindowFactory == null)
|
|
m_floatWindowFactory = new DefaultFloatWindowFactory();
|
|
|
|
return m_floatWindowFactory;
|
|
}
|
|
set
|
|
{
|
|
m_floatWindowFactory = value;
|
|
}
|
|
}
|
|
|
|
private IDockWindowFactory m_dockWindowFactory;
|
|
|
|
public IDockWindowFactory DockWindowFactory
|
|
{
|
|
get { return m_dockWindowFactory ?? (m_dockWindowFactory = new DefaultDockWindowFactory()); }
|
|
set
|
|
{
|
|
m_dockWindowFactory = value;
|
|
}
|
|
}
|
|
|
|
private IDockPaneCaptionFactory m_dockPaneCaptionFactory = null;
|
|
|
|
public IDockPaneCaptionFactory DockPaneCaptionFactory
|
|
{
|
|
get
|
|
{
|
|
if (m_dockPaneCaptionFactory == null)
|
|
m_dockPaneCaptionFactory = new DefaultDockPaneCaptionFactory();
|
|
|
|
return m_dockPaneCaptionFactory;
|
|
}
|
|
set
|
|
{
|
|
m_dockPaneCaptionFactory = value;
|
|
}
|
|
}
|
|
|
|
private IDockPaneStripFactory m_dockPaneStripFactory = null;
|
|
|
|
public IDockPaneStripFactory DockPaneStripFactory
|
|
{
|
|
get
|
|
{
|
|
if (m_dockPaneStripFactory == null)
|
|
m_dockPaneStripFactory = new DefaultDockPaneStripFactory();
|
|
|
|
return m_dockPaneStripFactory;
|
|
}
|
|
set
|
|
{
|
|
m_dockPaneStripFactory = value;
|
|
}
|
|
}
|
|
|
|
private IAutoHideStripFactory m_autoHideStripFactory = null;
|
|
|
|
public IAutoHideStripFactory AutoHideStripFactory
|
|
{
|
|
get
|
|
{
|
|
if (m_autoHideStripFactory == null)
|
|
m_autoHideStripFactory = new DefaultAutoHideStripFactory();
|
|
|
|
return m_autoHideStripFactory;
|
|
}
|
|
set
|
|
{
|
|
if (m_autoHideStripFactory == value)
|
|
return;
|
|
|
|
m_autoHideStripFactory = value;
|
|
}
|
|
}
|
|
|
|
private IAutoHideWindowFactory m_autoHideWindowFactory;
|
|
|
|
public IAutoHideWindowFactory AutoHideWindowFactory
|
|
{
|
|
get { return m_autoHideWindowFactory ?? (m_autoHideWindowFactory = new DefaultAutoHideWindowFactory()); }
|
|
set
|
|
{
|
|
if (m_autoHideWindowFactory == value)
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_autoHideWindowFactory = value;
|
|
}
|
|
}
|
|
|
|
private IPaneIndicatorFactory m_PaneIndicatorFactory;
|
|
|
|
public IPaneIndicatorFactory PaneIndicatorFactory
|
|
{
|
|
get { return m_PaneIndicatorFactory ?? (m_PaneIndicatorFactory = new DefaultPaneIndicatorFactory()); }
|
|
set { m_PaneIndicatorFactory = value; }
|
|
}
|
|
|
|
private IPanelIndicatorFactory m_PanelIndicatorFactory;
|
|
|
|
public IPanelIndicatorFactory PanelIndicatorFactory
|
|
{
|
|
get { return m_PanelIndicatorFactory ?? (m_PanelIndicatorFactory = new DefaultPanelIndicatorFactory()); }
|
|
set { m_PanelIndicatorFactory = value; }
|
|
}
|
|
|
|
private IDockOutlineFactory m_DockOutlineFactory;
|
|
|
|
public IDockOutlineFactory DockOutlineFactory
|
|
{
|
|
get { return m_DockOutlineFactory ?? (m_DockOutlineFactory = new DefaultDockOutlineFactory()); }
|
|
set { m_DockOutlineFactory = value; }
|
|
}
|
|
|
|
private IDockIndicatorFactory m_DockIndicatorFactory;
|
|
|
|
public IDockIndicatorFactory DockIndicatorFactory
|
|
{
|
|
get { return m_DockIndicatorFactory ?? (m_DockIndicatorFactory = new DefaultDockIndicatorFactory()); }
|
|
set { m_DockIndicatorFactory = value; }
|
|
}
|
|
}
|
|
}
|