You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
4.4 KiB
C#
143 lines
4.4 KiB
C#
7 months ago
|
using System;
|
||
|
using System.ComponentModel;
|
||
|
using System.Drawing;
|
||
|
using System.Drawing.Design;
|
||
|
using System.Windows.Forms;
|
||
|
using System.Windows.Forms.Design;
|
||
|
|
||
|
namespace Mesnac.Docking
|
||
|
{
|
||
|
internal class DockAreasEditor : UITypeEditor
|
||
|
{
|
||
|
private class DockAreasEditorControl : System.Windows.Forms.UserControl
|
||
|
{
|
||
|
private CheckBox checkBoxFloat;
|
||
|
private CheckBox checkBoxDockLeft;
|
||
|
private CheckBox checkBoxDockRight;
|
||
|
private CheckBox checkBoxDockTop;
|
||
|
private CheckBox checkBoxDockBottom;
|
||
|
private CheckBox checkBoxDockFill;
|
||
|
private DockAreas m_oldDockAreas;
|
||
|
|
||
|
public DockAreas DockAreas
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
DockAreas dockAreas = 0;
|
||
|
if (checkBoxFloat.Checked)
|
||
|
dockAreas |= DockAreas.Float;
|
||
|
if (checkBoxDockLeft.Checked)
|
||
|
dockAreas |= DockAreas.DockLeft;
|
||
|
if (checkBoxDockRight.Checked)
|
||
|
dockAreas |= DockAreas.DockRight;
|
||
|
if (checkBoxDockTop.Checked)
|
||
|
dockAreas |= DockAreas.DockTop;
|
||
|
if (checkBoxDockBottom.Checked)
|
||
|
dockAreas |= DockAreas.DockBottom;
|
||
|
if (checkBoxDockFill.Checked)
|
||
|
dockAreas |= DockAreas.Document;
|
||
|
|
||
|
if (dockAreas == 0)
|
||
|
return m_oldDockAreas;
|
||
|
else
|
||
|
return dockAreas;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public DockAreasEditorControl()
|
||
|
{
|
||
|
checkBoxFloat = new CheckBox();
|
||
|
checkBoxDockLeft = new CheckBox();
|
||
|
checkBoxDockRight = new CheckBox();
|
||
|
checkBoxDockTop = new CheckBox();
|
||
|
checkBoxDockBottom = new CheckBox();
|
||
|
checkBoxDockFill = new CheckBox();
|
||
|
|
||
|
SuspendLayout();
|
||
|
|
||
|
checkBoxFloat.Appearance = Appearance.Button;
|
||
|
checkBoxFloat.Dock = DockStyle.Top;
|
||
|
checkBoxFloat.Height = 24;
|
||
|
checkBoxFloat.Text = Strings.DockAreaEditor_FloatCheckBoxText;
|
||
|
checkBoxFloat.TextAlign = ContentAlignment.MiddleCenter;
|
||
|
checkBoxFloat.FlatStyle = FlatStyle.System;
|
||
|
|
||
|
checkBoxDockLeft.Appearance = System.Windows.Forms.Appearance.Button;
|
||
|
checkBoxDockLeft.Dock = System.Windows.Forms.DockStyle.Left;
|
||
|
checkBoxDockLeft.Width = 24;
|
||
|
checkBoxDockLeft.FlatStyle = FlatStyle.System;
|
||
|
|
||
|
checkBoxDockRight.Appearance = System.Windows.Forms.Appearance.Button;
|
||
|
checkBoxDockRight.Dock = System.Windows.Forms.DockStyle.Right;
|
||
|
checkBoxDockRight.Width = 24;
|
||
|
checkBoxDockRight.FlatStyle = FlatStyle.System;
|
||
|
|
||
|
checkBoxDockTop.Appearance = System.Windows.Forms.Appearance.Button;
|
||
|
checkBoxDockTop.Dock = System.Windows.Forms.DockStyle.Top;
|
||
|
checkBoxDockTop.Height = 24;
|
||
|
checkBoxDockTop.FlatStyle = FlatStyle.System;
|
||
|
|
||
|
checkBoxDockBottom.Appearance = System.Windows.Forms.Appearance.Button;
|
||
|
checkBoxDockBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||
|
checkBoxDockBottom.Height = 24;
|
||
|
checkBoxDockBottom.FlatStyle = FlatStyle.System;
|
||
|
|
||
|
checkBoxDockFill.Appearance = System.Windows.Forms.Appearance.Button;
|
||
|
checkBoxDockFill.Dock = System.Windows.Forms.DockStyle.Fill;
|
||
|
checkBoxDockFill.FlatStyle = FlatStyle.System;
|
||
|
|
||
|
this.Controls.AddRange(new Control[] {
|
||
|
checkBoxDockFill,
|
||
|
checkBoxDockBottom,
|
||
|
checkBoxDockTop,
|
||
|
checkBoxDockRight,
|
||
|
checkBoxDockLeft,
|
||
|
checkBoxFloat});
|
||
|
|
||
|
Size = new System.Drawing.Size(160, 144);
|
||
|
BackColor = SystemColors.Control;
|
||
|
ResumeLayout();
|
||
|
}
|
||
|
|
||
|
public void SetStates(DockAreas dockAreas)
|
||
|
{
|
||
|
m_oldDockAreas = dockAreas;
|
||
|
if ((dockAreas & DockAreas.DockLeft) != 0)
|
||
|
checkBoxDockLeft.Checked = true;
|
||
|
if ((dockAreas & DockAreas.DockRight) != 0)
|
||
|
checkBoxDockRight.Checked = true;
|
||
|
if ((dockAreas & DockAreas.DockTop) != 0)
|
||
|
checkBoxDockTop.Checked = true;
|
||
|
if ((dockAreas & DockAreas.DockTop) != 0)
|
||
|
checkBoxDockTop.Checked = true;
|
||
|
if ((dockAreas & DockAreas.DockBottom) != 0)
|
||
|
checkBoxDockBottom.Checked = true;
|
||
|
if ((dockAreas & DockAreas.Document) != 0)
|
||
|
checkBoxDockFill.Checked = true;
|
||
|
if ((dockAreas & DockAreas.Float) != 0)
|
||
|
checkBoxFloat.Checked = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private DockAreasEditor.DockAreasEditorControl m_ui = null;
|
||
|
|
||
|
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
|
||
|
{
|
||
|
return UITypeEditorEditStyle.DropDown;
|
||
|
}
|
||
|
|
||
|
public override object EditValue(ITypeDescriptorContext context, IServiceProvider sp, object value)
|
||
|
{
|
||
|
if (m_ui == null)
|
||
|
m_ui = new DockAreasEditor.DockAreasEditorControl();
|
||
|
|
||
|
m_ui.SetStates((DockAreas)value);
|
||
|
|
||
|
IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)sp.GetService(typeof(IWindowsFormsEditorService));
|
||
|
edSvc.DropDownControl(m_ui);
|
||
|
|
||
|
return m_ui.DockAreas;
|
||
|
}
|
||
|
}
|
||
|
}
|