TARGET_JVM icon support
authorKonstantin Triger <kostat@mono-cvs.ximian.com>
Mon, 28 Nov 2005 14:24:29 +0000 (14:24 -0000)
committerKonstantin Triger <kostat@mono-cvs.ximian.com>
Mon, 28 Nov 2005 14:24:29 +0000 (14:24 -0000)
svn path=/trunk/mcs/; revision=53555

15 files changed:
mcs/class/System.Drawing/Assembly/Application.ico [new file with mode: 0755]
mcs/class/System.Drawing/Assembly/Asterisk.ico [new file with mode: 0755]
mcs/class/System.Drawing/Assembly/ChangeLog
mcs/class/System.Drawing/Assembly/Error.ico [new file with mode: 0755]
mcs/class/System.Drawing/Assembly/Exclamation.ico [new file with mode: 0755]
mcs/class/System.Drawing/Assembly/Hand.ico [new file with mode: 0755]
mcs/class/System.Drawing/Assembly/Information.ico [new file with mode: 0755]
mcs/class/System.Drawing/Assembly/Question.ico [new file with mode: 0755]
mcs/class/System.Drawing/Assembly/Warning.ico [new file with mode: 0755]
mcs/class/System.Drawing/Assembly/WinLogo.ico [new file with mode: 0755]
mcs/class/System.Drawing/ChangeLog
mcs/class/System.Drawing/System.Drawing.vmwcsproj
mcs/class/System.Drawing/System.Drawing/ChangeLog
mcs/class/System.Drawing/System.Drawing/Icon.cs
mcs/class/System.Drawing/System.Drawing/SystemIcons.jvm.cs

diff --git a/mcs/class/System.Drawing/Assembly/Application.ico b/mcs/class/System.Drawing/Assembly/Application.ico
new file mode 100755 (executable)
index 0000000..7a7840b
Binary files /dev/null and b/mcs/class/System.Drawing/Assembly/Application.ico differ
diff --git a/mcs/class/System.Drawing/Assembly/Asterisk.ico b/mcs/class/System.Drawing/Assembly/Asterisk.ico
new file mode 100755 (executable)
index 0000000..3000fe3
Binary files /dev/null and b/mcs/class/System.Drawing/Assembly/Asterisk.ico differ
index d4031860441856cb3c686e542ecbc9bb905fabb5..f56a4ddb1d2b1819a5a976c605be21848b9bc990 100644 (file)
@@ -1,3 +1,7 @@
+2005-11-28  Konstantin Triger <kostat@mainsoft.com>
+
+       * Added system icons.
+
 2005-08-03  Andrew Skiba <andrews@mainsoft.com>
 
        * AssemblyInfo.cs: add TARGET_JVM mode
