Author: joncham
Date: 2006-04-18 00:50:35 -0400 (Tue, 18 Apr 2006)
New Revision: 59574
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertiesTab.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGrid.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGridTextBox.cs
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGridView.cs
Log:
2006-04-17 Jonathan Chambers <[EMAIL PROTECTED]>
* PropertyGridTextBox.cs: Formatting, copyright
* PropertiesTab.cs: Formatting
* PropertyGrid.cs: Formatting
* PropertyGridView.cs: Formatting, fix drop down, enabled double
click toggling of values
Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2006-04-18 02:36:17 UTC (rev 59573)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
2006-04-18 04:50:35 UTC (rev 59574)
@@ -1,3 +1,11 @@
+2006-04-17 Jonathan Chambers <[EMAIL PROTECTED]>
+
+ * PropertyGridTextBox.cs: Formatting, copyright
+ * PropertiesTab.cs: Formatting
+ * PropertyGrid.cs: Formatting
+ * PropertyGridView.cs: Formatting, fix drop down, enabled double
+ click toggling of values
+
2006-04-17 Peter Dennis Bartok <[EMAIL PROTECTED]>
* KeyPressEventArgs: Added 2.0 only setter for KeyChar
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertiesTab.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertiesTab.cs
2006-04-18 02:36:17 UTC (rev 59573)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertiesTab.cs
2006-04-18 04:50:35 UTC (rev 59574)
@@ -24,54 +24,38 @@
//
-// NOT COMPLETE
+// COMPLETE
using System;
-namespace System.Windows.Forms.PropertyGridInternal
-{
- /// <summary>
- /// Summary description for PropertiesTab.
- /// </summary>
- public class PropertiesTab : System.Windows.Forms.Design.PropertyTab
- {
- public PropertiesTab()
- {
+namespace System.Windows.Forms.PropertyGridInternal {
+
+ public class PropertiesTab : System.Windows.Forms.Design.PropertyTab {
+ public PropertiesTab() {
}
- public override
System.ComponentModel.PropertyDescriptorCollection GetProperties(object
component, Attribute[] attributes)
- {
+ public override
System.ComponentModel.PropertyDescriptorCollection GetProperties(object
component, Attribute[] attributes) {
return base.GetProperties(null, component, attributes);
}
- public override
System.ComponentModel.PropertyDescriptorCollection
GetProperties(System.ComponentModel.ITypeDescriptorContext context, object
component, Attribute[] attributes)
- {
+ public override
System.ComponentModel.PropertyDescriptorCollection
GetProperties(System.ComponentModel.ITypeDescriptorContext context, object
component, Attribute[] attributes) {
return base.GetProperties (context, component,
attributes);
}
- public override System.ComponentModel.PropertyDescriptor
GetDefaultProperty (object component)
- {
+ public override System.ComponentModel.PropertyDescriptor
GetDefaultProperty (object component) {
return base.GetDefaultProperty(component);
}
- public override string HelpKeyword
- {
- get
- {
- return base.HelpKeyword;
+ public override string HelpKeyword {
+ get {
+ return "vs.properties";
}
}
-
- public override string TabName
- {
- get
- {
- return string.Empty;
+ public override string TabName {
+ get {
+ return "Properties";
}
}
-
-
-
}
}
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGrid.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGrid.cs
2006-04-18 02:36:17 UTC (rev 59573)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGrid.cs
2006-04-18 04:50:35 UTC (rev 59574)
@@ -35,11 +35,9 @@
using System.Windows.Forms.Design;
using System.Windows.Forms.PropertyGridInternal;
-namespace System.Windows.Forms
-{
+namespace System.Windows.Forms {
[Designer("System.Windows.Forms.Design.PropertyGridDesigner, " +
Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
- public class PropertyGrid : System.Windows.Forms.ContainerControl,
ComponentModel.Com2Interop.IComPropertyBrowser
- {
+ public class PropertyGrid : System.Windows.Forms.ContainerControl,
ComponentModel.Com2Interop.IComPropertyBrowser {
#region Private Members
@@ -149,15 +147,14 @@
toolbar.Appearance = ToolBarAppearance.Flat;
toolbar.AutoSize = false;
toolbar.Buttons.AddRange(new ToolBarButton[] {
-
categorized_toolbarbutton,
-
alphabetic_toolbarbutton,
-
separator_toolbarbutton,
-
propertypages_toolbarbutton});
+
categorized_toolbarbutton,
+
alphabetic_toolbarbutton,
+
separator_toolbarbutton,
+
propertypages_toolbarbutton});
toolbar.ButtonSize = new System.Drawing.Size(20, 20);
toolbar.ImageList = toolbar_imagelist;
toolbar.Location = new System.Drawing.Point(0, 0);
- toolbar.Name = "toolbar";
toolbar.ShowToolTips = true;
toolbar.Size = new System.Drawing.Size(256, 27);
toolbar.TabIndex = 0;
@@ -195,14 +192,6 @@
this.Name = "PropertyGrid";
this.Size = new System.Drawing.Size(256, 400);
- has_focus = false;
-
- //TextChanged+=new System.EventHandler(RedrawEvent);
- //ForeColorChanged+=new EventHandler(RedrawEvent);
- //BackColorChanged+=new
System.EventHandler(RedrawEvent);
- //FontChanged+=new EventHandler(RedrawEvent);
- //SizeChanged+=new EventHandler(RedrawEvent);
-
UpdateToolBarButtons();
}
#endregion // Constructors
@@ -338,8 +327,7 @@
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
- public override Color ForeColor
- {
+ public override Color ForeColor {
get {
return base.ForeColor;
}
@@ -349,12 +337,10 @@
}
public Color HelpBackColor {
- get
- {
+ get {
return help_panel.BackColor;
}
- set
- {
+ set {
if (help_panel.BackColor == value) {
return;
}
@@ -439,7 +425,6 @@
property_sort = value;
ReflectObjects();
- Console.WriteLine("PropertySort");
property_grid_view.Refresh();
if (PropertySortChanged != null) {
@@ -476,7 +461,6 @@
if (selected_grid_item.PropertyDescriptor !=
null)
this.help_description_label.Text =
selected_grid_item.PropertyDescriptor.Description;
- Console.WriteLine("SelectedGridItem");
current_property_value = value.Value;
if (oldItem != null &&
oldItem.PropertyDescriptor != null)
oldItem.PropertyDescriptor.RemoveValueChanged(SelectedObject, new
EventHandler(HandlePropertyValueChanged));
@@ -487,8 +471,7 @@
}
}
- private void HandlePropertyValueChanged(object sender,
EventArgs e)
- {
+ private void HandlePropertyValueChanged(object sender,
EventArgs e) {
OnPropertyValueChanged(new
PropertyValueChangedEventArgs( selected_grid_item, current_property_value));
}
@@ -504,15 +487,12 @@
if (this.SelectedObject == null)
return;
PropertyTabAttribute[] propTabs =
(PropertyTabAttribute[])this.SelectedObject.GetType().GetCustomAttributes(typeof(PropertyTabAttribute),true);
- if (propTabs.Length > 0)
- {
- foreach (Type tabType in
propTabs[0].TabClasses)
- {
+ if (propTabs.Length > 0) {
+ foreach (Type tabType in
propTabs[0].TabClasses) {
this.PropertyTabs.AddTabType(tabType);
}
}
RefreshTabs(PropertyTabScope.Component);
- Console.WriteLine("SelectedObject");
ReflectObjects();
property_grid_view.Refresh();
}
@@ -636,34 +616,27 @@
#region Public Instance Methods
- protected override void Dispose(bool val)
- {
+ protected override void Dispose(bool val) {
base.Dispose(val);
}
- public void CollapseAllGridItems ()
- {
- foreach (GridItem item in this.grid_items)
- {
+ public void CollapseAllGridItems () {
+ foreach (GridItem item in this.grid_items) {
item.Expanded = false;
}
}
- public void ExpandAllGridItems ()
- {
- foreach (GridItem item in this.grid_items)
- {
+ public void ExpandAllGridItems () {
+ foreach (GridItem item in this.grid_items) {
item.Expanded = true;
}
}
- public override void Refresh ()
- {
+ public override void Refresh () {
base.Refresh ();
}
- public void RefreshTabs (PropertyTabScope tabScope)
- {
+ public void RefreshTabs (PropertyTabScope tabScope) {
/*button = new ToolBarButton("C");
button.ImageIndex = 0;
@@ -684,8 +657,7 @@
}
- public void ResetSelectedProperty()
- {
+ public void ResetSelectedProperty() {
if (selected_grid_item == null ||
selected_grid_item.PropertyDescriptor == null)
return;
@@ -695,127 +667,101 @@
#region Protected Instance Methods
- protected virtual PropertyTab CreatePropertyTab(Type tabType)
- {
+ protected virtual PropertyTab CreatePropertyTab(Type tabType) {
return (PropertyTab)Activator.CreateInstance(tabType);
}
[MonoTODO]
- protected void
OnComComponentNameChanged(ComponentRenameEventArgs e)
- {
+ protected void
OnComComponentNameChanged(ComponentRenameEventArgs e) {
throw new NotImplementedException();
}
- protected override void OnFontChanged(EventArgs e)
- {
+ protected override void OnFontChanged(EventArgs e) {
base.OnFontChanged (e);
}
- protected override void OnGotFocus(EventArgs e)
- {
- has_focus=true;
+ protected override void OnGotFocus(EventArgs e) {
base.OnGotFocus(e);
}
- protected override void OnHandleCreated (EventArgs e)
- {
+ protected override void OnHandleCreated (EventArgs e) {
base.OnHandleCreated (e);
}
- protected override void OnHandleDestroyed (EventArgs e)
- {
+ protected override void OnHandleDestroyed (EventArgs e) {
base.OnHandleDestroyed (e);
}
- protected override void OnMouseDown (MouseEventArgs e)
- {
+ protected override void OnMouseDown (MouseEventArgs e) {
base.OnMouseDown (e);
}
- protected override void OnMouseMove (MouseEventArgs e)
- {
+ protected override void OnMouseMove (MouseEventArgs e) {
base.OnMouseMove (e);
}
- protected override void OnMouseUp (MouseEventArgs e)
- {
+ protected override void OnMouseUp (MouseEventArgs e) {
base.OnMouseUp (e);
}
[MonoTODO]
- protected void OnNotifyPropertyValueUIItemsChanged(object
sender, EventArgs e)
- {
+ protected void OnNotifyPropertyValueUIItemsChanged(object
sender, EventArgs e) {
}
- protected override void OnPaint (PaintEventArgs pevent)
- {
+ protected override void OnPaint (PaintEventArgs pevent) {
base.OnPaint (pevent);
}
[MonoTODO]
- protected virtual void OnPropertyTabChanged
(PropertyTabChangedEventArgs e)
- {
+ protected virtual void OnPropertyTabChanged
(PropertyTabChangedEventArgs e) {
throw new NotImplementedException();
}
- protected virtual void OnPropertyValueChanged
(PropertyValueChangedEventArgs e)
- {
- if (PropertyValueChanged != null)
- {
+ protected virtual void OnPropertyValueChanged
(PropertyValueChangedEventArgs e) {
+ if (PropertyValueChanged != null) {
PropertyValueChanged(this, e);
current_property_value =
selected_grid_item.Value;
}
}
- protected override void OnResize (EventArgs e)
- {
+ protected override void OnResize (EventArgs e) {
base.OnResize (e);
}
- protected virtual void OnSelectedGridItemChanged
(SelectedGridItemChangedEventArgs e)
- {
- if (SelectedGridItemChanged != null)
- {
+ protected virtual void OnSelectedGridItemChanged
(SelectedGridItemChangedEventArgs e) {
+ if (SelectedGridItemChanged != null) {
SelectedGridItemChanged(this, e);
}
}
- protected virtual void OnSelectedObjectsChanged (EventArgs e)
- {
- if (SelectedObjectsChanged != null)
- {
+ protected virtual void OnSelectedObjectsChanged (EventArgs e) {
+ if (SelectedObjectsChanged != null) {
SelectedObjectsChanged(this, e);
}
}
- protected override void OnSystemColorsChanged (EventArgs e)
- {
+ protected override void OnSystemColorsChanged (EventArgs e) {
base.OnSystemColorsChanged (e);
}
- protected override void OnVisibleChanged (EventArgs e)
- {
+ protected override void OnVisibleChanged (EventArgs e) {
base.OnVisibleChanged (e);
}
- protected override bool ProcessDialogKey (Keys keyData)
- {
+ protected override bool ProcessDialogKey (Keys keyData) {
return base.ProcessDialogKey (keyData);
}
- protected override void ScaleCore (float dx, float dy)
- {
+ protected override void ScaleCore (float dx, float dy) {
base.ScaleCore (dx, dy);
}
[MonoTODO]
- protected void ShowEventsButton(bool value)
- {
+ protected void ShowEventsButton(bool value) {
throw new NotImplementedException();
}
- protected override void WndProc (ref Message m)
- {
+ protected override void WndProc (ref Message m) {
base.WndProc (ref m);
}
#endregion
@@ -884,8 +830,7 @@
#endregion // Com2Interop.IComPropertyBrowser Interface
#region PropertyTabCollection Class
- public class PropertyTabCollection : ICollection, IEnumerable
- {
+ public class PropertyTabCollection : ICollection, IEnumerable {
System.Collections.ArrayList list;
#region Private Constructors
internal PropertyTabCollection() {
@@ -901,20 +846,17 @@
}
#region ICollection Members
- bool ICollection.IsSynchronized
- {
+ bool ICollection.IsSynchronized {
get {
return list.IsSynchronized;
}
}
- void ICollection.CopyTo(Array array, int index)
- {
+ void ICollection.CopyTo(Array array, int index) {
list.CopyTo(array, index);
}
- object ICollection.SyncRoot
- {
+ object ICollection.SyncRoot {
get {
return list.SyncRoot;
}
@@ -939,24 +881,20 @@
#endregion
#region Public Instance Methods
- public void AddTabType(System.Type propertyTabType)
- {
+ public void AddTabType(System.Type propertyTabType) {
list.Add(Activator.CreateInstance(propertyTabType));
}
[MonoTODO]
public void AddTabType(System.Type propertyTabType,
- System.ComponentModel.PropertyTabScope tabScope)
- {
+ System.ComponentModel.PropertyTabScope
tabScope) {
AddTabType(propertyTabType);
}
[MonoTODO]
- public void
Clear(System.ComponentModel.PropertyTabScope tabScope)
- {
+ public void
Clear(System.ComponentModel.PropertyTabScope tabScope) {
throw new NotImplementedException();
}
[MonoTODO]
- public void RemoveTabType(System.Type propertyTabType)
- {
+ public void RemoveTabType(System.Type propertyTabType) {
throw new NotImplementedException();
}
#endregion
@@ -965,8 +903,7 @@
#region Private Helper Methods
- private void toolbar_ButtonClick (object sender,
ToolBarButtonClickEventArgs e)
- {
+ private void toolbar_ButtonClick (object sender,
ToolBarButtonClickEventArgs e) {
if (e.Button == alphabetic_toolbarbutton) {
this.PropertySort = PropertySort.Alphabetical;
}
@@ -975,12 +912,10 @@
}
UpdateToolBarButtons();
ReflectObjects();
- Console.WriteLine("toolbar_ButtonClick");
property_grid_view.Refresh();
}
- internal void UpdateToolBarButtons ()
- {
+ internal void UpdateToolBarButtons () {
if (PropertySort == PropertySort.Alphabetical) {
categorized_toolbarbutton.Pushed = false;
alphabetic_toolbarbutton.Pushed = true;
@@ -995,20 +930,17 @@
}
}
- private void OnResetPropertyClick (object sender, EventArgs e)
- {
+ private void OnResetPropertyClick (object sender, EventArgs e) {
ResetSelectedProperty();
}
- private void OnDescriptionClick (object sender, EventArgs e)
- {
+ private void OnDescriptionClick (object sender, EventArgs e) {
this.HelpVisible = !this.HelpVisible;
description_menuitem.Checked = this.HelpVisible;
}
- private void ReflectObjects ()
- {
+ private void ReflectObjects () {
grid_items = new GridItemCollection();
foreach (object obj in selected_objects) {
if (obj != null) {
@@ -1017,32 +949,26 @@
}
}
- private void PopulateGridItemCollection (object obj,
GridItemCollection grid_item_coll, bool recurse)
- {
- //TypeConverter converter =
TypeDescriptor.GetConverter(obj);
+ private void PopulateGridItemCollection (object obj,
GridItemCollection grid_item_coll, bool recurse) {
PropertyDescriptorCollection properties =
TypeDescriptor.GetProperties(obj);
foreach (PropertyDescriptor property in properties) {
if (property.IsBrowsable) {
GridEntry grid_entry = new
GridEntry(obj, property);
- if (property_sort ==
PropertySort.Alphabetical || !recurse)
- {
+ if (property_sort ==
PropertySort.Alphabetical || !recurse) {
if
(grid_item_coll[property.Name] == null)
grid_item_coll.Add(property.Name,grid_entry);
}
- else if (property_sort ==
PropertySort.Categorized || property_sort ==
PropertySort.CategorizedAlphabetical)
- {
+ else if (property_sort ==
PropertySort.Categorized || property_sort ==
PropertySort.CategorizedAlphabetical) {
string category =
property.Category;
GridItem cat_item =
grid_item_coll[category];
- if (cat_item == null)
- {
+ if (cat_item == null) {
cat_item = new
CategoryGridEntry(category);
grid_item_coll.Add(category,cat_item);
}
cat_item.GridItems.Add(property.Name,grid_entry);
}
- if (recurse)
- {
+ if (recurse) {
object propObj =
property.GetValue(obj);
if (propObj != null)
PopulateGridItemCollection(propObj,grid_entry.GridItems, false);
@@ -1051,13 +977,14 @@
}
}
- #endregion // Private Helper Methods
-
- private void help_panel_Paint(object sender, PaintEventArgs e)
- {
+ private void help_panel_Paint(object sender, PaintEventArgs e) {
e.Graphics.FillRectangle(ThemeEngine.Current.ResPool.GetSolidBrush(help_panel.BackColor),
help_panel.ClientRectangle );
e.Graphics.DrawRectangle(SystemPens.ControlDark,
0,0,help_panel.Width-1,help_panel.Height-1 );
}
+
+ #endregion // Private Helper Methods
+
+
#if NET_2_0
public bool UseCompatibleTextRendering {
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGridTextBox.cs
===================================================================
---
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGridTextBox.cs
2006-04-18 02:36:17 UTC (rev 59573)
+++
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGridTextBox.cs
2006-04-18 04:50:35 UTC (rev 59574)
@@ -1,113 +1,90 @@
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2004-2005 Novell, Inc.
+//
+// Authors:
+// Jonathan Chambers ([EMAIL PROTECTED])
+//
+
+// COMPLETE
+
using System;
+using System.Drawing;
namespace System.Windows.Forms.PropertyGridInternal {
internal class PropertyGridTextBox : System.Windows.Forms.UserControl {
+ #region Private Members
+
private TextBox textbox;
private Button dialog_button;
private Button dropdown_button;
- /// <summary>
- /// Required designer variable.
- /// </summary>
- private System.ComponentModel.Container components = null;
+ #endregion Private Members
+
+ #region Contructors
public PropertyGridTextBox() {
- // This call is required by the Windows.Forms Form
Designer.
- InitializeComponent();
- dropdown_button.Paint+=new
PaintEventHandler(dropdown_button_Paint);
+ dialog_button = new Button();
+ dropdown_button = new Button();
+ textbox = new TextBox();
- // TODO: Add any initialization after the
InitializeComponent call
+ SuspendLayout();
- }
+ dialog_button.Dock = DockStyle.Right;
+ dialog_button.Size = new Size(16, 16);
+ dialog_button.TabIndex = 1;
+ dialog_button.Visible = false;
+ dialog_button.Click += new
System.EventHandler(dialog_button_Click);
- /// <summary>
- /// Clean up any resources being used.
- /// </summary>
- protected override void Dispose( bool disposing ) {
- if( disposing ) {
- if(components != null) {
- components.Dispose();
- }
- }
- base.Dispose( disposing );
- }
+ dropdown_button.Dock = DockStyle.Right;
+ dropdown_button.Size = new Size(16, 16);
+ dropdown_button.TabIndex = 2;
+ dropdown_button.Visible = false;
+ dropdown_button.Click += new
System.EventHandler(dropdown_button_Click);
- #region Component Designer generated code
- /// <summary>
- /// Required method for Designer support - do not modify
- /// the contents of this method with the code editor.
- /// </summary>
- private void InitializeComponent() {
- this.dialog_button = new System.Windows.Forms.Button();
- this.dropdown_button = new
System.Windows.Forms.Button();
- this.textbox = new System.Windows.Forms.TextBox();
- this.SuspendLayout();
- //
- // dialog_button
- //
- this.dialog_button.Dock =
System.Windows.Forms.DockStyle.Right;
- this.dialog_button.Location = new
System.Drawing.Point(256, 0);
- this.dialog_button.Name = "dialog_button";
- this.dialog_button.Size = new System.Drawing.Size(16,
16);
- this.dialog_button.TabIndex = 1;
- this.dialog_button.Text = "D";
- this.dialog_button.Visible = false;
- this.dialog_button.Click += new
System.EventHandler(this.dialog_button_Click);
- //
- // dropdown_button
- //
- this.dropdown_button.Dock =
System.Windows.Forms.DockStyle.Right;
- this.dropdown_button.Location = new
System.Drawing.Point(240, 0);
- this.dropdown_button.Name = "dropdown_button";
- this.dropdown_button.Size = new System.Drawing.Size(16,
16);
- this.dropdown_button.TabIndex = 2;
- this.dropdown_button.Visible = false;
- this.dropdown_button.Click += new
System.EventHandler(this.dropdown_button_Click);
- //
- // textbox
- //
- this.textbox.AutoSize = false;
- this.textbox.BackColor =
System.Drawing.SystemColors.Window;
- this.textbox.BorderStyle =
System.Windows.Forms.BorderStyle.None;
- this.textbox.Dock = System.Windows.Forms.DockStyle.Fill;
- this.textbox.Location = new System.Drawing.Point(0, 0);
- this.textbox.Name = "textbox";
- this.textbox.Size = new System.Drawing.Size(240, 16);
- this.textbox.TabIndex = 3;
- this.textbox.Text = "textbox";
- //
- // PropertyGridTextBox
- //
- this.Controls.Add(this.textbox);
- this.Controls.Add(this.dropdown_button);
- this.Controls.Add(this.dialog_button);
- this.Name = "PropertyGridTextBox";
- this.Size = new System.Drawing.Size(272, 16);
- this.ResumeLayout(false);
+ textbox.AutoSize = false;
+ textbox.BorderStyle = BorderStyle.None;
+ textbox.Dock = DockStyle.Fill;
+ textbox.TabIndex = 3;
- }
- #endregion
+ Controls.Add(textbox);
+ Controls.Add(dropdown_button);
+ Controls.Add(dialog_button);
- private void dropdown_button_Click(object sender,
System.EventArgs e) {
- if (DropDownButtonClicked != null)
- DropDownButtonClicked(this, EventArgs.Empty);
- }
+ ResumeLayout(false);
- private void dialog_button_Click(object sender,
System.EventArgs e) {
- if (DialogButtonClicked != null)
- DialogButtonClicked(this, EventArgs.Empty);
+ dropdown_button.Paint+=new
PaintEventHandler(dropdown_button_Paint);
+ dialog_button.Paint+=new
PaintEventHandler(dialog_button_Paint);
+ textbox.DoubleClick+=new
EventHandler(textbox_DoubleClick);
}
- public event EventHandler DropDownButtonClicked;
- public event EventHandler DialogButtonClicked;
+ #endregion Contructors
+ #region Public Instance Properties
+
public bool DialogButtonVisible {
get{
return dialog_button.Visible;
}
set {
dialog_button.Visible = value;
- dropdown_button.Redraw();
}
}
public bool DropDownButtonVisible {
@@ -116,7 +93,6 @@
}
set {
dropdown_button.Visible = value;
- dropdown_button.Redraw();
}
}
@@ -138,9 +114,43 @@
}
}
+ #endregion Public Instance Properties
+
+ #region Events
+
+ public event EventHandler DropDownButtonClicked;
+ public event EventHandler DialogButtonClicked;
+ public event EventHandler ToggleValue;
+
+ #endregion Events
+
+ #region Private Helper Methods
+
private void dropdown_button_Paint(object sender,
PaintEventArgs e)
{
ThemeEngine.Current.CPDrawComboButton(e.Graphics,
dropdown_button.ClientRectangle, dropdown_button.ButtonState);
}
+
+ private void dialog_button_Paint(object sender, PaintEventArgs
e) {
+ // best way to draw the ellipse?
+ e.Graphics.DrawString("...", new
Font(Font,FontStyle.Bold), Brushes.Black, 0,0);
+ }
+
+ private void dropdown_button_Click(object sender,
System.EventArgs e) {
+ if (DropDownButtonClicked != null)
+ DropDownButtonClicked(this, EventArgs.Empty);
+ }
+
+ private void dialog_button_Click(object sender,
System.EventArgs e) {
+ if (DialogButtonClicked != null)
+ DialogButtonClicked(this, EventArgs.Empty);
+ }
+
+ #endregion Private Helper Methods
+
+ private void textbox_DoubleClick(object sender, EventArgs e) {
+ if (ToggleValue != null)
+ ToggleValue(this, EventArgs.Empty);
+ }
}
}
Modified:
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGridView.cs
===================================================================
---
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGridView.cs
2006-04-18 02:36:17 UTC (rev 59573)
+++
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/PropertyGridView.cs
2006-04-18 04:50:35 UTC (rev 59574)
@@ -33,10 +33,8 @@
using System.ComponentModel;
using System.Windows.Forms.Design;
-namespace System.Windows.Forms.PropertyGridInternal
-{
- internal class PropertyGridView :
System.Windows.Forms.ScrollableControl, IWindowsFormsEditorService
- {
+namespace System.Windows.Forms.PropertyGridInternal {
+ internal class PropertyGridView :
System.Windows.Forms.ScrollableControl, IWindowsFormsEditorService {
#region Private Members
private const int V_INDENT = 16;
@@ -53,22 +51,21 @@
private bool dropdown_form_showing;
private Form dialog_form;
private VScrollBar vbar;
- private StringFormat stringFormat;
+ private StringFormat string_format;
+ private Font bold_font;
#endregion
#region Contructors
- public PropertyGridView (PropertyGrid propertyGrid)
- {
+ public PropertyGridView (PropertyGrid propertyGrid) {
property_grid = propertyGrid;
property_grid.SelectedGridItemChanged+=new
SelectedGridItemChangedEventHandler(HandleSelectedGridItemChanged);
property_grid.PropertyValueChanged+=new
PropertyValueChangedEventHandler(HandlePropertyValueChanged);
- stringFormat = new StringFormat();
- stringFormat.FormatFlags = StringFormatFlags.NoWrap;
- stringFormat.Trimming = StringTrimming.None;
+ string_format = new StringFormat();
+ string_format.FormatFlags = StringFormatFlags.NoWrap;
+ string_format.Trimming = StringTrimming.None;
- this.BackColor = Color.Beige;
grid_textbox = new PropertyGridTextBox();
grid_textbox.DropDownButtonClicked +=new
EventHandler(DropDownButtonClicked);
grid_textbox.DialogButtonClicked +=new
EventHandler(DialogButtonClicked);
@@ -79,15 +76,17 @@
dropdown_form.ShowInTaskbar = false;
dialog_form = new Form();
- //dialog_form.FormBorderStyle = FormBorderStyle.None;
+ dialog_form.FormBorderStyle = FormBorderStyle.None;
+ dialog_form.ShowInTaskbar = false;
grid_textbox.Visible = false;
- grid_textbox.Font = this.Font;//new
Font(this.Font,FontStyle.Bold);
+ grid_textbox.Font = this.Font;
grid_textbox.BackColor = this.BackColor;
// Not working at all, used to??
grid_textbox.Validating += new
CancelEventHandler(TextBoxValidating);
+ grid_textbox.ToggleValue+=new
EventHandler(grid_textbox_ToggleValue);
this.Controls.Add(grid_textbox);
vbar = new VScrollBar();
@@ -99,6 +98,8 @@
splitter_location = 65;
resizing_grid = false;
+ bold_font = new Font(this.Font, FontStyle.Bold);
+
ForeColorChanged+=new EventHandler(RedrawEvent);
BackColorChanged+=new System.EventHandler(RedrawEvent);
FontChanged+=new EventHandler(RedrawEvent);
@@ -108,56 +109,53 @@
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.ResizeRedraw, false);
- SetStyle(ControlStyles.StandardClick |
ControlStyles.StandardDoubleClick, false);
}
#endregion
#region Protected Instance Methods
-
- protected override void OnPaint(PaintEventArgs e)
- {
- if (property_grid.SelectedGridItem != null &&
property_grid.SelectedGridItem.GridItemType == GridItemType.Property)
- {
- grid_textbox.Visible = true;
- if (!grid_textbox.Focused)
- grid_textbox.Focus();
- }
+
+ protected override void OnFontChanged(EventArgs e) {
+ bold_font = new Font(this.Font, FontStyle.Bold);
+ base.OnFontChanged (e);
+ }
+
+ protected override void OnDoubleClick(EventArgs e) {
+ if (property_grid.SelectedGridItem.Expandable)
+ property_grid.SelectedGridItem.Expanded =
!property_grid.SelectedGridItem.Expanded;
else
- {
- grid_textbox.Visible = false;
- }
+ ToggleValue();
+ Invalidate();
+ base.OnDoubleClick (e);
+ }
+ protected override void OnPaint(PaintEventArgs e) {
// Decide if we need a scrollbar
open_grid_item_count = 0;
- // draw grid outline
- //DrawBackground(e);
-
+ // Background
e.Graphics.FillRectangle
(ThemeEngine.Current.ResPool.GetSolidBrush (BackColor), ClientRectangle);
+
+ // Left column
+ e.Graphics.FillRectangle
(ThemeEngine.Current.ResPool.GetSolidBrush (property_grid.LineColor),
0,0,V_INDENT, ClientRectangle.Height);
+
+ // Grid
+ DrawGrid(e);
- // draw grid items
- // can we use the transform
- //pevent.Graphics.TranslateTransform(0,
-vbar.Value*ROW_HEIGHT);
int yLoc = -vbar.Value*ROW_HEIGHT;
DrawGridItems(property_grid.grid_items, e, 1, ref yLoc);
- DrawGrid(e, yLoc);
+ // Border
e.Graphics.DrawRectangle(SystemPens.ControlDark,
0,0,Width-1,Height-1 );
-
-
-
UpdateScrollBar();
base.OnPaint(e);
}
- protected override void OnMouseMove (MouseEventArgs e)
- {
+ protected override void OnMouseMove (MouseEventArgs e) {
- if (resizing_grid)
- {
+ if (resizing_grid) {
splitter_location = Math.Max(e.X,2*V_INDENT);
Refresh();
}
@@ -168,42 +166,17 @@
base.OnMouseMove (e);
}
- private GridItem GetSelectedGridItem (GridItemCollection
grid_items, int y, ref int current)
- {
- foreach (GridItem child_grid_item in grid_items)
- {
- if (y > current && y < current + ROW_HEIGHT)
- {
- return child_grid_item;
- }
- current += ROW_HEIGHT;
- if (child_grid_item.Expanded)
- {
- GridItem foundItem =
GetSelectedGridItem(child_grid_item.GridItems, y, ref current);
- if (foundItem != null)
- return foundItem;
- }
- }
- return null;
- }
-
- protected override void OnMouseDown (MouseEventArgs e)
- {
- if (e.X > splitter_location - RESIZE_WIDTH && e.X <
splitter_location + RESIZE_WIDTH)
- {
+ protected override void OnMouseDown (MouseEventArgs e) {
+ if (e.X > splitter_location - RESIZE_WIDTH && e.X <
splitter_location + RESIZE_WIDTH) {
resizing_grid = true;
}
- else
- {
+ else {
int offset = -vbar.Value*ROW_HEIGHT;
GridItem foundItem =
GetSelectedGridItem(property_grid.grid_items, e.Y, ref offset);
- if (foundItem != null)
- {
- if (foundItem.Expandable)
- {
- if (e.X >=3 && e.X <= 11 &&
(e.Y % ROW_HEIGHT >= 3 && e.Y % ROW_HEIGHT <= 11))
- {
+ if (foundItem != null) {
+ if (foundItem.Expandable) {
+ if (e.X >=3 && e.X <= 11 &&
(e.Y % ROW_HEIGHT >= 3 && e.Y % ROW_HEIGHT <= 11)) {
foundItem.Expanded =
!foundItem.Expanded;
Invalidate();
}
@@ -215,121 +188,123 @@
}
}
- protected override void OnMouseUp (MouseEventArgs e)
- {
+ protected override void OnMouseUp (MouseEventArgs e) {
resizing_grid = false;
base.OnMouseUp (e);
}
- protected override void OnKeyDown (KeyEventArgs e)
- {
- base.OnKeyDown (e);
+ protected override void OnKeyPress(KeyPressEventArgs e) {
+ if (property_grid.SelectedGridItem.Expandable)
+ property_grid.SelectedGridItem.Expanded =
!property_grid.SelectedGridItem.Expanded;
+ base.OnKeyPress (e);
}
#endregion
#region Private Helper Methods
+ private GridItem GetSelectedGridItem (GridItemCollection
grid_items, int y, ref int current) {
+ foreach (GridItem child_grid_item in grid_items) {
+ if (y > current && y < current + ROW_HEIGHT) {
+ return child_grid_item;
+ }
+ current += ROW_HEIGHT;
+ if (child_grid_item.Expanded) {
+ GridItem foundItem =
GetSelectedGridItem(child_grid_item.GridItems, y, ref current);
+ if (foundItem != null)
+ return foundItem;
+ }
+ }
+ return null;
+ }
- private void UpdateScrollBar()
- {
+ private void UpdateScrollBar() {
int visible_rows =
this.ClientRectangle.Height/ROW_HEIGHT;
- if (open_grid_item_count > visible_rows)
- {
+ if (open_grid_item_count > visible_rows) {
vbar.Visible = true;
vbar.SmallChange = 1;
vbar.Minimum = 0;
vbar.Maximum = open_grid_item_count-1;
vbar.LargeChange = visible_rows;
}
- else
- {
+ else {
vbar.Visible = false;
}
}
- private GridItem GetGridItemAt (int y)
- {
- return null;
- }
-
#region Drawing Code
- private void DrawGrid(PaintEventArgs pevent, int yLoc)
- {
+ private void DrawGrid(PaintEventArgs pevent) {
Pen pen =
ThemeEngine.Current.ResPool.GetPen(property_grid.LineColor);
// vertical divider line
- pevent.Graphics.DrawLine(pen, splitter_location, 0,
splitter_location, yLoc);
+ pevent.Graphics.DrawLine(pen, splitter_location, 0,
splitter_location, ClientRectangle.Height);
- while (yLoc >= 0)
- {
+ int y = 0;
+ while (y < ClientRectangle.Height) {
// horizontal lines
- pevent.Graphics.DrawLine(pen, 0, yLoc,
ClientRectangle.Width, yLoc);
- yLoc -= ROW_HEIGHT;
+ pevent.Graphics.DrawLine(pen, 0, y,
ClientRectangle.Width, y);
+ y += ROW_HEIGHT;
}
}
- private void DrawGridItems(GridItemCollection grid_items,
PaintEventArgs pevent, int depth, ref int yLoc)
- {
- foreach (GridItem grid_item in grid_items)
- {
+ private void DrawGridItems(GridItemCollection grid_items,
PaintEventArgs pevent, int depth, ref int yLoc) {
+ foreach (GridItem grid_item in grid_items) {
DrawGridItem (grid_item, pevent, depth, ref
yLoc);
if (grid_item.Expanded)
DrawGridItems(grid_item.GridItems,
pevent, (grid_item.GridItemType == GridItemType.Category) ? depth : depth+1,
ref yLoc);
}
}
- private void DrawGridItemLabel(GridItem grid_item,
PaintEventArgs pevent, Rectangle rect)
- {
+ private void DrawGridItemLabel(GridItem grid_item,
PaintEventArgs pevent, Rectangle rect) {
int x = rect.X+1;
if (grid_item.Parent != null &&
grid_item.Parent.GridItemType != GridItemType.Category)
x += V_INDENT;
Font font = this.Font;
Brush brush = SystemBrushes.WindowText;
- if (grid_item.GridItemType == GridItemType.Category)
- {
- font = new Font(font, FontStyle.Bold);
+ if (grid_item.GridItemType == GridItemType.Category) {
+ font = bold_font;
brush = SystemBrushes.ControlDark;
}
- if (grid_item == property_grid.SelectedGridItem &&
grid_item.GridItemType != GridItemType.Category)
- {
+ if (grid_item == property_grid.SelectedGridItem &&
grid_item.GridItemType != GridItemType.Category) {
pevent.Graphics.FillRectangle
(SystemBrushes.Highlight, rect);
// Label
brush = SystemBrushes.HighlightText;
}
-
pevent.Graphics.DrawString(grid_item.Label,font,brush,new Rectangle(x, rect.Y +
2,x-rect.X+rect.Width-2,rect.Height-2),stringFormat);
+ if (grid_item.GridItemType == GridItemType.Category) {
+
pevent.Graphics.DrawString(grid_item.Label,font,brush,x, rect.Y + 2);
+ if (grid_item ==
property_grid.SelectedGridItem) {
+ SizeF size =
pevent.Graphics.MeasureString(grid_item.Label, bold_font);
+
ControlPaint.DrawFocusRectangle(pevent.Graphics, new Rectangle(x,rect.Y+2,
(int)size.Width, (int)size.Height));
+ }
+ }
+ else
+
pevent.Graphics.DrawString(grid_item.Label,font,brush,new Rectangle(x, rect.Y +
2,x-rect.X+rect.Width-2,rect.Height-2),string_format);
}
- private void DrawGridItemValue(GridItem grid_item,
PaintEventArgs pevent, Rectangle rect)
- {
+ private void DrawGridItemValue(GridItem grid_item,
PaintEventArgs pevent, Rectangle rect) {
// Value
- if (grid_item.PropertyDescriptor != null)
- {
+ if (grid_item.PropertyDescriptor != null) {
bool paintsValue = false;
UITypeEditor editor = null;
object temp =
grid_item.PropertyDescriptor.GetEditor(typeof(UITypeEditor));
editor =
(UITypeEditor)temp;//grid_item.PropertyDescriptor.GetEditor(typeof(UITypeEditor));
- if (editor != null)
- {
+ if (editor != null) {
paintsValue =
editor.GetPaintValueSupported();
}
- if (grid_item == property_grid.SelectedGridItem)
- {
+ if (grid_item ==
property_grid.SelectedGridItem) {
grid_textbox.ReadOnly = false;
grid_textbox.DropDownButtonVisible =
false;
grid_textbox.DialogButtonVisible =
false;
- if (editor != null)
- {
+ if (editor != null) {
UITypeEditorEditStyle style =
editor.GetEditStyle();
- switch (style)
- {
+ switch (style) {
case
UITypeEditorEditStyle.DropDown:
grid_textbox.DropDownButtonVisible = true;
break;
@@ -338,27 +313,21 @@
break;
}
}
- else
- {
- try
- {
- if
(grid_item.PropertyDescriptor.Converter != null)
- {
- if
(grid_item.PropertyDescriptor.Converter.GetStandardValuesSupported())
- {
+ else {
+ try {
+ if
(grid_item.PropertyDescriptor.Converter != null) {
+ if
(grid_item.PropertyDescriptor.Converter.GetStandardValuesSupported()) {
grid_textbox.DropDownButtonVisible = true;
grid_textbox.ReadOnly = true;
}
}
- else
- {
+ else {
System.Console.WriteLine("Converter not available for type
{0}",grid_item.PropertyDescriptor.PropertyType);
}
}
- catch (Exception ex)
- {
+ catch (Exception ex) {
}
}
}
@@ -366,15 +335,12 @@
int xLoc = splitter_location+1;
- if (paintsValue)
- {
+ if (paintsValue) {
pevent.Graphics.DrawRectangle(ThemeEngine.Current.ResPool.GetPen(Color.Black),
splitter_location+2,rect.Y+2, 20, ROW_HEIGHT-4);
- try
- {
+ try {
editor.PaintValue(grid_item.Value, pevent.Graphics, new
Rectangle(splitter_location+3,rect.Y+3, 19, ROW_HEIGHT-5));
}
- catch (Exception ex)
- {
+ catch (Exception ex) {
System.Console.WriteLine(ex.Message);
System.Console.WriteLine("Paint
Value failed for type {0}",grid_item.PropertyDescriptor.PropertyType);
// design time stuff is not
playing nice
@@ -383,69 +349,52 @@
}
Font font = this.Font;
- try
- {
- if
(grid_item.PropertyDescriptor.Converter != null)
- {
+ try {
+ if
(grid_item.PropertyDescriptor.Converter != null) {
string value =
grid_item.PropertyDescriptor.Converter.ConvertToString(grid_item.Value);
if
(grid_item.PropertyDescriptor.CanResetValue(property_grid.SelectedObject))
- font = new Font(font,
FontStyle.Bold);
+ font = bold_font;
-
pevent.Graphics.DrawString(value,font,SystemBrushes.WindowText,new
RectangleF(xLoc,rect.Y+2, ClientRectangle.Width-(xLoc),
ROW_HEIGHT),stringFormat);
+
pevent.Graphics.DrawString(value,font,SystemBrushes.WindowText,new
RectangleF(xLoc,rect.Y+2, ClientRectangle.Width-(xLoc),
ROW_HEIGHT),string_format);
}
- else
- {
+ else {
System.Console.WriteLine("No
converter for type {0}",grid_item.PropertyDescriptor.PropertyType);
}
}
- catch (Exception e)
- {
+ catch (Exception e) {
}
- if (grid_item == property_grid.SelectedGridItem
&& grid_item.GridItemType != GridItemType.Category)
- {
+ if (grid_item == property_grid.SelectedGridItem
&& grid_item.GridItemType != GridItemType.Category) {
grid_textbox.SetBounds(xLoc, rect.Top,
ClientRectangle.Width-xLoc - (vbar.Visible ? vbar.Width: 0),ROW_HEIGHT);
}
}
}
- private void DrawGridItem (GridItem grid_item, PaintEventArgs
pevent, int depth, ref int yLoc)
- {
- if (yLoc > -ROW_HEIGHT && yLoc < ClientRectangle.Height)
- {
-
- // left column
- pevent.Graphics.FillRectangle
(ThemeEngine.Current.ResPool.GetSolidBrush (property_grid.LineColor),
0,yLoc,V_INDENT, ROW_HEIGHT);
-
- if (grid_item.Expandable)
- {
- grid_item.PlusMinusBounds =
DrawPlusMinus(pevent, 3, yLoc+3, grid_item.Expanded, grid_item.GridItemType ==
GridItemType.Category);
+ private void DrawGridItem (GridItem grid_item, PaintEventArgs
pevent, int depth, ref int yLoc) {
+ if (yLoc > -ROW_HEIGHT && yLoc <
ClientRectangle.Height) {
+ if (grid_item.Expandable) {
+ grid_item.PlusMinusBounds =
DrawPlusMinus(pevent.Graphics, 3, yLoc+3, grid_item.Expanded,
grid_item.GridItemType == GridItemType.Category);
}
- if (grid_item.GridItemType ==
GridItemType.Category)
- {
+ if (grid_item.GridItemType ==
GridItemType.Category) {
pevent.Graphics.FillRectangle
(ThemeEngine.Current.ResPool.GetSolidBrush (property_grid.LineColor),
depth*V_INDENT,yLoc,ClientRectangle.Width-(depth*V_INDENT), ROW_HEIGHT);
}
DrawGridItemLabel(grid_item, pevent, new
Rectangle(depth*V_INDENT,yLoc, splitter_location-depth*V_INDENT, ROW_HEIGHT));
DrawGridItemValue(grid_item, pevent, new
Rectangle(splitter_location+2,yLoc, ClientRectangle.Width-splitter_location-2,
ROW_HEIGHT));
-
-
-
}
grid_item.Top = yLoc;
yLoc += ROW_HEIGHT;
open_grid_item_count++;
}
- private Rectangle DrawPlusMinus (PaintEventArgs pevent, int x,
int y, bool expanded, bool category)
- {
+ private Rectangle DrawPlusMinus (Graphics g, int x, int y, bool
expanded, bool category) {
Rectangle bounds = new Rectangle(x, y, 8, 8);
- if (!category) pevent.Graphics.FillRectangle
(ThemeEngine.Current.ResPool.GetSolidBrush(Color.White), bounds);
- pevent.Graphics.DrawRectangle (SystemPens.ControlDark,
bounds);
- pevent.Graphics.DrawLine (SystemPens.ControlDark, x+2,
y+4, x + 6, y+4);
+ if (!category) g.FillRectangle
(ThemeEngine.Current.ResPool.GetSolidBrush(Color.White), bounds);
+ g.DrawRectangle (SystemPens.ControlDark, bounds);
+ g.DrawLine (SystemPens.ControlDark, x+2, y+4, x + 6,
y+4);
if (!expanded)
- pevent.Graphics.DrawLine
(SystemPens.ControlDark, x+4, y+2, x+4, y+6);
+ g.DrawLine (SystemPens.ControlDark, x+4, y+2,
x+4, y+6);
return bounds;
}
@@ -453,31 +402,23 @@
#endregion
#region Event Handling
- private void RedrawEvent (object sender, System.EventArgs e)
- {
+ private void RedrawEvent (object sender, System.EventArgs e) {
Refresh();
}
- private void TextBoxValidating (object sender, CancelEventArgs
e)
- {
- if (this.property_grid.SelectedGridItem != null)
- {
+ private void TextBoxValidating (object sender, CancelEventArgs
e) {
+ if (this.property_grid.SelectedGridItem != null) {
PropertyDescriptor desc =
property_grid.SelectedGridItem.PropertyDescriptor;
- if (desc != null)
- {
- try
- {
- if (desc.Converter != null)
- {
+ if (desc != null) {
+ try {
+ if (desc.Converter != null) {
SetPropertyValue(desc.Converter.ConvertFromString(grid_textbox.Text));
}
- else
- {
+ else {
System.Console.WriteLine("No converter for type {0}",desc.PropertyType);
}
}
- catch (Exception ex)
- {
+ catch (Exception ex) {
Console.WriteLine("Error
converting string");
}
}
@@ -486,62 +427,78 @@
#endregion
-
- #endregion
+ private void ToggleValue() {
+ if (property_grid.SelectedGridItem.GridItemType ==
GridItemType.Property) {
+ if
(property_grid.SelectedGridItem.PropertyDescriptor != null) {
+ if
(property_grid.SelectedGridItem.PropertyDescriptor.PropertyType == typeof(bool))
+
SetPropertyValue(!(bool)property_grid.SelectedGridItem.Value);
+ else if
(property_grid.SelectedGridItem.PropertyDescriptor.Converter.GetStandardValuesSupported()){
+
System.ComponentModel.TypeConverter.StandardValuesCollection coll =
+
(System.ComponentModel.TypeConverter.StandardValuesCollection)property_grid.SelectedGridItem.PropertyDescriptor.Converter.GetStandardValues();
+ for (int i = 0; i < coll.Count;
i++) {
+ if
(property_grid.SelectedGridItem.Value.Equals(coll[i])){
+ if (i <
coll.Count-1)
+
SetPropertyValue(coll[i+1]);
+ else
+
SetPropertyValue(coll[0]);
+ break;
+ }
- private void dropdown_form_Deactivate (object sender, EventArgs
e)
- {
+ }
+ }
+ }
+ }
+ }
+
+ private void dropdown_form_Deactivate (object sender, EventArgs
e) {
dropdown_form_showing = false;
dropdown_form.Hide();
- //dropdown_form = new Form();
}
- private void listBox_SelectedIndexChanged (object sender,
EventArgs e)
- {
- if (this.property_grid.SelectedGridItem != null)
- {
+ private void listBox_MouseUp(object sender, MouseEventArgs e) {
+ if (this.property_grid.SelectedGridItem != null) {
PropertyDescriptor desc =
property_grid.SelectedGridItem.PropertyDescriptor;
- if (desc != null)
- {
-
SetPropertyValue(((ListBox)sender).SelectedItem);
+ if (desc != null) {
+
SetPropertyValue(((PropertyGridListBox)sender).SelectedItem);
}
}
+ dropdown_form_showing = false;
dropdown_form.Hide();
- //dropdown_form = new Form();
Refresh();
}
- private void SetPropertyValue(object newVal)
- {
- if (this.property_grid.SelectedGridItem != null)
- {
+ private void SetPropertyValue(object newVal) {
+ if (this.property_grid.SelectedGridItem != null) {
PropertyDescriptor desc =
property_grid.SelectedGridItem.PropertyDescriptor;
- if (desc != null)
- {
+ if (desc != null) {
desc.SetValue(property_grid.SelectedObject, newVal);
}
}
}
- private void DropDownButtonClicked (object sender, EventArgs e)
- {
- if
(property_grid.SelectedGridItem.PropertyDescriptor.GetEditor(typeof(UITypeEditor))
== null)
- {
- //dropdown_form.FormBorderStyle =
FormBorderStyle.None;
+ private void DropDownButtonClicked (object sender, EventArgs e)
{
+ if
(property_grid.SelectedGridItem.PropertyDescriptor.GetEditor(typeof(UITypeEditor))
== null) {
dropdown_form.Deactivate +=new
EventHandler(dropdown_form_Deactivate);
- ListBox listBox = new ListBox();
+ PropertyGridListBox listBox = new
PropertyGridListBox();
+ listBox.BorderStyle = BorderStyle.FixedSingle;
listBox.Dock = DockStyle.Fill;
- listBox.SelectedIndexChanged +=new
EventHandler(listBox_SelectedIndexChanged);
- foreach (object obj in
property_grid.SelectedGridItem.PropertyDescriptor.Converter.GetStandardValues())
+ int selected_index = 0;
+ int i = 0;
+ foreach (object obj in
property_grid.SelectedGridItem.PropertyDescriptor.Converter.GetStandardValues())
{
listBox.Items.Add(obj);
+ if
(property_grid.SelectedGridItem.Value.Equals(obj))
+ selected_index = i;
+ i++;
+ }
+ listBox.SelectedIndex = selected_index;
+ listBox.MouseUp+=new
MouseEventHandler(listBox_MouseUp);
dropdown_form.Controls.Clear();
dropdown_form.Controls.Add(listBox);
dropdown_form.Location = PointToScreen(new
Point(grid_textbox.Location.X,grid_textbox.Location.Y+ROW_HEIGHT));
dropdown_form.Width = grid_textbox.Width;
dropdown_form.Show();
}
- else // use editor
- {
+ else { // use editor
UITypeEditor editor =
(UITypeEditor)property_grid.SelectedGridItem.PropertyDescriptor.GetEditor(typeof(UITypeEditor));
System.ComponentModel.Design.ServiceContainer
service_container = new System.ComponentModel.Design.ServiceContainer();
service_container.AddService(typeof(System.Windows.Forms.Design.IWindowsFormsEditorService),
this);
@@ -549,39 +506,30 @@
}
}
- private void DialogButtonClicked(object sender, EventArgs e)
- {
- //dialog_form.Location = PointToScreen(new
Point(grid_textbox.Location.X,grid_textbox.Location.Y+ROW_HEIGHT));
- //dropdown_form.Width = grid_textbox.Width;
+ private void DialogButtonClicked(object sender, EventArgs e) {
dialog_form.Show();
}
- private void HandleScroll(object sender, ScrollEventArgs e)
- {
- if (e.NewValue <= 0)
- {
+ private void HandleScroll(object sender, ScrollEventArgs e) {
+ if (e.NewValue <= 0) {
e.NewValue = 0;
if (e.NewValue == vbar.Value)return;
}
- if (e.NewValue >
vbar.Maximum-ClientRectangle.Height/ROW_HEIGHT)
- {
+ if (e.NewValue >
vbar.Maximum-ClientRectangle.Height/ROW_HEIGHT) {
e.NewValue =
vbar.Maximum-ClientRectangle.Height/ROW_HEIGHT+1;
if (e.NewValue == vbar.Value)return;
}
- switch (e.Type)
- {
+ switch (e.Type) {
case ScrollEventType.SmallDecrement:
XplatUI.ScrollWindow(Handle, 0,
ROW_HEIGHT, false);
grid_textbox.Top += ROW_HEIGHT;
Invalidate(ClientRectangle);
- //Invalidate(new
Rectangle(0,0,ClientRectangle.Width,ROW_HEIGHT));
break;
case ScrollEventType.SmallIncrement:
XplatUI.ScrollWindow(Handle, 0,
-ROW_HEIGHT, false);
grid_textbox.Top -= ROW_HEIGHT;
Invalidate(ClientRectangle);
- //Invalidate(new
Rectangle(0,ClientRectangle.Bottom-ROW_HEIGHT,ClientRectangle.Width,ROW_HEIGHT));
break;
case ScrollEventType.LargeDecrement:
XplatUI.ScrollWindow(Handle, 0,
ROW_HEIGHT, false);
@@ -601,20 +549,27 @@
}
}
+ private void grid_textbox_ToggleValue(object sender, EventArgs
e) {
+ ToggleValue();
+ Invalidate();
+ }
- private void HandleSelectedGridItemChanged(object sender,
SelectedGridItemChangedEventArgs e)
- {
+ private void HandleSelectedGridItemChanged(object sender,
SelectedGridItemChangedEventArgs e) {
// Region not working correctly
//Region clip = new Region();
//if (property_grid.SelectedGridItem != null)
// clip.Union(new
Rectangle(0,property_grid.SelectedGridItem.Top, ClientRectangle.Width,
ROW_HEIGHT));
// clip.Union(new
Rectangle(0,property_grid.SelectedGridItem.Top, ClientRectangle.Width,
ROW_HEIGHT));
- if (e.NewSelection.PropertyDescriptor != null)
- {
+ if (e.NewSelection.GridItemType ==
GridItemType.Property)
+ grid_textbox.Visible = true;
+ else
+ grid_textbox.Visible = false;
+
+ if (e.NewSelection.PropertyDescriptor != null) {
grid_textbox.Text =
e.NewSelection.PropertyDescriptor.Converter.ConvertToString(e.NewSelection.Value);
if
(e.NewSelection.PropertyDescriptor.CanResetValue(property_grid.SelectedObject))
- grid_textbox.Font = new Font(this.Font,
FontStyle.Bold);
+ grid_textbox.Font = bold_font;
else
grid_textbox.Font = this.Font;
}
@@ -623,29 +578,28 @@
Update();
}
- private void HandlePropertyValueChanged(object s,
PropertyValueChangedEventArgs e)
- {
- if (e.ChangedItem.PropertyDescriptor != null)
- {
+ private void HandlePropertyValueChanged(object s,
PropertyValueChangedEventArgs e) {
+ if (e.ChangedItem.PropertyDescriptor != null) {
grid_textbox.Text =
e.ChangedItem.PropertyDescriptor.Converter.ConvertToString(e.ChangedItem.Value);
if
(e.ChangedItem.PropertyDescriptor.CanResetValue(property_grid.SelectedObject))
- grid_textbox.Font = new Font(this.Font,
FontStyle.Bold);
+ grid_textbox.Font = bold_font;
else
grid_textbox.Font = this.Font;
}
}
+
+
+ #endregion
+
#region IWindowsFormsEditorService Members
- public void CloseDropDown()
- {
+ public void CloseDropDown() {
dropdown_form_showing = false;
dropdown_form.Hide();
}
- public void DropDownControl(Control control)
- {
- //dropdown_form.FormBorderStyle = FormBorderStyle.None;
+ public void DropDownControl(Control control) {
dropdown_form.Deactivate +=new
EventHandler(dropdown_form_Deactivate);
dropdown_form.Size = control.Size;
control.Dock = DockStyle.Fill;
@@ -657,15 +611,13 @@
dropdown_form_showing = true;
dropdown_form.Show();
System.Windows.Forms.MSG msg = new MSG();
- while (XplatUI.GetMessage(ref msg, IntPtr.Zero, 0, 0)
&& dropdown_form_showing)
- {
+ while (XplatUI.GetMessage(ref msg, IntPtr.Zero, 0, 0)
&& dropdown_form_showing) {
XplatUI.TranslateMessage(ref msg);
XplatUI.DispatchMessage(ref msg);
}
}
- public System.Windows.Forms.DialogResult ShowDialog(Form dialog)
- {
+ public System.Windows.Forms.DialogResult ShowDialog(Form
dialog) {
return dialog.ShowDialog(this);
}
@@ -675,46 +627,36 @@
#endregion DropDownForm Class
#region Internal Classes
- internal class ITypeDescriptorContextImpl :
System.ComponentModel.ITypeDescriptorContext
- {
+ internal class ITypeDescriptorContextImpl :
System.ComponentModel.ITypeDescriptorContext {
private PropertyGrid property_grid;
- public ITypeDescriptorContextImpl(PropertyGrid
propertyGrid)
- {
+ public ITypeDescriptorContextImpl(PropertyGrid
propertyGrid) {
property_grid = propertyGrid;
}
#region ITypeDescriptorContext Members
- public void OnComponentChanged()
- {
+ public void OnComponentChanged() {
// TODO: Add SystemComp.OnComponentChanged
implementation
}
- public IContainer Container
- {
- get
- {
+ public IContainer Container {
+ get {
return property_grid as IContainer;
}
}
- public bool OnComponentChanging()
- {
+ public bool OnComponentChanging() {
// TODO: Add SystemComp.OnComponentChanging
implementation
return false;
}
- public object Instance
- {
- get
- {
+ public object Instance {
+ get {
return
property_grid.SelectedGridItem.Value;
}
}
- public PropertyDescriptor PropertyDescriptor
- {
- get
- {
+ public PropertyDescriptor PropertyDescriptor {
+ get {
return
property_grid.SelectedGridItem.PropertyDescriptor;
}
}
@@ -723,8 +665,7 @@
#region IServiceProvider Members
- public object GetService(Type serviceType)
- {
+ public object GetService(Type serviceType) {
// TODO: Add SystemComp.GetService
implementation
return null;
}
@@ -738,12 +679,9 @@
/*
class ComboListBox
*/
- internal class PropertyGridDropDown : Form
- {
- protected override CreateParams CreateParams
- {
- get
- {
+ internal class PropertyGridDropDown : Form {
+ protected override CreateParams CreateParams {
+ get {
CreateParams cp = base.CreateParams;
cp.Style = unchecked
((int)(WindowStyles.WS_POPUP | WindowStyles.WS_VISIBLE |
WindowStyles.WS_CLIPSIBLINGS | WindowStyles.WS_CLIPCHILDREN));
cp.ExStyle |=
(int)(WindowExStyles.WS_EX_TOOLWINDOW | WindowExStyles.WS_EX_TOPMOST);
@@ -752,7 +690,42 @@
}
}
- #endregion
+ internal class PropertyGridListBox : ListBox {
+ private bool mouse_down;
+ public PropertyGridListBox() {
+ SetStyle(ControlStyles.DoubleBuffer, true);
+ mouse_down =false;
+ }
+
+ protected override void OnMouseDown(MouseEventArgs e) {
+ mouse_down = true;
+ base.OnMouseDown (e);
+ }
+
+ protected override void OnMouseUp(MouseEventArgs e) {
+ mouse_down = false;
+ base.OnMouseUp (e);
+ }
+
+ protected override void OnMouseMove(MouseEventArgs e) {
+ if (!mouse_down)
+ return;
+ for (int i = 0; i < Items.Count; i++) {
+ if (GetItemRectangle(i).Contains(e.X,
e.Y)) {
+ SelectedIndex = i;
+ break;
+ }
+ }
+ base.OnMouseMove (e);
+ }
+
+
+
+
+
+ }
+
+ #endregion
}
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches