* TextBoxBase.cs: Take HideSelection into account when
[mono-project.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / ToolStripRenderer.cs
bloba659785bd470f00044835e7fad594b063ced36f1
1 //
2 // ToolStripRenderer.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.
23 // Copyright (c) Jonathan Pobst
25 // Authors:
26 // Jonathan Pobst (monkey@jpobst.com)
28 #if NET_2_0
30 using System;
31 using System.ComponentModel;
32 using System.Drawing;
33 using System.Drawing.Imaging;
35 namespace System.Windows.Forms
37 public abstract class ToolStripRenderer
39 private static ColorMatrix grayscale_matrix = new ColorMatrix (new float[][] {
40 //new float[]{0.3f,0.3f,0.3f,0,0},
41 //new float[]{0.59f,0.59f,0.59f,0,0},
42 //new float[]{0.11f,0.11f,0.11f,0,0},
43 //new float[]{0,0,0,1,0,0},
44 //new float[]{0,0,0,0,1,0},
45 //new float[]{0,0,0,0,0,1}
46 new float[]{0.2f,0.2f,0.2f,0,0},
47 new float[]{0.41f,0.41f,0.41f,0,0},
48 new float[]{0.11f,0.11f,0.11f,0,0},
49 new float[]{0.15f,0.15f,0.15f,1,0,0},
50 new float[]{0.15f,0.15f,0.15f,0,1,0},
51 new float[]{0.15f,0.15f,0.15f,0,0,1}
52 });
54 protected ToolStripRenderer ()
58 #region Public Methods
59 public static Image CreateDisabledImage(Image normalImage)
61 if (normalImage == null)
62 return null;
64 // Code adapted from ThemeWin32Classic.cs
65 ImageAttributes ia = new ImageAttributes();
66 ia.SetColorMatrix (grayscale_matrix);
68 Bitmap b = new Bitmap(normalImage);
69 Graphics.FromImage(b).DrawImage(normalImage, new Rectangle (0, 0, normalImage.Width, normalImage.Height), 0, 0, normalImage.Width, normalImage.Height, GraphicsUnit.Pixel, ia);
71 return b;
74 public void DrawArrow (ToolStripArrowRenderEventArgs e)
75 { this.OnRenderArrow (e); }
77 public void DrawButtonBackground (ToolStripItemRenderEventArgs e)
78 { this.OnRenderButtonBackground (e); }
80 public void DrawDropDownButtonBackground (ToolStripItemRenderEventArgs e)
81 { this.OnRenderDropDownButtonBackground (e); }
83 public void DrawGrip (ToolStripGripRenderEventArgs e)
84 { this.OnRenderGrip (e); }
86 public void DrawImageMargin (ToolStripRenderEventArgs e)
87 { this.OnRenderImageMargin (e); }
89 public void DrawItemBackground (ToolStripItemRenderEventArgs e)
90 { this.OnRenderItemBackground (e); }
92 public void DrawItemCheck (ToolStripItemImageRenderEventArgs e)
93 { this.OnRenderItemCheck (e); }
95 public void DrawItemImage (ToolStripItemImageRenderEventArgs e)
96 { this.OnRenderItemImage (e); }
98 public void DrawItemText (ToolStripItemTextRenderEventArgs e)
99 { this.OnRenderItemText (e); }
101 public void DrawLabelBackground (ToolStripItemRenderEventArgs e)
102 { this.OnRenderLabelBackground (e); }
104 public void DrawMenuItemBackground (ToolStripItemRenderEventArgs e)
105 { this.OnRenderMenuItemBackground (e); }
107 public void DrawOverflowButtonBackground (ToolStripItemRenderEventArgs e)
108 { this.OnRenderOverflowButtonBackground (e); }
110 public void DrawSeparator (ToolStripSeparatorRenderEventArgs e)
111 { this.OnRenderSeparator (e); }
113 public void DrawSplitButton (ToolStripItemRenderEventArgs e)
114 { this.OnRenderSplitButtonBackground (e); }
116 public void DrawStatusStripSizingGrip (ToolStripRenderEventArgs e)
117 { this.OnRenderStatusStripSizingGrip (e); }
119 public void DrawToolStripBackground (ToolStripRenderEventArgs e)
120 { this.OnRenderToolStripBackground (e); }
122 public void DrawToolStripBorder (ToolStripRenderEventArgs e)
123 { this.OnRenderToolStripBorder (e); }
125 public void DrawToolStripContentPanelBackground (ToolStripContentPanelRenderEventArgs e)
126 { this.OnRenderToolStripContentPanelBackground (e); }
128 public void DrawToolStripPanelBackground (ToolStripPanelRenderEventArgs e)
129 { this.OnRenderToolStripPanelBackground (e); }
131 public void DrawToolStripStatusLabelBackground (ToolStripItemRenderEventArgs e)
132 { this.OnRenderToolStripStatusLabelBackground (e); }
133 #endregion
135 #region Protected Methods
136 protected internal virtual void Initialize (ToolStrip toolStrip) {}
137 protected internal virtual void InitializeContentPanel (ToolStripContentPanel contentPanel) {}
138 protected internal virtual void InitializeItem (ToolStripItem item) {}
139 protected internal virtual void InitializePanel (ToolStripPanel toolStripPanel) {}
141 protected virtual void OnRenderArrow (ToolStripArrowRenderEventArgs e)
143 ToolStripArrowRenderEventHandler eh = (ToolStripArrowRenderEventHandler)Events [RenderArrowEvent];
144 if (eh != null)
145 eh (this, e);
148 protected virtual void OnRenderButtonBackground (ToolStripItemRenderEventArgs e)
150 ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderButtonBackgroundEvent];
151 if (eh != null)
152 eh (this, e);
155 protected virtual void OnRenderDropDownButtonBackground (ToolStripItemRenderEventArgs e)
157 ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderDropDownButtonBackgroundEvent];
158 if (eh != null)
159 eh (this, e);
162 protected virtual void OnRenderGrip (ToolStripGripRenderEventArgs e)
164 ToolStripGripRenderEventHandler eh = (ToolStripGripRenderEventHandler)Events [RenderGripEvent];
165 if (eh != null)
166 eh (this, e);
169 protected virtual void OnRenderImageMargin (ToolStripRenderEventArgs e)
171 ToolStripRenderEventHandler eh = (ToolStripRenderEventHandler)Events [RenderImageMarginEvent];
172 if (eh != null)
173 eh (this, e);
176 protected virtual void OnRenderItemBackground (ToolStripItemRenderEventArgs e)
178 ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderItemBackgroundEvent];
179 if (eh != null)
180 eh (this, e);
183 protected virtual void OnRenderItemCheck (ToolStripItemImageRenderEventArgs e)
185 ToolStripItemImageRenderEventHandler eh = (ToolStripItemImageRenderEventHandler)Events [RenderItemCheckEvent];
186 if (eh != null)
187 eh (this, e);
190 protected virtual void OnRenderItemImage (ToolStripItemImageRenderEventArgs e)
192 ToolStripItemImageRenderEventHandler eh = (ToolStripItemImageRenderEventHandler)Events [RenderItemImageEvent];
193 if (eh != null)
194 eh (this, e);
197 protected virtual void OnRenderItemText (ToolStripItemTextRenderEventArgs e)
199 ToolStripItemTextRenderEventHandler eh = (ToolStripItemTextRenderEventHandler)Events [RenderItemTextEvent];
200 if (eh != null)
201 eh (this, e);
204 protected virtual void OnRenderLabelBackground (ToolStripItemRenderEventArgs e)
206 ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderLabelBackgroundEvent];
207 if (eh != null)
208 eh (this, e);
211 protected virtual void OnRenderMenuItemBackground (ToolStripItemRenderEventArgs e)
213 ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderMenuItemBackgroundEvent];
214 if (eh != null)
215 eh (this, e);
218 protected virtual void OnRenderOverflowButtonBackground (ToolStripItemRenderEventArgs e)
220 ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderOverflowButtonBackgroundEvent];
221 if (eh != null)
222 eh (this, e);
225 protected virtual void OnRenderSeparator (ToolStripSeparatorRenderEventArgs e)
227 ToolStripSeparatorRenderEventHandler eh = (ToolStripSeparatorRenderEventHandler)Events [RenderSeparatorEvent];
228 if (eh != null)
229 eh (this, e);
232 protected virtual void OnRenderSplitButtonBackground (ToolStripItemRenderEventArgs e)
234 ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderSplitButtonBackgroundEvent];
235 if (eh != null)
236 eh (this, e);
239 protected virtual void OnRenderStatusStripSizingGrip (ToolStripRenderEventArgs e)
241 ToolStripRenderEventHandler eh = (ToolStripRenderEventHandler)Events [RenderStatusStripSizingGripEvent];
242 if (eh != null)
243 eh (this, e);
246 protected virtual void OnRenderToolStripBackground (ToolStripRenderEventArgs e)
248 ToolStripRenderEventHandler eh = (ToolStripRenderEventHandler)Events [RenderToolStripBackgroundEvent];
249 if (eh != null)
250 eh (this, e);
253 protected virtual void OnRenderToolStripBorder (ToolStripRenderEventArgs e)
255 ToolStripRenderEventHandler eh = (ToolStripRenderEventHandler)Events [RenderToolStripBorderEvent];
256 if (eh != null)
257 eh (this, e);
260 protected virtual void OnRenderToolStripContentPanelBackground (ToolStripContentPanelRenderEventArgs e)
262 ToolStripContentPanelRenderEventHandler eh = (ToolStripContentPanelRenderEventHandler)Events [RenderToolStripContentPanelBackgroundEvent];
263 if (eh != null)
264 eh (this, e);
267 protected virtual void OnRenderToolStripPanelBackground (ToolStripPanelRenderEventArgs e)
269 ToolStripPanelRenderEventHandler eh = (ToolStripPanelRenderEventHandler)Events [RenderToolStripPanelBackgroundEvent];
270 if (eh != null)
271 eh (this, e);
274 protected virtual void OnRenderToolStripStatusLabelBackground (ToolStripItemRenderEventArgs e)
276 ToolStripItemRenderEventHandler eh = (ToolStripItemRenderEventHandler)Events [RenderToolStripStatusLabelBackgroundEvent];
277 if (eh != null)
278 eh (this, e);
280 #endregion
282 #region Public Events
283 EventHandlerList events;
285 EventHandlerList Events {
286 get {
287 if (events == null)
288 events = new EventHandlerList ();
289 return events;
293 static object RenderArrowEvent = new object ();
294 static object RenderButtonBackgroundEvent = new object ();
295 static object RenderDropDownButtonBackgroundEvent = new object ();
296 static object RenderGripEvent = new object ();
297 static object RenderImageMarginEvent = new object ();
298 static object RenderItemBackgroundEvent = new object ();
299 static object RenderItemCheckEvent = new object ();
300 static object RenderItemImageEvent = new object ();
301 static object RenderItemTextEvent = new object ();
302 static object RenderLabelBackgroundEvent = new object ();
303 static object RenderMenuItemBackgroundEvent = new object ();
304 static object RenderOverflowButtonBackgroundEvent = new object ();
305 static object RenderSeparatorEvent = new object ();
306 static object RenderSplitButtonBackgroundEvent = new object ();
307 static object RenderStatusStripSizingGripEvent = new object ();
308 static object RenderToolStripBackgroundEvent = new object ();
309 static object RenderToolStripBorderEvent = new object ();
310 static object RenderToolStripContentPanelBackgroundEvent = new object ();
311 static object RenderToolStripPanelBackgroundEvent = new object ();
312 static object RenderToolStripStatusLabelBackgroundEvent = new object ();
314 public event ToolStripArrowRenderEventHandler RenderArrow {
315 add { Events.AddHandler (RenderArrowEvent, value); }
316 remove {Events.RemoveHandler (RenderArrowEvent, value); }
318 public event ToolStripItemRenderEventHandler RenderButtonBackground {
319 add { Events.AddHandler (RenderButtonBackgroundEvent, value); }
320 remove {Events.RemoveHandler (RenderButtonBackgroundEvent, value); }
322 public event ToolStripItemRenderEventHandler RenderDropDownButtonBackground {
323 add { Events.AddHandler (RenderDropDownButtonBackgroundEvent, value); }
324 remove {Events.RemoveHandler (RenderDropDownButtonBackgroundEvent, value); }
326 public event ToolStripGripRenderEventHandler RenderGrip {
327 add { Events.AddHandler (RenderGripEvent, value); }
328 remove {Events.RemoveHandler (RenderGripEvent, value); }
330 public event ToolStripRenderEventHandler RenderImageMargin {
331 add { Events.AddHandler (RenderImageMarginEvent, value); }
332 remove {Events.RemoveHandler (RenderImageMarginEvent, value); }
334 public event ToolStripItemRenderEventHandler RenderItemBackground {
335 add { Events.AddHandler (RenderItemBackgroundEvent, value); }
336 remove {Events.RemoveHandler (RenderItemBackgroundEvent, value); }
338 public event ToolStripItemImageRenderEventHandler RenderItemCheck {
339 add { Events.AddHandler (RenderItemCheckEvent, value); }
340 remove {Events.RemoveHandler (RenderItemCheckEvent, value); }
342 public event ToolStripItemImageRenderEventHandler RenderItemImage {
343 add { Events.AddHandler (RenderItemImageEvent, value); }
344 remove {Events.RemoveHandler (RenderItemImageEvent, value); }
346 public event ToolStripItemTextRenderEventHandler RenderItemText {
347 add { Events.AddHandler (RenderItemTextEvent, value); }
348 remove {Events.RemoveHandler (RenderItemTextEvent, value); }
350 public event ToolStripItemRenderEventHandler RenderLabelBackground {
351 add { Events.AddHandler (RenderLabelBackgroundEvent, value); }
352 remove {Events.RemoveHandler (RenderLabelBackgroundEvent, value); }
354 public event ToolStripItemRenderEventHandler RenderMenuItemBackground {
355 add { Events.AddHandler (RenderMenuItemBackgroundEvent, value); }
356 remove {Events.RemoveHandler (RenderMenuItemBackgroundEvent, value); }
358 public event ToolStripItemRenderEventHandler RenderOverflowButtonBackground {
359 add { Events.AddHandler (RenderOverflowButtonBackgroundEvent, value); }
360 remove {Events.RemoveHandler (RenderOverflowButtonBackgroundEvent, value); }
362 public event ToolStripSeparatorRenderEventHandler RenderSeparator {
363 add { Events.AddHandler (RenderSeparatorEvent, value); }
364 remove {Events.RemoveHandler (RenderSeparatorEvent, value); }
366 public event ToolStripItemRenderEventHandler RenderSplitButtonBackground {
367 add { Events.AddHandler (RenderSplitButtonBackgroundEvent, value); }
368 remove {Events.RemoveHandler (RenderSplitButtonBackgroundEvent, value); }
370 public event ToolStripRenderEventHandler RenderStatusStripSizingGrip {
371 add { Events.AddHandler (RenderStatusStripSizingGripEvent, value); }
372 remove {Events.RemoveHandler (RenderStatusStripSizingGripEvent, value); }
374 public event ToolStripRenderEventHandler RenderToolStripBackground {
375 add { Events.AddHandler (RenderToolStripBackgroundEvent, value); }
376 remove {Events.RemoveHandler (RenderToolStripBackgroundEvent, value); }
378 public event ToolStripRenderEventHandler RenderToolStripBorder {
379 add { Events.AddHandler (RenderToolStripBorderEvent, value); }
380 remove {Events.RemoveHandler (RenderToolStripBorderEvent, value); }
382 public event ToolStripContentPanelRenderEventHandler RenderToolStripContentPanelBackground {
383 add { Events.AddHandler (RenderToolStripContentPanelBackgroundEvent, value); }
384 remove {Events.RemoveHandler (RenderToolStripContentPanelBackgroundEvent, value); }
386 public event ToolStripPanelRenderEventHandler RenderToolStripPanelBackground {
387 add { Events.AddHandler (RenderToolStripPanelBackgroundEvent, value); }
388 remove {Events.RemoveHandler (RenderToolStripPanelBackgroundEvent, value); }
390 public event ToolStripItemRenderEventHandler RenderToolStripStatusLabelBackground {
391 add { Events.AddHandler (RenderToolStripStatusLabelBackgroundEvent, value); }
392 remove {Events.RemoveHandler (RenderToolStripStatusLabelBackgroundEvent, value); }
394 #endregion
397 #endif