X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FManaged.Windows.Forms%2FSystem.Windows.Forms%2FProgressBar.cs;h=22183559482a5a697dac91c753a5c949dbabad19;hb=b7a17162b68de5cc67e8eb586c918580bded4ef3;hp=41eab550dd9179bd66ee5425414cccad3ef13600;hpb=05485cc9c3a94ecbe3d20677c02b0b7996ec4f72;p=mono.git diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ProgressBar.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ProgressBar.cs index 41eab550dd9..22183559482 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ProgressBar.cs +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ProgressBar.cs @@ -17,10 +17,11 @@ // 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-2006 Novell, Inc. // -// Autors: +// Authors: // Jordi Mas i Hernandez jordi@ximian.com +// Peter Dennis Bartok pbartok@novell.com // // @@ -29,37 +30,145 @@ using System.Drawing; using System.ComponentModel; using System.Drawing.Imaging; using System.Drawing.Drawing2D; +using System.Runtime.InteropServices; namespace System.Windows.Forms { - public sealed class ProgressBar : Control + [DefaultProperty ("Value")] +#if NET_2_0 + [DefaultBindingProperty ("Value")] + [ClassInterface (ClassInterfaceType.AutoDispatch)] + [ComVisible (true)] +#endif + public +#if !NET_2_0 + sealed +#endif + class ProgressBar : Control { #region Local Variables private int maximum; private int minimum; internal int step; internal int val; - internal Rectangle paint_area = new Rectangle (); internal Rectangle client_area = new Rectangle (); +#if NET_2_0 + internal ProgressBarStyle style; +#endif #endregion // Local Variables - #region Events - public new event EventHandler BackColorChanged; - public new event EventHandler BackgroundImageChanged; - public new event EventHandler CausesValidationChanged; - public new event EventHandler DoubleClick; - public new event EventHandler Enter; - public new event EventHandler FontChanged; - public new event EventHandler ForeColorChanged; - public new event EventHandler ImeModeChanged; - public new event KeyEventHandler KeyDown; - public new event KeyPressEventHandler KeyPress; - public new event KeyEventHandler KeyUp; - public new event EventHandler Leave; - public new event PaintEventHandler Paint; - public new event EventHandler RightToLeftChanged; - public new event EventHandler TabStopChanged; - public new event EventHandler TextChanged; + #region events + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler BackColorChanged { + add { base.BackColorChanged += value; } + remove { base.BackColorChanged -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler BackgroundImageChanged { + add { base.BackgroundImageChanged += value; } + remove { base.BackgroundImageChanged -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler CausesValidationChanged { + add { base.CausesValidationChanged += value; } + remove { base.CausesValidationChanged -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler DoubleClick { + add { base.DoubleClick += value; } + remove { base.DoubleClick -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler Enter { + add { base.Enter += value; } + remove { base.Enter -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler FontChanged { + add { base.FontChanged += value; } + remove { base.FontChanged -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler ForeColorChanged { + add { base.ForeColorChanged += value; } + remove { base.ForeColorChanged -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler ImeModeChanged { + add { base.ImeModeChanged += value; } + remove { base.ImeModeChanged -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event KeyEventHandler KeyDown { + add { base.KeyDown += value; } + remove { base.KeyDown -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event KeyPressEventHandler KeyPress { + add { base.KeyPress += value; } + remove { base.KeyPress -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event KeyEventHandler KeyUp { + add { base.KeyUp += value; } + remove { base.KeyUp -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler Leave { + add { base.Leave += value; } + remove { base.Leave -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event PaintEventHandler Paint { + add { base.Paint += value; } + remove { base.Paint -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler RightToLeftChanged { + add { base.RightToLeftChanged += value; } + remove { base.RightToLeftChanged -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler TabStopChanged { + add { base.TabStopChanged += value; } + remove { base.TabStopChanged -= value; } + } + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new event EventHandler TextChanged { + add { base.TextChanged += value; } + remove { base.TextChanged -= value; } + } #endregion Events #region Public Constructors @@ -70,99 +179,105 @@ namespace System.Windows.Forms step = 10; val = 0; - base.Paint += new PaintEventHandler (OnPaintPB); base.Resize += new EventHandler (OnResizeTB); - SetStyle (ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true); - SetStyle (ControlStyles.ResizeRedraw | ControlStyles.Opaque, true); + SetStyle (ControlStyles.UserPaint | + ControlStyles.Selectable | + ControlStyles.ResizeRedraw | + ControlStyles.Opaque +#if NET_2_0 + | ControlStyles.UseTextForAccessibility +#endif + , false); } #endregion // Public Constructors - #region Public Instance Properties - - public override bool AllowDrop - { + #region Public Instance Properties + + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public override bool AllowDrop + { get { return base.AllowDrop; } set { base.AllowDrop = value; - } - } - - // Setting this property in MS .Net 1.1 does not have any visual effect and it - // does not fires a BackColorChanged event - public override Color BackColor - { + } + } + + // Setting this property in MS .Net 1.1 does not have any visual effect and it + // does not fire a BackColorChanged event + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public override Color BackColor + { get { return base.BackColor; } - set { BackColor = value; } + set { base.BackColor = value; } } - // Setting this property in MS .Net 1.1 does not have any visual effect and it - // does not fires a BackgroundImageChanged event - public override Image BackgroundImage - { + // Setting this property in MS .Net 1.1 does not have any visual effect and it + // does not fire a BackgroundImageChanged event + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public override Image BackgroundImage + { get { return base.BackgroundImage; } - set {BackgroundImage = value; } + set { base.BackgroundImage = value; } } - - public new bool CausesValidation - { - get { return base.CausesValidation; } - set { - if (base.CausesValidation == value) - return; - CausesValidation = value; - if (CausesValidationChanged != null) - CausesValidationChanged (this, new EventArgs ()); - } + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new bool CausesValidation + { + get { return base.CausesValidation; } + set { base.CausesValidation = value; } } - protected override CreateParams CreateParams + protected override CreateParams CreateParams { get { return base.CreateParams; } } - protected override ImeMode DefaultImeMode + protected override ImeMode DefaultImeMode { get { return base.DefaultImeMode; } } - protected override Size DefaultSize + protected override Size DefaultSize { get { return ThemeEngine.Current.ProgressBarDefaultSize; } } - // Setting this property in MS .Net 1.1 does not have any visual effect and it - // does not fires a FontChanged event - public override Font Font + // Setting this property in MS .Net 1.1 does not have any visual effect and it + // does not fire a FontChanged event + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public override Font Font { get { return base.Font; } set { base.Font = value; } } - // Setting this property in MS .Net 1.1 does not have any visual effect and it - // does not fires a FontChanged event - public override Color ForeColor + // Setting this property in MS .Net 1.1 does not have any visual effect and it + // does not fire a FontChanged event + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public override Color ForeColor { get { return base.ForeColor; } set { base.ForeColor = value; } } - public new ImeMode ImeMode + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new ImeMode ImeMode { get { return base.ImeMode; } - set - { - if (value == base.ImeMode) - return; - - base.ImeMode = value; - if (ImeModeChanged != null) - ImeModeChanged (this, EventArgs.Empty); - } + set { base.ImeMode = value; } } - public int Maximum + [RefreshProperties(RefreshProperties.Repaint)] + [DefaultValue (100)] + public int Maximum { get { return maximum; @@ -177,6 +292,8 @@ namespace System.Windows.Forms } } + [RefreshProperties(RefreshProperties.Repaint)] + [DefaultValue (0)] public int Minimum { get { return minimum; @@ -191,22 +308,16 @@ namespace System.Windows.Forms } } - public override RightToLeft RightToLeft + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public override RightToLeft RightToLeft { get { return base.RightToLeft; } - set { - if (base.RightToLeft == value) - return; - - base.RightToLeft = value; - - if (RightToLeftChanged != null) - RightToLeftChanged (this, EventArgs.Empty); - - } + set { base.RightToLeft = value; } } - public int Step + [DefaultValue (10)] + public int Step { get { return step; } set { @@ -215,38 +326,59 @@ namespace System.Windows.Forms } } - public new bool TabStop - { - get { return base.TabStop; } - set { - if (base.TabStop == value) - return; - - base.TabStop = value; +#if NET_2_0 + [MonoTODO("Currently only implements the 1.1 behavior")] + // + // This means that we must implement Blocks, Continuous and Marquee + // rendering modes + // + [Browsable (true)] + [DefaultValue (ProgressBarStyle.Blocks)] + [EditorBrowsable (EditorBrowsableState.Always)] + public ProgressBarStyle Style { + get { + return style; + } - if (TabStopChanged != null) - TabStopChanged (this, EventArgs.Empty); + set { + style = value; + } + } + + int marquee_animation_speed = 350; + [MonoTODO("Currently does nothing")] + [DefaultValue (100)] + public int MarqueeAnimationSpeed { + get { + return marquee_animation_speed; + } + set { + marquee_animation_speed = value; } } +#endif - public override string Text + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + public new bool TabStop { - get { return base.Text; } - set - { - if (value == base.Text) - return; - - if (TextChanged != null) - TextChanged (this, EventArgs.Empty); - - Refresh (); - } + get { return base.TabStop; } + set { base.TabStop = value; } } + [Browsable (false)] + [EditorBrowsable (EditorBrowsableState.Never)] + [Bindable(false)] + public override string Text + { + get { return base.Text; } + set { base.Text = value; } + } - public int Value + [Bindable(true)] + [DefaultValue (0)] + public int Value { get { return val; @@ -265,7 +397,11 @@ namespace System.Windows.Forms #endregion // Protected Instance Properties #region Public Instance Methods - + + protected override void CreateHandle () + { + base.CreateHandle (); + } public void Increment (int value) { @@ -286,9 +422,6 @@ namespace System.Windows.Forms base.OnHandleCreated (e); UpdateAreas (); - - CreateBuffers (Width, Height); - Draw (); } public void PerformStep () @@ -296,16 +429,16 @@ namespace System.Windows.Forms if (Value >= Maximum) return; - Value = Value + Step; - Refresh (); + Value = Maximum < Value + Step ? Maximum : Value + Step; + Refresh (); // FIXME - calculate delta and only expose that } public override string ToString() { return string.Format ("{0}, Minimum: {1}, Maximum: {2}, Value: {3}", GetType().FullName.ToString (), - Maximum.ToString (), Minimum.ToString (), + Maximum.ToString (), Value.ToString () ); } @@ -314,10 +447,6 @@ namespace System.Windows.Forms #region Private Instance Methods private void UpdateAreas () { - paint_area.X = paint_area.Y = 0; - paint_area.Width = Width; - paint_area.Height = Height; - client_area.X = client_area.Y = 2; client_area.Width = Width - 4; client_area.Height = Height - 4; @@ -329,22 +458,13 @@ namespace System.Windows.Forms return; UpdateAreas (); + Invalidate(); // Invalidate the full surface, blocks will not match } - private void Draw () - { - ThemeEngine.Current.DrawProgressBar (DeviceContext, this.ClientRectangle, this); - } - - private void OnPaintPB (Object o, PaintEventArgs pevent) + internal override void OnPaintInternal (PaintEventArgs pevent) { - if (Width <= 0 || Height <= 0 || Visible == false) - return; - - /* Copies memory drawing buffer to screen*/ - Draw (); - pevent.Graphics.DrawImage (ImageBuffer, 0, 0); - } + ThemeEngine.Current.DrawProgressBar (pevent.Graphics, pevent.ClipRectangle, this); + } #endregion }