diff --git a/mcs/class/System.Drawing/Assembly/Error.ico b/mcs/class/System.Drawing/Assembly/Error.ico
new file mode 100755 (executable)
index 0000000..324796a
Binary files /dev/null and b/mcs/class/System.Drawing/Assembly/Error.ico differ
diff --git a/mcs/class/System.Drawing/Assembly/Exclamation.ico b/mcs/class/System.Drawing/Assembly/Exclamation.ico
new file mode 100755 (executable)
index 0000000..b29ae36
Binary files /dev/null and b/mcs/class/System.Drawing/Assembly/Exclamation.ico differ
diff --git a/mcs/class/System.Drawing/Assembly/Hand.ico b/mcs/class/System.Drawing/Assembly/Hand.ico
new file mode 100755 (executable)
index 0000000..324796a
Binary files /dev/null and b/mcs/class/System.Drawing/Assembly/Hand.ico differ
diff --git a/mcs/class/System.Drawing/Assembly/Information.ico b/mcs/class/System.Drawing/Assembly/Information.ico
new file mode 100755 (executable)
index 0000000..3000fe3
Binary files /dev/null and b/mcs/class/System.Drawing/Assembly/Information.ico differ
diff --git a/mcs/class/System.Drawing/Assembly/Question.ico b/mcs/class/System.Drawing/Assembly/Question.ico
new file mode 100755 (executable)
index 0000000..b2f111c
Binary files /dev/null and b/mcs/class/System.Drawing/Assembly/Question.ico differ
diff --git a/mcs/class/System.Drawing/Assembly/Warning.ico b/mcs/class/System.Drawing/Assembly/Warning.ico
new file mode 100755 (executable)
index 0000000..b29ae36
Binary files /dev/null and b/mcs/class/System.Drawing/Assembly/Warning.ico differ
diff --git a/mcs/class/System.Drawing/Assembly/WinLogo.ico b/mcs/class/System.Drawing/Assembly/WinLogo.ico
new file mode 100755 (executable)
index 0000000..7a7840b
Binary files /dev/null and b/mcs/class/System.Drawing/Assembly/WinLogo.ico differ
index c2a646fd824a3b8d2f73860a46b1e14bb40d3507..8394b2eb0d10df3b4b62e384cd2c1c0e4d620f5e 100644 (file)
@@ -1,3 +1,7 @@
+2005-11-28 Konstantin Triger <kostat@mainsoft.com>
+
+       * System.Drawing.vmwcsproj: Added System icons; changed to mono icon implementation.
+
 2005-11-14  Andrew Skiba  <andrews@mainsoft.com>
 
        * net_1_1_java_System.Drawing.dll.sources,
index babbfc09724f95312cdb8acf345a784f3dc9929f..3c4478b53dd7b61a450d67609c1c098574edecd2 100644 (file)
                                <File RelPath="MonoTODOAttribute.cs" Link="..\..\build\common\MonoTODOAttribute.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="Assembly\AssemblyInfo.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="Assembly\Consts.cs.in" Link="..\..\build\common\Consts.cs.in" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="Assembly\Application.ico" BuildAction="EmbeddedResource"/>\r
+                                <File RelPath="Assembly\Asterisk.ico" BuildAction="EmbeddedResource"/>\r
+                                <File RelPath="Assembly\Error.ico" BuildAction="EmbeddedResource"/>\r
+                                <File RelPath="Assembly\Exclamation.ico" BuildAction="EmbeddedResource"/>\r
+                                <File RelPath="Assembly\Hand.ico" BuildAction="EmbeddedResource"/>\r
+                                <File RelPath="Assembly\Information.ico" BuildAction="EmbeddedResource"/>\r
+                                <File RelPath="Assembly\Question.ico" BuildAction="EmbeddedResource"/>\r
+                                <File RelPath="Assembly\Warning.ico" BuildAction="EmbeddedResource"/>\r
+                                <File RelPath="Assembly\WinLogo.ico" BuildAction="EmbeddedResource"/>\r
                                <File RelPath="Mainsoft.Drawing.Configuration.jvm\ResolutionConfiguration.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="Mainsoft.Drawing.Configuration.jvm\ResolutionConfigurationCollection.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="Mainsoft.Drawing.Configuration.jvm\ResolutionConfigurationHandler.cs" SubType="Code" BuildAction="Compile"/>\r
@@ -37,7 +46,7 @@
                                <File RelPath="System.Drawing\FontStyle.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="System.Drawing\Graphics.jvm.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="System.Drawing\GraphicsUnit.cs" SubType="Code" BuildAction="Compile"/>\r
-                               <File RelPath="System.Drawing\Icon.jvm.cs" SubType="Code" BuildAction="Compile"/>\r
+                               <File RelPath="System.Drawing\Icon.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="System.Drawing\IconConverter.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="System.Drawing\Image.jvm.cs" SubType="Code" BuildAction="Compile"/>\r
                                <File RelPath="System.Drawing\ImageAnimator.cs" SubType="Code" BuildAction="Compile"/>\r
index abfc3338a668492146677f38715fc8acd6fa57ab..446e929e83119755b4706591b93a7bb2eb6bd380 100644 (file)
@@ -1,3 +1,7 @@
+2005-11-28 Konstantin Triger <kostat@mainsoft.com>
+
+       * Icon.cs: TARGET_JVM changes.
+
 2005-11-17 Vladimir Krasnov <vladimirk@mainsoft.com>
 
        * Image.jvm.cs: fixed Save, flush output stream
index d943b6bfe7b8870830c24c156a6d7e0985d76f9f..cfe033e21a827b72cf5b750bf163349d9835f8fc 100644 (file)
@@ -100,7 +100,7 @@ namespace System.Drawing
                private Icon ()
                {
                }
-
+#if INTPTR_SUPPORTED
                [MonoTODO ("Implement fully")]
                private Icon (IntPtr handle)
                {
@@ -118,7 +118,7 @@ namespace System.Drawing
 
                        this.destroyIcon = false;
                }
-               
+#endif
                public Icon (Icon original, int width, int height) : this (original, new Size(width, height))
                {                       
                }
@@ -211,10 +211,12 @@ namespace System.Drawing
 
                public void Dispose ()
                {
+#if !TARGET_JVM
                        DisposeIcon ();
                        GC.SuppressFinalize(this);
+#endif
                }
-
+#if !TARGET_JVM
                void DisposeIcon ()
                {
                        if (winHandle ==IntPtr.Zero)
@@ -225,12 +227,13 @@ namespace System.Drawing
                                winHandle = IntPtr.Zero;
                        }
                }
+#endif
 
                public object Clone ()
                {
                        return new Icon (this, this.Width, this.Height);
                }
-
+#if INTPTR_SUPPORTED
                public static Icon FromHandle (IntPtr handle)
                {
                        if (handle == IntPtr.Zero)
@@ -238,7 +241,7 @@ namespace System.Drawing
 
                        return new Icon (handle);
                }
