2 // ToolStripContentPanel.cs
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.Runtime.InteropServices;
31 using System.Windows.Forms.Layout;
32 using System.ComponentModel;
34 namespace System.Windows.Forms
37 [ClassInterface(ClassInterfaceType.AutoDispatch)]
38 [DefaultEvent ("Load")]
40 [Docking (DockingBehavior.Never)]
41 [InitializationEvent ("Load")]
42 [Designer ("System.Windows.Forms.Design.ToolStripContentPanelDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
43 public class ToolStripContentPanel : Panel
45 private ToolStripRenderMode render_mode;
46 private ToolStripRenderer renderer;
48 #region Public Constructors
49 public ToolStripContentPanel () : base ()
51 this.RenderMode = ToolStripRenderMode.System;
55 #region Public Properties
57 [EditorBrowsable (EditorBrowsableState.Never)]
58 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
59 public override AnchorStyles Anchor {
60 get { return base.Anchor; }
61 set { base.Anchor = value; }
65 [EditorBrowsable (EditorBrowsableState.Never)]
66 public override bool AutoScroll {
67 get { return base.AutoScroll; }
68 set { base.AutoScroll = value; }
72 [EditorBrowsable (EditorBrowsableState.Never)]
73 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
74 public new Size AutoScrollMargin {
75 get { return base.AutoScrollMargin; }
76 set { base.AutoScrollMargin = value; }
80 [EditorBrowsable (EditorBrowsableState.Never)]
81 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
82 public new Size AutoScrollMinSize {
83 get { return base.AutoScrollMinSize; }
84 set { base.AutoScrollMinSize = value; }
88 [EditorBrowsable (EditorBrowsableState.Never)]
89 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
90 public override bool AutoSize {
91 get { return base.AutoSize; }
92 set { base.AutoSize = value; }
97 [EditorBrowsable (EditorBrowsableState.Never)]
98 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
99 public override AutoSizeMode AutoSizeMode {
100 get { return base.AutoSizeMode; }
101 set { base.AutoSizeMode = value; }
104 public override Color BackColor {
105 get { return base.BackColor; }
106 set { base.BackColor = value;
108 if (this.Parent != null)
109 this.Parent.BackColor = value;
114 [EditorBrowsable (EditorBrowsableState.Never)]
115 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
116 public new bool CausesValidation {
117 get { return base.CausesValidation; }
118 set { base.CausesValidation = value; }
122 [EditorBrowsable (EditorBrowsableState.Never)]
123 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
124 public override DockStyle Dock {
125 get { return base.Dock; }
126 set { base.Dock = value; }
130 [EditorBrowsable (EditorBrowsableState.Never)]
131 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
132 public new Point Location {
133 get { return base.Location; }
134 set { base.Location = value; }
138 [EditorBrowsable (EditorBrowsableState.Never)]
139 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
140 public override Size MaximumSize {
141 get { return base.MaximumSize; }
142 set { base.MaximumSize = value; }
146 [EditorBrowsable (EditorBrowsableState.Never)]
147 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
148 public override Size MinimumSize {
149 get { return base.MinimumSize; }
150 set { base.MinimumSize = value; }
154 [EditorBrowsable (EditorBrowsableState.Never)]
155 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
156 public new string Name {
157 get { return base.Name; }
158 set { base.Name = value; }
162 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
163 public ToolStripRenderer Renderer {
165 if (this.render_mode == ToolStripRenderMode.ManagerRenderMode)
166 return ToolStripManager.Renderer;
168 return this.renderer;
171 if (this.renderer != value) {
172 this.renderer = value;
173 this.render_mode = ToolStripRenderMode.Custom;
174 this.OnRendererChanged (EventArgs.Empty);
179 public ToolStripRenderMode RenderMode {
180 get { return this.render_mode; }
182 if (!Enum.IsDefined (typeof (ToolStripRenderMode), value))
183 throw new InvalidEnumArgumentException (string.Format ("Enum argument value '{0}' is not valid for ToolStripRenderMode", value));
185 if (value == ToolStripRenderMode.Custom && this.renderer == null)
186 throw new NotSupportedException ("Must set Renderer property before setting RenderMode to Custom");
187 else if (value == ToolStripRenderMode.Professional)
188 this.renderer = new ToolStripProfessionalRenderer ();
189 else if (value == ToolStripRenderMode.System)
190 this.renderer = new ToolStripSystemRenderer ();
192 this.render_mode = value;
197 [EditorBrowsable (EditorBrowsableState.Never)]
198 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
199 public new int TabIndex {
200 get { return base.TabIndex; }
201 set { base.TabIndex = value; }
205 [EditorBrowsable (EditorBrowsableState.Never)]
206 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
207 public new bool TabStop {
208 get { return base.TabStop; }
209 set { base.TabStop = value; }
213 #region Protected Methods
214 protected override void OnHandleCreated (EventArgs e)
216 base.OnHandleCreated (e);
219 [EditorBrowsable (EditorBrowsableState.Advanced)]
220 protected virtual void OnLoad (EventArgs e)
222 EventHandler eh = (EventHandler)(Events [LoadEvent]);
227 [EditorBrowsable (EditorBrowsableState.Advanced)]
228 protected override void OnPaintBackground (PaintEventArgs e)
230 base.OnPaintBackground (e);
232 this.Renderer.DrawToolStripContentPanelBackground (new ToolStripContentPanelRenderEventArgs (e.Graphics, this));
235 protected virtual void OnRendererChanged (EventArgs e)
237 EventHandler eh = (EventHandler)(Events [RendererChangedEvent]);
243 #region Public Events
244 static object LoadEvent = new object ();
245 static object RendererChangedEvent = new object ();
248 [EditorBrowsable (EditorBrowsableState.Never)]
249 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
250 public new event EventHandler AutoSizeChanged {
251 add { base.AutoSizeChanged += value; }
252 remove { base.AutoSizeChanged -= value; }
256 [EditorBrowsable (EditorBrowsableState.Never)]
257 public new event EventHandler CausesValidationChanged {
258 add { base.CausesValidationChanged += value; }
259 remove { base.CausesValidationChanged -= value; }
263 [EditorBrowsable (EditorBrowsableState.Never)]
264 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
265 public new event EventHandler DockChanged {
266 add { base.DockChanged += value; }
267 remove { base.DockChanged -= value; }
270 public event EventHandler Load {
271 add { Events.AddHandler (LoadEvent, value); }
272 remove { Events.RemoveHandler (LoadEvent, value); }
276 [EditorBrowsable (EditorBrowsableState.Never)]
277 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
278 public new event EventHandler LocationChanged {
279 add { base.LocationChanged += value; }
280 remove { base.LocationChanged -= value; }
283 public event EventHandler RendererChanged {
284 add { Events.AddHandler (RendererChangedEvent, value); }
285 remove { Events.RemoveHandler (RendererChangedEvent, value); }
289 [EditorBrowsable (EditorBrowsableState.Never)]
290 public new event EventHandler TabIndexChanged {
291 add { base.TabIndexChanged += value; }
292 remove { base.TabIndexChanged -= value; }
296 [EditorBrowsable (EditorBrowsableState.Never)]
297 public new event EventHandler TabStopChanged {
298 add { base.TabStopChanged += value; }
299 remove { base.TabStopChanged -= value; }