[Mono-winforms-list] Moving Items property into ListControl
Brian Takita
brian.takita@runbox.com
Fri, 22 Aug 2003 01:34:59 -0700
This is a multi-part message in MIME format.
--------------040309000602080703000000
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hello Duncan,
Here is the revised ListControl class.
I took a better look at the ListControl, and found the following...
>> public abstract class ListControl : Control {
>>
>> protected object DataSource_;
>> [MonoTODO]
>> public virtual object DataSource {
>>
>>
DataSource_ and DisplayMember_ should be private.
>The 1.1 SDK docs list this property without the virtual keyword. Was
>that an MS documentation bug?
>
>
DataSource is not virtual in ListControl.
>
>
>>set {
>> if(DataSource_ != value) {
>> if((value is IList) || (value is IListSource)) {
>> DataSource_ = value;
>> OnDataSourceChanged(new EventArgs());
>> }
>> else {
>> throw new Exception("Complex DataBinding accepts as a data source either an IList or an IListSource");
>> }
>> }
>>}
>>
>>
>
>I made indenting changes here to make the code better conform to the
>Mono coding style. Also, the 1.1 SDK docs does not say the property will
>throw any Exceptions at all. Is that also a documentation bug?
>
>
This is a documentation bug. I got an exception when DataSource was not
set to an IList or an IListSource object. The exception message was
taken verbatim from MS's exception. Should I rewrite a new exception
message to avoid plagerism?
Also, where are the docs on coding standards?
>Thanks for the patch!
>
>Duncan.
>
Glad to help. I'm learning alot about .NET already. Thanks for the
feedback!!
Brian
>_______________________________________________
>Mono-winforms-list maillist - Mono-winforms-list@lists.ximian.com
>http://lists.ximian.com/mailman/listinfo/mono-winforms-list
>
>
>
>
--------------040309000602080703000000
Content-Type: text/plain;
name="ListControl.cs"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="ListControl.cs"
//
// System.Windows.Forms.ListControl.cs
//
// Author:
// stubbed out by Daniel Carrera (dcarrera@math.toronto.edu)
// Dennis Hayes (dennish@raytek.com)
// Brian Takita (brian.takita@runbox.com)
// (C) 2002/3 Ximian, Inc
//
using System;
using System.Drawing;
using System.Collections;
using System.Reflection;
namespace System.Windows.Forms
{
// <summary>
//
// </summary>
public abstract class ListControl : Control
{
private string DisplayMember_ = String.Empty;
private object DataSource_;
//ControlStyles controlStyles;
//
// --- Public Properties
//
[MonoTODO]
public object DataSource
{
get
{
return DataSource_;
}
set
{
if(DataSource_ != value)
{
if((value is IList) || (value is IListSource))
{
DataSource_ = value;
OnDataSourceChanged(new EventArgs());
}
else
{
throw new Exception("Complex DataBinding accepts as a data source either an IList or an IListSource");
}
}
}
}
[MonoTODO]
public string DisplayMember
{
get
{
return DisplayMember_;
}
set
{
if( DisplayMember_ != value)
{
DisplayMember_ = value;
OnDisplayMemberChanged(new EventArgs());
}
}
}
internal string getDisplayMemberOfObj( object obj)
{
string objectString = String.Empty;
Type t = obj.GetType();
if( DisplayMember != String.Empty)
{
if( t != null)
{
PropertyInfo prop = t.GetProperty(DisplayMember);
if( prop != null)
{
objectString = prop.GetValue(obj, null).ToString();
}
}
}
if( objectString == String.Empty)
{
objectString = obj.ToString();
}
return objectString;
}
internal class ListControlComparer : IComparer
{
private ListControl owner_ = null;
public ListControlComparer(ListControl owner)
{
owner_ = owner;
}
public int Compare(object x, object y)
{
return owner_.getDisplayMemberOfObj(x).CompareTo(owner_.getDisplayMemberOfObj(y));
}
}
[MonoTODO]
public abstract int SelectedIndex {get;set;}
[MonoTODO]
public object SelectedValue
{
get
{
throw new NotImplementedException ();
}
set
{
//FIXME:
}
}
[MonoTODO]
public string ValueMember
{
get
{
throw new NotImplementedException ();
}
set
{
//FIXME:
}
}
//
// --- Public Methods
//
[MonoTODO]
public string GetItemText(object item)
{
throw new NotImplementedException ();
}
//
// --- Public Events
//
[MonoTODO]
public event EventHandler DataSourceChanged;
[MonoTODO]
public event EventHandler DisplayMemberChanged;
//
// --- Protected Constructor
//
[MonoTODO]
protected ListControl()
{
}
//
// --- Protected Properties
//
[MonoTODO]
protected CurrencyManager DataManager
{
get
{
throw new NotImplementedException ();
}
}
//
// --- Protected Methods
//
[MonoTODO]
protected override bool IsInputKey(Keys keyData)
{
//FIXME:
return base.IsInputKey(keyData);
}
[MonoTODO]
protected virtual void OnDataSourceChanged(EventArgs e)
{
//FIXME:
}
[MonoTODO]
protected virtual void OnDisplayMemberChanged(EventArgs e)
{
//FIXME:
}
[MonoTODO]
protected virtual void OnSelectedIndexChanged(EventArgs e)
{
//FIXME:
}
[MonoTODO]
protected virtual void OnSelectedValueChanged(EventArgs e)
{
//FIXME:
}
public event EventHandler SelectedValueChanged;
public event EventHandler ValueMemberChanged;
[MonoTODO]
protected override void OnBindingContextChanged(EventArgs e)
{
//FIXME:
base.OnBindingContextChanged(e);
}
[MonoTODO]
protected abstract void RefreshItem(int index);
}
}
--------------040309000602080703000000--