Merge pull request #1155 from steffen-kiess/json-string
[mono.git] / mcs / class / System.Drawing.Design / System.Drawing.Design / IconEditor.cs
index bf295cc3e1ca9c413f0cccdaa3d247b049f91323..9b4ce1d9e5e2477847281c75d9765f6545267de4 100644 (file)
@@ -2,13 +2,36 @@
 // System.Drawing.Design.IconEditor.cs
 // 
 // Authors:
-//  Martin Willemoes Hansen (mwh@sysrq.dk)
-//  Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+//   Martin Willemoes Hansen (mwh@sysrq.dk)
+//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
 // 
 // (C) 2003 Martin Willemoes Hansen
 // (C) 2003 Andreas Nahr
 // 
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
 using System;
+using System.Text;
 using System.IO;
 using System.Drawing;
 using System.ComponentModel;
@@ -16,7 +39,7 @@ using System.Windows.Forms;
 
 namespace System.Drawing.Design
 {
-       // Strange thing that this is not inherited from ImageEditor
+       // LAMESPEC: Why isn't this class inherited from ImageEditor?
        public class IconEditor : UITypeEditor
        {
 
@@ -28,32 +51,37 @@ namespace System.Drawing.Design
 
                protected static string CreateExtensionsString (string[] extensions, string sep)
                {
-                       if (extensions.Length > 0)
-                       {
-                               string Ext = extensions[0];
-                               for (int x = 1; x < extensions.Length - 1; x++)
-                                       Ext = string.Concat(Ext, sep, extensions[x]);
-                               return Ext;
+                       if (extensions.Length > 0) {
+                               StringBuilder sb = new StringBuilder();
+
+                               sb.Append (extensions[0]);
+                               for (int x = 1; x < extensions.Length - 1; x++) {
+                                       sb.Append (sep);
+                                       sb.Append (extensions[x]);
+                               }
+                               return sb.ToString();
                        }
-                       else
-                       {
+                       else {
                                return string.Empty;
                        }
                }
 
                protected static string CreateFilterEntry (IconEditor e)
                {
+                       StringBuilder sb = new StringBuilder();
                        string ExtStr = CreateExtensionsString (e.GetExtensions(), ";");
-                       string Desc = e.GetFileDialogDescription() + " (" + ExtStr + ")";
-                       return String.Concat (Desc, "|", ExtStr);
+
+                       sb.Append (e.GetFileDialogDescription());
+                       sb.Append (" (" + ExtStr + ")" + "|");
+                       sb.Append (ExtStr);
+                       return sb.ToString();
                }
 
                public override object EditValue (ITypeDescriptorContext context,
                        IServiceProvider provider, object value)
                {
                        openDialog = new OpenFileDialog();
-                       // FIXME: Add multilanguage support
-                       openDialog.Title = "Open image file";
+                       openDialog.Title = Locale.GetText ("Open image file");
                        openDialog.CheckFileExists = true;
                        openDialog.CheckPathExists = true;
                        openDialog.Filter = CreateFilterEntry (this);
@@ -71,8 +99,7 @@ namespace System.Drawing.Design
                                return value;
                }
 
-               public override UITypeEditorEditStyle GetEditStyle (
-                       ITypeDescriptorContext context)
+               public override UITypeEditorEditStyle GetEditStyle (ITypeDescriptorContext context)
                {
                        return UITypeEditorEditStyle.Modal;
                }
@@ -84,12 +111,10 @@ namespace System.Drawing.Design
 
                protected virtual string GetFileDialogDescription()
                {
-                       // FIXME: Add multilanguage support
-                       return "Icon files";
+                       return Locale.GetText ("Icon files");
                }
 
-               public override bool GetPaintValueSupported (
-                       ITypeDescriptorContext context)
+               public override bool GetPaintValueSupported (ITypeDescriptorContext context)
                {
                        return true;
                }
@@ -102,13 +127,15 @@ namespace System.Drawing.Design
                public override void PaintValue (PaintValueEventArgs e)
                {
                        Graphics G = e.Graphics;
-                       G.DrawRectangle (Pens.Black, e.Bounds);
-                       if (e.Value != null)
-                       {
-                               Image I = (Image) e.Value;
-                               G.DrawImage (I, e.Bounds);
+
+                       if (e.Value != null) {
+                               Icon i = (Icon) e.Value;
+                               Image img = i.ToBitmap ();
+                               G.DrawImage (img, e.Bounds);
+                               img.Dispose ();
                        }
+
+                       G.DrawRectangle (Pens.Black, e.Bounds);
                }
        }
 }
-