- using System;
- using System.ComponentModel;
- using System.Drawing;
- using System.Drawing.Design;
- using System.Windows.Forms;
- using System.Windows.Forms.Design;
- namespace WeifenLuo.WinFormsUI.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;
- }
- }
- }