|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.swing.plaf.basic.BasicDropTargetListener
The Swing DropTarget implementation supports multicast notification to listeners, so this implementation is used as an additional listener that extends the primary drop target functionality (i.e. linkage to the TransferHandler) to include autoscroll and establish an insertion point for the drop. This is used by the ComponentUI of components supporting a selection mechanism, which have a way of indicating a location within their model.
The autoscroll functionality is based upon the Swing scrolling mechanism of the Scrollable interface. The unit scroll increment is used to as the scroll amount, and the scrolling is based upon JComponent.getVisibleRect and JComponent.scrollRectToVisible. The band of area around the visible rectangle used to invoke autoscroll is based upon the unit scroll increment as that is assumed to represent the last possible item in the visible region.
The subclasses are expected to implement the following methods to manage the insertion location via the components selection mechanism.
Field Summary | |
private boolean |
canImport
|
private JComponent |
component
The current component. |
private int |
hysteresis
|
private Rectangle |
inner
|
private Point |
lastPosition
|
private Rectangle |
outer
|
private Timer |
timer
|
Constructor Summary | |
protected |
BasicDropTargetListener()
construct a DropTargetAutoScroller |
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. |
private void |
cleanup()
Cleans up internal state after the drop has finished (either succeeded or failed). |
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)
|
private void |
initPropertiesIfNecessary()
Initializes the internal properties if they haven't been already inited. |
protected void |
restoreComponentState(JComponent c)
called to restore the state of a component in case a drop is 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 c)
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 c,
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 |
private Timer timer
private Point lastPosition
private Rectangle outer
private Rectangle inner
private int hysteresis
private boolean canImport
private JComponent component
Constructor Detail |
protected BasicDropTargetListener()
Method Detail |
protected void saveComponentState(JComponent c)
protected void restoreComponentState(JComponent c)
protected void restoreComponentStateForDrop(JComponent c)
protected void updateInsertionLocation(JComponent c, Point p)
void updateAutoscrollRegion(JComponent c)
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).
void autoscroll(JComponent c, Point pos)
private void initPropertiesIfNecessary()
static JComponent getComponent(DropTargetEvent e)
public void actionPerformed(ActionEvent e)
actionPerformed
in interface ActionListener
e
- the ActionEvent
public void dragEnter(DropTargetDragEvent e)
DropTargetListener
DropTarget
registered with this listener.
dragEnter
in interface DropTargetListener
e
- the DropTargetDragEvent
public void dragOver(DropTargetDragEvent e)
DropTargetListener
DropTarget
registered with this listener.
dragOver
in interface DropTargetListener
e
- the DropTargetDragEvent
public void dragExit(DropTargetEvent e)
DropTargetListener
DropTarget
registered with this listener.
dragExit
in interface DropTargetListener
e
- the DropTargetEvent
public void drop(DropTargetDropEvent e)
DropTargetListener
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.
drop
in interface DropTargetListener
e
- the DropTargetDropEvent
public void dropActionChanged(DropTargetDragEvent e)
DropTargetListener
dropActionChanged
in interface DropTargetListener
e
- the DropTargetDragEvent
private void cleanup()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |