big transformation , using DockPanels now
it feels good to me! -Thoys git-svn-id: https://lsleditor.svn.sourceforge.net/svnroot/lsleditor@26 3f4676ac-adda-40fd-8265-58d1435b1672
This commit is contained in:
parent
75c722f354
commit
573823c181
92 changed files with 16899 additions and 760 deletions
225
trunk/Docking/DockPanelExtender.cs
Normal file
225
trunk/Docking/DockPanelExtender.cs
Normal file
|
@ -0,0 +1,225 @@
|
|||
using System;
|
||||
using System.Drawing;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
namespace LSLEditor.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);
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")]
|
||||
public interface IFloatWindowFactory
|
||||
{
|
||||
FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane);
|
||||
FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds);
|
||||
}
|
||||
|
||||
[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);
|
||||
}
|
||||
|
||||
#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
|
||||
|
||||
#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
|
||||
|
||||
internal DockPanelExtender(DockPanel dockPanel)
|
||||
{
|
||||
m_dockPanel = dockPanel;
|
||||
}
|
||||
|
||||
private DockPanel m_dockPanel;
|
||||
private DockPanel DockPanel
|
||||
{
|
||||
get { return m_dockPanel; }
|
||||
}
|
||||
|
||||
private IDockPaneFactory m_dockPaneFactory = null;
|
||||
public IDockPaneFactory DockPaneFactory
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_dockPaneFactory == null)
|
||||
m_dockPaneFactory = new DefaultDockPaneFactory();
|
||||
|
||||
return m_dockPaneFactory;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (DockPanel.Panes.Count > 0)
|
||||
throw new InvalidOperationException();
|
||||
|
||||
m_dockPaneFactory = value;
|
||||
}
|
||||
}
|
||||
|
||||
private IFloatWindowFactory m_floatWindowFactory = null;
|
||||
public IFloatWindowFactory FloatWindowFactory
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_floatWindowFactory == null)
|
||||
m_floatWindowFactory = new DefaultFloatWindowFactory();
|
||||
|
||||
return m_floatWindowFactory;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (DockPanel.FloatWindows.Count > 0)
|
||||
throw new InvalidOperationException();
|
||||
|
||||
m_floatWindowFactory = value;
|
||||
}
|
||||
}
|
||||
|
||||
private IDockPaneCaptionFactory m_dockPaneCaptionFactory = null;
|
||||
public IDockPaneCaptionFactory DockPaneCaptionFactory
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_dockPaneCaptionFactory == null)
|
||||
m_dockPaneCaptionFactory = new DefaultDockPaneCaptionFactory();
|
||||
|
||||
return m_dockPaneCaptionFactory;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (DockPanel.Panes.Count > 0)
|
||||
throw new InvalidOperationException();
|
||||
|
||||
m_dockPaneCaptionFactory = value;
|
||||
}
|
||||
}
|
||||
|
||||
private IDockPaneStripFactory m_dockPaneStripFactory = null;
|
||||
public IDockPaneStripFactory DockPaneStripFactory
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_dockPaneStripFactory == null)
|
||||
m_dockPaneStripFactory = new DefaultDockPaneStripFactory();
|
||||
|
||||
return m_dockPaneStripFactory;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (DockPanel.Contents.Count > 0)
|
||||
throw new InvalidOperationException();
|
||||
|
||||
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 (DockPanel.Contents.Count > 0)
|
||||
throw new InvalidOperationException();
|
||||
|
||||
if (m_autoHideStripFactory == value)
|
||||
return;
|
||||
|
||||
m_autoHideStripFactory = value;
|
||||
DockPanel.ResetAutoHideStripControl();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue