* InternalWindowManager.cs: ToolTipShow: Don't show tooltip if the form
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / CheckBox.cs
index 4f76fa7ddcc47f6e8ba6640ce49dcb88feace679..587d4b8f3bbfbe2dbdb5ef8e9f346a745e711521 100644 (file)
@@ -24,8 +24,6 @@
 //     Peter Bartok    pbartok@novell.com
 //
 
-// COMPLETE
-
 using System;
 using System.ComponentModel;
 using System.Drawing;
@@ -34,6 +32,12 @@ using System.Runtime.InteropServices;
 namespace System.Windows.Forms {
        [DefaultProperty("Checked")]
        [DefaultEvent("CheckedChanged")]
+#if NET_2_0
+       [ComVisible (true)]
+       [ClassInterface (ClassInterfaceType.AutoDispatch)]
+       [DefaultBindingProperty ("CheckState")]
+       [ToolboxItem ("System.Windows.Forms.Design.AutoSizeToolboxItem," + Consts.AssemblySystem_Design)]
+#endif
        public class CheckBox : ButtonBase {
                #region Local Variables
                internal Appearance             appearance;
@@ -47,7 +51,7 @@ namespace System.Windows.Forms {
                [ComVisible(true)]
                public class CheckBoxAccessibleObject : ButtonBaseAccessibleObject {
                        #region CheckBoxAccessibleObject Local Variables
-                       private CheckBox owner;
+                       private new CheckBox owner;
                        #endregion      // CheckBoxAccessibleObject Local Variables
 
                        #region CheckBoxAccessibleObject Constructors
@@ -91,6 +95,15 @@ namespace System.Windows.Forms {
                                }
                        }
                        #endregion      // CheckBoxAccessibleObject Properties
+
+#if NET_2_0
+                       #region CheckBoxAccessibleObject Methods
+                       public override void DoDefaultAction ()
+                       {
+                               owner.Checked = !owner.Checked;
+                       }
+                       #endregion      // CheckBoxAccessibleObject Methods
+#endif
                }
                #endregion      // CheckBoxAccessibleObject Sub-class
 
@@ -125,9 +138,7 @@ namespace System.Windows.Forms {
                        set {
                                if (value != appearance) {
                                        appearance = value;
-                                       if (AppearanceChanged != null) {
-                                               AppearanceChanged(this, EventArgs.Empty);
-                                       }
+                                       OnAppearanceChanged (EventArgs.Empty);
                                        Redraw();
                                }
                        }
@@ -164,6 +175,9 @@ namespace System.Windows.Forms {
                [Bindable(true)]
                [RefreshProperties(RefreshProperties.All)]
                [DefaultValue(false)]
+#if NET_2_0
+               [SettingsBindable (true)]
+#endif
                public bool Checked {
                        get {
                                if (check_state != CheckState.Unchecked) {
@@ -268,21 +282,21 @@ namespace System.Windows.Forms {
                }
 
                protected virtual void OnAppearanceChanged(EventArgs e) {
-                       if (AppearanceChanged != null) {
-                               AppearanceChanged(this, e);
-                       }
+                       EventHandler eh = (EventHandler)(Events [AppearanceChangedEvent]);
+                       if (eh != null)
+                               eh (this, e);
                }
 
                protected virtual void OnCheckedChanged(EventArgs e) {
-                       if (CheckedChanged != null) {
-                               CheckedChanged(this, e);
-                       }
+                       EventHandler eh = (EventHandler)(Events [CheckedChangedEvent]);
+                       if (eh != null)
+                               eh (this, e);
                }
 
                protected virtual void OnCheckStateChanged(EventArgs e) {
-                       if (CheckStateChanged != null) {
-                               CheckStateChanged(this, e);
-                       }
+                       EventHandler eh = (EventHandler)(Events [CheckStateChangedEvent]);
+                       if (eh != null)
+                               eh (this, e);
                }
 
                protected override void OnClick(EventArgs e) {
@@ -316,6 +330,13 @@ namespace System.Windows.Forms {
                        base.OnHandleCreated (e);
                }
 
+#if NET_2_0
+               protected override void OnKeyDown (KeyEventArgs kevent)
+               {
+                       base.OnKeyDown (kevent);
+               }
+#endif
+
                protected override void OnMouseUp(MouseEventArgs mevent) {
                        base.OnMouseUp (mevent);
                }
@@ -332,15 +353,42 @@ namespace System.Windows.Forms {
                #endregion      // Protected Instance Methods
 
                #region Events
-               public event EventHandler       AppearanceChanged;
-               public event EventHandler       CheckedChanged;
-               public event EventHandler       CheckStateChanged;
+               static object AppearanceChangedEvent = new object ();
+               static object CheckedChangedEvent = new object ();
+               static object CheckStateChangedEvent = new object ();
+
+               public event EventHandler AppearanceChanged {
+                       add { Events.AddHandler (AppearanceChangedEvent, value); }
+                       remove { Events.RemoveHandler (AppearanceChangedEvent, value); }
+               }
+
+               public event EventHandler CheckedChanged {
+                       add { Events.AddHandler (CheckedChangedEvent, value); }
+                       remove { Events.RemoveHandler (CheckedChangedEvent, value); }
+               }
+
+               public event EventHandler CheckStateChanged {
+                       add { Events.AddHandler (CheckStateChangedEvent, value); }
+                       remove { Events.RemoveHandler (CheckStateChangedEvent, value); }
+               }
+               
+#if NET_2_0
+               [Browsable (false)]
+               [EditorBrowsable (EditorBrowsableState.Never)]
+               public new event MouseEventHandler MouseDoubleClick {
+                       add { base.MouseDoubleClick += value; }
+                       remove { base.MouseDoubleClick -= value; }
+               }
+#endif
                #endregion      // Events
 
                #region Events
+               // XXX have a look at this and determine if it
+               // manipulates base.DoubleClick, and see if
+               // HaveDoubleClick can just call OnDoubleClick.
                [Browsable(false)]
                [EditorBrowsable (EditorBrowsableState.Never)]
-               public event EventHandler DoubleClick;
+               public new event EventHandler DoubleClick;
                #endregion      // Events
        }
 }