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