public class FileDrop extends java.lang.Object
Component can be
dropped onto, but only JComponents will indicate
the drop event with a changed border.
To use this class, construct a new FileDrop by passing it the target component and a Listener to receive notification when file(s) have been dropped. Here is an example:
JPanel myPanel = new JPanel();
new FileDrop( myPanel, new FileDrop.Listener()
{ public void filesDropped( java.io.File[] files )
{
// handle file drop
...
} // end filesDropped
}); // end FileDrop.Listener
You can specify the border that will appear when files are being dragged by
calling the constructor with a Border. Only
JComponents will show any indication with a border.
You can turn on some debugging features by passing a PrintStream object (such as System.out) into the full constructor. A null value will result in no extra debugging information being output.
I'm releasing this code into the Public Domain. Enjoy.
Original author: Robert Harder, rharder@usa.net
2007-09-12 Nathan Blomquist -- Linux (KDE/Gnome) support added.
| Modifier and Type | Class and Description |
|---|---|
static interface |
FileDrop.Listener
Implement this inner interface to listen for when files are dropped.
|
static class |
FileDrop.TransferableObject
At last an easy way to encapsulate your custom objects for dragging and dropping
in your Java programs!
When you need to create a
Transferable object,
use this class to wrap your object. |
| Modifier and Type | Field and Description |
|---|---|
private static java.awt.Color |
defaultBorderColor |
private java.awt.dnd.DropTargetListener |
dropListener |
private javax.swing.border.Border |
normalBorder |
private static java.lang.Boolean |
supportsDnD
Discover if the running JVM is modern enough to have drag and drop.
|
private static java.lang.String |
ZERO_CHAR_STRING |
| Constructor and Description |
|---|
FileDrop(java.awt.Component c)
Constructor for JOSM file drop
|
FileDrop(java.awt.Component c,
javax.swing.border.Border dragBorder,
boolean recursive,
FileDrop.Listener listener)
Full constructor with a specified border and debugging optionally turned on.
|
| Modifier and Type | Method and Description |
|---|---|
private static java.io.File[] |
createFileArray(java.io.BufferedReader bReader) |
private boolean |
isDragOk(java.awt.dnd.DropTargetDragEvent evt)
Determine if the dragged data is a file list.
|
private void |
makeDropTarget(java.awt.Component c,
boolean recursive) |
static boolean |
remove(java.awt.Component c)
Removes the drag-and-drop hooks from the component and optionally
from the all children.
|
static boolean |
remove(java.awt.Component c,
boolean recursive)
Removes the drag-and-drop hooks from the component and optionally
from the all children.
|
private static boolean |
supportsDnD() |
private transient javax.swing.border.Border normalBorder
private transient java.awt.dnd.DropTargetListener dropListener
private static java.lang.Boolean supportsDnD
private static java.awt.Color defaultBorderColor
private static final java.lang.String ZERO_CHAR_STRING
public FileDrop(java.awt.Component c)
c - The drop targetpublic FileDrop(java.awt.Component c, javax.swing.border.Border dragBorder, boolean recursive, FileDrop.Listener listener)
c - Component on which files will be dropped.dragBorder - Border to use on JComponent when dragging occurs.recursive - Recursively set children as drop targets.listener - Listens for filesDropped.private static boolean supportsDnD()
private static java.io.File[] createFileArray(java.io.BufferedReader bReader)
private void makeDropTarget(java.awt.Component c, boolean recursive)
private boolean isDragOk(java.awt.dnd.DropTargetDragEvent evt)
public static boolean remove(java.awt.Component c)
Container.c - The component to unregister as a drop targettrue if at least one item has been removed, false otherwisepublic static boolean remove(java.awt.Component c, boolean recursive)
c - The component to unregisterrecursive - Recursively unregister components within a containertrue if at least one item has been removed, false otherwise