2 // System.Windows.Forms.DomainUpDown
5 // stubbed out by Richard Baumann (biochem333@nyc.rr.com)
6 // Dennis Hayes (dennish@Raytek.com)
7 // implemented by Aleksey Ryabchuk (ryabchuk@yahoo.com)
8 // (C) Ximian, Inc., 2002
10 using System.Collections;
11 using System.ComponentModel;
13 namespace System.Windows.Forms {
16 // Represents a Windows up-down control that displays string values.
18 public class DomainUpDown : UpDownBase {
21 DomainUpDownItemCollection items;
27 public DomainUpDown() : base()
32 TextChanged += new EventHandler ( this.BuddyTextChanged );
36 public override void DownButton()
38 int newIndex = SelectedIndex + 1;
39 if ( newIndex < Items.Count )
40 SelectedIndex = newIndex;
41 else if ( Wrap && Items.Count > 0)
46 public override string ToString()
48 return GetType( ).FullName.ToString( ) + ", Items.Count: " + Items.Count.ToString ( ) +
49 ", SelectedIndex: " + SelectedIndex;
52 public override void UpButton()
54 int newIndex = SelectedIndex - 1;
55 if ( newIndex > -1 && newIndex < Items.Count )
56 SelectedIndex = newIndex;
57 else if ( Wrap && Items.Count > 0 )
58 SelectedIndex = Items.Count - 1;
62 protected override AccessibleObject CreateAccessibilityInstance()
65 return base.CreateAccessibilityInstance();
68 protected void OnSelectedItemChanged(object source, EventArgs e)
70 if (SelectedItemChanged != null)
71 SelectedItemChanged(this, e);
75 protected override void OnTextBoxKeyDown(object source, KeyEventArgs e)
77 base.OnTextBoxKeyDown ( source, e );
80 protected override void UpdateEditText ( )
82 if ( SelectedIndex != -1 )
83 Text = Items [ SelectedIndex ].ToString ( );
88 public event EventHandler SelectedItemChanged;
90 public DomainUpDown.DomainUpDownItemCollection Items {
93 items = new DomainUpDownItemCollection ( this );
99 public int SelectedIndex {
100 get { return selectedIndex; }
102 if ( value < -1 || value >= Items.Count )
103 throw new ArgumentException ( ); // FIXME: message
105 if ( selectedIndex != value ) {
106 selectedIndex = value;
113 public object SelectedItem {
115 if ( SelectedIndex == -1 )
117 return Items[ SelectedIndex ];
120 SelectedIndex = Items.IndexOf ( value );
126 get { return sorted; }
128 if ( sorted != value ) {
129 object selectedItem = SelectedItem;
131 SelectedItem = selectedItem;
138 set { wrap = value; }
141 private void itemAdded ( object item )
145 private void itemInserted ( int index, object item )
149 private void itemRemoved ( object item )
153 private void itemRemoved ( int index )
157 private void itemChanged ( int index )
161 private void BuddyTextChanged ( object sender, EventArgs e )
163 OnSelectedItemChanged ( this, EventArgs.Empty );
166 //System.Windows.Forms.DomainUpDown.DomainUpDownItemCollection
169 //stubbed out by Richard Baumann (biochem333@nyc.rr.com)
171 //(C) Ximian, Inc., 2002
174 //Encapsulates a collection of objects for use by the DomainUpDown class.
176 public class DomainUpDownItemCollection : ArrayList {
180 internal DomainUpDownItemCollection( DomainUpDown owner )
185 public override int Add( object value )
187 int index = base.Add ( value );
188 owner.itemAdded ( value );
192 public override void Insert( int index, object value )
194 base.Insert ( index, value );
195 owner.itemInserted ( index, value );
198 public override void Remove( object obj )
201 owner.itemRemoved ( obj );
204 public override void RemoveAt( int index )
206 base.RemoveAt ( index );
207 owner.itemRemoved ( index );
210 public override object this[ int index ]
217 owner.itemChanged ( index );