public static final class TransferHandler.TransferSupport extends Object
The main purpose of this class is to provide the information needed by a developer to determine the suitability of a transfer or to import the data contained within. But it also doubles as a controller for customizing properties during drag and drop, such as whether or not to show the drop location, and which drop action to use.
Developers typically need not create instances of this
class. Instead, they are something provided by the DnD
implementation to certain methods in TransferHandler
.
Constructor and Description |
---|
TransferSupport(Component component,
Transferable transferable)
Create a
TransferSupport with isDrop()
false for the given component and
Transferable . |
Modifier and Type | Method and Description |
---|---|
Component |
getComponent()
Returns the target component of this transfer.
|
DataFlavor[] |
getDataFlavors()
Returns the data flavors for this transfer.
|
int |
getDropAction()
Returns the action chosen for the drop, when this
TransferSupport represents a drop. |
TransferHandler.DropLocation |
getDropLocation()
Returns the current (non-
null ) drop location for the component,
when this TransferSupport represents a drop. |
int |
getSourceDropActions()
Returns the drag source's supported drop actions, when this
TransferSupport represents a drop. |
Transferable |
getTransferable()
Returns the
Transferable associated with this transfer. |
int |
getUserDropAction()
Returns the user drop action for the drop, when this
TransferSupport represents a drop. |
boolean |
isDataFlavorSupported(DataFlavor df)
Returns whether or not the given data flavor is supported.
|
boolean |
isDrop()
Returns whether or not this
TransferSupport
represents a drop operation. |
void |
setDropAction(int dropAction)
Sets the drop action for the transfer - which must represent a drop
- to the given action,
instead of the default user drop action.
|
void |
setShowDropLocation(boolean showDropLocation)
Sets whether or not the drop location should be visually indicated
for the transfer - which must represent a drop.
|
public TransferSupport(Component component, Transferable transferable)
TransferSupport
with isDrop()
false
for the given component and
Transferable
.component
- the target componenttransferable
- the transferableNullPointerException
- if either parameter
is null
public boolean isDrop()
TransferSupport
represents a drop operation.true
if this is a drop operation,
false
otherwise.public Component getComponent()
public TransferHandler.DropLocation getDropLocation()
null
) drop location for the component,
when this TransferSupport
represents a drop.
Note: For components with built-in drop support, this location
will be a subclass of DropLocation
of the same type
returned by that component's getDropLocation
method.
This method is only for use with drag and drop transfers.
Calling it when isDrop()
is false
results
in an IllegalStateException
.
IllegalStateException
- if this is not a dropisDrop()
public void setShowDropLocation(boolean showDropLocation)
TransferHandler
has said it can accept the import represented
by this TransferSupport
. With this method you can force the
drop location to always be shown, or always not be shown.
This method is only for use with drag and drop transfers.
Calling it when isDrop()
is false
results
in an IllegalStateException
.
showDropLocation
- whether or not to indicate the drop locationIllegalStateException
- if this is not a dropisDrop()
public void setDropAction(int dropAction)
COPY
, MOVE
or LINK
.
This method is only for use with drag and drop transfers.
Calling it when isDrop()
is false
results
in an IllegalStateException
.
dropAction
- the drop actionIllegalStateException
- if this is not a dropIllegalArgumentException
- if an invalid action is specifiedgetDropAction()
,
getUserDropAction()
,
getSourceDropActions()
,
isDrop()
public int getDropAction()
TransferSupport
represents a drop.
Unless explicitly chosen by way of setDropAction
,
this returns the user drop action provided by
getUserDropAction
.
You may wish to query this in TransferHandler
's
importData
method to customize processing based
on the action.
This method is only for use with drag and drop transfers.
Calling it when isDrop()
is false
results
in an IllegalStateException
.
IllegalStateException
- if this is not a dropsetDropAction(int)
,
getUserDropAction()
,
isDrop()
public int getUserDropAction()
TransferSupport
represents a drop.
The user drop action is chosen for a drop as described in the
documentation for DropTargetDragEvent
and
DropTargetDropEvent
. A different action
may be chosen as the drop action by way of the setDropAction
method.
You may wish to query this in TransferHandler
's
canImport
method when determining the suitability of a
drop or when deciding on a drop action to explicitly choose.
This method is only for use with drag and drop transfers.
Calling it when isDrop()
is false
results
in an IllegalStateException
.
IllegalStateException
- if this is not a dropsetDropAction(int)
,
getDropAction()
,
isDrop()
public int getSourceDropActions()
TransferSupport
represents a drop.
The source actions represent the set of actions supported by the
source of this transfer, and are represented as some bitwise-OR
combination of COPY
, MOVE
and LINK
.
You may wish to query this in TransferHandler
's
canImport
method when determining the suitability of a drop
or when deciding on a drop action to explicitly choose. To determine
if a particular action is supported by the source, bitwise-AND
the action with the source drop actions, and then compare the result
against the original action. For example:
boolean copySupported = (COPY & getSourceDropActions()) == COPY;
This method is only for use with drag and drop transfers.
Calling it when isDrop()
is false
results
in an IllegalStateException
.
IllegalStateException
- if this is not a dropisDrop()
public DataFlavor[] getDataFlavors()
public boolean isDataFlavorSupported(DataFlavor df)
df
- the DataFlavor
to testpublic Transferable getTransferable()
Transferable
associated with this transfer.
Note: Unless it is necessary to fetch the Transferable
directly, use one of the other methods on this class to inquire about
the transfer. This may perform better than fetching the
Transferable
and asking it directly.
Transferable
associated with this transfer Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2023, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.