b3b0bbbb5019befc14d418e246834ca5f2c7862d
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / ToolStripManager.cs
1 //
2 // ToolStripManager.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 #if NET_2_0
30 using System.Drawing;
31 using System.Runtime.InteropServices;
32 using System.ComponentModel;
33
34 namespace System.Windows.Forms
35 {
36         public sealed class ToolStripManager
37         {
38                 private static ToolStripRenderer renderer;
39                 private static ToolStripManagerRenderMode render_mode;
40                 private static bool visual_styles_enabled;
41
42                 #region Static Cnstructor
43                 static ToolStripManager ()
44                 {
45                         ToolStripManager.renderer = new ToolStripProfessionalRenderer ();
46                         ToolStripManager.render_mode = ToolStripManagerRenderMode.Professional;
47                         ToolStripManager.visual_styles_enabled = Application.RenderWithVisualStyles;
48                 }
49
50                 private ToolStripManager ()
51                 {
52                 }
53                 #endregion
54
55                 #region Public Properties
56                 public static ToolStripRenderer Renderer {
57                         get { return ToolStripManager.renderer; }
58                         set {
59                                 if (ToolStripManager.Renderer != value) {
60                                         ToolStripManager.renderer = value;
61                                         ToolStripManager.OnRendererChanged (EventArgs.Empty);
62                                 }
63                         }
64                 }
65
66                 public static ToolStripManagerRenderMode RenderMode {
67                         get { return ToolStripManager.render_mode; }
68                         set {
69                                 if (!Enum.IsDefined (typeof (ToolStripManagerRenderMode), value))
70                                         throw new InvalidEnumArgumentException (string.Format ("Enum argument value '{0}' is not valid for ToolStripManagerRenderMode", value));
71
72                                 if (ToolStripManager.render_mode != value) {
73                                         ToolStripManager.render_mode = value;
74
75                                         switch (value) {
76                                                 case ToolStripManagerRenderMode.Custom:
77                                                         throw new NotSupportedException ();
78                                                 case ToolStripManagerRenderMode.System:
79                                                         ToolStripManager.Renderer = new ToolStripProfessionalRenderer ();
80                                                         break;
81                                                 case ToolStripManagerRenderMode.Professional:
82                                                         ToolStripManager.Renderer = new ToolStripProfessionalRenderer ();
83                                                         break;
84                                         }
85                                 }
86                         }
87                 }
88
89                 public static bool VisualStylesEnabled {
90                         get { return ToolStripManager.visual_styles_enabled; }
91                         set {
92                                 if (ToolStripManager.visual_styles_enabled != value) {
93                                         ToolStripManager.visual_styles_enabled = value;
94
95                                         if (ToolStripManager.render_mode == ToolStripManagerRenderMode.Professional) {
96                                                 (ToolStripManager.renderer as ToolStripProfessionalRenderer).ColorTable.UseSystemColors = !value;
97                                                 ToolStripManager.OnRendererChanged (EventArgs.Empty);
98                                         }
99                                 }
100                         }
101                 }
102                 #endregion
103
104                 #region Public Events
105                 public static event EventHandler RendererChanged;
106                 #endregion
107
108                 #region Private/Internal Methods
109                 internal static void FireAppClicked ()
110                 {
111                         if (AppClicked != null) AppClicked (null, EventArgs.Empty);
112                 }
113
114                 internal static void FireAppFocusChanged (Form form)
115                 {
116                         if (AppFocusChange != null) AppFocusChange (form, EventArgs.Empty);
117                 }
118
119                 internal static void FireAppFocusChanged (object sender)
120                 {
121                         if (AppFocusChange != null) AppFocusChange (sender, EventArgs.Empty);
122                 }
123                 private static void OnRendererChanged (EventArgs e)
124                 {
125                         if (RendererChanged != null) RendererChanged (null, e);
126                 }
127
128                 internal static event EventHandler AppClicked;
129                 internal static event EventHandler AppFocusChange;
130                 #endregion
131         }
132 }
133 #endif