597 XDropTargetProtocol dropProtocol = (XDropTargetProtocol)dropProtocols.next(); 598 dropProtocol.unregisterDropTarget(window); 599 } 600 } else { 601 unregisterEmbeddedDropSite(toplevel, window); 602 } 603 } 604 605 public void registerXEmbedClient(long canvasWindow, long clientWindow) { 606 // If the client has an associated XDnD drop site, add a drop target 607 // to the XEmbedCanvasPeer's target to route drag notifications to the 608 // client. 609 610 XDragSourceProtocol xdndDragProtocol = 611 XDragAndDropProtocols.getDragSourceProtocol(XDragAndDropProtocols.XDnD); 612 XDragSourceProtocol.TargetWindowInfo info = 613 xdndDragProtocol.getTargetWindowInfo(clientWindow); 614 if (info != null && 615 info.getProtocolVersion() >= XDnDConstants.XDND_MIN_PROTOCOL_VERSION) { 616 617 if (logger.isLoggable(PlatformLogger.FINE)) { 618 logger.fine(" XEmbed drop site will be registered for " + Long.toHexString(clientWindow)); 619 } 620 registerEmbeddedDropSite(canvasWindow, clientWindow); 621 622 Iterator dropTargetProtocols = 623 XDragAndDropProtocols.getDropTargetProtocols(); 624 625 while (dropTargetProtocols.hasNext()) { 626 XDropTargetProtocol dropTargetProtocol = 627 (XDropTargetProtocol)dropTargetProtocols.next(); 628 dropTargetProtocol.registerEmbeddedDropSite(clientWindow); 629 } 630 631 if (logger.isLoggable(PlatformLogger.FINE)) { 632 logger.fine(" XEmbed drop site has been registered for " + Long.toHexString(clientWindow)); 633 } 634 } 635 } 636 637 public void unregisterXEmbedClient(long canvasWindow, long clientWindow) { 638 if (logger.isLoggable(PlatformLogger.FINE)) { 639 logger.fine(" XEmbed drop site will be unregistered for " + Long.toHexString(clientWindow)); 640 } 641 Iterator dropTargetProtocols = 642 XDragAndDropProtocols.getDropTargetProtocols(); 643 644 while (dropTargetProtocols.hasNext()) { 645 XDropTargetProtocol dropTargetProtocol = 646 (XDropTargetProtocol)dropTargetProtocols.next(); 647 dropTargetProtocol.unregisterEmbeddedDropSite(clientWindow); 648 } 649 650 unregisterEmbeddedDropSite(canvasWindow, clientWindow); 651 652 if (logger.isLoggable(PlatformLogger.FINE)) { 653 logger.fine(" XEmbed drop site has beed unregistered for " + Long.toHexString(clientWindow)); 654 } 655 } 656 657 /**************** Delayed drop site registration *******************************/ 658 659 private void addDelayedRegistrationEntry(final long window) { 660 Long lWindow = Long.valueOf(window); 661 Runnable runnable = new Runnable() { 662 public void run() { 663 removeDelayedRegistrationEntry(window); 664 registerDropSite(window); 665 } 666 }; 667 668 XToolkit.awtLock(); 669 try { 670 removeDelayedRegistrationEntry(window); 671 delayedRegistrationMap.put(lWindow, runnable); 672 XToolkit.schedule(runnable, DELAYED_REGISTRATION_PERIOD); | 597 XDropTargetProtocol dropProtocol = (XDropTargetProtocol)dropProtocols.next(); 598 dropProtocol.unregisterDropTarget(window); 599 } 600 } else { 601 unregisterEmbeddedDropSite(toplevel, window); 602 } 603 } 604 605 public void registerXEmbedClient(long canvasWindow, long clientWindow) { 606 // If the client has an associated XDnD drop site, add a drop target 607 // to the XEmbedCanvasPeer's target to route drag notifications to the 608 // client. 609 610 XDragSourceProtocol xdndDragProtocol = 611 XDragAndDropProtocols.getDragSourceProtocol(XDragAndDropProtocols.XDnD); 612 XDragSourceProtocol.TargetWindowInfo info = 613 xdndDragProtocol.getTargetWindowInfo(clientWindow); 614 if (info != null && 615 info.getProtocolVersion() >= XDnDConstants.XDND_MIN_PROTOCOL_VERSION) { 616 617 if (logger.isLoggable(PlatformLogger.Level.FINE)) { 618 logger.fine(" XEmbed drop site will be registered for " + Long.toHexString(clientWindow)); 619 } 620 registerEmbeddedDropSite(canvasWindow, clientWindow); 621 622 Iterator dropTargetProtocols = 623 XDragAndDropProtocols.getDropTargetProtocols(); 624 625 while (dropTargetProtocols.hasNext()) { 626 XDropTargetProtocol dropTargetProtocol = 627 (XDropTargetProtocol)dropTargetProtocols.next(); 628 dropTargetProtocol.registerEmbeddedDropSite(clientWindow); 629 } 630 631 if (logger.isLoggable(PlatformLogger.Level.FINE)) { 632 logger.fine(" XEmbed drop site has been registered for " + Long.toHexString(clientWindow)); 633 } 634 } 635 } 636 637 public void unregisterXEmbedClient(long canvasWindow, long clientWindow) { 638 if (logger.isLoggable(PlatformLogger.Level.FINE)) { 639 logger.fine(" XEmbed drop site will be unregistered for " + Long.toHexString(clientWindow)); 640 } 641 Iterator dropTargetProtocols = 642 XDragAndDropProtocols.getDropTargetProtocols(); 643 644 while (dropTargetProtocols.hasNext()) { 645 XDropTargetProtocol dropTargetProtocol = 646 (XDropTargetProtocol)dropTargetProtocols.next(); 647 dropTargetProtocol.unregisterEmbeddedDropSite(clientWindow); 648 } 649 650 unregisterEmbeddedDropSite(canvasWindow, clientWindow); 651 652 if (logger.isLoggable(PlatformLogger.Level.FINE)) { 653 logger.fine(" XEmbed drop site has beed unregistered for " + Long.toHexString(clientWindow)); 654 } 655 } 656 657 /**************** Delayed drop site registration *******************************/ 658 659 private void addDelayedRegistrationEntry(final long window) { 660 Long lWindow = Long.valueOf(window); 661 Runnable runnable = new Runnable() { 662 public void run() { 663 removeDelayedRegistrationEntry(window); 664 registerDropSite(window); 665 } 666 }; 667 668 XToolkit.awtLock(); 669 try { 670 removeDelayedRegistrationEntry(window); 671 delayedRegistrationMap.put(lWindow, runnable); 672 XToolkit.schedule(runnable, DELAYED_REGISTRATION_PERIOD); |