Make structural changes to repository
Modernizes the repository
This commit is contained in:
parent
a67593b58f
commit
7f7f8970bc
412 changed files with 72437 additions and 155552 deletions
157
source/Docking/DockPane.SplitterControl.cs
Normal file
157
source/Docking/DockPane.SplitterControl.cs
Normal file
|
@ -0,0 +1,157 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LSLEditor.Docking
|
||||
{
|
||||
partial class DockPane
|
||||
{
|
||||
private class SplitterControl : Control, ISplitterDragSource
|
||||
{
|
||||
DockPane m_pane;
|
||||
|
||||
public SplitterControl(DockPane pane)
|
||||
{
|
||||
SetStyle(ControlStyles.Selectable, false);
|
||||
m_pane = pane;
|
||||
}
|
||||
|
||||
public DockPane DockPane
|
||||
{
|
||||
get { return m_pane; }
|
||||
}
|
||||
|
||||
private DockAlignment m_alignment;
|
||||
public DockAlignment Alignment
|
||||
{
|
||||
get { return m_alignment; }
|
||||
set
|
||||
{
|
||||
m_alignment = value;
|
||||
if (m_alignment == DockAlignment.Left || m_alignment == DockAlignment.Right)
|
||||
Cursor = Cursors.VSplit;
|
||||
else if (m_alignment == DockAlignment.Top || m_alignment == DockAlignment.Bottom)
|
||||
Cursor = Cursors.HSplit;
|
||||
else
|
||||
Cursor = Cursors.Default;
|
||||
|
||||
if (DockPane.DockState == DockState.Document)
|
||||
Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
base.OnPaint(e);
|
||||
|
||||
if (DockPane.DockState != DockState.Document)
|
||||
return;
|
||||
|
||||
Graphics g = e.Graphics;
|
||||
Rectangle rect = ClientRectangle;
|
||||
if (Alignment == DockAlignment.Top || Alignment == DockAlignment.Bottom)
|
||||
g.DrawLine(SystemPens.ControlDark, rect.Left, rect.Bottom - 1, rect.Right, rect.Bottom - 1);
|
||||
else if (Alignment == DockAlignment.Left || Alignment == DockAlignment.Right)
|
||||
g.DrawLine(SystemPens.ControlDarkDark, rect.Right - 1, rect.Top, rect.Right - 1, rect.Bottom);
|
||||
}
|
||||
|
||||
protected override void OnMouseDown(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseDown(e);
|
||||
|
||||
if (e.Button != MouseButtons.Left)
|
||||
return;
|
||||
|
||||
DockPane.DockPanel.BeginDrag(this, Parent.RectangleToScreen(Bounds));
|
||||
}
|
||||
|
||||
#region ISplitterDragSource Members
|
||||
|
||||
void ISplitterDragSource.BeginDrag(Rectangle rectSplitter)
|
||||
{
|
||||
}
|
||||
|
||||
void ISplitterDragSource.EndDrag()
|
||||
{
|
||||
}
|
||||
|
||||
bool ISplitterDragSource.IsVertical
|
||||
{
|
||||
get
|
||||
{
|
||||
NestedDockingStatus status = DockPane.NestedDockingStatus;
|
||||
return (status.DisplayingAlignment == DockAlignment.Left ||
|
||||
status.DisplayingAlignment == DockAlignment.Right);
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle ISplitterDragSource.DragLimitBounds
|
||||
{
|
||||
get
|
||||
{
|
||||
NestedDockingStatus status = DockPane.NestedDockingStatus;
|
||||
Rectangle rectLimit = Parent.RectangleToScreen(status.LogicalBounds);
|
||||
if (((ISplitterDragSource)this).IsVertical)
|
||||
{
|
||||
rectLimit.X += MeasurePane.MinSize;
|
||||
rectLimit.Width -= 2 * MeasurePane.MinSize;
|
||||
}
|
||||
else
|
||||
{
|
||||
rectLimit.Y += MeasurePane.MinSize;
|
||||
rectLimit.Height -= 2 * MeasurePane.MinSize;
|
||||
}
|
||||
|
||||
return rectLimit;
|
||||
}
|
||||
}
|
||||
|
||||
void ISplitterDragSource.MoveSplitter(int offset)
|
||||
{
|
||||
NestedDockingStatus status = DockPane.NestedDockingStatus;
|
||||
double proportion = status.Proportion;
|
||||
if (status.LogicalBounds.Width <= 0 || status.LogicalBounds.Height <= 0)
|
||||
return;
|
||||
else if (status.DisplayingAlignment == DockAlignment.Left)
|
||||
proportion += ((double)offset) / (double)status.LogicalBounds.Width;
|
||||
else if (status.DisplayingAlignment == DockAlignment.Right)
|
||||
proportion -= ((double)offset) / (double)status.LogicalBounds.Width;
|
||||
else if (status.DisplayingAlignment == DockAlignment.Top)
|
||||
proportion += ((double)offset) / (double)status.LogicalBounds.Height;
|
||||
else
|
||||
proportion -= ((double)offset) / (double)status.LogicalBounds.Height;
|
||||
|
||||
DockPane.SetNestedDockingProportion(proportion);
|
||||
}
|
||||
|
||||
#region IDragSource Members
|
||||
|
||||
Control IDragSource.DragControl
|
||||
{
|
||||
get { return this; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
private SplitterControl m_splitter;
|
||||
private SplitterControl Splitter
|
||||
{
|
||||
get { return m_splitter; }
|
||||
}
|
||||
|
||||
internal Rectangle SplitterBounds
|
||||
{
|
||||
set { Splitter.Bounds = value; }
|
||||
}
|
||||
|
||||
internal DockAlignment SplitterAlignment
|
||||
{
|
||||
set { Splitter.Alignment = value; }
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue