29 import java.util.Collections; |
29 import java.util.Collections; |
30 import java.util.HashMap; |
30 import java.util.HashMap; |
31 import java.util.HashSet; |
31 import java.util.HashSet; |
32 import java.util.Iterator; |
32 import java.util.Iterator; |
33 import java.util.List; |
33 import java.util.List; |
34 import java.util.logging.*; |
34 import sun.util.logging.PlatformLogger; |
35 |
35 |
36 import java.awt.Point; |
36 import java.awt.Point; |
37 |
37 |
38 |
38 |
39 /** |
39 /** |
40 * The class responsible for registration/deregistration of drop sites. |
40 * The class responsible for registration/deregistration of drop sites. |
41 * |
41 * |
42 * @since 1.5 |
42 * @since 1.5 |
43 */ |
43 */ |
44 final class XDropTargetRegistry { |
44 final class XDropTargetRegistry { |
45 private static final Logger logger = |
45 private static final PlatformLogger logger = |
46 Logger.getLogger("sun.awt.X11.xembed.xdnd.XDropTargetRegistry"); |
46 PlatformLogger.getLogger("sun.awt.X11.xembed.xdnd.XDropTargetRegistry"); |
47 |
47 |
48 private static final long DELAYED_REGISTRATION_PERIOD = 200; |
48 private static final long DELAYED_REGISTRATION_PERIOD = 200; |
49 |
49 |
50 private static final XDropTargetRegistry theInstance = |
50 private static final XDropTargetRegistry theInstance = |
51 new XDropTargetRegistry(); |
51 new XDropTargetRegistry(); |
612 XDragSourceProtocol.TargetWindowInfo info = |
612 XDragSourceProtocol.TargetWindowInfo info = |
613 xdndDragProtocol.getTargetWindowInfo(clientWindow); |
613 xdndDragProtocol.getTargetWindowInfo(clientWindow); |
614 if (info != null && |
614 if (info != null && |
615 info.getProtocolVersion() >= XDnDConstants.XDND_MIN_PROTOCOL_VERSION) { |
615 info.getProtocolVersion() >= XDnDConstants.XDND_MIN_PROTOCOL_VERSION) { |
616 |
616 |
617 if (logger.isLoggable(Level.FINE)) { |
617 if (logger.isLoggable(PlatformLogger.FINE)) { |
618 logger.fine(" XEmbed drop site will be registered for " + Long.toHexString(clientWindow)); |
618 logger.fine(" XEmbed drop site will be registered for " + Long.toHexString(clientWindow)); |
619 } |
619 } |
620 registerEmbeddedDropSite(canvasWindow, clientWindow); |
620 registerEmbeddedDropSite(canvasWindow, clientWindow); |
621 |
621 |
622 Iterator dropTargetProtocols = |
622 Iterator dropTargetProtocols = |
626 XDropTargetProtocol dropTargetProtocol = |
626 XDropTargetProtocol dropTargetProtocol = |
627 (XDropTargetProtocol)dropTargetProtocols.next(); |
627 (XDropTargetProtocol)dropTargetProtocols.next(); |
628 dropTargetProtocol.registerEmbeddedDropSite(clientWindow); |
628 dropTargetProtocol.registerEmbeddedDropSite(clientWindow); |
629 } |
629 } |
630 |
630 |
631 if (logger.isLoggable(Level.FINE)) { |
631 if (logger.isLoggable(PlatformLogger.FINE)) { |
632 logger.fine(" XEmbed drop site has been registered for " + Long.toHexString(clientWindow)); |
632 logger.fine(" XEmbed drop site has been registered for " + Long.toHexString(clientWindow)); |
633 } |
633 } |
634 } |
634 } |
635 } |
635 } |
636 |
636 |
637 public void unregisterXEmbedClient(long canvasWindow, long clientWindow) { |
637 public void unregisterXEmbedClient(long canvasWindow, long clientWindow) { |
638 if (logger.isLoggable(Level.FINE)) { |
638 if (logger.isLoggable(PlatformLogger.FINE)) { |
639 logger.fine(" XEmbed drop site will be unregistered for " + Long.toHexString(clientWindow)); |
639 logger.fine(" XEmbed drop site will be unregistered for " + Long.toHexString(clientWindow)); |
640 } |
640 } |
641 Iterator dropTargetProtocols = |
641 Iterator dropTargetProtocols = |
642 XDragAndDropProtocols.getDropTargetProtocols(); |
642 XDragAndDropProtocols.getDropTargetProtocols(); |
643 |
643 |
647 dropTargetProtocol.unregisterEmbeddedDropSite(clientWindow); |
647 dropTargetProtocol.unregisterEmbeddedDropSite(clientWindow); |
648 } |
648 } |
649 |
649 |
650 unregisterEmbeddedDropSite(canvasWindow, clientWindow); |
650 unregisterEmbeddedDropSite(canvasWindow, clientWindow); |
651 |
651 |
652 if (logger.isLoggable(Level.FINE)) { |
652 if (logger.isLoggable(PlatformLogger.FINE)) { |
653 logger.fine(" XEmbed drop site has beed unregistered for " + Long.toHexString(clientWindow)); |
653 logger.fine(" XEmbed drop site has beed unregistered for " + Long.toHexString(clientWindow)); |
654 } |
654 } |
655 } |
655 } |
656 |
656 |
657 /**************** Delayed drop site registration *******************************/ |
657 /**************** Delayed drop site registration *******************************/ |