[2134] | 1 | using System;
|
---|
| 2 | using System.ComponentModel;
|
---|
| 3 | using System.Drawing;
|
---|
| 4 | using System.Drawing.Design;
|
---|
| 5 | using System.Windows.Forms;
|
---|
| 6 | using System.Windows.Forms.Design;
|
---|
| 7 |
|
---|
| 8 | namespace WeifenLuo.WinFormsUI.Docking
|
---|
| 9 | {
|
---|
| 10 | internal class DockAreasEditor : UITypeEditor
|
---|
| 11 | {
|
---|
| 12 | private class DockAreasEditorControl : System.Windows.Forms.UserControl
|
---|
| 13 | {
|
---|
| 14 | private CheckBox checkBoxFloat;
|
---|
| 15 | private CheckBox checkBoxDockLeft;
|
---|
| 16 | private CheckBox checkBoxDockRight;
|
---|
| 17 | private CheckBox checkBoxDockTop;
|
---|
| 18 | private CheckBox checkBoxDockBottom;
|
---|
| 19 | private CheckBox checkBoxDockFill;
|
---|
| 20 | private DockAreas m_oldDockAreas;
|
---|
| 21 |
|
---|
| 22 | public DockAreas DockAreas
|
---|
| 23 | {
|
---|
| 24 | get
|
---|
| 25 | {
|
---|
| 26 | DockAreas dockAreas = 0;
|
---|
| 27 | if (checkBoxFloat.Checked)
|
---|
| 28 | dockAreas |= DockAreas.Float;
|
---|
| 29 | if (checkBoxDockLeft.Checked)
|
---|
| 30 | dockAreas |= DockAreas.DockLeft;
|
---|
| 31 | if (checkBoxDockRight.Checked)
|
---|
| 32 | dockAreas |= DockAreas.DockRight;
|
---|
| 33 | if (checkBoxDockTop.Checked)
|
---|
| 34 | dockAreas |= DockAreas.DockTop;
|
---|
| 35 | if (checkBoxDockBottom.Checked)
|
---|
| 36 | dockAreas |= DockAreas.DockBottom;
|
---|
| 37 | if (checkBoxDockFill.Checked)
|
---|
| 38 | dockAreas |= DockAreas.Document;
|
---|
| 39 |
|
---|
| 40 | if (dockAreas == 0)
|
---|
| 41 | return m_oldDockAreas;
|
---|
| 42 | else
|
---|
| 43 | return dockAreas;
|
---|
| 44 | }
|
---|
| 45 | }
|
---|
| 46 |
|
---|
| 47 | public DockAreasEditorControl()
|
---|
| 48 | {
|
---|
| 49 | checkBoxFloat = new CheckBox();
|
---|
| 50 | checkBoxDockLeft = new CheckBox();
|
---|
| 51 | checkBoxDockRight = new CheckBox();
|
---|
| 52 | checkBoxDockTop = new CheckBox();
|
---|
| 53 | checkBoxDockBottom = new CheckBox();
|
---|
| 54 | checkBoxDockFill = new CheckBox();
|
---|
| 55 |
|
---|
| 56 | SuspendLayout();
|
---|
| 57 |
|
---|
| 58 | checkBoxFloat.Appearance = Appearance.Button;
|
---|
| 59 | checkBoxFloat.Dock = DockStyle.Top;
|
---|
| 60 | checkBoxFloat.Height = 24;
|
---|
| 61 | checkBoxFloat.Text = Strings.DockAreaEditor_FloatCheckBoxText;
|
---|
| 62 | checkBoxFloat.TextAlign = ContentAlignment.MiddleCenter;
|
---|
| 63 | checkBoxFloat.FlatStyle = FlatStyle.System;
|
---|
| 64 |
|
---|
| 65 | checkBoxDockLeft.Appearance = System.Windows.Forms.Appearance.Button;
|
---|
| 66 | checkBoxDockLeft.Dock = System.Windows.Forms.DockStyle.Left;
|
---|
| 67 | checkBoxDockLeft.Width = 24;
|
---|
| 68 | checkBoxDockLeft.FlatStyle = FlatStyle.System;
|
---|
| 69 |
|
---|
| 70 | checkBoxDockRight.Appearance = System.Windows.Forms.Appearance.Button;
|
---|
| 71 | checkBoxDockRight.Dock = System.Windows.Forms.DockStyle.Right;
|
---|
| 72 | checkBoxDockRight.Width = 24;
|
---|
| 73 | checkBoxDockRight.FlatStyle = FlatStyle.System;
|
---|
| 74 |
|
---|
| 75 | checkBoxDockTop.Appearance = System.Windows.Forms.Appearance.Button;
|
---|
| 76 | checkBoxDockTop.Dock = System.Windows.Forms.DockStyle.Top;
|
---|
| 77 | checkBoxDockTop.Height = 24;
|
---|
| 78 | checkBoxDockTop.FlatStyle = FlatStyle.System;
|
---|
| 79 |
|
---|
| 80 | checkBoxDockBottom.Appearance = System.Windows.Forms.Appearance.Button;
|
---|
| 81 | checkBoxDockBottom.Dock = System.Windows.Forms.DockStyle.Bottom;
|
---|
| 82 | checkBoxDockBottom.Height = 24;
|
---|
| 83 | checkBoxDockBottom.FlatStyle = FlatStyle.System;
|
---|
| 84 |
|
---|
| 85 | checkBoxDockFill.Appearance = System.Windows.Forms.Appearance.Button;
|
---|
| 86 | checkBoxDockFill.Dock = System.Windows.Forms.DockStyle.Fill;
|
---|
| 87 | checkBoxDockFill.FlatStyle = FlatStyle.System;
|
---|
| 88 |
|
---|
| 89 | this.Controls.AddRange(new Control[] {
|
---|
| 90 | checkBoxDockFill,
|
---|
| 91 | checkBoxDockBottom,
|
---|
| 92 | checkBoxDockTop,
|
---|
| 93 | checkBoxDockRight,
|
---|
| 94 | checkBoxDockLeft,
|
---|
| 95 | checkBoxFloat});
|
---|
| 96 |
|
---|
| 97 | Size = new System.Drawing.Size(160, 144);
|
---|
| 98 | BackColor = SystemColors.Control;
|
---|
| 99 | ResumeLayout();
|
---|
| 100 | }
|
---|
| 101 |
|
---|
| 102 | public void SetStates(DockAreas dockAreas)
|
---|
| 103 | {
|
---|
| 104 | m_oldDockAreas = dockAreas;
|
---|
| 105 | if ((dockAreas & DockAreas.DockLeft) != 0)
|
---|
| 106 | checkBoxDockLeft.Checked = true;
|
---|
| 107 | if ((dockAreas & DockAreas.DockRight) != 0)
|
---|
| 108 | checkBoxDockRight.Checked = true;
|
---|
| 109 | if ((dockAreas & DockAreas.DockTop) != 0)
|
---|
| 110 | checkBoxDockTop.Checked = true;
|
---|
| 111 | if ((dockAreas & DockAreas.DockTop) != 0)
|
---|
| 112 | checkBoxDockTop.Checked = true;
|
---|
| 113 | if ((dockAreas & DockAreas.DockBottom) != 0)
|
---|
| 114 | checkBoxDockBottom.Checked = true;
|
---|
| 115 | if ((dockAreas & DockAreas.Document) != 0)
|
---|
| 116 | checkBoxDockFill.Checked = true;
|
---|
| 117 | if ((dockAreas & DockAreas.Float) != 0)
|
---|
| 118 | checkBoxFloat.Checked = true;
|
---|
| 119 | }
|
---|
| 120 | }
|
---|
| 121 |
|
---|
| 122 | private DockAreasEditor.DockAreasEditorControl m_ui = null;
|
---|
| 123 |
|
---|
| 124 | public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
|
---|
| 125 | {
|
---|
| 126 | return UITypeEditorEditStyle.DropDown;
|
---|
| 127 | }
|
---|
| 128 |
|
---|
| 129 | public override object EditValue(ITypeDescriptorContext context, IServiceProvider sp, object value)
|
---|
| 130 | {
|
---|
| 131 | if (m_ui == null)
|
---|
| 132 | m_ui = new DockAreasEditor.DockAreasEditorControl();
|
---|
| 133 |
|
---|
| 134 | m_ui.SetStates((DockAreas)value);
|
---|
| 135 |
|
---|
| 136 | IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)sp.GetService(typeof(IWindowsFormsEditorService));
|
---|
| 137 | edSvc.DropDownControl(m_ui);
|
---|
| 138 |
|
---|
| 139 | return m_ui.DockAreas;
|
---|
| 140 | }
|
---|
| 141 | }
|
---|
| 142 | }
|
---|