src/share/classes/java/awt/dnd/DropTarget.java

Print this page




 334             else
 335                 throw new IllegalArgumentException("listener mismatch");
 336         }
 337     }
 338 
 339     /**
 340      * Calls <code>dragEnter</code> on the registered
 341      * <code>DropTargetListener</code> and passes it
 342      * the specified <code>DropTargetDragEvent</code>.
 343      * Has no effect if this <code>DropTarget</code>
 344      * is not active.
 345      *
 346      * @param dtde the <code>DropTargetDragEvent</code>
 347      *
 348      * @throws NullPointerException if this <code>DropTarget</code>
 349      *         is active and <code>dtde</code> is <code>null</code>
 350      *
 351      * @see #isActive
 352      */
 353     public synchronized void dragEnter(DropTargetDragEvent dtde) {


 354         if (!active) return;
 355 
 356         if (dtListener != null) {
 357             dtListener.dragEnter(dtde);
 358         } else
 359             dtde.getDropTargetContext().setTargetActions(DnDConstants.ACTION_NONE);
 360 
 361         initializeAutoscrolling(dtde.getLocation());
 362     }
 363 
 364     /**
 365      * Calls <code>dragOver</code> on the registered
 366      * <code>DropTargetListener</code> and passes it
 367      * the specified <code>DropTargetDragEvent</code>.
 368      * Has no effect if this <code>DropTarget</code>
 369      * is not active.
 370      *
 371      * @param dtde the <code>DropTargetDragEvent</code>
 372      *
 373      * @throws NullPointerException if this <code>DropTarget</code>


 404 
 405         updateAutoscroll(dtde.getLocation());
 406     }
 407 
 408     /**
 409      * Calls <code>dragExit</code> on the registered
 410      * <code>DropTargetListener</code> and passes it
 411      * the specified <code>DropTargetEvent</code>.
 412      * Has no effect if this <code>DropTarget</code>
 413      * is not active.
 414      * <p>
 415      * This method itself does not throw any exception
 416      * for null parameter but for exceptions thrown by
 417      * the respective method of the listener.
 418      *
 419      * @param dte the <code>DropTargetEvent</code>
 420      *
 421      * @see #isActive
 422      */
 423     public synchronized void dragExit(DropTargetEvent dte) {


 424         if (!active) return;
 425 
 426         if (dtListener != null && active) dtListener.dragExit(dte);
 427 
 428         clearAutoscroll();
 429     }
 430 
 431     /**
 432      * Calls <code>drop</code> on the registered
 433      * <code>DropTargetListener</code> and passes it
 434      * the specified <code>DropTargetDropEvent</code>
 435      * if this <code>DropTarget</code> is active.
 436      *
 437      * @param dtde the <code>DropTargetDropEvent</code>
 438      *
 439      * @throws NullPointerException if <code>dtde</code> is null
 440      *         and at least one of the following is true: this
 441      *         <code>DropTarget</code> is not active, or there is
 442      *         no a <code>DropTargetListener</code> registered.
 443      *
 444      * @see #isActive
 445      */
 446     public synchronized void drop(DropTargetDropEvent dtde) {


 447         clearAutoscroll();
 448 
 449         if (dtListener != null && active)
 450             dtListener.drop(dtde);
 451         else { // we should'nt get here ...
 452             dtde.rejectDrop();
 453         }
 454     }
 455 
 456     /**
 457      * Gets the <code>FlavorMap</code>
 458      * associated with this <code>DropTarget</code>.
 459      * If no <code>FlavorMap</code> has been set for this
 460      * <code>DropTarget</code>, it is associated with the default
 461      * <code>FlavorMap</code>.
 462      * <P>
 463      * @return the FlavorMap for this DropTarget
 464      */
 465 
 466     public FlavorMap getFlavorMap() { return flavorMap; }


 515     /**
 516      * Notify the DropTarget that it has been disassociated from a Component
 517      *
 518      **********************************************************************
 519      * This method is usually called from java.awt.Component.removeNotify() of
 520      * the Component associated with this DropTarget to notify the DropTarget
 521      * that a ComponentPeer has been disassociated with that Component.
 522      *
 523      * Calling this method, other than to notify this DropTarget of the
 524      * disassociation of the ComponentPeer from the Component may result in
 525      * a malfunction of the DnD system.
 526      **********************************************************************
 527      * <P>
 528      * @param peer The Peer of the Component we are being disassociated from!
 529      */
 530 
 531     public void removeNotify(ComponentPeer peer) {
 532         if (nativePeer != null)
 533             ((DropTargetPeer)nativePeer).removeDropTarget(this);
 534 




 535         componentPeer = nativePeer = null;
 536     }
 537 
 538     /**
 539      * Gets the <code>DropTargetContext</code> associated
 540      * with this <code>DropTarget</code>.
 541      * <P>
 542      * @return the <code>DropTargetContext</code> associated with this <code>DropTarget</code>.
 543      */
 544 
 545     public DropTargetContext getDropTargetContext() {
 546         return dropTargetContext;
 547     }
 548 
 549     /**
 550      * Creates the DropTargetContext associated with this DropTarget.
 551      * Subclasses may override this method to instantiate their own
 552      * DropTargetContext subclass.
 553      *
 554      * This call is typically *only* called by the platform's


 838      */
 839     boolean active = true;
 840 
 841     /*
 842      * the auto scrolling object
 843      */
 844 
 845     private transient DropTargetAutoScroller autoScroller;
 846 
 847     /*
 848      * The delegate
 849      */
 850 
 851     private transient DropTargetListener dtListener;
 852 
 853     /*
 854      * The FlavorMap
 855      */
 856 
 857     private transient FlavorMap flavorMap;





 858 }


 334             else
 335                 throw new IllegalArgumentException("listener mismatch");
 336         }
 337     }
 338 
 339     /**
 340      * Calls <code>dragEnter</code> on the registered
 341      * <code>DropTargetListener</code> and passes it
 342      * the specified <code>DropTargetDragEvent</code>.
 343      * Has no effect if this <code>DropTarget</code>
 344      * is not active.
 345      *
 346      * @param dtde the <code>DropTargetDragEvent</code>
 347      *
 348      * @throws NullPointerException if this <code>DropTarget</code>
 349      *         is active and <code>dtde</code> is <code>null</code>
 350      *
 351      * @see #isActive
 352      */
 353     public synchronized void dragEnter(DropTargetDragEvent dtde) {
 354         isDraggingInside = true;
 355 
 356         if (!active) return;
 357 
 358         if (dtListener != null) {
 359             dtListener.dragEnter(dtde);
 360         } else
 361             dtde.getDropTargetContext().setTargetActions(DnDConstants.ACTION_NONE);
 362 
 363         initializeAutoscrolling(dtde.getLocation());
 364     }
 365 
 366     /**
 367      * Calls <code>dragOver</code> on the registered
 368      * <code>DropTargetListener</code> and passes it
 369      * the specified <code>DropTargetDragEvent</code>.
 370      * Has no effect if this <code>DropTarget</code>
 371      * is not active.
 372      *
 373      * @param dtde the <code>DropTargetDragEvent</code>
 374      *
 375      * @throws NullPointerException if this <code>DropTarget</code>


 406 
 407         updateAutoscroll(dtde.getLocation());
 408     }
 409 
 410     /**
 411      * Calls <code>dragExit</code> on the registered
 412      * <code>DropTargetListener</code> and passes it
 413      * the specified <code>DropTargetEvent</code>.
 414      * Has no effect if this <code>DropTarget</code>
 415      * is not active.
 416      * <p>
 417      * This method itself does not throw any exception
 418      * for null parameter but for exceptions thrown by
 419      * the respective method of the listener.
 420      *
 421      * @param dte the <code>DropTargetEvent</code>
 422      *
 423      * @see #isActive
 424      */
 425     public synchronized void dragExit(DropTargetEvent dte) {
 426         isDraggingInside = false;
 427 
 428         if (!active) return;
 429 
 430         if (dtListener != null && active) dtListener.dragExit(dte);
 431 
 432         clearAutoscroll();
 433     }
 434 
 435     /**
 436      * Calls <code>drop</code> on the registered
 437      * <code>DropTargetListener</code> and passes it
 438      * the specified <code>DropTargetDropEvent</code>
 439      * if this <code>DropTarget</code> is active.
 440      *
 441      * @param dtde the <code>DropTargetDropEvent</code>
 442      *
 443      * @throws NullPointerException if <code>dtde</code> is null
 444      *         and at least one of the following is true: this
 445      *         <code>DropTarget</code> is not active, or there is
 446      *         no a <code>DropTargetListener</code> registered.
 447      *
 448      * @see #isActive
 449      */
 450     public synchronized void drop(DropTargetDropEvent dtde) {
 451         isDraggingInside = false;
 452 
 453         clearAutoscroll();
 454 
 455         if (dtListener != null && active)
 456             dtListener.drop(dtde);
 457         else { // we should'nt get here ...
 458             dtde.rejectDrop();
 459         }
 460     }
 461 
 462     /**
 463      * Gets the <code>FlavorMap</code>
 464      * associated with this <code>DropTarget</code>.
 465      * If no <code>FlavorMap</code> has been set for this
 466      * <code>DropTarget</code>, it is associated with the default
 467      * <code>FlavorMap</code>.
 468      * <P>
 469      * @return the FlavorMap for this DropTarget
 470      */
 471 
 472     public FlavorMap getFlavorMap() { return flavorMap; }


 521     /**
 522      * Notify the DropTarget that it has been disassociated from a Component
 523      *
 524      **********************************************************************
 525      * This method is usually called from java.awt.Component.removeNotify() of
 526      * the Component associated with this DropTarget to notify the DropTarget
 527      * that a ComponentPeer has been disassociated with that Component.
 528      *
 529      * Calling this method, other than to notify this DropTarget of the
 530      * disassociation of the ComponentPeer from the Component may result in
 531      * a malfunction of the DnD system.
 532      **********************************************************************
 533      * <P>
 534      * @param peer The Peer of the Component we are being disassociated from!
 535      */
 536 
 537     public void removeNotify(ComponentPeer peer) {
 538         if (nativePeer != null)
 539             ((DropTargetPeer)nativePeer).removeDropTarget(this);
 540 
 541         if (isDraggingInside) {
 542             dragExit(new DropTargetEvent(getDropTargetContext()));
 543         }
 544 
 545         componentPeer = nativePeer = null;
 546     }
 547 
 548     /**
 549      * Gets the <code>DropTargetContext</code> associated
 550      * with this <code>DropTarget</code>.
 551      * <P>
 552      * @return the <code>DropTargetContext</code> associated with this <code>DropTarget</code>.
 553      */
 554 
 555     public DropTargetContext getDropTargetContext() {
 556         return dropTargetContext;
 557     }
 558 
 559     /**
 560      * Creates the DropTargetContext associated with this DropTarget.
 561      * Subclasses may override this method to instantiate their own
 562      * DropTargetContext subclass.
 563      *
 564      * This call is typically *only* called by the platform's


 848      */
 849     boolean active = true;
 850 
 851     /*
 852      * the auto scrolling object
 853      */
 854 
 855     private transient DropTargetAutoScroller autoScroller;
 856 
 857     /*
 858      * The delegate
 859      */
 860 
 861     private transient DropTargetListener dtListener;
 862 
 863     /*
 864      * The FlavorMap
 865      */
 866 
 867     private transient FlavorMap flavorMap;
 868 
 869     /*
 870      * If the dragging is currently inside this drop target
 871      */
 872     private transient boolean isDraggingInside;
 873 }