[Mono-winforms-list] ListControl update
Brian Takita
brian.takita@runbox.com
Fri, 22 Aug 2003 02:32:04 -0700
This is a multi-part message in MIME format.
--------------000201020605050803070707
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
This one compiles correctly.
--------------000201020605050803070707
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.ComponentModel;
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);
}
}
--------------000201020605050803070707--