Author: jordi
Date: 2005-04-26 14:10:08 -0400 (Tue, 26 Apr 2005)
New Revision: 43610

Modified:
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckedListBox.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBox.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListBox.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListControl.cs
   
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
Log:
2005-04-26  Jordi Mas i Hernandez <[EMAIL PROTECTED]>

        * ComboBox.cs: Databinding support fixes, fire missing events
        * ListControl.cs: implement missing methods and properties, fixes
        * ThemeWin32Classic.cs: Databiding support on Drawing
        * CheckedListBox.cs: Databinding support fixes, fire missing events
        * ListBox.cs: Databinding support fixes, fire missing events
        


Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2005-04-26 18:09:26 UTC (rev 43609)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2005-04-26 18:10:08 UTC (rev 43610)
@@ -1,3 +1,11 @@
+2005-04-26  Jordi Mas i Hernandez <[EMAIL PROTECTED]>
+
+       * ComboBox.cs: Databinding support fixes, fire missing events
+       * ListControl.cs: implement missing methods and properties, fixes
+       * ThemeWin32Classic.cs: Databiding support on Drawing
+       * CheckedListBox.cs: Databinding support fixes, fire missing events
+       * ListBox.cs: Databinding support fixes, fire missing events
+       
 2005-04-25  Peter Bartok  <[EMAIL PROTECTED]>
 
        * LinkLabel.cs: Length of LinkArea is not allowed to be negative

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckedListBox.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckedListBox.cs    
    2005-04-26 18:09:26 UTC (rev 43609)
+++ 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/CheckedListBox.cs    
    2005-04-26 18:10:08 UTC (rev 43610)
@@ -24,7 +24,7 @@
 //
 //
 
-// NOT COMPLETE
+// COMPLETE
 
 using System;
 using System.Drawing;
@@ -107,14 +107,14 @@
                [Browsable (false)]
                public new object DataSource {
                        get { return base.DataSource; }
-                       set { DataSource = value; }
+                       set { base.DataSource = value; }
                }
 
                [EditorBrowsable (EditorBrowsableState.Never)]
                [Browsable (false)]
                public new string DisplayMember {
-                       get { throw new NotImplementedException (); }
-                       set { throw new NotImplementedException (); }
+                       get { return base.DisplayMember; }
+                       set { base.DisplayMember = value; }
                }
 
                [Browsable (false)]
@@ -175,7 +175,7 @@
 
                protected override AccessibleObject CreateAccessibilityInstance 
()
                {
-                       throw new NotImplementedException ();
+                       return base.CreateAccessibilityInstance ();
                }
                
                protected override ListBox.ObjectCollection 
CreateItemCollection ()

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBox.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBox.cs      
2005-04-26 18:09:26 UTC (rev 43609)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ComboBox.cs      
2005-04-26 18:10:08 UTC (rev 43610)
@@ -406,10 +406,11 @@
                                selected_index = value;
                                
                                if (dropdown_style != 
ComboBoxStyle.DropDownList) {
-                                       SetControlText 
(Items[selected_index].ToString ());
+                                       SetControlText (GetItemText 
(Items[selected_index]));
                                }
                                
                                OnSelectedIndexChanged  (new EventArgs ());
+                               OnSelectedValueChanged (new EventArgs ());
                                Refresh ();
                        }
                }
@@ -436,7 +437,7 @@
                                selected_index = index;
                                
                                if (dropdown_style != 
ComboBoxStyle.DropDownList) {
-                                       SetControlText 
(Items[selected_index].ToString ());
+                                       SetControlText (GetItemText 
(Items[selected_index]));
                                }
                                
                                OnSelectedItemChanged  (new EventArgs ());
@@ -525,7 +526,7 @@
                                }
 
                                if (SelectedItem != null)  {
-                                       return SelectedItem.ToString ();
+                                       return GetItemText (SelectedItem);
                                }
                                                                
                                return base.Text;                               
@@ -544,7 +545,7 @@
                                }
                                
                                if (dropdown_style != 
ComboBoxStyle.DropDownList) {
-                                       textbox_ctrl.Text = value.ToString ();
+                                       textbox_ctrl.Text = GetItemText (value);
                                }                               
                        }
                }
