jdk/src/solaris/classes/sun/awt/X11/XEmbedClientHelper.java
changeset 3938 ef327bd847c0
parent 1974 1e1487c04864
child 4373 6a1c87e2876b
equal deleted inserted replaced
3934:487e1aa949c4 3938:ef327bd847c0
    24  */
    24  */
    25 
    25 
    26 package sun.awt.X11;
    26 package sun.awt.X11;
    27 
    27 
    28 import java.awt.AWTKeyStroke;
    28 import java.awt.AWTKeyStroke;
    29 import java.util.logging.*;
       
    30 import sun.awt.SunToolkit;
    29 import sun.awt.SunToolkit;
    31 import java.awt.Component;
    30 import java.awt.Component;
    32 import java.awt.Container;
    31 import java.awt.Container;
       
    32 import sun.util.logging.PlatformLogger;
    33 
    33 
    34 import sun.awt.X11GraphicsConfig;
    34 import sun.awt.X11GraphicsConfig;
    35 import sun.awt.X11GraphicsDevice;
    35 import sun.awt.X11GraphicsDevice;
    36 
    36 
    37 /**
    37 /**
    38  * Helper class implementing XEmbed protocol handling routines(client side)
    38  * Helper class implementing XEmbed protocol handling routines(client side)
    39  * Window which wants to participate in a protocol should create an instance,
    39  * Window which wants to participate in a protocol should create an instance,
    40  * call install and forward all XClientMessageEvents to it.
    40  * call install and forward all XClientMessageEvents to it.
    41  */
    41  */
    42 public class XEmbedClientHelper extends XEmbedHelper implements XEventDispatcher {
    42 public class XEmbedClientHelper extends XEmbedHelper implements XEventDispatcher {
    43     private static final Logger xembedLog = Logger.getLogger("sun.awt.X11.xembed.XEmbedClientHelper");
    43     private static final PlatformLogger xembedLog = PlatformLogger.getLogger("sun.awt.X11.xembed.XEmbedClientHelper");
    44 
    44 
    45     private XEmbeddedFramePeer embedded; // XEmbed client
    45     private XEmbeddedFramePeer embedded; // XEmbed client
    46     private long server; // XEmbed server
    46     private long server; // XEmbed server
    47 
    47 
    48     private boolean active;
    48     private boolean active;
    51     XEmbedClientHelper() {
    51     XEmbedClientHelper() {
    52         super();
    52         super();
    53     }
    53     }
    54 
    54 
    55     void setClient(XEmbeddedFramePeer client) {
    55     void setClient(XEmbeddedFramePeer client) {
    56         if (xembedLog.isLoggable(Level.FINE)) {
    56         if (xembedLog.isLoggable(PlatformLogger.FINE)) {
    57             xembedLog.fine("XEmbed client: " + client);
    57             xembedLog.fine("XEmbed client: " + client);
    58         }
    58         }
    59         if (embedded != null) {
    59         if (embedded != null) {
    60             XToolkit.removeEventDispatcher(embedded.getWindow(), this);
    60             XToolkit.removeEventDispatcher(embedded.getWindow(), this);
    61             active = false;
    61             active = false;
    65             XToolkit.addEventDispatcher(embedded.getWindow(), this);
    65             XToolkit.addEventDispatcher(embedded.getWindow(), this);
    66         }
    66         }
    67     }
    67     }
    68 
    68 
    69     void install() {
    69     void install() {
    70         if (xembedLog.isLoggable(Level.FINE)) {
    70         if (xembedLog.isLoggable(PlatformLogger.FINE)) {
    71             xembedLog.fine("Installing xembedder on " + embedded);
    71             xembedLog.fine("Installing xembedder on " + embedded);
    72         }
    72         }
    73         long[] info = new long[] { XEMBED_VERSION, XEMBED_MAPPED };
    73         long[] info = new long[] { XEMBED_VERSION, XEMBED_MAPPED };
    74         long data = Native.card32ToData(info);
    74         long data = Native.card32ToData(info);
    75         try {
    75         try {
    93         }
    93         }
    94     }
    94     }
    95 
    95 
    96     void handleClientMessage(XEvent xev) {
    96     void handleClientMessage(XEvent xev) {
    97         XClientMessageEvent msg = xev.get_xclient();
    97         XClientMessageEvent msg = xev.get_xclient();
    98         if (xembedLog.isLoggable(Level.FINE)) xembedLog.fine(msg.toString());
    98         if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine(msg.toString());
    99         if (msg.get_message_type() == XEmbed.getAtom()) {
    99         if (msg.get_message_type() == XEmbed.getAtom()) {
   100             if (xembedLog.isLoggable(Level.FINE)) xembedLog.fine("Embedded message: " + msgidToString((int)msg.get_data(1)));
   100             if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Embedded message: " + msgidToString((int)msg.get_data(1)));
   101             switch ((int)msg.get_data(1)) {
   101             switch ((int)msg.get_data(1)) {
   102               case XEMBED_EMBEDDED_NOTIFY: // Notification about embedding protocol start
   102               case XEMBED_EMBEDDED_NOTIFY: // Notification about embedding protocol start
   103                   active = true;
   103                   active = true;
   104                   server = getEmbedder(embedded, msg);
   104                   server = getEmbedder(embedded, msg);
   105                   // Check if window is reparented. If not - it was created with
   105                   // Check if window is reparented. If not - it was created with