Mercurial > hg > release > icedtea7-forest-2.1 > jdk
changeset 4891:6e5d9d0cfcc9
8001308: Update display of applet windows
Summary: Implemented security warning for OS X port
Reviewed-by: art, anthony, serb, skoivu
line wrap: on
line diff
--- a/make/sun/awt/Makefile Fri Mar 15 17:59:10 2013 +0100 +++ b/make/sun/awt/Makefile Wed Jun 12 15:05:39 2013 +0100 @@ -1,5 +1,5 @@ # -# Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -38,6 +38,10 @@ OTHER_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES +ifneq ($(PLATFORM), windows) +CLASSES_INIT += $(TEMPDIR)/.gen_icons +endif + # # Files # @@ -180,6 +184,79 @@ endif build: fontconfigs +ifneq ($(PLATFORM), windows) + +GEN_DIR=$(GENSRCDIR)/sun/awt/ + +ifdef OPENJDK + ICONS_PATH_PREFIX=$(PLATFORM_SRC) +else + ICONS_PATH_PREFIX=$(CLOSED_SRC)/solaris +endif + +ICONS = \ + $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon16.png \ + $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon24.png \ + $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon32.png \ + $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon48.png + +ICONPATH=$(SHARE_SRC)/classes/sun/awt/resources + +ICONS += \ + $(ICONPATH)/security-icon-bw16.png \ + $(ICONPATH)/security-icon-interim16.png \ + $(ICONPATH)/security-icon-yellow16.png \ + $(ICONPATH)/security-icon-bw24.png \ + $(ICONPATH)/security-icon-interim24.png \ + $(ICONPATH)/security-icon-yellow24.png \ + $(ICONPATH)/security-icon-bw32.png \ + $(ICONPATH)/security-icon-interim32.png \ + $(ICONPATH)/security-icon-yellow32.png \ + $(ICONPATH)/security-icon-bw48.png \ + $(ICONPATH)/security-icon-interim48.png \ + $(ICONPATH)/security-icon-yellow48.png + +TEMPDIR_CLASSES = $(TEMPDIR)/classes + +generated.clean: + $(RM) -r $(GEN_DIR)/*.java + $(RM) -r $(TEMPDIR)/.gen_icons + +$(TEMPDIR_CLASSES)/sun/awt/ToBin.class: ToBin.java + @$(prep-target) + $(BOOT_JAVAC_CMD) -d $(TEMPDIR_CLASSES) $< + +$(TEMPDIR)/.gen_icons: $(TEMPDIR_CLASSES)/sun/awt/ToBin.class $(ICONS) + $(prep-target) + for i in $(ICONS); do \ + filename=`basename $$i`; \ + name=`$(ECHO) $$filename | $(TR) '\-.' '__'`; \ + classname=$(GEN_DIR)/AWTIcon32_$$name.java; \ + $(RM) $$classname; \ + $(ECHO) "package sun.awt;" >> $$classname ; \ + $(ECHO) "public class AWTIcon32_$$name {" >> $$classname; \ + $(ECHO) "public final static int[] $$name = { " >> $$classname; \ + $(CAT) $$i | \ + $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \ + -Djava.awt.headless=true \ + sun.awt.ToBin >> $$classname; \ + $(ECHO) "}; }" >> $$classname; \ + classname=$(GEN_DIR)/AWTIcon64_$$name.java; \ + $(RM) $$classname; \ + $(ECHO) "package sun.awt;" >> $$classname ; \ + $(ECHO) "public class AWTIcon64_$$name {" >> $$classname; \ + $(ECHO) "public final static long[] $$name = { " >> $$classname; \ + $(CAT) $$i | \ + $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \ + -Djava.awt.headless=true \ + sun.awt.ToBin >> $$classname; \ + $(ECHO) "}; }" >> $$classname; \ + done + $(TOUCH) $@ + +clean clobber:: generated.clean +endif + ifeq ($(PLATFORM), windows) # vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv WINDOWS @@ -517,5 +594,5 @@ java.lang.Integer \ java.lang.ThreadGroup -.PHONY: dgalibs dgalib.clean fontconfigs fontconfigs.clean +.PHONY: dgalibs dgalib.clean fontconfigs fontconfigs.clean generated.clean
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/sun/awt/ToBin.java Wed Jun 12 15:05:39 2013 +0100 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package sun.awt; + +import java.io.*; +import java.awt.image.*; +import javax.imageio.*; +import java.awt.*; + +public class ToBin { + public static void main(String[] args) throws Exception { + BufferedImage im = ImageIO.read(System.in); + BufferedImage bi = null; + int iconWidth = im.getWidth(null); + int iconHeight = im.getHeight(null); + if (im != null && iconHeight != 0 && iconWidth != 0) { + bi = new BufferedImage(iconWidth, iconHeight, BufferedImage.TYPE_INT_ARGB); + Graphics g = bi.getGraphics(); + try { + g.drawImage(im, 0, 0, iconWidth, iconHeight, null); + } finally { + g.dispose(); + } + } + DataBuffer srcBuf = bi.getData().getDataBuffer(); + int[] buf = ((DataBufferInt)srcBuf).getData(); + System.out.print(iconWidth + ","); + System.out.println(iconHeight + ","); + for (int i = 0; i < buf.length; i++) { + System.out.print("0x" + Integer.toHexString(buf[i]) + ", "); + if (i % 10 == 0) { + System.out.println(); + } + } + } +}
--- a/make/sun/xawt/Makefile Fri Mar 15 17:59:10 2013 +0100 +++ b/make/sun/xawt/Makefile Wed Jun 12 15:05:39 2013 +0100 @@ -1,5 +1,5 @@ # -# Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -34,7 +34,7 @@ GEN_DIR=$(GENSRCDIR)/sun/awt/X11 -CLASSES_INIT += $(TEMPDIR)/.gen.wrappers $(TEMPDIR)/.gen_icons touch.wrappers +CLASSES_INIT += $(TEMPDIR)/.gen.wrappers touch.wrappers .PHONY: generated.clean @@ -354,70 +354,7 @@ $(RM) -r $(WRAPPER_GENERATOR_TEMPDIR) $(RM) -r $(WRAPPER_GENERATOR_DIR) $(RM) -r $(GEN_DIR)/*.java - $(RM) -r $(TEMPDIR)/.gen_icons -ifdef OPENJDK - ICONS_PATH_PREFIX=$(PLATFORM_SRC) -else - ICONS_PATH_PREFIX=$(CLOSED_SRC)/solaris -endif - -ICONS = \ - $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon16.png \ - $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon24.png \ - $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon32.png \ - $(ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon48.png - - -ICONPATH=$(PLATFORM_SRC)/classes/sun/awt/X11 - -ICONS += \ - $(ICONPATH)/security-icon-bw16.png \ - $(ICONPATH)/security-icon-interim16.png \ - $(ICONPATH)/security-icon-yellow16.png \ - $(ICONPATH)/security-icon-bw24.png \ - $(ICONPATH)/security-icon-interim24.png \ - $(ICONPATH)/security-icon-yellow24.png \ - $(ICONPATH)/security-icon-bw32.png \ - $(ICONPATH)/security-icon-interim32.png \ - $(ICONPATH)/security-icon-yellow32.png \ - $(ICONPATH)/security-icon-bw48.png \ - $(ICONPATH)/security-icon-interim48.png \ - $(ICONPATH)/security-icon-yellow48.png - -TEMPDIR_CLASSES = $(TEMPDIR)/classes - -$(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class: ToBin.java - @$(prep-target) - $(BOOT_JAVAC_CMD) -d $(TEMPDIR_CLASSES) $< - -$(TEMPDIR)/.gen_icons: $(TEMPDIR_CLASSES)/sun/awt/X11/ToBin.class $(ICONS) - $(prep-target) - for i in $(ICONS); do \ - filename=`basename $$i`; \ - name=`$(ECHO) $$filename | $(TR) '\-.' '__'`; \ - classname=$(GEN_DIR)/XAWTIcon32_$$name.java; \ - $(RM) $$classname; \ - $(ECHO) "package sun.awt.X11;" >> $$classname ; \ - $(ECHO) "public class XAWTIcon32_$$name {" >> $$classname; \ - $(ECHO) "public static int[] $$name = { " >> $$classname; \ - $(CAT) $$i | \ - $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \ - -Djava.awt.headless=true \ - sun.awt.X11.ToBin >> $$classname; \ - $(ECHO) "}; }" >> $$classname; \ - classname=$(GEN_DIR)/XAWTIcon64_$$name.java; \ - $(RM) $$classname; \ - $(ECHO) "package sun.awt.X11;" >> $$classname ; \ - $(ECHO) "public class XAWTIcon64_$$name {" >> $$classname; \ - $(ECHO) "public static long[] $$name = { " >> $$classname; \ - $(CAT) $$i | \ - $(BOOT_JAVA_CMD) -cp $(TEMPDIR_CLASSES) \ - -Djava.awt.headless=true \ - sun.awt.X11.ToBin >> $$classname; \ - $(ECHO) "}; }" >> $$classname; \ - done - $(TOUCH) $@ clean clobber:: generated.clean
--- a/make/sun/xawt/ToBin.java Fri Mar 15 17:59:10 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package sun.awt.X11; - -import java.io.*; -import java.awt.image.*; -import javax.imageio.*; -import java.awt.*; - -public class ToBin { - public static void main(String[] args) throws Exception { - BufferedImage im = ImageIO.read(System.in); - BufferedImage bi = null; - int iconWidth = im.getWidth(null); - int iconHeight = im.getHeight(null); - if (im != null && iconHeight != 0 && iconWidth != 0) { - bi = new BufferedImage(iconWidth, iconHeight, BufferedImage.TYPE_INT_ARGB); - Graphics g = bi.getGraphics(); - try { - g.drawImage(im, 0, 0, iconWidth, iconHeight, null); - } finally { - g.dispose(); - } - } - DataBuffer srcBuf = bi.getData().getDataBuffer(); - int[] buf = ((DataBufferInt)srcBuf).getData(); - System.out.print(iconWidth + ","); - System.out.println(iconHeight + ","); - for (int i = 0; i < buf.length; i++) { - System.out.print("0x" + Integer.toHexString(buf[i]) + ", "); - if (i % 10 == 0) { - System.out.println(); - } - } - } -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/sun/awt/IconInfo.java Wed Jun 12 15:05:39 2013 +0100 @@ -0,0 +1,237 @@ +/* + * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package sun.awt; +import java.awt.*; +import java.awt.color.*; +import java.awt.image.*; +import sun.awt.image.ToolkitImage; +import sun.awt.image.ImageRepresentation; +import java.util.Arrays; + +public class IconInfo { + /** + * Representation of image as an int array. + * It's used on platforms where icon data + * is expected to be in 32-bit format. + */ + private int[] intIconData; + /** + * Representation of image as an long array. + * It's used on platforms where icon data + * is expected to be in 64-bit format. + */ + private long[] longIconData; + /** + * Icon image. + */ + private Image image; + /** + * Width of icon image. Being set in constructor. + */ + private final int width; + /** + * Height of icon image. Being set in constructor. + */ + private final int height; + /** + * Width of scaled icon image. Can be set in setScaledDimension. + */ + private int scaledWidth; + /** + * Height of scaled icon image. Can be set in setScaledDimension. + */ + private int scaledHeight; + /** + * Length of raw data. Being set in constructor / setScaledDimension. + */ + private int rawLength; + + public IconInfo(int[] intIconData) { + this.intIconData = + (null == intIconData) ? null : Arrays.copyOf(intIconData, intIconData.length); + this.width = intIconData[0]; + this.height = intIconData[1]; + this.scaledWidth = width; + this.scaledHeight = height; + this.rawLength = width * height + 2; + } + + public IconInfo(long[] longIconData) { + this.longIconData = + (null == longIconData) ? null : Arrays.copyOf(longIconData, longIconData.length); + this.width = (int)longIconData[0]; + this.height = (int)longIconData[1]; + this.scaledWidth = width; + this.scaledHeight = height; + this.rawLength = width * height + 2; + } + + public IconInfo(Image image) { + this.image = image; + if (image instanceof ToolkitImage) { + ImageRepresentation ir = ((ToolkitImage)image).getImageRep(); + ir.reconstruct(ImageObserver.ALLBITS); + this.width = ir.getWidth(); + this.height = ir.getHeight(); + } else { + this.width = image.getWidth(null); + this.height = image.getHeight(null); + } + this.scaledWidth = width; + this.scaledHeight = height; + this.rawLength = width * height + 2; + } + + /* + * It sets size of scaled icon. + */ + public void setScaledSize(int width, int height) { + this.scaledWidth = width; + this.scaledHeight = height; + this.rawLength = width * height + 2; + } + + public boolean isValid() { + return (width > 0 && height > 0); + } + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + + public String toString() { + return "IconInfo[w=" + width + ",h=" + height + ",sw=" + scaledWidth + ",sh=" + scaledHeight + "]"; + } + + public int getRawLength() { + return rawLength; + } + + public int[] getIntData() { + if (this.intIconData == null) { + if (this.longIconData != null) { + this.intIconData = longArrayToIntArray(longIconData); + } else if (this.image != null) { + this.intIconData = imageToIntArray(this.image, scaledWidth, scaledHeight); + } + } + return this.intIconData; + } + + public long[] getLongData() { + if (this.longIconData == null) { + if (this.intIconData != null) { + this.longIconData = intArrayToLongArray(this.intIconData); + } else if (this.image != null) { + int[] intIconData = imageToIntArray(this.image, scaledWidth, scaledHeight); + this.longIconData = intArrayToLongArray(intIconData); + } + } + return this.longIconData; + } + + public Image getImage() { + if (this.image == null) { + if (this.intIconData != null) { + this.image = intArrayToImage(this.intIconData); + } else if (this.longIconData != null) { + int[] intIconData = longArrayToIntArray(this.longIconData); + this.image = intArrayToImage(intIconData); + } + } + return this.image; + } + + private static int[] longArrayToIntArray(long[] longData) { + int[] intData = new int[longData.length]; + for (int i = 0; i < longData.length; i++) { + // Such a conversion is valid since the + // original data (see + // make/sun/xawt/ToBin.java) were ints + intData[i] = (int)longData[i]; + } + return intData; + } + + private static long[] intArrayToLongArray(int[] intData) { + long[] longData = new long[intData.length]; + for (int i = 0; i < intData.length; i++) { + longData[i] = (int)intData[i]; + } + return longData; + } + + static Image intArrayToImage(int[] raw) { + ColorModel cm = + new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), 32, + 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000, + false, DataBuffer.TYPE_INT); + DataBuffer buffer = new DataBufferInt(raw, raw.length-2, 2); + WritableRaster raster = + Raster.createPackedRaster(buffer, raw[0], raw[1], + raw[0], + new int[] {0x00ff0000, 0x0000ff00, + 0x000000ff, 0xff000000}, + null); + BufferedImage im = new BufferedImage(cm, raster, false, null); + return im; + } + + /* + * Returns array of integers which holds data for the image. + * It scales the image if necessary. + */ + static int[] imageToIntArray(Image image, int width, int height) { + if (width <= 0 || height <= 0) { + return null; + } + ColorModel cm = + new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), 32, + 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000, + false, DataBuffer.TYPE_INT); + DataBufferInt buffer = new DataBufferInt(width * height); + WritableRaster raster = + Raster.createPackedRaster(buffer, width, height, + width, + new int[] {0x00ff0000, 0x0000ff00, + 0x000000ff, 0xff000000}, + null); + BufferedImage im = new BufferedImage(cm, raster, false, null); + Graphics g = im.getGraphics(); + g.drawImage(image, 0, 0, width, height, null); + g.dispose(); + int[] data = buffer.getData(); + int[] raw = new int[width * height + 2]; + raw[0] = width; + raw[1] = height; + System.arraycopy(data, 0, raw, 2, width * height); + return raw; + } + +}
--- a/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Fri Mar 15 17:59:10 2013 +0100 +++ b/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Wed Jun 12 15:05:39 2013 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,6 +30,7 @@ import java.awt.event.InvocationEvent; import java.awt.event.WindowEvent; +import sun.awt.IconInfo; import sun.util.logging.PlatformLogger; import sun.awt.AWTAccessor; @@ -106,7 +107,7 @@ focusProxy = createFocusProxy(); } - void setIconHints(java.util.List<XIconInfo> icons) { + void setIconHints(java.util.List<IconInfo> icons) { if (!XWM.getWM().setNetWMIcon(this, icons)) { if (icons.size() > 0) { if (iconWindow == null) {
--- a/src/solaris/classes/sun/awt/X11/XIconInfo.java Fri Mar 15 17:59:10 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,237 +0,0 @@ -/* - * Copyright (c) 2006, 2007, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -package sun.awt.X11; -import java.awt.*; -import java.awt.color.*; -import java.awt.image.*; -import sun.awt.image.ToolkitImage; -import sun.awt.image.ImageRepresentation; -import java.util.Arrays; - -class XIconInfo { - /** - * Representation of image as an int array - * It's being used for _NET_WM_ICON hint - * with 32-bit X data model - */ - private int[] intIconData; - /** - * Representation of image as an int array - * It's being used for _NET_WM_ICON hint - * with 64-bit X data model - */ - private long[] longIconData; - /** - * Icon image. - */ - private Image image; - /** - * Width of icon image. Being set in constructor. - */ - private final int width; - /** - * Height of icon image. Being set in constructor. - */ - private final int height; - /** - * Width of scaled icon image. Can be set in setScaledDimension. - */ - private int scaledWidth; - /** - * Height of scaled icon image. Can be set in setScaledDimension. - */ - private int scaledHeight; - /** - * Length of raw data. Being set in constructor / setScaledDimension. - */ - private int rawLength; - - XIconInfo(int[] intIconData) { - this.intIconData = - (null == intIconData) ? null : Arrays.copyOf(intIconData, intIconData.length); - this.width = intIconData[0]; - this.height = intIconData[1]; - this.scaledWidth = width; - this.scaledHeight = height; - this.rawLength = width * height + 2; - } - - XIconInfo(long[] longIconData) { - this.longIconData = - (null == longIconData) ? null : Arrays.copyOf(longIconData, longIconData.length); - this.width = (int)longIconData[0]; - this.height = (int)longIconData[1]; - this.scaledWidth = width; - this.scaledHeight = height; - this.rawLength = width * height + 2; - } - - XIconInfo(Image image) { - this.image = image; - if (image instanceof ToolkitImage) { - ImageRepresentation ir = ((ToolkitImage)image).getImageRep(); - ir.reconstruct(ImageObserver.ALLBITS); - this.width = ir.getWidth(); - this.height = ir.getHeight(); - } else { - this.width = image.getWidth(null); - this.height = image.getHeight(null); - } - this.scaledWidth = width; - this.scaledHeight = height; - this.rawLength = width * height + 2; - } - - /* - * It sets size of scaled icon. - */ - void setScaledSize(int width, int height) { - this.scaledWidth = width; - this.scaledHeight = height; - this.rawLength = width * height + 2; - } - - boolean isValid() { - return (width > 0 && height > 0); - } - - int getWidth() { - return width; - } - - int getHeight() { - return height; - } - - public String toString() { - return "XIconInfo[w=" + width + ",h=" + height + ",sw=" + scaledWidth + ",sh=" + scaledHeight + "]"; - } - - int getRawLength() { - return rawLength; - } - - int[] getIntData() { - if (this.intIconData == null) { - if (this.longIconData != null) { - this.intIconData = longArrayToIntArray(longIconData); - } else if (this.image != null) { - this.intIconData = imageToIntArray(this.image, scaledWidth, scaledHeight); - } - } - return this.intIconData; - } - - long[] getLongData() { - if (this.longIconData == null) { - if (this.intIconData != null) { - this.longIconData = intArrayToLongArray(this.intIconData); - } else if (this.image != null) { - int[] intIconData = imageToIntArray(this.image, scaledWidth, scaledHeight); - this.longIconData = intArrayToLongArray(intIconData); - } - } - return this.longIconData; - } - - Image getImage() { - if (this.image == null) { - if (this.intIconData != null) { - this.image = intArrayToImage(this.intIconData); - } else if (this.longIconData != null) { - int[] intIconData = longArrayToIntArray(this.longIconData); - this.image = intArrayToImage(intIconData); - } - } - return this.image; - } - - private static int[] longArrayToIntArray(long[] longData) { - int[] intData = new int[longData.length]; - for (int i = 0; i < longData.length; i++) { - // Such a conversion is valid since the - // original data (see - // make/sun/xawt/ToBin.java) were ints - intData[i] = (int)longData[i]; - } - return intData; - } - - private static long[] intArrayToLongArray(int[] intData) { - long[] longData = new long[intData.length]; - for (int i = 0; i < intData.length; i++) { - longData[i] = (int)intData[i]; - } - return longData; - } - - static Image intArrayToImage(int[] raw) { - ColorModel cm = - new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), 32, - 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000, - false, DataBuffer.TYPE_INT); - DataBuffer buffer = new DataBufferInt(raw, raw.length-2, 2); - WritableRaster raster = - Raster.createPackedRaster(buffer, raw[0], raw[1], - raw[0], - new int[] {0x00ff0000, 0x0000ff00, - 0x000000ff, 0xff000000}, - null); - BufferedImage im = new BufferedImage(cm, raster, false, null); - return im; - } - - /* - * Returns array of integers which holds data for the image. - * It scales the image if necessary. - */ - static int[] imageToIntArray(Image image, int width, int height) { - if (width <= 0 || height <= 0) { - return null; - } - ColorModel cm = - new DirectColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), 32, - 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000, - false, DataBuffer.TYPE_INT); - DataBufferInt buffer = new DataBufferInt(width * height); - WritableRaster raster = - Raster.createPackedRaster(buffer, width, height, - width, - new int[] {0x00ff0000, 0x0000ff00, - 0x000000ff, 0xff000000}, - null); - BufferedImage im = new BufferedImage(cm, raster, false, null); - Graphics g = im.getGraphics(); - g.drawImage(image, 0, 0, width, height, null); - g.dispose(); - int[] data = buffer.getData(); - int[] raw = new int[width * height + 2]; - raw[0] = width; - raw[1] = height; - System.arraycopy(data, 0, raw, 2, width * height); - return raw; - } - -}
--- a/src/solaris/classes/sun/awt/X11/XIconWindow.java Fri Mar 15 17:59:10 2013 +0100 +++ b/src/solaris/classes/sun/awt/X11/XIconWindow.java Wed Jun 12 15:05:39 2013 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,7 +26,8 @@ import java.awt.*; import java.awt.image.*; -import sun.awt.X11GraphicsConfig; + +import sun.awt.IconInfo; import sun.awt.image.ToolkitImage; import sun.awt.image.ImageRepresentation; @@ -398,12 +399,12 @@ * Sets icon image by selecting one of the images from the list. * The selected image is the one having the best matching size. */ - void setIconImages(java.util.List<XIconInfo> icons) { + void setIconImages(java.util.List<IconInfo> icons) { if (icons == null || icons.size() == 0) return; int minDiff = Integer.MAX_VALUE; Image min = null; - for (XIconInfo iconInfo : icons) { + for (IconInfo iconInfo : icons) { if (iconInfo.isValid()) { Image image = iconInfo.getImage(); Dimension dim = calcIconSize(image.getWidth(null), image.getHeight(null));
--- a/src/solaris/classes/sun/awt/X11/XNETProtocol.java Fri Mar 15 17:59:10 2013 +0100 +++ b/src/solaris/classes/sun/awt/X11/XNETProtocol.java Wed Jun 12 15:05:39 2013 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,8 @@ package sun.awt.X11; import java.awt.Frame; + +import sun.awt.IconInfo; import sun.util.logging.PlatformLogger; final class XNETProtocol extends XProtocol implements XStateProtocol, XLayerProtocol @@ -350,10 +352,10 @@ } /** - * Sets _NET_WM_ICON property on the window using the List of XIconInfo + * Sets _NET_WM_ICON property on the window using the List of IconInfo * If icons is null or empty list, removes _NET_WM_ICON property */ - public void setWMIcons(XWindowPeer window, java.util.List<XIconInfo> icons) { + public void setWMIcons(XWindowPeer window, java.util.List<IconInfo> icons) { if (window == null) return; XAtom iconsAtom = XAtom.get("_NET_WM_ICON"); @@ -363,7 +365,7 @@ } int length = 0; - for (XIconInfo ii : icons) { + for (IconInfo ii : icons) { length += ii.getRawLength(); } int cardinalSize = (XlibWrapper.dataModel == 32) ? 4 : 8; @@ -373,7 +375,7 @@ long buffer = XlibWrapper.unsafe.allocateMemory(bufferSize); try { long ptr = buffer; - for (XIconInfo ii : icons) { + for (IconInfo ii : icons) { int size = ii.getRawLength() * cardinalSize; if (XlibWrapper.dataModel == 32) { XlibWrapper.copyIntArray(ptr, ii.getIntData(), size);
--- a/src/solaris/classes/sun/awt/X11/XWM.java Fri Mar 15 17:59:10 2013 +0100 +++ b/src/solaris/classes/sun/awt/X11/XWM.java Wed Jun 12 15:05:39 2013 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,6 +30,7 @@ */ package sun.awt.X11; +import sun.awt.IconInfo; import sun.misc.Unsafe; import java.awt.Insets; import java.awt.Frame; @@ -1669,7 +1670,7 @@ * * @return true if hint was modified successfully, false otherwise */ - public boolean setNetWMIcon(XWindowPeer window, java.util.List<XIconInfo> icons) { + public boolean setNetWMIcon(XWindowPeer window, java.util.List<IconInfo> icons) { if (g_net_protocol != null && g_net_protocol.active()) { g_net_protocol.setWMIcons(window, icons); return getWMID() != ICE_WM;
--- a/src/solaris/classes/sun/awt/X11/XWarningWindow.java Fri Mar 15 17:59:10 2013 +0100 +++ b/src/solaris/classes/sun/awt/X11/XWarningWindow.java Wed Jun 12 15:05:39 2013 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,11 +25,10 @@ package sun.awt.X11; import java.awt.*; -import java.awt.event.*; import java.awt.geom.Point2D; import java.lang.ref.WeakReference; -import sun.java2d.SunGraphics2D; -import sun.java2d.pipe.Region; + +import sun.awt.IconInfo; import sun.awt.AWTAccessor; import sun.awt.SunToolkit; @@ -56,37 +55,37 @@ * 3 - 48x48 */ private int currentSize = -1; - private static XIconInfo[][] icons; - private static XIconInfo getSecurityIconInfo(int size, int num) { + private static IconInfo[][] icons; + private static IconInfo getSecurityIconInfo(int size, int num) { synchronized (XWarningWindow.class) { if (icons == null) { - icons = new XIconInfo[4][3]; + icons = new IconInfo[4][3]; if (XlibWrapper.dataModel == 32) { - icons[0][0] = new XIconInfo(XAWTIcon32_security_icon_bw16_png.security_icon_bw16_png); - icons[0][1] = new XIconInfo(XAWTIcon32_security_icon_interim16_png.security_icon_interim16_png); - icons[0][2] = new XIconInfo(XAWTIcon32_security_icon_yellow16_png.security_icon_yellow16_png); - icons[1][0] = new XIconInfo(XAWTIcon32_security_icon_bw24_png.security_icon_bw24_png); - icons[1][1] = new XIconInfo(XAWTIcon32_security_icon_interim24_png.security_icon_interim24_png); - icons[1][2] = new XIconInfo(XAWTIcon32_security_icon_yellow24_png.security_icon_yellow24_png); - icons[2][0] = new XIconInfo(XAWTIcon32_security_icon_bw32_png.security_icon_bw32_png); - icons[2][1] = new XIconInfo(XAWTIcon32_security_icon_interim32_png.security_icon_interim32_png); - icons[2][2] = new XIconInfo(XAWTIcon32_security_icon_yellow32_png.security_icon_yellow32_png); - icons[3][0] = new XIconInfo(XAWTIcon32_security_icon_bw48_png.security_icon_bw48_png); - icons[3][1] = new XIconInfo(XAWTIcon32_security_icon_interim48_png.security_icon_interim48_png); - icons[3][2] = new XIconInfo(XAWTIcon32_security_icon_yellow48_png.security_icon_yellow48_png); + icons[0][0] = new IconInfo(sun.awt.AWTIcon32_security_icon_bw16_png.security_icon_bw16_png); + icons[0][1] = new IconInfo(sun.awt.AWTIcon32_security_icon_interim16_png.security_icon_interim16_png); + icons[0][2] = new IconInfo(sun.awt.AWTIcon32_security_icon_yellow16_png.security_icon_yellow16_png); + icons[1][0] = new IconInfo(sun.awt.AWTIcon32_security_icon_bw24_png.security_icon_bw24_png); + icons[1][1] = new IconInfo(sun.awt.AWTIcon32_security_icon_interim24_png.security_icon_interim24_png); + icons[1][2] = new IconInfo(sun.awt.AWTIcon32_security_icon_yellow24_png.security_icon_yellow24_png); + icons[2][0] = new IconInfo(sun.awt.AWTIcon32_security_icon_bw32_png.security_icon_bw32_png); + icons[2][1] = new IconInfo(sun.awt.AWTIcon32_security_icon_interim32_png.security_icon_interim32_png); + icons[2][2] = new IconInfo(sun.awt.AWTIcon32_security_icon_yellow32_png.security_icon_yellow32_png); + icons[3][0] = new IconInfo(sun.awt.AWTIcon32_security_icon_bw48_png.security_icon_bw48_png); + icons[3][1] = new IconInfo(sun.awt.AWTIcon32_security_icon_interim48_png.security_icon_interim48_png); + icons[3][2] = new IconInfo(sun.awt.AWTIcon32_security_icon_yellow48_png.security_icon_yellow48_png); } else { - icons[0][0] = new XIconInfo(XAWTIcon64_security_icon_bw16_png.security_icon_bw16_png); - icons[0][1] = new XIconInfo(XAWTIcon64_security_icon_interim16_png.security_icon_interim16_png); - icons[0][2] = new XIconInfo(XAWTIcon64_security_icon_yellow16_png.security_icon_yellow16_png); - icons[1][0] = new XIconInfo(XAWTIcon64_security_icon_bw24_png.security_icon_bw24_png); - icons[1][1] = new XIconInfo(XAWTIcon64_security_icon_interim24_png.security_icon_interim24_png); - icons[1][2] = new XIconInfo(XAWTIcon64_security_icon_yellow24_png.security_icon_yellow24_png); - icons[2][0] = new XIconInfo(XAWTIcon64_security_icon_bw32_png.security_icon_bw32_png); - icons[2][1] = new XIconInfo(XAWTIcon64_security_icon_interim32_png.security_icon_interim32_png); - icons[2][2] = new XIconInfo(XAWTIcon64_security_icon_yellow32_png.security_icon_yellow32_png); - icons[3][0] = new XIconInfo(XAWTIcon64_security_icon_bw48_png.security_icon_bw48_png); - icons[3][1] = new XIconInfo(XAWTIcon64_security_icon_interim48_png.security_icon_interim48_png); - icons[3][2] = new XIconInfo(XAWTIcon64_security_icon_yellow48_png.security_icon_yellow48_png); + icons[0][0] = new IconInfo(sun.awt.AWTIcon64_security_icon_bw16_png.security_icon_bw16_png); + icons[0][1] = new IconInfo(sun.awt.AWTIcon64_security_icon_interim16_png.security_icon_interim16_png); + icons[0][2] = new IconInfo(sun.awt.AWTIcon64_security_icon_yellow16_png.security_icon_yellow16_png); + icons[1][0] = new IconInfo(sun.awt.AWTIcon64_security_icon_bw24_png.security_icon_bw24_png); + icons[1][1] = new IconInfo(sun.awt.AWTIcon64_security_icon_interim24_png.security_icon_interim24_png); + icons[1][2] = new IconInfo(sun.awt.AWTIcon64_security_icon_yellow24_png.security_icon_yellow24_png); + icons[2][0] = new IconInfo(sun.awt.AWTIcon64_security_icon_bw32_png.security_icon_bw32_png); + icons[2][1] = new IconInfo(sun.awt.AWTIcon64_security_icon_interim32_png.security_icon_interim32_png); + icons[2][2] = new IconInfo(sun.awt.AWTIcon64_security_icon_yellow32_png.security_icon_yellow32_png); + icons[3][0] = new IconInfo(sun.awt.AWTIcon64_security_icon_bw48_png.security_icon_bw48_png); + icons[3][1] = new IconInfo(sun.awt.AWTIcon64_security_icon_interim48_png.security_icon_interim48_png); + icons[3][2] = new IconInfo(sun.awt.AWTIcon64_security_icon_yellow48_png.security_icon_yellow48_png); } } } @@ -125,7 +124,7 @@ try { if (newSize != currentSize) { currentSize = newSize; - XIconInfo ico = getSecurityIconInfo(currentSize, 0); + IconInfo ico = getSecurityIconInfo(currentSize, 0); XlibWrapper.SetBitmapShape(XToolkit.getDisplay(), getWindow(), ico.getWidth(), ico.getHeight(), ico.getIntData()); AWTAccessor.getWindowAccessor().setSecurityWarningSize( @@ -136,7 +135,7 @@ } } - private XIconInfo getSecurityIconInfo() { + private IconInfo getSecurityIconInfo() { updateIconSize(); return getSecurityIconInfo(currentSize, currentIcon); }
--- a/src/solaris/classes/sun/awt/X11/XWindowAttributesData.java Fri Mar 15 17:59:10 2013 +0100 +++ b/src/solaris/classes/sun/awt/X11/XWindowAttributesData.java Wed Jun 12 15:05:39 2013 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,8 +23,7 @@ * questions. */ package sun.awt.X11; -import java.awt.Image; -import java.util.ArrayList; +import sun.awt.IconInfo; class XWindowAttributesData { static int NORMAL = 0; @@ -51,7 +50,7 @@ boolean initialResizability; int visibilityState; // updated by native X11 event handling code. String title; - java.util.List<XIconInfo> icons; + java.util.List<IconInfo> icons; boolean iconsInherited; int decorations; // for future expansion to be able to // specify native decorations
--- a/src/solaris/classes/sun/awt/X11/XWindowPeer.java Fri Mar 15 17:59:10 2013 +0100 +++ b/src/solaris/classes/sun/awt/X11/XWindowPeer.java Wed Jun 12 15:05:39 2013 +0100 @@ -30,8 +30,6 @@ import java.awt.event.FocusEvent; import java.awt.event.WindowEvent; -import java.awt.image.BufferedImage; - import java.awt.peer.ComponentPeer; import java.awt.peer.WindowPeer; @@ -55,6 +53,7 @@ import sun.awt.SunToolkit; import sun.awt.X11GraphicsDevice; import sun.awt.X11GraphicsEnvironment; +import sun.awt.IconInfo; import sun.java2d.pipe.Region; @@ -277,7 +276,7 @@ Window target = (Window)this.target; java.util.List<Image> iconImages = ((Window)target).getIconImages(); XWindowPeer ownerPeer = getOwnerPeer(); - winAttr.icons = new ArrayList<XIconInfo>(); + winAttr.icons = new ArrayList<IconInfo>(); if (iconImages.size() != 0) { //read icon images from target winAttr.iconsInherited = false; @@ -289,9 +288,9 @@ } continue; } - XIconInfo iconInfo; + IconInfo iconInfo; try { - iconInfo = new XIconInfo(image); + iconInfo = new IconInfo(image); } catch (Exception e){ if (log.isLoggable(PlatformLogger.FINEST)) { log.finest("XWindowPeer.updateIconImages: Perhaps the image passed into Java is broken. Skipping this icon."); @@ -329,12 +328,12 @@ * It does scale some of these icons to appropriate size * if it's necessary. */ - static java.util.List<XIconInfo> normalizeIconImages(java.util.List<XIconInfo> icons) { - java.util.List<XIconInfo> result = new ArrayList<XIconInfo>(); + static java.util.List<IconInfo> normalizeIconImages(java.util.List<IconInfo> icons) { + java.util.List<IconInfo> result = new ArrayList<IconInfo>(); int totalLength = 0; boolean haveLargeIcon = false; - for (XIconInfo icon : icons) { + for (IconInfo icon : icons) { int width = icon.getWidth(); int height = icon.getHeight(); int length = icon.getRawLength(); @@ -375,16 +374,16 @@ /* * Dumps each icon from the list */ - static void dumpIcons(java.util.List<XIconInfo> icons) { + static void dumpIcons(java.util.List<IconInfo> icons) { if (iconLog.isLoggable(PlatformLogger.FINEST)) { iconLog.finest(">>> Sizes of icon images:"); - for (Iterator<XIconInfo> i = icons.iterator(); i.hasNext(); ) { + for (Iterator<IconInfo> i = icons.iterator(); i.hasNext(); ) { iconLog.finest(" {0}", i.next()); } } } - public void recursivelySetIcon(java.util.List<XIconInfo> icons) { + public void recursivelySetIcon(java.util.List<IconInfo> icons) { dumpIcons(winAttr.icons); setIconHints(icons); Window target = (Window)this.target; @@ -401,28 +400,28 @@ } } - java.util.List<XIconInfo> getIconInfo() { + java.util.List<IconInfo> getIconInfo() { return winAttr.icons; } - void setIconHints(java.util.List<XIconInfo> icons) { + void setIconHints(java.util.List<IconInfo> icons) { //This does nothing for XWindowPeer, //It's overriden in XDecoratedPeer } - private static ArrayList<XIconInfo> defaultIconInfo; - protected synchronized static java.util.List<XIconInfo> getDefaultIconInfo() { + private static ArrayList<IconInfo> defaultIconInfo; + protected synchronized static java.util.List<IconInfo> getDefaultIconInfo() { if (defaultIconInfo == null) { - defaultIconInfo = new ArrayList<XIconInfo>(); + defaultIconInfo = new ArrayList<IconInfo>(); if (XlibWrapper.dataModel == 32) { - defaultIconInfo.add(new XIconInfo(XAWTIcon32_java_icon16_png.java_icon16_png)); - defaultIconInfo.add(new XIconInfo(XAWTIcon32_java_icon24_png.java_icon24_png)); - defaultIconInfo.add(new XIconInfo(XAWTIcon32_java_icon32_png.java_icon32_png)); - defaultIconInfo.add(new XIconInfo(XAWTIcon32_java_icon48_png.java_icon48_png)); + defaultIconInfo.add(new IconInfo(sun.awt.AWTIcon32_java_icon16_png.java_icon16_png)); + defaultIconInfo.add(new IconInfo(sun.awt.AWTIcon32_java_icon24_png.java_icon24_png)); + defaultIconInfo.add(new IconInfo(sun.awt.AWTIcon32_java_icon32_png.java_icon32_png)); + defaultIconInfo.add(new IconInfo(sun.awt.AWTIcon32_java_icon48_png.java_icon48_png)); } else { - defaultIconInfo.add(new XIconInfo(XAWTIcon64_java_icon16_png.java_icon16_png)); - defaultIconInfo.add(new XIconInfo(XAWTIcon64_java_icon24_png.java_icon24_png)); - defaultIconInfo.add(new XIconInfo(XAWTIcon64_java_icon32_png.java_icon32_png)); - defaultIconInfo.add(new XIconInfo(XAWTIcon64_java_icon48_png.java_icon48_png)); + defaultIconInfo.add(new IconInfo(sun.awt.AWTIcon64_java_icon16_png.java_icon16_png)); + defaultIconInfo.add(new IconInfo(sun.awt.AWTIcon64_java_icon24_png.java_icon24_png)); + defaultIconInfo.add(new IconInfo(sun.awt.AWTIcon64_java_icon32_png.java_icon32_png)); + defaultIconInfo.add(new IconInfo(sun.awt.AWTIcon64_java_icon48_png.java_icon48_png)); } } return defaultIconInfo;