// 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:
// Jackson Harper (jackson@ximian.com)
+// COMPLETE
using System;
using System.Drawing;
using System.ComponentModel;
+using System.ComponentModel.Design;
+using System.Runtime.InteropServices;
namespace System.Windows.Forms {
-
+ [DefaultProperty("Text")]
+ [DesignTimeVisible(false)]
public class StatusBarPanel : Component, ISupportInitialize {
-
+ #region Local Variables
private StatusBar parent;
+ private bool initializing;
private string text = String.Empty;
private string tool_tip_text = String.Empty;
private HorizontalAlignment alignment = HorizontalAlignment.Left;
private StatusBarPanelAutoSize auto_size = StatusBarPanelAutoSize.None;
private StatusBarPanelBorderStyle border_style = StatusBarPanelBorderStyle.Sunken;
- private StatusBarPanelStyle style;
+ private StatusBarPanelStyle style = StatusBarPanelStyle.Text;
private int width = 100;
private int min_width = 10;
-
+ internal int X;
+ #endregion // Local Variables
+
+ #region Constructors
public StatusBarPanel ()
{
}
+ #endregion // Constructors
+ [DefaultValue(HorizontalAlignment.Left)]
+ [Localizable(true)]
public HorizontalAlignment Alignment {
get { return alignment; }
- set { alignment = value; }
+ set {
+ alignment = value;
+ InvalidateContents ();
+ }
}
+ [DefaultValue(StatusBarPanelAutoSize.None)]
public StatusBarPanelAutoSize AutoSize {
get { return auto_size; }
- set { auto_size = value; }
+ set {
+ auto_size = value;
+ Invalidate ();
+ }
}
+ [DefaultValue(StatusBarPanelBorderStyle.Sunken)]
+ [DispId(-504)]
public StatusBarPanelBorderStyle BorderStyle {
get { return border_style; }
- set { border_style = value; }
+ set {
+ border_style = value;
+ Invalidate ();
+ }
}
+ [DefaultValue(null)]
+ [Localizable(true)]
public Icon Icon {
get { return icon; }
- set { icon = value; }
+ set {
+ icon = value;
+ InvalidateContents ();
+ }
}
+ [DefaultValue(10)]
+ [Localizable(true)]
+ [RefreshProperties(RefreshProperties.All)]
public int MinWidth {
get {
- if (AutoSize == StatusBarPanelAutoSize.None)
- return Width;
+ /*
+ MSDN says that when AutoSize = None then MinWidth is automatically
+ set to Width, but neither v1.1 nor v2.0 behave that way.
+ */
return min_width;
}
set {
if (value < 0)
throw new ArgumentException ("value");
min_width = value;
+ if (min_width > width)
+ width = min_width;
+
+ Invalidate ();
}
}
+ [DefaultValue(100)]
+ [Localizable(true)]
public int Width {
get { return width; }
set {
if (value < 0)
throw new ArgumentException ("value");
- width = value;
+
+ if (initializing)
+ width = value;
+ else
+ SetWidth(value);
+
+ Invalidate ();
}
}
+ [DefaultValue(StatusBarPanelStyle.Text)]
public StatusBarPanelStyle Style {
get { return style; }
- set { style = value; }
+ set {
+ style = value;
+ Invalidate ();
+ }
}
+ [DefaultValue("")]
+ [Localizable(true)]
public string Text {
get { return text; }
- set { text = value; }
+ set {
+ text = value;
+ InvalidateContents ();
+ }
}
+ [DefaultValue("")]
+ [Localizable(true)]
public string ToolTipText {
get { return tool_tip_text; }
set { tool_tip_text = value; }
}
+ [Browsable(false)]
public StatusBar Parent {
get { return parent; }
}
+ private void Invalidate ()
+ {
+ if (parent == null)
+ return;
+ parent.UpdatePanel (this);
+ }
+
+ private void InvalidateContents ()
+ {
+ if (parent == null)
+ return;
+ parent.UpdatePanelContents (this);
+ }
+
internal void SetParent (StatusBar parent)
{
this.parent = parent;
}
- public override string ToString ()
+ internal void SetWidth (int width)
{
- return "StatusBarPanel: {" + Text +"}";
+ this.width = width;
+ if (min_width > this.width)
+ this.width = min_width;
}
- public virtual void Dispose ()
+ public override string ToString ()
{
- Dispose (true);
+ return "StatusBarPanel: {" + Text +"}";
}
- [MonoTODO]
protected override void Dispose (bool disposing)
{
}
- [MonoTODO]
- public virtual void BeginInit()
+ public void BeginInit ()
{
+ initializing = true;
}
- [MonoTODO]
- public virtual void EndInit()
+ public void EndInit ()
{
+ if (!initializing)
+ return;
+
+ if (min_width > width)
+ width = min_width;
+
+ initializing = false;
}
}
}