@@ -602,7 +603,7 @@
                public int FindString (string s, int startIndex)
                {
                        for (int i = startIndex; i < Items.Count; i++) {
-                               if ((Items[i].ToString ()).StartsWith (s))
+                               if ((GetItemText (Items[i])).StartsWith (s))
                                        return i;
                        }
 
@@ -617,7 +618,7 @@
                public int FindStringExact (string s, int startIndex)
                {
                        for (int i = startIndex; i < Items.Count; i++) {
-                               if ((Items[i].ToString ()).Equals (s))
+                               if ((GetItemText (Items[i])).Equals (s))
                                        return i;
                        }
 
@@ -666,11 +667,14 @@
                protected override void OnDataSourceChanged (EventArgs e)
                {
                        base.OnDataSourceChanged (e);
-
-                       if (DataSource != null)
+                       BindDataItems (items);
+                       
+                       if (DataSource == null || DataManager == null) {
                                SelectedIndex = -1;
-
-                       BindDataItems (items);
+                       } 
+                       else {
+                               SelectedIndex = DataManager.Position;
+                       }
                }
 
                protected override void OnDisplayMemberChanged (EventArgs e)
@@ -1000,7 +1004,7 @@
                {                       
                        for (int i = 0; i < Items.Count; i++) 
                        {                               
-                               if (String.Compare (Items[i].ToString (), 0, 
search, 0, search.Length, true) == 0)
+                               if (String.Compare (GetItemText (Items[i]), 0, 
search, 0, search.Length, true) == 0)
                                        return i;
                        }
 
@@ -1678,7 +1682,7 @@
                                        owner.OnSelectionChangeCommitted (new 
EventArgs ());
                                        
                                        if (owner.DropDownStyle == 
ComboBoxStyle.Simple) {
-                                               owner.SetControlText 
(owner.Items[item].ToString ());
+                                               owner.SetControlText 
(owner.GetItemText (owner.Items[item]));
                                        }
                                }
                        }

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListBox.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListBox.cs       
2005-04-26 18:09:26 UTC (rev 43609)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListBox.cs       
2005-04-26 18:10:08 UTC (rev 43610)
@@ -557,7 +557,7 @@
                public override string Text {
                        get {
                                if (SelectionMode != SelectionMode.None && 
SelectedIndex != -1)
-                                       return Items[SelectedIndex].ToString ();
+                                       return GetItemText (SelectedItem);
 
                                return base.Text;
                        }
@@ -664,7 +664,7 @@
                public int FindString (string s,  int startIndex)
                {
                        for (int i = startIndex; i < Items.Count; i++) {
-                               if ((Items[i].ToString ()).StartsWith (s))
+                               if ((GetItemText (Items[i])).StartsWith (s))
                                        return i;
                        }
 
@@ -679,7 +679,7 @@
                public int FindStringExact (string s,  int startIndex)
                {
                        for (int i = startIndex; i < Items.Count; i++) {
-                               if ((Items[i].ToString ()).Equals (s))
+                               if ((GetItemText (Items[i])).Equals (s))
                                        return i;
                        }
 
@@ -773,11 +773,14 @@
                protected override void OnDataSourceChanged (EventArgs e)
                {
                        base.OnDataSourceChanged (e);
-
-                       if (DataSource != null)
+                       BindDataItems (items);                  
+                       
+                       if (DataSource == null || DataManager == null) {
                                SelectedIndex = -1;
-
-                       BindDataItems (items);
+                       } 
+                       else {
+                               SelectedIndex = DataManager.Position;
+                       }
                }
 
                protected override void OnDisplayMemberChanged (EventArgs e)
@@ -788,7 +791,7 @@
                                return;
 
                        BindDataItems (items);
-                       SelectedIndex = DataManager.Position;
+                       base.Refresh ();
                }
 
                protected virtual void OnDrawItem (DrawItemEventArgs e)
@@ -1638,7 +1641,7 @@
 
                                        SizeF size;
                                        for (int i = 0; i < Items.Count; i++) {
-                                               size = 
DeviceContext.MeasureString (Items[i].ToString(), Font);
+                                               size = 
DeviceContext.MeasureString (GetItemText (Items[i]), Font);
 
                                                if ((int) size.Width > 
listbox_info.max_itemwidth)
                                                        
listbox_info.max_itemwidth = (int) size.Width;
@@ -1649,7 +1652,7 @@
 
                                                SizeF size;
                                                for (int i = first; i < last + 
1; i++) {
-                                                       size = 
DeviceContext.MeasureString (Items[i].ToString(), Font);
+                                                       size = 
DeviceContext.MeasureString (GetItemText (Items[i]), Font);
 
                                                        if ((int) size.Width > 
listbox_info.max_itemwidth)
                                                                
listbox_info.max_itemwidth = (int) size.Width;
@@ -1814,9 +1817,9 @@
                                {
                                        int index1 = ((ListBox.ListBoxItem) 
(a)).Index;
                                        int index2 = ((ListBox.ListBoxItem) 
(b)).Index;
-                                       string str1 = 
owner.Items[index1].ToString ();
-                                       string str2 = 
owner.Items[index2].ToString ();                                  
-                                       return str1.CompareTo (str2);           
                        
+                                       string str1 = owner.GetItemText 
(owner.Items[index1]);
+                                       string str2 = owner.GetItemText 
(owner.Items[index2]);
+                                       return str1.CompareTo (str2);
                                }
                        }
 
@@ -2032,8 +2035,8 @@
                                        throw new ArgumentOutOfRangeException 
("Index of out range");
 
                                return (ListBox.ListBoxItem) 
listbox_items[index];
-                       }
-
+                       }               
+                       
                        internal void SetListBoxItem (ListBox.ListBoxItem item, 
int index)
                        {
                                if (index < 0 || index >= Count)

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListControl.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListControl.cs   
2005-04-26 18:09:26 UTC (rev 43609)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListControl.cs   
2005-04-26 18:10:08 UTC (rev 43610)
@@ -24,7 +24,7 @@
 //
 //
 
-// NOT COMPLETE
+// COMPLETE
 
 using System;
 using System.Drawing;
@@ -39,10 +39,10 @@
                private object data_source;
                private BindingMemberInfo value_member;
                private string display_member;
-               private CurrencyManager data_manager;
+               protected CurrencyManager data_manager;
 
                protected ListControl ()
-               {
+               {                       
                        data_source = null;
                        value_member = new BindingMemberInfo (string.Empty);
                        display_member = string.Empty;
@@ -82,14 +82,16 @@
                [Editor("System.Windows.Forms.Design.DataMemberFieldEditor, " + 
Consts.AssemblySystem_Design, typeof(System.Drawing.Design.UITypeEditor))]
                
[TypeConverter("System.Windows.Forms.Design.DataMemberFieldConverter, 
System.Design, Version=1.0.5000.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a")]
                public string DisplayMember {
-                       get { return display_member; }
+                       get { 
+                               return display_member;                          
+                       }
                        set {
                                if (display_member == value) {
                                        return;
                                }
 
                                display_member = value;
-                               ConnectToDataSource ();
+                               ConnectToDataSource ();                         
                                OnDisplayMemberChanged (EventArgs.Empty);
                        }
                }
@@ -107,16 +109,26 @@
                        get {
                                if (data_manager == null) {
                                        return null;
-                               }
+                               }                               
                                
-                               
-                               object item  = data_manager.GetItem 
(SelectedIndex);                            
-                               object fil =  FilterItemOnProperty (item, 
ValueMember);
+                               object item = data_manager.GetItem 
(SelectedIndex);
+                               object fil = FilterItemOnProperty (item, 
ValueMember);
                                return fil;
                        }
-
                        set {
-
+                               if (data_manager != null) {
+                                       
+                                       PropertyDescriptorCollection col = 
data_manager.GetItemProperties ();
+                                       PropertyDescriptor prop = col.Find 
(ValueMember, true);
+                                                                               
+                                       for (int i = 0; i < data_manager.Count; 
i++) {
+                                                if (prop.GetValue 
(data_manager.GetItem (i)) == value) {
+                                                       SelectedIndex = i;
+                                                       return;
+                                               }
+                                       }
+                                       
+                               }
                        }
                }
 
@@ -125,8 +137,20 @@
                public string ValueMember  {
                        get { return value_member.BindingMember; }
                        set {
-                               value_member = new BindingMemberInfo (value);
+                               BindingMemberInfo new_value = new 
BindingMemberInfo (value);
+                               
+                               if (value_member.Equals (new_value)) {
+                                       return;
+                               }
+                               
+                               value_member = new_value;
+                               
+                               if (display_member == string.Empty) {
+                                       DisplayMember = 
value_member.BindingMember;                                     
+                               }
+                               
                                ConnectToDataSource ();
+                               OnValueMemberChanged (EventArgs.Empty);
                        }
                }
 
@@ -158,12 +182,18 @@
                                return item;
                        
                        return prop.GetValue (item);
-
                }
 
                public string GetItemText (object item)
                {
-                        throw new NotImplementedException ();
+                       if (data_manager != null) {
+                               object fil = FilterItemOnProperty (item, 
DisplayMember);
+                               if (fil != null) {
+                                       return fil.ToString ();
+                               }
+                       }
+                                                               
+                       return item.ToString ();                        
                }
 
                protected CurrencyManager DataManager {
@@ -195,6 +225,8 @@
                protected override void OnBindingContextChanged (EventArgs e)
                {
                        base.OnBindingContextChanged (e);
+                       ConnectToDataSource ();
+                       SetItemsCore (DataManager.List);
                }
 
                protected virtual void OnDataSourceChanged (EventArgs e)
@@ -238,6 +270,10 @@
                }
 
                protected abstract void SetItemsCore (IList items);
+               
+               #endregion Public Methods
+               
+               #region Private Methods
 
                internal void BindDataItems (IList items)
                {
@@ -250,7 +286,7 @@
 
                private void ConnectToDataSource ()
                {
-                       if (data_source == null || display_member == 
string.Empty) {
+                       if (data_source == null) {
                                data_manager = null;
                                return;
                        }
@@ -259,10 +295,17 @@
                                return;
                        }
                        
-                       data_manager = (CurrencyManager) BindingContext 
[data_source, display_member];
+                       data_manager = (CurrencyManager) BindingContext 
[data_source, ValueMember];
+                       data_manager.PositionChanged += new EventHandler 
(OnPositionChanged);                   
                }
+               
+               //TODO: See bug 74744
+               private void OnPositionChanged (object sender, EventArgs e)
+               {
+                       
+               }
 
-               #endregion Public Methods
+               #endregion Private Methods      
        }
 
 }

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs
===================================================================
--- 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs 
    2005-04-26 18:09:26 UTC (rev 43609)
+++ 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ThemeWin32Classic.cs 
    2005-04-26 18:10:08 UTC (rev 43610)
@@ -752,7 +752,7 @@
                        e.Graphics.FillRectangle 
(ThemeEngine.Current.ResPool.GetSolidBrush
                                (back_color), item_rect);
 
-                       e.Graphics.DrawString (ctrl.Items[e.Index].ToString (), 
e.Font,
+                       e.Graphics.DrawString (ctrl.GetItemText 
(ctrl.Items[e.Index]), e.Font,
                                ThemeEngine.Current.ResPool.GetSolidBrush 
(fore_color),
                                item_rect, string_format);
                                        
@@ -844,7 +844,7 @@
                        e.Graphics.FillRectangle 
(ThemeEngine.Current.ResPool.GetSolidBrush (back_color), e.Bounds);
 
                        if (e.Index != -1) {
-                               e.Graphics.DrawString 
(ctrl.Items[e.Index].ToString (), e.Font,
+                               e.Graphics.DrawString (ctrl.GetItemText 
(ctrl.Items[e.Index]), e.Font,
                                        
ThemeEngine.Current.ResPool.GetSolidBrush (fore_color),
                                        text_draw, string_format);
                        }
@@ -1091,7 +1091,7 @@
                        e.Graphics.FillRectangle 
(ThemeEngine.Current.ResPool.GetSolidBrush
                                (back_color), e.Bounds);
 
-                       e.Graphics.DrawString (ctrl.Items[e.Index].ToString (), 
e.Font,
+                       e.Graphics.DrawString (ctrl.GetItemText 
(ctrl.Items[e.Index]), e.Font,
                                ThemeEngine.Current.ResPool.GetSolidBrush 
(fore_color),
                                e.Bounds, string_format);
                                        

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to