// 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
// Peter Bartok pbartok@novell.com
//
-// COMPLETE
-
using System;
using System.ComponentModel;
using System.Drawing;
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;
#region CheckBoxAccessibleObject Subclass
[ComVisible(true)]
- public class CheckBoxAccessibleObject : ControlAccessibleObject {
+ public class CheckBoxAccessibleObject : ButtonBaseAccessibleObject {
#region CheckBoxAccessibleObject Local Variables
- private CheckBox owner;
+ private new CheckBox owner;
#endregion // CheckBoxAccessibleObject Local Variables
#region CheckBoxAccessibleObject Constructors
}
}
#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
auto_check = true;
check_alignment = ContentAlignment.MiddleLeft;
text_alignment = ContentAlignment.MiddleLeft;
+ SetStyle(ControlStyles.StandardDoubleClick, false);
}
#endregion // Public Constructors
#region Internal Methods
internal override void Draw (PaintEventArgs pe) {
- if (redraw) {
- ThemeEngine.Current.DrawCheckBox (this.DeviceContext, this.ClientRectangle, this);
- redraw = false;
- }
+ ThemeEngine.Current.DrawCheckBox (pe.Graphics, this.ClientRectangle, this);
}
internal override void HaveDoubleClick() {
set {
if (value != appearance) {
appearance = value;
- if (AppearanceChanged != null) {
- AppearanceChanged(this, EventArgs.Empty);
- }
+ OnAppearanceChanged (EventArgs.Empty);
Redraw();
}
}
[Bindable(true)]
[RefreshProperties(RefreshProperties.All)]
[DefaultValue(false)]
+#if NET_2_0
+ [SettingsBindable (true)]
+#endif
public bool Checked {
get {
if (check_state != CheckState.Unchecked) {
#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) {
}
}
}
+
+ base.OnClick (e);
}
protected override void OnHandleCreated(EventArgs e) {
base.OnHandleCreated (e);
}
- protected override void OnMouseUp(MouseEventArgs e) {
- base.OnMouseUp (e);
+#if NET_2_0
+ protected override void OnKeyDown (KeyEventArgs kevent)
+ {
+ base.OnKeyDown (kevent);
+ }
+#endif
+
+ protected override void OnMouseUp(MouseEventArgs mevent) {
+ base.OnMouseUp (mevent);
}
protected override bool ProcessMnemonic(char charCode) {
#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
}
}