[MonoTODO]
public override object EditValue (ITypeDescriptorContext context, IServiceProvider provider, object value)
{
- throw new NotImplementedException ();
+ if (context != null && provider != null)
+ {
+ IWindowsFormsEditorService editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
+ if (editorService != null)
+ {
+ // Create the UI editor control
+ DockEditorControl dockEditorControl = new DockEditorControl(editorService);
+ dockEditorControl.DockStyle = (DockStyle)context.Instance;
+ editorService.DropDownControl(dockEditorControl);
+
+ return dockEditorControl.DockStyle;
+ }
+ }
+ return base.EditValue(context, provider, value);
}
public override UITypeEditorEditStyle GetEditStyle (ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.DropDown;
}
+ private class DockEditorControl : System.Windows.Forms.UserControl\r
+ {\r
+ private System.Windows.Forms.CheckBox buttonNone;\r
+ private System.Windows.Forms.Panel panel1;\r
+ private System.Windows.Forms.CheckBox buttonBottom;\r
+ private System.Windows.Forms.CheckBox buttonTop;\r
+ private System.Windows.Forms.Panel panel2;\r
+ private System.Windows.Forms.CheckBox buttonLeft;\r
+ private System.Windows.Forms.CheckBox buttonRight;\r
+ private System.Windows.Forms.CheckBox buttonFill;\r
+ private IWindowsFormsEditorService editorService;\r
+ private DockStyle dockStyle;\r
+\r
+ public DockEditorControl(IWindowsFormsEditorService editorService)\r
+ {\r
+ buttonNone = new System.Windows.Forms.CheckBox();\r
+ panel1 = new System.Windows.Forms.Panel();\r
+ buttonBottom = new System.Windows.Forms.CheckBox();\r
+ buttonTop = new System.Windows.Forms.CheckBox();\r
+ panel2 = new System.Windows.Forms.Panel();\r
+ buttonLeft = new System.Windows.Forms.CheckBox();\r
+ buttonRight = new System.Windows.Forms.CheckBox();\r
+ buttonFill = new System.Windows.Forms.CheckBox();\r
+ panel1.SuspendLayout();\r
+ panel2.SuspendLayout();\r
+ SuspendLayout();\r
+\r
+ buttonNone.Appearance = Appearance.Button;\r
+ buttonNone.Dock = System.Windows.Forms.DockStyle.Bottom;\r
+ buttonNone.Location = new System.Drawing.Point(0, 92);\r
+ buttonNone.Size = new System.Drawing.Size(150, 23);\r
+ buttonNone.TabIndex = 5;\r
+ buttonNone.Text = "None";\r
+ buttonNone.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;\r
+ buttonNone.Click += new System.EventHandler(buttonClick);\r
+\r
+ panel1.Controls.Add(panel2);\r
+ panel1.Controls.Add(buttonTop);\r
+ panel1.Controls.Add(buttonBottom);\r
+ panel1.Dock = System.Windows.Forms.DockStyle.Fill;\r
+ panel1.Location = new System.Drawing.Point(0, 0);\r
+ panel1.Name = "panel1";\r
+ panel1.Size = new System.Drawing.Size(150, 92);\r
+ panel1.TabStop = false;\r
+\r
+ buttonBottom.Appearance = Appearance.Button;\r
+ buttonBottom.Dock = System.Windows.Forms.DockStyle.Bottom;\r
+ buttonBottom.Location = new System.Drawing.Point(0, 69);\r
+ buttonBottom.Name = "buttonBottom";\r
+ buttonBottom.Size = new System.Drawing.Size(150, 23);\r
+ buttonBottom.TabIndex = 5;\r
+ buttonBottom.Click += new System.EventHandler(buttonClick);\r
+\r
+ buttonTop.Appearance = Appearance.Button;\r
+ buttonTop.Dock = System.Windows.Forms.DockStyle.Top;\r
+ buttonTop.Location = new System.Drawing.Point(0, 0);\r
+ buttonTop.Name = "buttonTop";\r
+ buttonTop.Size = new System.Drawing.Size(150, 23);\r
+ buttonTop.TabIndex = 1;\r
+ buttonTop.Click += new System.EventHandler(buttonClick);\r
+\r
+ panel2.Controls.Add(buttonFill);\r
+ panel2.Controls.Add(buttonRight);\r
+ panel2.Controls.Add(buttonLeft);\r
+ panel2.Dock = System.Windows.Forms.DockStyle.Fill;\r
+ panel2.Location = new System.Drawing.Point(0, 23);\r
+ panel2.Size = new System.Drawing.Size(150, 46);\r
+ panel2.TabIndex = 2;\r
+ panel2.TabStop = false;\r
+\r
+ buttonLeft.Appearance = Appearance.Button;\r
+ buttonLeft.Dock = System.Windows.Forms.DockStyle.Left;\r
+ buttonLeft.Location = new System.Drawing.Point(0, 0);\r
+ buttonLeft.Size = new System.Drawing.Size(24, 46);\r
+ buttonLeft.TabIndex = 2;\r
+ buttonLeft.Click += new System.EventHandler(buttonClick);\r
+\r
+ buttonRight.Appearance = Appearance.Button;\r
+ buttonRight.Dock = System.Windows.Forms.DockStyle.Right;\r
+ buttonRight.Location = new System.Drawing.Point(126, 0);\r
+ buttonRight.Size = new System.Drawing.Size(24, 46);\r
+ buttonRight.TabIndex = 4;\r
+ buttonRight.Click += new System.EventHandler(buttonClick);\r
+\r
+ buttonFill.Appearance = Appearance.Button;\r
+ buttonFill.Dock = System.Windows.Forms.DockStyle.Fill;\r
+ buttonFill.Location = new System.Drawing.Point(24, 0);\r
+ buttonFill.Size = new System.Drawing.Size(102, 46);\r
+ buttonFill.TabIndex = 3;\r
+ buttonFill.Click += new System.EventHandler(buttonClick);\r
+\r
+ Controls.Add(panel1);\r
+ Controls.Add(buttonNone);\r
+ Size = new System.Drawing.Size(150, 115);\r
+ panel1.ResumeLayout(false);\r
+ panel2.ResumeLayout(false);\r
+ ResumeLayout(false);\r
+\r
+\r
+ this.editorService = editorService;\r
+ dockStyle = DockStyle.None;\r
+\r
+ }\r
+\r
+ private void buttonClick(object sender, System.EventArgs e)\r
+ {\r
+ if (sender == buttonNone)\r
+ dockStyle = DockStyle.None;\r
+ else if (sender == buttonFill)\r
+ dockStyle = DockStyle.Fill;\r
+ else if (sender == buttonLeft)\r
+ dockStyle = DockStyle.Left;\r
+ else if (sender == buttonRight)\r
+ dockStyle = DockStyle.Right;\r
+ else if (sender == buttonTop)\r
+ dockStyle = DockStyle.Top;\r
+ else if (sender == buttonBottom)\r
+ dockStyle = DockStyle.Bottom;\r
+ editorService.CloseDropDown();\r
+ }\r
+\r
+\r
+ public DockStyle DockStyle\r
+ {\r
+ get\r
+ {\r
+ return dockStyle;\r
+ }\r
+ set\r
+ {\r
+ dockStyle = value;\r
+ buttonNone.Checked = false;\r
+ buttonBottom.Checked = false;\r
+ buttonTop.Checked = false;\r
+ buttonLeft.Checked = false;\r
+ buttonRight.Checked = false;\r
+ buttonFill.Checked = false;\r
+ switch (DockStyle)\r
+ {\r
+ case DockStyle.Fill:\r
+ buttonFill.CheckState = CheckState.Checked;\r
+ break;\r
+ case DockStyle.None:\r
+ buttonNone.CheckState = CheckState.Checked;\r
+ break;\r
+ case DockStyle.Left:\r
+ buttonLeft.CheckState = CheckState.Checked;\r
+ break;\r
+ case DockStyle.Right:\r
+ buttonRight.CheckState = CheckState.Checked;\r
+ break;\r
+ case DockStyle.Top:\r
+ buttonTop.CheckState = CheckState.Checked;\r
+ break;\r
+ case DockStyle.Bottom:\r
+ buttonBottom.CheckState = CheckState.Checked;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }
}
}