javax.swing.plaf.basic
Class BasicListUI.ListDropTargetListener

java.lang.Object
  extended byjavax.swing.plaf.basic.BasicDropTargetListener
      extended byjavax.swing.plaf.basic.BasicListUI.ListDropTargetListener
All Implemented Interfaces:
ActionListener, DropTargetListener, EventListener, UIResource
Enclosing class:
BasicListUI

class BasicListUI.ListDropTargetListener
extends BasicDropTargetListener

A DropTargetListener to extend the default Swing handling of drop operations by moving the list selection to the nearest location to the mouse pointer. Also adds autoscroll.


Field Summary
private  int[] selectedIndices
           
 
Constructor Summary
(package private) BasicListUI.ListDropTargetListener()
           
 
Method Summary
 void actionPerformed(ActionEvent e)
          The timer fired, perform autoscroll if the pointer is within the autoscroll region.
(package private)  void autoscroll(JComponent c, Point pos)
          Perform an autoscroll operation.
 void dragEnter(DropTargetDragEvent e)
          Called while a drag operation is ongoing, when the mouse pointer enters the operable part of the drop site for the DropTarget registered with this listener.
 void dragExit(DropTargetEvent e)
          Called while a drag operation is ongoing, when the mouse pointer has exited the operable part of the drop site for the DropTarget registered with this listener.
 void dragOver(DropTargetDragEvent e)
          Called when a drag operation is ongoing, while the mouse pointer is still over the operable part of the drop site for the DropTarget registered with this listener.
 void drop(DropTargetDropEvent e)
          Called when the drag operation has terminated with a drop on the operable part of the drop site for the DropTarget registered with this listener.
 void dropActionChanged(DropTargetDragEvent e)
          Called if the user has modified the current drop gesture.
(package private) static JComponent getComponent(DropTargetEvent e)
           
protected  void restoreComponentState(JComponent comp)
          called to restore the state of a component because a drop was not performed.
protected  void restoreComponentStateForDrop(JComponent c)
          called to restore the state of a component in case a drop is performed.
protected  void saveComponentState(JComponent comp)
          called to save the state of a component in case it needs to be restored because a drop is not performed.
(package private)  void updateAutoscrollRegion(JComponent c)
          Update the geometry of the autoscroll region.
protected  void updateInsertionLocation(JComponent comp, Point p)
          called to set the insertion location to match the current mouse pointer coordinates.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

selectedIndices

private int[] selectedIndices
Constructor Detail

BasicListUI.ListDropTargetListener

BasicListUI.ListDropTargetListener()
Method Detail

saveComponentState

protected void saveComponentState(JComponent comp)
called to save the state of a component in case it needs to be restored because a drop is not performed.

Overrides:
saveComponentState in class BasicDropTargetListener

restoreComponentState

protected void restoreComponentState(JComponent comp)
called to restore the state of a component because a drop was not performed.

Overrides:
restoreComponentState in class BasicDropTargetListener

updateInsertionLocation

protected void updateInsertionLocation(JComponent comp,
                                       Point p)
called to set the insertion location to match the current mouse pointer coordinates.

Overrides:
updateInsertionLocation in class BasicDropTargetListener

restoreComponentStateForDrop

protected void restoreComponentStateForDrop(JComponent c)
called to restore the state of a component in case a drop is performed.


updateAutoscrollRegion

void updateAutoscrollRegion(JComponent c)
Update the geometry of the autoscroll region. The geometry is maintained as a pair of rectangles. The region can cause a scroll if the pointer sits inside it for the duration of the timer. The region that causes the timer countdown is the area between the two rectangles.

This is implemented to use the visible area of the component as the outer rectangle and the insets are based upon the Scrollable information (if any). If the Scrollable is scrollable along an axis, the step increment is used as the autoscroll inset. If the component is not scrollable, the insets will be zero (i.e. autoscroll will not happen).


autoscroll

void autoscroll(JComponent c,
                Point pos)
Perform an autoscroll operation. This is implemented to scroll by the unit increment of the Scrollable using scrollRectToVisible. If the cursor is in a corner of the autoscroll region, more than one axis will scroll.


getComponent

static JComponent getComponent(DropTargetEvent e)

actionPerformed

public void actionPerformed(ActionEvent e)
The timer fired, perform autoscroll if the pointer is within the autoscroll region.

Specified by:
actionPerformed in interface ActionListener
Parameters:
e - the ActionEvent

dragEnter

public void dragEnter(DropTargetDragEvent e)
Description copied from interface: DropTargetListener
Called while a drag operation is ongoing, when the mouse pointer enters the operable part of the drop site for the DropTarget registered with this listener.

Specified by:
dragEnter in interface DropTargetListener
Parameters:
e - the DropTargetDragEvent

dragOver

public void dragOver(DropTargetDragEvent e)
Description copied from interface: DropTargetListener
Called when a drag operation is ongoing, while the mouse pointer is still over the operable part of the drop site for the DropTarget registered with this listener.

Specified by:
dragOver in interface DropTargetListener
Parameters:
e - the DropTargetDragEvent

dragExit

public void dragExit(DropTargetEvent e)
Description copied from interface: DropTargetListener
Called while a drag operation is ongoing, when the mouse pointer has exited the operable part of the drop site for the DropTarget registered with this listener.

Specified by:
dragExit in interface DropTargetListener
Parameters:
e - the DropTargetEvent

drop

public void drop(DropTargetDropEvent e)
Description copied from interface: DropTargetListener
Called when the drag operation has terminated with a drop on the operable part of the drop site for the DropTarget registered with this listener.

This method is responsible for undertaking the transfer of the data associated with the gesture. The DropTargetDropEvent provides a means to obtain a Transferable object that represents the data object(s) to be transfered.

From this method, the DropTargetListener shall accept or reject the drop via the acceptDrop(int dropAction) or rejectDrop() methods of the DropTargetDropEvent parameter.

Subsequent to acceptDrop(), but not before, DropTargetDropEvent's getTransferable() method may be invoked, and data transfer may be performed via the returned Transferable's getTransferData() method.

At the completion of a drop, an implementation of this method is required to signal the success/failure of the drop by passing an appropriate boolean to the DropTargetDropEvent's dropComplete(boolean success) method.

Note: The data transfer should be completed before the call to the DropTargetDropEvent's dropComplete(boolean success) method. After that, a call to the getTransferData() method of the Transferable returned by DropTargetDropEvent.getTransferable() is guaranteed to succeed only if the data transfer is local; that is, only if DropTargetDropEvent.isLocalTransfer() returns true. Otherwise, the behavior of the call is implementation-dependent.

Specified by:
drop in interface DropTargetListener
Parameters:
e - the DropTargetDropEvent

dropActionChanged

public void dropActionChanged(DropTargetDragEvent e)
Description copied from interface: DropTargetListener
Called if the user has modified the current drop gesture.

Specified by:
dropActionChanged in interface DropTargetListener
Parameters:
e - the DropTargetDragEvent