4 // Permission is hereby granted, free of charge, to any person obtaining
5 // a copy of this software and associated documentation files (the
6 // "Software"), to deal in the Software without restriction, including
7 // without limitation the rights to use, copy, modify, merge, publish,
8 // distribute, sublicense, and/or sell copies of the Software, and to
9 // permit persons to whom the Software is furnished to do so, subject to
10 // the following conditions:
12 // The above copyright notice and this permission notice shall be
13 // included in all copies or substantial portions of the Software.
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 // Copyright (c) 2006 Jonathan Pobst
26 // Jonathan Pobst (monkey@jpobst.com)
30 using System
.Windows
.Forms
.Layout
;
31 using System
.ComponentModel
;
32 using System
.Runtime
.InteropServices
;
34 namespace System
.Windows
.Forms
36 [ComVisibleAttribute (true)]
37 [ClassInterfaceAttribute (ClassInterfaceType
.AutoDispatch
)]
38 [ProvideProperty ("FlowBreak", typeof (Control
))]
39 [DefaultProperty ("FlowDirection")]
40 [Docking (DockingBehavior
.Ask
)]
41 public class FlowLayoutPanel
: Panel
, IExtenderProvider
43 private FlowLayoutSettings settings
;
45 public FlowLayoutPanel () : base ()
51 [DefaultValue (FlowDirection
.LeftToRight
)]
52 public FlowDirection FlowDirection
{
53 get { return LayoutSettings.FlowDirection; }
54 set { LayoutSettings.FlowDirection = value; }
57 [LocalizableAttribute (true)]
59 public bool WrapContents
{
60 get { return LayoutSettings.WrapContents; }
61 set { LayoutSettings.WrapContents = value; }
64 public override LayoutEngine LayoutEngine
{
65 get { return this.LayoutSettings.LayoutEngine; }
68 internal FlowLayoutSettings LayoutSettings
{
70 if (this.settings
== null)
71 this.settings
= new FlowLayoutSettings ();
78 #region Public Methods
79 [DefaultValue (false)]
80 [DisplayName ("FlowBreak")]
81 public bool GetFlowBreak (Control control
)
83 return LayoutSettings
.GetFlowBreak (control
);
86 [DisplayName ("FlowBreak")]
87 public void SetFlowBreak (Control control
, bool value)
89 LayoutSettings
.SetFlowBreak (control
, value);
90 this.PerformLayout (control
, "FlowBreak");
94 #region IExtenderProvider Members
95 bool IExtenderProvider
.CanExtend (object extendee
)
97 if (extendee
is Control
)
98 if ((extendee
as Control
).Parent
== this)