// 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)
//
-// NOT COMPLETE
+// 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;
-
#region Constructors & Destructors
public Panel () {
base.TabStop = false;
+ SetStyle(ControlStyles.Selectable, false);
+ SetStyle (ControlStyles.SupportsTransparentBackColor, true);
}
#endregion // Constructors & Destructors
#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 {
}
}
+ [Bindable(false)]
+ [Browsable(false)]
+ [EditorBrowsable(EditorBrowsableState.Never)]
public override string Text {
get { return base.Text; }
set {
#endregion // Public Instance Methods
#region Protected Instance Methods
- protected override void OnResize(EventArgs e) {\r
- base.OnResize (e);\r
- }\r
+ protected override void OnResize(EventArgs eventargs) {
+ base.OnResize (eventargs);
+ Invalidate(true);
+ }
#endregion // Protected Instance Methods
#region Events
- public event KeyEventHandler KeyDown;
- public event KeyPressEventHandler KeyPress;
- public event KeyEventHandler KeyUp;
+ [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
}
}