X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FManaged.Windows.Forms%2FSystem.Windows.Forms%2FPanel.cs;h=343925d61608d77f6b20e8c625d4bdd2b8d1e120;hb=a1e7e4ebf7737572e349c69fc0ae56bd28517891;hp=84e8bdb3bd3eaad006a5a98996e538e9503564cc;hpb=2653adee1bc9d978164dcd19d1f41296c4b94f75;p=mono.git diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Panel.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Panel.cs index 84e8bdb3bd3..343925d6160 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Panel.cs +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Panel.cs @@ -17,46 +17,61 @@ // 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.ComponentModel; +using System.ComponentModel.Design; using System.Drawing; +using System.Runtime.InteropServices; namespace System.Windows.Forms { - + [DefaultProperty("BorderStyle")] + [DefaultEvent("Paint")] + [Designer ("System.Windows.Forms.Design.PanelDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")] + [Docking (DockingBehavior.Ask)] + [ClassInterface (ClassInterfaceType.AutoDispatch)] + [ComVisible (true)] public class Panel : ScrollableControl { - - private BorderStyle border_style; - - public Panel () - { + #region Constructors & Destructors + public Panel () { base.TabStop = false; + SetStyle(ControlStyles.Selectable, false); + SetStyle (ControlStyles.SupportsTransparentBackColor, true); } + #endregion // Constructors & Destructors - public override string Text { - get { return base.Text; } - set { - if (value == Text) - return; - base.Text = value; - Refresh (); - } + #region Public Instance Properties + [Browsable (true)] + [EditorBrowsable (EditorBrowsableState.Always)] + [DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)] + public override bool AutoSize { + get { return base.AutoSize; } + set { base.AutoSize = value; } + } + + [Browsable (true)] + [DefaultValue (AutoSizeMode.GrowOnly)] + [Localizable (true)] + public virtual AutoSizeMode AutoSizeMode { + get { return base.GetAutoSizeMode (); } + set { base.SetAutoSizeMode (value); } } + [DefaultValue(BorderStyle.None)] + [DispId(-504)] public BorderStyle BorderStyle { - get { return border_style; } - set { - if (value == border_style) - return; - border_style = value; - Refresh (); - } + get { return InternalBorderStyle; } + set { InternalBorderStyle = value; } } + [DefaultValue(false)] public new bool TabStop { get { return base.TabStop; } set { @@ -66,25 +81,106 @@ namespace System.Windows.Forms { } } - protected override Size DefaultSize { - get { return new Size (200, 100); } + [Bindable(false)] + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] + public override string Text { + get { return base.Text; } + set { + if (value == Text) + return; + base.Text = value; + Refresh (); + } } + #endregion // Public Instance Properties + #region Protected Instance Properties protected override CreateParams CreateParams { get { - CreateParams createParams = base.CreateParams; - createParams.ClassName = String.Empty; - createParams.Style = (int) (WindowStyles.WS_CHILD | - WindowStyles.WS_VISIBLE); - return createParams; + return base.CreateParams; } } + protected override Size DefaultSize { + get { return ThemeEngine.Current.PanelDefaultSize; } + } + #endregion // Proteced Instance Properties + + #region Public Instance Methods public override string ToString () { return base.ToString () + ", BorderStyle: " + BorderStyle; } - + #endregion // Public Instance Methods + + #region Protected Instance Methods + protected override void OnResize(EventArgs eventargs) { + base.OnResize (eventargs); + Invalidate(true); + } + + #endregion // Protected Instance Methods + + #region Events + [Browsable (true)] + [EditorBrowsable (EditorBrowsableState.Always)] + public new event EventHandler AutoSizeChanged { + add { base.AutoSizeChanged += value; } + remove { base.AutoSizeChanged -= 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 TextChanged { + add { base.TextChanged += value; } + remove { base.TextChanged -= value; } + } + #endregion + + #region Internal Methods + internal override Size GetPreferredSizeCore (Size proposedSize) + { + Size retsize = Size.Empty; + + foreach (Control child in Controls) { + if (child.Dock == DockStyle.Fill) { + if (child.Bounds.Right > retsize.Width) + retsize.Width = child.Bounds.Right; + } else if (child.Dock != DockStyle.Top && child.Dock != DockStyle.Bottom && (child.Anchor & AnchorStyles.Right) == 0 && (child.Bounds.Right + child.Margin.Right) > retsize.Width) + retsize.Width = child.Bounds.Right + child.Margin.Right; + + if (child.Dock == DockStyle.Fill) { + if (child.Bounds.Bottom > retsize.Height) + retsize.Height = child.Bounds.Bottom; + } else if (child.Dock != DockStyle.Left && child.Dock != DockStyle.Right && (child.Anchor & AnchorStyles.Bottom) == 0 && (child.Bounds.Bottom + child.Margin.Bottom) > retsize.Height) + retsize.Height = child.Bounds.Bottom + child.Margin.Bottom; + } + + return retsize; + } + #endregion } }