File: GenericUI.cs

package info (click to toggle)
mono 6.14.1%2Bds2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,282,732 kB
  • sloc: cs: 11,182,461; xml: 2,850,281; ansic: 699,123; cpp: 122,919; perl: 58,604; javascript: 30,841; asm: 21,845; makefile: 19,602; sh: 10,973; python: 4,772; pascal: 925; sql: 859; sed: 16; php: 1
file content (207 lines) | stat: -rw-r--r-- 7,933 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
//------------------------------------------------------------------------------
// <copyright file="GenericUI.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>                                                                
//------------------------------------------------------------------------------

namespace System.Web.UI.Design.MobileControls.Util
{
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Diagnostics;
    using System.Windows.Forms;
    using System.Windows.Forms.Design;
    using System.Text;

    [
        System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand,
        Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)
    ]
    [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
    internal class GenericUI
    {
        // Internal type should not be instantiated.
        private GenericUI() {
        }

        internal static readonly Bitmap SortDownIcon =
            new Icon(typeof(MobileControlDesigner), "SortDown.ico").ToBitmap();

        internal static readonly Bitmap SortUpIcon =
            new Icon(typeof(MobileControlDesigner), "SortUp.ico").ToBitmap();
        
        internal static readonly Bitmap DeleteIcon =
            new Icon(typeof(MobileControlDesigner), "Delete.ico").ToBitmap();
        
        internal static readonly Bitmap ErrorIcon = 
            new Icon(typeof(MobileContainerDesigner), "Error.ico").ToBitmap();

        internal static readonly Bitmap InfoIcon = 
            new Icon(typeof(MobileContainerDesigner), "Info.ico").ToBitmap();

        internal static void InitDialog(
            Form dialog,
            ISite site
        ) {
            dialog.FormBorderStyle = FormBorderStyle.FixedDialog;
            dialog.Icon = null;
            dialog.MaximizeBox = false;
            dialog.MinimizeBox = false;
            dialog.ShowInTaskbar = false;
            dialog.StartPosition = FormStartPosition.CenterParent;
            dialog.AutoScaleBaseSize = new Size(5, 14);
            dialog.Font = GetVS7Font(site);
        }

        internal static Font GetVS7Font(ISite site)
        {
            System.Drawing.Font vsfont = Control.DefaultFont;
            if (site != null)
            {
                IUIService uiService = (IUIService) site.GetService(
                    typeof(IUIService)
                    );
                if (uiService != null)
                {
                    vsfont = (Font) uiService.Styles["DialogFont"];
                }
            }
            return vsfont;
        }    
        
        // This version of InitDialog() handles merged UIs
        internal static int InitDialog(
            Form dialog,
            IDeviceSpecificDesigner designer,
            int mergingContext
        ) {
            InitDialog(dialog, designer.UnderlyingControl.Site);
            int tabOffset = 0;
            designer.InitHeader(mergingContext);
            Control header = designer.Header;
            if (header != null)
            {
                // (6, 5) = Windows standard positioning
                header.Location = new Point(6, 5);
                dialog.Controls.Add(header);
                // +6 = 6px space between header and first control
                dialog.Height += header.Height + 6;
                tabOffset = GenericUI.GetMaxContainedTabIndex(header);
                // Changing the header width is going to magically
                // cause everything to be repositioned vertically
                // -10 = 5px padding on each side of the client area
                header.Width = dialog.ClientSize.Width - 10;
            }
            return tabOffset;
        }

        internal static int GetMaxContainedTabIndex(Control control)
        {
            int maxTabIndex = control.TabIndex;
            
            foreach(Control child in control.Controls)
            {
                int maxChildTabIndex = GetMaxContainedTabIndex(child);
                if(maxChildTabIndex > maxTabIndex)
                {
                    maxTabIndex = maxChildTabIndex;
                }
            }
            return maxTabIndex;
        }

        internal static void ShowErrorMessage(String title, String message)
        {
            RTLAwareMessageBox.Show(
                null,
                message,
                title,
                MessageBoxButtons.OK,
                MessageBoxIcon.Error,
                MessageBoxDefaultButton.Button1,
                0
            );
        }

        internal static String BuildCommaDelimitedList(ICollection stringList)
        {
            StringBuilder delimitedString = new StringBuilder();

            foreach (String str in stringList)
            {
                if(delimitedString.Length > 0)
                {
                    delimitedString.Append(", ");
                }
                delimitedString.Append(str);
            }
            return delimitedString.ToString();
        }

        internal static void ShowWarningMessage(String title, String message)
        {
            RTLAwareMessageBox.Show(
                null,
                message,
                title,
                MessageBoxButtons.OK,
                MessageBoxIcon.Exclamation,
                MessageBoxDefaultButton.Button1,
                0
            );
        }
        
        internal static bool ConfirmYesNo(String title, String message)
        {
            DialogResult result = RTLAwareMessageBox.Show(
                null,
                message,
                title,
                MessageBoxButtons.YesNo,
                MessageBoxIcon.Exclamation,
                MessageBoxDefaultButton.Button1,
                0
            );
            return result == DialogResult.Yes;
        }
    }

    // Copied from ndp\fx\src\Designer\Microsoft\System\Microsoft\Design\RTLAwareMessageBox.cs
    [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
    internal sealed class RTLAwareMessageBox {

        // Private helper class shouldn't be instantiated.
        private RTLAwareMessageBox() {
        }

        /// <include file='doc\MessageBox.uex' path='docs/doc[@for="MessageBox.Show6"]/*' />
        /// <devdoc>
        ///    <para>
        ///       Displays a message box with specified text, caption, and style.
        ///       Makes the dialog RTL if the resources for this dll have been localized to a RTL language.
        ///    </para>
        /// </devdoc>
        public static DialogResult Show(IWin32Window owner, string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon,
                                        MessageBoxDefaultButton defaultButton, MessageBoxOptions options) {
            if (RTLAwareMessageBox.IsRTLResources) {
                options |= (MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);
            }
            return MessageBox.Show(owner, text, caption, buttons, icon, defaultButton, options);
        }

        /// <devdoc>
        ///     Tells whether the current resources for this dll have been
        ///     localized for a RTL language.
        /// </devdoc>
        public static bool IsRTLResources {
            get {
                // Set RightToLeft mode based on resource file
                string rtlText = SR.GetString(SR.RTL);

                return !String.Equals(rtlText, "RTL_False", StringComparison.Ordinal);
            }
        }
    }
}