-
+#endif
                public void Save (Stream outputStream)
                {
                        if (iconDir.idEntries!=null){
@@ -351,6 +354,8 @@ namespace System.Drawing
 
                                        writer.Flush ();
 
+                                       stream.Position = 0;
+
                                        // create bitmap from stream and return
                                        if (colCount > 0) {
                                                Bitmap new_bmp;
@@ -419,10 +424,12 @@ namespace System.Drawing
                        }
                }
 
+#if !TARGET_JVM
                ~Icon ()
                {
                        DisposeIcon ();
                }
+#endif
                        
                private void InitFromStreamWithSize (Stream stream, int width, int height)
                {
index 67052078a030c105cc7f1ac6e770358b12778e7e..2a382fa4d5d106d5a0f3f3930182cb909db4e287 100644 (file)
@@ -1,8 +1,9 @@
 //
-// System.Drawing.SystemIcons.cs
+// System.Drawing.systemIcons.cs
 //
 // Authors:
 //  Vladimir Krasnov (vladimirk@mainsoft.com)
+//  Konstantin Triger (kostat@mainsoft.com)
 //
 // Copyright (C) 2005 Mainsoft Corporation (http://www.mainsoft.com)
 //
@@ -33,74 +34,40 @@ using System.IO;
 using System.Configuration;
 using System.Collections;
 using System.Collections.Specialized;
+using System.Reflection;
 
-namespace System.Drawing
-{
-       public sealed class SystemIcons
-       {
-               private static readonly string SYSTEM_ICONS = "IconsResource";
+namespace System.Drawing {
+       public sealed class SystemIcons {
+               static readonly ArrayList systemIcons;
 
-               private SystemIcons()
-               {
+               enum IconName {
+                       Application, Asterisk, Error, 
+                       Exclamation, Hand, Information, 
+                       Question, Warning, WinLogo
                }
 
-               public static Icon Application { get { return LoadIcon("Application");} }
-               public static Icon Asterisk { get { return LoadIcon("Asterisk");} }
-               public static Icon Error { get { return LoadIcon("Error");} }
-               public static Icon Exclamation { get { return LoadIcon("Exclamation");} }
-               public static Icon Hand { get { return LoadIcon("Hand");} }
-               public static Icon Information { get { return LoadIcon("Information");} }
-               public static Icon Question { get { return LoadIcon("Question");} }
-               public static Icon Warning { get { return LoadIcon("Warning");} }
-               public static Icon WinLogo { get { return LoadIcon("WinLogo");} }
-
-               private static Icon LoadIcon (string iconName)
-               {
-                       Hashtable systemIcons = (Hashtable)AppDomain.CurrentDomain.GetData("SYSTEM_ICONS");
-
-                       if (systemIcons == null)
-                       {
-                               systemIcons = LoadSystemIconsFromResource();
-                               AppDomain.CurrentDomain.SetData(SYSTEM_ICONS, systemIcons);
-                       }
-               
-                       return (Icon)systemIcons[iconName];
-               }
-
-               private static Hashtable LoadSystemIconsFromResource()
-               {
-                       string [] iconNames = {
-                                                                       "Application", "Asterisk", "Error", 
-                                                                       "Exclamation", "Hand", "Information", 
-                                                                       "Question", "Warning", "WinLogo"
-                                                                 };
-
-                       NameValueCollection config = (NameValueCollection) ConfigurationSettings.GetConfig ("system.drawing/icons");
-                       Hashtable icons = new Hashtable(9);
-
+               static SystemIcons() {
+                       
+                       Type nameType = typeof(IconName);
+                       string [] iconNames = Enum.GetNames(nameType);
+                       systemIcons = new ArrayList(iconNames.Length);
+                       Assembly assembly = Assembly.GetExecutingAssembly();
                        for (int i = 0; i < iconNames.Length; i++)
-                               icons.Add(iconNames[i], LoadIconFromResource( config[ iconNames[i] ] ));
-
-                       return icons;
+                               systemIcons.Insert((int)(IconName)Enum.Parse(nameType, iconNames[i]), 
+                                       new Icon(assembly.GetManifestResourceStream(String.Format("System.Drawing.Assembly.{0}.ico", iconNames[i]))));
                }
 
-               private static Icon LoadIconFromResource(string iconName)
-               {
-                       Stream s;
-                       try
-                       {
-                               java.lang.ClassLoader cl = (java.lang.ClassLoader)
-                                       AppDomain.CurrentDomain.GetData("GH_ContextClassLoader");
-                               if (cl == null)
-                                       return null;
-                               java.io.InputStream inputStream = cl.getResourceAsStream(iconName);
-                               s = (Stream)vmw.common.IOUtils.getStream(inputStream);
-                       }
-                       catch (Exception e)
-                       {
-                               return null;
-                       }
-                       return new Icon(new Bitmap(s));
+               private SystemIcons() {
                }
+
+               public static Icon Application { get { return (Icon)systemIcons[(int)IconName.Application];} }
+               public static Icon Asterisk { get { return (Icon)systemIcons[(int)IconName.Asterisk];} }
+               public static Icon Error { get { return (Icon)systemIcons[(int)IconName.Error];} }
+               public static Icon Exclamation { get { return (Icon)systemIcons[(int)IconName.Exclamation];} }
+               public static Icon Hand { get { return (Icon)systemIcons[(int)IconName.Hand];} }
+               public static Icon Information { get { return (Icon)systemIcons[(int)IconName.Information];} }
+               public static Icon Question { get { return (Icon)systemIcons[(int)IconName.Question];} }
+               public static Icon Warning { get { return (Icon)systemIcons[(int)IconName.Warning];} }
+               public static Icon WinLogo { get { return (Icon)systemIcons[(int)IconName.WinLogo];} }
        }
 }