* Control.cs: ControlCollection.Count must be public. Fixed build of
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / CheckBox.cs
index 23a39c2f9bbaa69e96048a13559c15db81bc420c..3246b3af5a77665919576209888e3589df539f1f 100644 (file)
@@ -17,7 +17,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-// Copyright (c) 2004 Novell, Inc.
+// Copyright (c) 2004-2005 Novell, Inc.
 //
 // Authors:
 //     Dennis Hayes    dennish@raytek.com
@@ -45,7 +45,7 @@ namespace System.Windows.Forms {
 
                #region CheckBoxAccessibleObject Subclass
                [ComVisible(true)]
-                       public class CheckBoxAccessibleObject : ControlAccessibleObject {
+               public class CheckBoxAccessibleObject : ButtonBaseAccessibleObject {
                        #region CheckBoxAccessibleObject Local Variables
                        private CheckBox owner;
                        #endregion      // CheckBoxAccessibleObject Local Variables
@@ -100,6 +100,7 @@ namespace System.Windows.Forms {
                        auto_check = true;
                        check_alignment = ContentAlignment.MiddleLeft;
                        text_alignment = ContentAlignment.MiddleLeft;
+                       SetStyle(ControlStyles.StandardDoubleClick, false);
                }
                #endregion      // Public Constructors
 
@@ -124,9 +125,7 @@ namespace System.Windows.Forms {
                        set {
                                if (value != appearance) {
                                        appearance = value;
-                                       if (AppearanceChanged != null) {
-                                               AppearanceChanged(this, EventArgs.Empty);
-                                       }
+                                       OnAppearanceChanged (EventArgs.Empty);
                                        Redraw();
                                }
                        }
@@ -258,25 +257,30 @@ namespace System.Windows.Forms {
 
                #region Protected Instance Methods
                protected override AccessibleObject CreateAccessibilityInstance() {
-                       return base.CreateAccessibilityInstance ();
+                       AccessibleObject        ao;
+
+                       ao = base.CreateAccessibilityInstance ();
+                       ao.role = AccessibleRole.CheckButton;
+
+                       return ao;
                }
 
                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) {
@@ -310,8 +314,8 @@ namespace System.Windows.Forms {
                        base.OnHandleCreated (e);
                }
 
-               protected override void OnMouseUp(MouseEventArgs e) {
-                       base.OnMouseUp (e);
+               protected override void OnMouseUp(MouseEventArgs mevent) {
+                       base.OnMouseUp (mevent);
                }
 
                protected override bool ProcessMnemonic(char charCode) {
@@ -326,15 +330,33 @@ 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); }
+               }
                #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
        }
 }