jdk/src/solaris/classes/sun/awt/X11/XWarningWindow.java
changeset 18241 3e009b5be123
parent 10096 f9ac9a52952d
equal deleted inserted replaced
15982:c47c078f91b8 18241:3e009b5be123
     1 /*
     1 /*
     2  * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     7  * published by the Free Software Foundation.  Oracle designates this
    23  * questions.
    23  * questions.
    24  */
    24  */
    25 package sun.awt.X11;
    25 package sun.awt.X11;
    26 
    26 
    27 import java.awt.*;
    27 import java.awt.*;
    28 import java.awt.event.*;
       
    29 import java.awt.geom.Point2D;
    28 import java.awt.geom.Point2D;
    30 import java.lang.ref.WeakReference;
    29 import java.lang.ref.WeakReference;
    31 import sun.java2d.SunGraphics2D;
    30 
    32 import sun.java2d.pipe.Region;
    31 import sun.awt.IconInfo;
    33 import sun.awt.AWTAccessor;
    32 import sun.awt.AWTAccessor;
    34 import sun.awt.SunToolkit;
    33 import sun.awt.SunToolkit;
    35 
    34 
    36 class XWarningWindow extends XWindow {
    35 class XWarningWindow extends XWindow {
    37     private final static int SHOWING_DELAY = 330;
    36     private final static int SHOWING_DELAY = 330;
    54      * 1 - 24x24
    53      * 1 - 24x24
    55      * 2 - 32x32
    54      * 2 - 32x32
    56      * 3 - 48x48
    55      * 3 - 48x48
    57      */
    56      */
    58     private int currentSize = -1;
    57     private int currentSize = -1;
    59     private static XIconInfo[][] icons;
    58     private static IconInfo[][] icons;
    60     private static XIconInfo getSecurityIconInfo(int size, int num) {
    59     private static IconInfo getSecurityIconInfo(int size, int num) {
    61         synchronized (XWarningWindow.class) {
    60         synchronized (XWarningWindow.class) {
    62             if (icons == null) {
    61             if (icons == null) {
    63                 icons = new XIconInfo[4][3];
    62                 icons = new IconInfo[4][3];
    64                 if (XlibWrapper.dataModel == 32) {
    63                 if (XlibWrapper.dataModel == 32) {
    65                     icons[0][0] = new XIconInfo(XAWTIcon32_security_icon_bw16_png.security_icon_bw16_png);
    64                     icons[0][0] = new IconInfo(sun.awt.AWTIcon32_security_icon_bw16_png.security_icon_bw16_png);
    66                     icons[0][1] = new XIconInfo(XAWTIcon32_security_icon_interim16_png.security_icon_interim16_png);
    65                     icons[0][1] = new IconInfo(sun.awt.AWTIcon32_security_icon_interim16_png.security_icon_interim16_png);
    67                     icons[0][2] = new XIconInfo(XAWTIcon32_security_icon_yellow16_png.security_icon_yellow16_png);
    66                     icons[0][2] = new IconInfo(sun.awt.AWTIcon32_security_icon_yellow16_png.security_icon_yellow16_png);
    68                     icons[1][0] = new XIconInfo(XAWTIcon32_security_icon_bw24_png.security_icon_bw24_png);
    67                     icons[1][0] = new IconInfo(sun.awt.AWTIcon32_security_icon_bw24_png.security_icon_bw24_png);
    69                     icons[1][1] = new XIconInfo(XAWTIcon32_security_icon_interim24_png.security_icon_interim24_png);
    68                     icons[1][1] = new IconInfo(sun.awt.AWTIcon32_security_icon_interim24_png.security_icon_interim24_png);
    70                     icons[1][2] = new XIconInfo(XAWTIcon32_security_icon_yellow24_png.security_icon_yellow24_png);
    69                     icons[1][2] = new IconInfo(sun.awt.AWTIcon32_security_icon_yellow24_png.security_icon_yellow24_png);
    71                     icons[2][0] = new XIconInfo(XAWTIcon32_security_icon_bw32_png.security_icon_bw32_png);
    70                     icons[2][0] = new IconInfo(sun.awt.AWTIcon32_security_icon_bw32_png.security_icon_bw32_png);
    72                     icons[2][1] = new XIconInfo(XAWTIcon32_security_icon_interim32_png.security_icon_interim32_png);
    71                     icons[2][1] = new IconInfo(sun.awt.AWTIcon32_security_icon_interim32_png.security_icon_interim32_png);
    73                     icons[2][2] = new XIconInfo(XAWTIcon32_security_icon_yellow32_png.security_icon_yellow32_png);
    72                     icons[2][2] = new IconInfo(sun.awt.AWTIcon32_security_icon_yellow32_png.security_icon_yellow32_png);
    74                     icons[3][0] = new XIconInfo(XAWTIcon32_security_icon_bw48_png.security_icon_bw48_png);
    73                     icons[3][0] = new IconInfo(sun.awt.AWTIcon32_security_icon_bw48_png.security_icon_bw48_png);
    75                     icons[3][1] = new XIconInfo(XAWTIcon32_security_icon_interim48_png.security_icon_interim48_png);
    74                     icons[3][1] = new IconInfo(sun.awt.AWTIcon32_security_icon_interim48_png.security_icon_interim48_png);
    76                     icons[3][2] = new XIconInfo(XAWTIcon32_security_icon_yellow48_png.security_icon_yellow48_png);
    75                     icons[3][2] = new IconInfo(sun.awt.AWTIcon32_security_icon_yellow48_png.security_icon_yellow48_png);
    77                 } else {
    76                 } else {
    78                     icons[0][0] = new XIconInfo(XAWTIcon64_security_icon_bw16_png.security_icon_bw16_png);
    77                     icons[0][0] = new IconInfo(sun.awt.AWTIcon64_security_icon_bw16_png.security_icon_bw16_png);
    79                     icons[0][1] = new XIconInfo(XAWTIcon64_security_icon_interim16_png.security_icon_interim16_png);
    78                     icons[0][1] = new IconInfo(sun.awt.AWTIcon64_security_icon_interim16_png.security_icon_interim16_png);
    80                     icons[0][2] = new XIconInfo(XAWTIcon64_security_icon_yellow16_png.security_icon_yellow16_png);
    79                     icons[0][2] = new IconInfo(sun.awt.AWTIcon64_security_icon_yellow16_png.security_icon_yellow16_png);
    81                     icons[1][0] = new XIconInfo(XAWTIcon64_security_icon_bw24_png.security_icon_bw24_png);
    80                     icons[1][0] = new IconInfo(sun.awt.AWTIcon64_security_icon_bw24_png.security_icon_bw24_png);
    82                     icons[1][1] = new XIconInfo(XAWTIcon64_security_icon_interim24_png.security_icon_interim24_png);
    81                     icons[1][1] = new IconInfo(sun.awt.AWTIcon64_security_icon_interim24_png.security_icon_interim24_png);
    83                     icons[1][2] = new XIconInfo(XAWTIcon64_security_icon_yellow24_png.security_icon_yellow24_png);
    82                     icons[1][2] = new IconInfo(sun.awt.AWTIcon64_security_icon_yellow24_png.security_icon_yellow24_png);
    84                     icons[2][0] = new XIconInfo(XAWTIcon64_security_icon_bw32_png.security_icon_bw32_png);
    83                     icons[2][0] = new IconInfo(sun.awt.AWTIcon64_security_icon_bw32_png.security_icon_bw32_png);
    85                     icons[2][1] = new XIconInfo(XAWTIcon64_security_icon_interim32_png.security_icon_interim32_png);
    84                     icons[2][1] = new IconInfo(sun.awt.AWTIcon64_security_icon_interim32_png.security_icon_interim32_png);
    86                     icons[2][2] = new XIconInfo(XAWTIcon64_security_icon_yellow32_png.security_icon_yellow32_png);
    85                     icons[2][2] = new IconInfo(sun.awt.AWTIcon64_security_icon_yellow32_png.security_icon_yellow32_png);
    87                     icons[3][0] = new XIconInfo(XAWTIcon64_security_icon_bw48_png.security_icon_bw48_png);
    86                     icons[3][0] = new IconInfo(sun.awt.AWTIcon64_security_icon_bw48_png.security_icon_bw48_png);
    88                     icons[3][1] = new XIconInfo(XAWTIcon64_security_icon_interim48_png.security_icon_interim48_png);
    87                     icons[3][1] = new IconInfo(sun.awt.AWTIcon64_security_icon_interim48_png.security_icon_interim48_png);
    89                     icons[3][2] = new XIconInfo(XAWTIcon64_security_icon_yellow48_png.security_icon_yellow48_png);
    88                     icons[3][2] = new IconInfo(sun.awt.AWTIcon64_security_icon_yellow48_png.security_icon_yellow48_png);
    90                 }
    89                 }
    91             }
    90             }
    92         }
    91         }
    93         final int sizeIndex = size % icons.length;
    92         final int sizeIndex = size % icons.length;
    94         return icons[sizeIndex][num % icons[sizeIndex].length];
    93         return icons[sizeIndex][num % icons[sizeIndex].length];
   123         // So it's easier to use just one lock instead.
   122         // So it's easier to use just one lock instead.
   124         XToolkit.awtLock();
   123         XToolkit.awtLock();
   125         try {
   124         try {
   126             if (newSize != currentSize) {
   125             if (newSize != currentSize) {
   127                 currentSize = newSize;
   126                 currentSize = newSize;
   128                 XIconInfo ico = getSecurityIconInfo(currentSize, 0);
   127                 IconInfo ico = getSecurityIconInfo(currentSize, 0);
   129                 XlibWrapper.SetBitmapShape(XToolkit.getDisplay(), getWindow(),
   128                 XlibWrapper.SetBitmapShape(XToolkit.getDisplay(), getWindow(),
   130                         ico.getWidth(), ico.getHeight(), ico.getIntData());
   129                         ico.getWidth(), ico.getHeight(), ico.getIntData());
   131                 AWTAccessor.getWindowAccessor().setSecurityWarningSize(
   130                 AWTAccessor.getWindowAccessor().setSecurityWarningSize(
   132                         ownerWindow, ico.getWidth(), ico.getHeight());
   131                         ownerWindow, ico.getWidth(), ico.getHeight());
   133             }
   132             }
   134         } finally {
   133         } finally {
   135             XToolkit.awtUnlock();
   134             XToolkit.awtUnlock();
   136         }
   135         }
   137     }
   136     }
   138 
   137 
   139     private XIconInfo getSecurityIconInfo() {
   138     private IconInfo getSecurityIconInfo() {
   140         updateIconSize();
   139         updateIconSize();
   141         return getSecurityIconInfo(currentSize, currentIcon);
   140         return getSecurityIconInfo(currentSize, currentIcon);
   142     }
   141     }
   143 
   142 
   144     XWarningWindow(final Window ownerWindow, long parentWindow, XWindowPeer ownerPeer) {
   143     XWarningWindow(final Window ownerWindow, long parentWindow, XWindowPeer ownerPeer) {