**** Merged from MCS ****
[mono-project.git] / mcs / class / System.Windows.Forms / Gtk / ListBox.cs
blobd0ddd5955a4e375957cbb822eb53b8eb6da8ec21
1 //
2 // System.Windows.Forms.ListBox
3 //
4 // Authors:
5 // Joel Basson (jstrike@mweb.co.za)
6 // Alberto Fernandez (infjaf00@yahoo.es)
7 //
8 //
10 using System.ComponentModel;
11 using System;
12 using System.Collections;
13 using System.Drawing;
14 using Gtk;
15 using GtkSharp;
16 using GLib;
22 namespace System.Windows.Forms
24 public class ListBox : ListControl
26 private ListBox.ObjectCollection items;
27 private ListBox.SelectedIndexCollection selectedIndices;
28 private ListBox.SelectedObjectCollection selectedItems;
29 private bool sorted;
32 public const int DefaultItemHeight = 13;
33 public const int NoMatches = -1;
35 [MonoTODO]
36 public ListBox () : base ()
38 items = new ListBox.ObjectCollection (this);
39 selectedIndices = new ListBox.SelectedIndexCollection (this);
40 selectedItems = new ListBox.SelectedObjectCollection (this);
44 [MonoTODO]
45 public override Color BackColor {
46 get { throw new NotImplementedException(); }
47 set { }
49 [MonoTODO]
50 public override System.Drawing.Image BackgroundImage {
51 get { throw new NotImplementedException (); }
52 set { }
54 [MonoTODO]
55 // Don't use ?
56 public BorderStyle BorderStyle {
57 get { throw new NotImplementedException (); }
58 set { }
60 [MonoTODO]
61 // Default is 0
62 public int ColumnWidth {
63 get{ throw new NotImplementedException (); }
64 set {
65 if (value < 0)
66 throw new ArgumentException ("ColumnWidth must be equal or greather than 0");
67 if (value == 0){
68 // Default value ??
70 else {
74 [MonoTODO]
75 protected override CreateParams CreateParams {
76 get { throw new NotImplementedException (); }
78 protected override Size DefaultSize {
79 get { return new Size (120,96); }
81 [MonoTODO]
82 // Default = DrawMode.Normal
83 public virtual DrawMode DrawMode {
84 get { return DrawMode.Normal; }
85 set {
86 if (! Enum.IsDefined (typeof (DrawMode), value))
87 throw new InvalidEnumArgumentException ("");
88 throw new NotImplementedException();
91 [MonoTODO]
92 public override Color ForeColor {
93 get { throw new NotImplementedException (); }
94 set { }
96 [MonoTODO]
97 // Defaults to 0.
98 public int HorizontalExtent {
99 get { throw new NotImplementedException (); }
100 set { throw new NotImplementedException (); }
102 [MonoTODO]
103 public bool HorizontalScrollbar {
104 get { throw new NotImplementedException (); }
105 set { }
107 [MonoTODO]
108 public bool IntegralHeight {
109 get { throw new NotImplementedException (); }
110 set { }
112 [MonoTODO]
113 public virtual int ItemHeight {
114 get { throw new NotImplementedException (); }
115 set { }
117 [MonoTODO]
118 public ListBox.ObjectCollection Items {
119 get { return items; }
121 [MonoTODO]
122 // Default false.
123 public bool MultiColumn {
124 get { return false; }
125 set { }
127 [MonoTODO]
128 public int PreferredHeight {
129 get { throw new NotImplementedException (); }
131 [MonoTODO]
132 public override RightToLeft RightToLeft {
133 get { throw new NotImplementedException (); }
134 set { }
136 [MonoTODO]
137 public bool ScrollAlwaysVisible {
138 get { throw new NotImplementedException (); }
139 set { }
141 [MonoTODO]
142 public override int SelectedIndex {
143 get { throw new NotImplementedException (); }
144 set { throw new NotImplementedException (); }
146 [MonoTODO]
147 public ListBox.SelectedIndexCollection SelectedIndices {
148 get { return selectedIndices; }
150 [MonoTODO]
151 public object SelectedItem {
152 get { throw new NotImplementedException (); }
153 set { throw new NotImplementedException (); }
155 [MonoTODO]
156 public ListBox.SelectedObjectCollection SelectedItems {
157 get { return selectedItems; }
159 [MonoTODO]
160 public virtual SelectionMode SelectionMode {
161 get { throw new NotImplementedException (); }
162 set { }
164 [MonoTODO]
165 public bool Sorted {
166 get { return sorted; }
167 set {
168 if (value == true)
169 this.Sort();
170 sorted = value;
173 [MonoTODO]
174 public override string Text {
175 get { throw new NotImplementedException (); }
176 set { throw new NotImplementedException (); }
178 [MonoTODO]
179 public int TopIndex {
180 get { throw new NotImplementedException (); }
181 set { throw new NotImplementedException (); }
183 [MonoTODO]
184 public bool UseTabStops {
185 get { throw new NotImplementedException (); }
186 set { throw new NotImplementedException (); }
189 // Don't use
190 [MonoTODO]
191 protected virtual void AddItemsCore(object[] value)
194 [MonoTODO]
195 public void BeginUpdate()
198 [MonoTODO]
199 public void ClearSelected()
202 [MonoTODO]
203 protected virtual ObjectCollection CreateItemCollection()
205 throw new NotImplementedException();
207 [MonoTODO]
208 public void EndUpdate()
211 [MonoTODO]
212 public int FindString (string s)
214 throw new NotImplementedException();
216 [MonoTODO]
217 public int FindString (string s, int startIndex)
219 throw new NotImplementedException();
221 [MonoTODO]
222 public int FindStringExact (string s)
224 throw new NotImplementedException ();
226 [MonoTODO]
227 public int FindStringExact (string s, int startIndex)
229 throw new NotImplementedException();
231 [MonoTODO]
232 public int GetItemHeight(int index)
234 throw new NotImplementedException ();
236 [MonoTODO]
237 public Rectangle GetItemRectangle(int index)
239 throw new NotImplementedException ();
241 [MonoTODO]
242 public bool GetSelected(int index)
244 throw new NotImplementedException ();
246 [MonoTODO]
247 public int IndexFromPoint(Point p)
249 throw new NotImplementedException ();
251 [MonoTODO]
252 public int IndexFromPoint(int x, int y)
254 throw new NotImplementedException ();
256 [MonoTODO]
257 protected override void OnChangeUICues(UICuesEventArgs e)
259 throw new NotImplementedException ();
261 [MonoTODO]
262 protected override void OnDataSourceChanged(EventArgs e)
264 throw new NotImplementedException ();
266 [MonoTODO]
267 protected override void OnDisplayMemberChanged(EventArgs e)
270 [MonoTODO]
271 protected virtual void OnDrawItem(DrawItemEventArgs e)
274 [MonoTODO]
275 protected override void OnFontChanged(EventArgs e)
278 [MonoTODO]
279 protected override void OnHandleCreated(EventArgs e)
282 [MonoTODO]
283 protected override void OnHandleDestroyed(EventArgs e)
286 [MonoTODO]
287 protected virtual void OnMeasureItem(MeasureItemEventArgs e)
290 [MonoTODO]
291 protected override void OnParentChanged(EventArgs e)
294 [MonoTODO]
295 protected override void OnResize(EventArgs e)
298 [MonoTODO]
299 protected override void OnSelectedIndexChanged(EventArgs e)
302 [MonoTODO]
303 protected override void OnSelectedValueChanged(EventArgs e)
306 [MonoTODO]
307 public override void Refresh()
309 ListStore store = new ListStore (typeof (string));
310 foreach (Object o in Items){
311 Value value = new Value (o);
312 TreeIter iter = store.Append();
313 store.SetValue (iter, 0, value);
315 (Widget as Gtk.TreeView).Model = store;
317 [MonoTODO]
318 protected override void RefreshItem(int index)
321 [MonoTODO]
322 protected override void SetBoundsCore(int x,int y, int width, int height, BoundsSpecified specified)
325 [MonoTODO]
326 protected override void SetItemCore(int index, object value)
329 [MonoTODO]
330 protected override void SetItemsCore(IList value)
333 [MonoTODO]
334 public void SetSelected(int index, bool value)
337 [MonoTODO]
338 protected virtual void Sort()
341 [MonoTODO]
342 public override string ToString()
344 return base.ToString();
346 [MonoTODO]
347 protected virtual void WmReflectCommand(ref Message m)
350 [MonoTODO]
351 protected override void WndProc(ref Message m)
355 public new event EventHandler BackgroundImageChanged;
356 public new event EventHandler Click;
357 public event DrawItemEventHandler DrawItem;
358 public event MeasureItemEventHandler MeasureItem;
359 public new event PaintEventHandler Paint;
360 public event EventHandler SelectedIndexChanged;
361 public new event EventHandler TextChanged;
367 [MonoTODO]
368 public class ObjectCollection : IList, ICollection, IEnumerable
370 private ListBox owner;
371 private ArrayList list;
373 public ObjectCollection(ListBox owner)
375 this.owner = owner;
376 this.list = new ArrayList();
378 public ObjectCollection(ListBox owner, object[] value) : this(owner)
380 AddRange (value);
382 [MonoTODO]
383 public ObjectCollection(ListBox owner, ObjectCollection value) : this (owner)
385 //TODO: Implement
387 [MonoTODO]
388 public virtual int Count {
389 get { return list.Count; }
391 [MonoTODO]
392 public virtual bool IsReadOnly {
393 get { return false; }
395 [MonoTODO]
396 public virtual object this[int index] {
397 get { return list[index]; }
398 set { throw new NotImplementedException(); }
400 // Net 1.1
401 bool ICollection.IsSynchronized {
402 get { return list.IsSynchronized; }
404 // Net 1.1
405 object ICollection.SyncRoot {
406 get { return list.SyncRoot; }
408 // Net 1.1
409 bool IList.IsFixedSize {
410 get { return list.IsFixedSize; }
413 [MonoTODO]
414 public int Add(object item)
416 // FIXME: Implement sorted insert, if ListBox.Sorted == true,
417 int ret = list.Add (item);
418 owner.Refresh();
419 return ret;
422 /*public class ItemCollection {
424 ListBox owner;
425 TreeIter iter = new TreeIter ();
427 public ItemCollection (ListBox owner){
428 this.owner = owner;
429 owner.store = new ListStore (typeof (string));
432 public void Add(String items){
434 Value value = new Value(items);
435 iter = owner.store.Append ();
436 owner.store.SetValue (iter, 0, value);
437 owner.UpdateStore();
441 [MonoTODO]
442 public void AddRange(object[] items)
444 // FIXME: should stop Control refresh until added finished
445 foreach (object o in items)
446 this.Add (o);
449 [MonoTODO]
450 public void AddRange(ListBox.ObjectCollection value)
452 list.AddRange (value);
455 [MonoTODO]
456 public virtual void Clear()
458 list.Clear();
461 public virtual bool Contains(object value)
463 return list.Contains (value);
466 public void CopyTo(object[] dest, int arrayIndex)
468 list.CopyTo (dest, arrayIndex);
471 public virtual IEnumerator GetEnumerator()
473 return list.GetEnumerator();
476 void ICollection.CopyTo( Array dest, int index)
478 list.CopyTo(dest, index);
481 [MonoTODO]
482 int IList.Add( object item)
484 return this.Add (item);
487 public virtual int IndexOf(object value)
489 return list.IndexOf(value);
492 [MonoTODO]
493 public virtual void Insert( int index, object item)
495 list.Insert (index, item);
498 [MonoTODO]
499 public virtual void Remove(object value)
501 list.Remove (value);
504 [MonoTODO]
505 public virtual void RemoveAt(int index)
507 list.RemoveAt (index);
512 public class SelectedIndexCollection : IList, ICollection, IEnumerable
515 private ListBox owner;
516 private ArrayList list;
517 public bool IsFixedSize {
518 get { return false; }
521 public bool IsSynchronized {
522 get { return list.IsSynchronized; }
524 public object SyncRoot {
525 get { return list.SyncRoot; }
528 public SelectedIndexCollection(ListBox owner)
530 this.owner = owner;
531 list = new ArrayList ();
534 public virtual int Count {
535 get { return list.Count; }
537 public virtual bool IsReadOnly {
538 get { return false; }
540 [MonoTODO]
541 public object this[int index] {
542 get { return list[index]; }
543 set { throw new NotImplementedException (); }
546 [MonoTODO]
547 public bool Contains(int selectedIndex)
549 throw new NotImplementedException ();
552 [MonoTODO]
553 public virtual void CopyTo(Array dest, int index)
555 list.CopyTo(dest, index);
556 //throw new NotImplementedException ();
559 [MonoTODO]
560 public virtual IEnumerator GetEnumerator()
562 return list.GetEnumerator();
563 //throw new NotImplementedException ();
566 // don't use
567 [MonoTODO]
568 int IList.Add(object value)
570 //list.Add (value);
571 throw new NotImplementedException ();
574 // don't use
575 [MonoTODO]
576 void IList.Clear()
578 //throw new NotImplementedException ();
581 [MonoTODO]
582 bool IList.Contains(object selectedIndex)
584 throw new NotImplementedException ();
587 int IList.IndexOf(object selectedIndex)
589 return list.IndexOf (selectedIndex);
592 [MonoTODO]
593 void IList.Insert(int index, object value)
595 throw new NotImplementedException ();
598 [MonoTODO]
599 void IList.Remove(object value)
601 throw new NotImplementedException ();
604 [MonoTODO]
605 void IList.RemoveAt(int index)
607 throw new NotImplementedException ();
610 [MonoTODO]
611 public int IndexOf(int selectedIndex)
613 throw new NotImplementedException ();
620 public class SelectedObjectCollection : IList, ICollection, IEnumerable
624 private ListBox owner;
625 private ArrayList list;
627 public bool IsFixedSize {
628 get { return false; }
631 public bool IsSynchronized {
632 get { return list.IsSynchronized; }
634 public object SyncRoot {
635 get { return list.SyncRoot; }
638 public SelectedObjectCollection(ListBox owner)
640 this.owner = owner;
641 list = new ArrayList();
644 public virtual int Count {
645 get { return list.Count; }
648 public virtual bool IsReadOnly {
649 get { return list.IsReadOnly; }
651 [MonoTODO]
652 public virtual object this[int index] {
653 get { return list[index]; }
654 set { throw new NotImplementedException (); }
657 public virtual bool Contains(object selectedObject)
659 return list.Contains (selectedObject);
662 public virtual void CopyTo(Array dest, int index)
664 list.CopyTo(dest, index);
667 public virtual IEnumerator GetEnumerator()
669 return list.GetEnumerator();
672 [MonoTODO]
673 int IList.Add(object value)
675 throw new NotImplementedException ();
678 // don't use
679 [MonoTODO]
680 void IList.Clear()
682 throw new NotImplementedException ();
685 // don't use
686 [MonoTODO]
687 void IList.Insert(int index, object value)
689 throw new NotImplementedException ();
692 // don't use
693 [MonoTODO]
694 void IList.Remove(object value)
696 throw new NotImplementedException ();
699 // don't use
700 [MonoTODO]
701 void IList.RemoveAt(int index)
703 throw new NotImplementedException ();
706 [MonoTODO]
707 public virtual int IndexOf(object selectedObject)
709 throw new NotImplementedException ();
714 internal override Gtk.Widget CreateWidget () {
716 ListStore store = new ListStore (typeof (string));
717 TreeView tv = new TreeView (store);
718 tv.HeadersVisible = false;
719 tv.HeadersClickable = false;
720 tv.EnableSearch = false;
721 TreeViewColumn NameCol = new TreeViewColumn ();
722 CellRenderer NameRenderer = new CellRendererText ();
723 NameCol.Title = "Name";
724 NameCol.PackStart (NameRenderer, true);
725 NameCol.AddAttribute (NameRenderer, "text", 0);
726 tv.AppendColumn (NameCol);
727 tv.Model = store;
728 return tv;
733 //ListStore store = null;
734 //TreeIter iter = new TreeIter ();
736 //public ItemCollection Items;
737 //ListStore store = new ListStore ((int)TypeFundamentals.TypeString);
739 /*public class ItemCollection {
741 ListBox owner;
742 TreeIter iter = new TreeIter ();
744 public ItemCollection (ListBox owner){
746 this.owner = owner;
747 owner.store = new ListStore (typeof (string));
751 public void Add(String items){
753 Value value = new Value(items);
754 iter = owner.store.Append ();
755 owner.store.SetValue (iter, 0, value);
756 owner.UpdateStore();