Fix bug #395
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / ToolStripSeparator.cs
1 //
2 // ToolStripSeparator.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.Drawing;
30 using System.ComponentModel;
31 using System.Windows.Forms.Design;
32
33 namespace System.Windows.Forms
34 {
35         [ToolStripItemDesignerAvailability (ToolStripItemDesignerAvailability.ToolStrip | ToolStripItemDesignerAvailability.ContextMenuStrip)]
36         public class ToolStripSeparator : ToolStripItem
37         {
38                 public ToolStripSeparator () : base ()
39                 {
40                 }
41
42                 #region Public Properties
43                 [Browsable (false)]
44                 [EditorBrowsable (EditorBrowsableState.Never)]
45                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
46                 public new bool AutoToolTip {
47                         get { return base.AutoToolTip; }
48                         set { base.AutoToolTip = value; }
49                 }
50
51                 [Browsable (false)]
52                 [EditorBrowsable (EditorBrowsableState.Never)]
53                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
54                 public override Image BackgroundImage {
55                         get { return base.BackgroundImage; }
56                         set { base.BackgroundImage = value; }
57                 }
58
59                 [Browsable (false)]
60                 [EditorBrowsable (EditorBrowsableState.Never)]
61                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
62                 public override ImageLayout BackgroundImageLayout {
63                         get { return base.BackgroundImageLayout; }
64                         set { base.BackgroundImageLayout = value; }
65                 }
66                 
67                 public override bool CanSelect { get { return false; } }
68
69                 [Browsable (false)]
70                 [EditorBrowsable (EditorBrowsableState.Never)]
71                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
72                 public new ToolStripItemDisplayStyle DisplayStyle {
73                         get { return base.DisplayStyle; }
74                         set { base.DisplayStyle = value; }
75                 }
76
77                 [Browsable (false)]
78                 [EditorBrowsable (EditorBrowsableState.Never)]
79                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
80                 public new bool DoubleClickEnabled {
81                         get { return base.DoubleClickEnabled; }
82                         set { base.DoubleClickEnabled = value; }
83                 }
84
85                 [Browsable (false)]
86                 [EditorBrowsable (EditorBrowsableState.Never)]
87                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
88                 public override bool Enabled {
89                         get { return base.Enabled; }
90                         set { base.Enabled = value; }
91                 }
92
93                 [Browsable (false)]
94                 [EditorBrowsable (EditorBrowsableState.Never)]
95                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
96                 public override Font Font {
97                         get { return base.Font; }
98                         set { base.Font = value; }
99                 }
100
101                 [Browsable (false)]
102                 [EditorBrowsable (EditorBrowsableState.Never)]
103                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
104                 public override Image Image {
105                         get { return base.Image; }
106                         set { base.Image = value; }
107                 }
108
109                 [Browsable (false)]
110                 [EditorBrowsable (EditorBrowsableState.Never)]
111                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
112                 public new ContentAlignment ImageAlign {
113                         get { return base.ImageAlign; }
114                         set { base.ImageAlign = value; }
115                 }
116
117                 [Browsable (false)]
118                 [EditorBrowsable (EditorBrowsableState.Never)]
119                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
120                 [RefreshProperties (RefreshProperties.Repaint)]
121                 public new int ImageIndex {
122                         get { return base.ImageIndex; }
123                         set { base.ImageIndex = value; }
124                 }
125
126                 [Browsable (false)]
127                 [EditorBrowsable (EditorBrowsableState.Never)]
128                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
129                 public new string ImageKey {
130                         get { return base.ImageKey; }
131                         set { base.ImageKey = value; }
132                 }
133                 
134                 [Browsable (false)]
135                 [EditorBrowsable (EditorBrowsableState.Never)]
136                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
137                 public new ToolStripItemImageScaling ImageScaling {
138                         get { return base.ImageScaling; }
139                         set { base.ImageScaling = value; }
140                 }
141
142                 [Browsable (false)]
143                 [EditorBrowsable (EditorBrowsableState.Never)]
144                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
145                 public new Color ImageTransparentColor {
146                         get { return base.ImageTransparentColor; }
147                         set { base.ImageTransparentColor = value; }
148                 }
149
150                 [Browsable (false)]
151                 [EditorBrowsable (EditorBrowsableState.Never)]
152                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
153                 public new bool RightToLeftAutoMirrorImage {
154                         get { return base.RightToLeftAutoMirrorImage; }
155                         set { base.RightToLeftAutoMirrorImage = value; }
156                 }
157
158                 [Browsable (false)]
159                 [EditorBrowsable (EditorBrowsableState.Never)]
160                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
161                 public override string Text {
162                         get { return base.Text; }
163                         set { base.Text = value; }
164                 }
165
166                 [Browsable (false)]
167                 [EditorBrowsable (EditorBrowsableState.Never)]
168                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
169                 public new ContentAlignment TextAlign {
170                         get { return base.TextAlign; }
171                         set { base.TextAlign = value; }
172                 }
173
174                 [Browsable (false)]
175                 [EditorBrowsable (EditorBrowsableState.Never)]
176                 [DefaultValue (ToolStripTextDirection.Horizontal)]
177                 public override ToolStripTextDirection TextDirection {
178                         get { return base.TextDirection; }
179                         set { base.TextDirection = value; }
180                 }
181
182                 [Browsable (false)]
183                 [EditorBrowsable (EditorBrowsableState.Never)]
184                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
185                 public new TextImageRelation TextImageRelation {
186                         get { return base.TextImageRelation; }
187                         set { base.TextImageRelation = value; }
188                 }
189
190                 [Browsable (false)]
191                 [EditorBrowsable (EditorBrowsableState.Never)]
192                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
193                 public new string ToolTipText {
194                         get { return base.ToolTipText; }
195                         set { base.ToolTipText = value; }
196                 }
197                 #endregion
198
199                 #region Protected Properties
200                 protected internal override Padding DefaultMargin { get { return new Padding(); } }
201                 protected override Size DefaultSize { get { return new Size(6, 6); } }
202                 #endregion
203
204                 #region Public Methods
205                 public override Size GetPreferredSize (Size constrainingSize)
206                 {
207                         return new Size(6, 6);
208                 }
209                 #endregion
210
211                 #region Protected Methods
212                 [EditorBrowsable (EditorBrowsableState.Advanced)]
213                 protected override AccessibleObject CreateAccessibilityInstance ()
214                 {
215                         ToolStripItemAccessibleObject ao = new ToolStripItemAccessibleObject (this);
216
217                         ao.default_action = "Press";
218                         ao.role = AccessibleRole.Separator;
219                         ao.state = AccessibleStates.None;
220
221                         return ao;
222                 }
223                 
224                 [EditorBrowsable (EditorBrowsableState.Never)]
225                 protected override void OnFontChanged (EventArgs e)
226                 {
227                         base.OnFontChanged (e);
228                 }
229                 
230                 protected override void OnPaint (PaintEventArgs e)
231                 {
232                         base.OnPaint (e);
233                         
234                         if (this.Owner != null)
235                         {
236                                 if (this.IsOnDropDown)
237                                         this.Owner.Renderer.DrawSeparator (new ToolStripSeparatorRenderEventArgs (e.Graphics, this, this.Owner.Orientation == Orientation.Horizontal ? false : true));
238                                 else
239                                         this.Owner.Renderer.DrawSeparator (new ToolStripSeparatorRenderEventArgs (e.Graphics, this, this.Owner.Orientation == Orientation.Horizontal ? true : false));
240                         }
241                 }
242
243                 protected internal override void SetBounds (Rectangle rect)
244                 {
245                         base.SetBounds (rect);
246                 }
247                 #endregion
248
249                 #region Public Events
250                 [Browsable (false)]
251                 [EditorBrowsable (EditorBrowsableState.Never)]
252                 public new event EventHandler DisplayStyleChanged {
253                         add { base.DisplayStyleChanged += value; }
254                         remove { base.DisplayStyleChanged -= value; }
255                 }
256
257                 [Browsable (false)]
258                 [EditorBrowsable (EditorBrowsableState.Never)]
259                 public new event EventHandler EnabledChanged {
260                         add { base.EnabledChanged += value; }
261                         remove { base.EnabledChanged -= value; }
262                 }
263
264                 [Browsable (false)]
265                 [EditorBrowsable (EditorBrowsableState.Never)]
266                 public new event EventHandler TextChanged {
267                         add { base.TextChanged += value; }
268                         remove { base.TextChanged -= value; }
269                 }
270                 #endregion
271
272                 #region Internal Method/Properties
273                 internal override ToolStripTextDirection DefaultTextDirection { get { return ToolStripTextDirection.Horizontal; } }
274                 #endregion
275         }
276 }