Typo error
[mono.git] / mcs / class / System.Windows.Forms / System.Windows.Forms / FlowLayoutSettings.cs
1 //
2 // FlowLayoutSettings.cs
3 //
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:
11 // 
12 // The above copyright notice and this permission notice shall be
13 // included in all copies or substantial portions of the Software.
14 // 
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.
22 //
23 // Copyright (c) 2006 Jonathan Pobst
24 //
25 // Authors:
26 //      Jonathan Pobst (monkey@jpobst.com)
27 //
28
29 using System.Windows.Forms.Layout;
30 using System.ComponentModel;
31 using System.Collections.Generic;
32
33 namespace System.Windows.Forms
34 {
35         [DefaultProperty ("FlowDirection")]
36         public class FlowLayoutSettings : LayoutSettings
37         {
38                 private FlowDirection flow_direction;
39                 private bool wrap_contents;
40                 private LayoutEngine layout_engine;
41                 private Dictionary<object, bool> flow_breaks;
42                 private Control owner;
43
44                 internal FlowLayoutSettings () : this (null)
45                 {
46                 }
47
48                 internal FlowLayoutSettings (Control owner)
49                 {
50                         flow_breaks = new Dictionary<object, bool> ();
51                         wrap_contents = true;
52                         flow_direction = FlowDirection.LeftToRight;
53                         this.owner = owner;
54                 }
55
56                 #region Public Properties
57                 [DefaultValue (FlowDirection.LeftToRight)]
58                 public FlowDirection FlowDirection {
59                         get { return this.flow_direction; }
60                         set { 
61                                 if (this.flow_direction != value) {
62                                         this.flow_direction = value;
63                                         if (owner != null)
64                                                 owner.PerformLayout (owner, "FlowDirection");
65                                 }
66                         }
67                 }
68
69                 public override LayoutEngine LayoutEngine {
70                         get { 
71                                 if (this.layout_engine == null)
72                                         this.layout_engine = new FlowLayout ();
73                                         
74                                 return this.layout_engine;
75                         }
76                 }
77
78                 [DefaultValue (true)]
79                 public bool WrapContents {
80                         get { return this.wrap_contents; }
81                         set { 
82                                 if (this.wrap_contents != value) {
83                                         this.wrap_contents = value;
84                                         if (owner != null)
85                                                 owner.PerformLayout (owner, "WrapContents");
86                                 }
87                         }
88                 }
89                 #endregion
90
91                 #region Public Methods
92                 public bool GetFlowBreak (Object child)
93                 {
94                         bool retval;
95
96                         if (flow_breaks.TryGetValue (child, out retval))
97                                 return retval;
98
99                         return false;
100                 }
101
102                 public void SetFlowBreak (Object child, bool value)
103                 {
104                         flow_breaks[child] = value;
105                         if (owner != null)
106                                 owner.PerformLayout ((Control)child, "FlowBreak");
107                 }
108                 #endregion
109         }
110 }