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

Reply via email to