public class FileDrop extends Object
java.awt.Component can be dropped onto, but only
javax.swing.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 javax.swing.border.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, rob@iharder.net
Additional support:
| Modifier and Type | Class and Description |
|---|---|
static interface |
FileDrop.Listener
Implement this inner interface to listen for when files are dropped.
|
| Modifier | Constructor and Description |
|---|---|
protected |
FileDrop(Component c,
boolean recursive,
FileDrop.Listener listener)
Constructor with a default border and the option to recursively set drop
targets.
|
protected |
FileDrop(Component c,
Border dragBorder,
boolean recursive,
FileDrop.Listener listener)
Constructor with a specified border and the option to recursively set
drop targets.
|
protected |
FileDrop(Component c,
Border dragBorder,
FileDrop.Listener listener)
Constructor with a specified border
|
|
FileDrop(Component c,
FileDrop.Listener listener)
|
protected |
FileDrop(PrintStream out,
Component c,
boolean recursive,
FileDrop.Listener listener)
Constructor with a default border, debugging optionally turned on and the
option to recursively set drop targets.
|
protected |
FileDrop(PrintStream out,
Component c,
Border dragBorder,
boolean recursive,
FileDrop.Listener listener)
Full constructor with a specified border and debugging optionally turned
on.
|
protected |
FileDrop(PrintStream out,
Component c,
Border dragBorder,
FileDrop.Listener listener)
Constructor with a specified border and debugging optionally turned on.
|
protected |
FileDrop(PrintStream out,
Component c,
FileDrop.Listener listener)
Constructor with a default border and debugging optionally turned on.
|
| Modifier and Type | Method and Description |
|---|---|
static boolean |
remove(Component c)
Removes the drag-and-drop hooks from the component and optionally from
the all children.
|
protected static boolean |
remove(PrintStream out,
Component c,
boolean recursive)
Removes the drag-and-drop hooks from the component and optionally from
the all children.
|
public FileDrop(Component c, FileDrop.Listener listener)
FileDrop with a default light-blue border and, if
c is a Container, recursively sets all
elements contained within as drop targets, though only the top level
container will change borders.c - Component on which files will be dropped.listener - Listens for filesDropped.protected FileDrop(Component c, boolean recursive, FileDrop.Listener listener)
java.awt.Container, then each of
its children components will also listen for drops, though only the
parent will change borders.c - Component on which files will be dropped.recursive - Recursively set children as drop targets.listener - Listens for filesDropped.protected FileDrop(PrintStream out, Component c, FileDrop.Listener listener)
out. A common way to use this constructor is with
System.out or System.err. A null value for the
parameter out will result in no debugging output.out - PrintStream to record debugging info or null for no debugging.c - Component on which files will be dropped.listener - Listens for filesDropped.protected FileDrop(PrintStream out, Component c, boolean recursive, FileDrop.Listener listener)
java.awt.Container, then each of its children components will
also listen for drops, though only the parent will change borders. With
Debugging turned on, more status messages will be displayed to
out. A common way to use this constructor is with
System.out or System.err. A null value for the
parameter out will result in no debugging output.out - PrintStream to record debugging info or null for no debugging.c - Component on which files will be dropped.recursive - Recursively set children as drop targets.listener - Listens for filesDropped.protected FileDrop(Component c, Border dragBorder, FileDrop.Listener listener)
c - Component on which files will be dropped.dragBorder - Border to use on JComponent when dragging occurs.listener - Listens for filesDropped.protected FileDrop(Component c, Border dragBorder, boolean recursive, FileDrop.Listener listener)
java.awt.Container, then
each of its children components will also listen for drops, though only
the parent will change borders.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.protected FileDrop(PrintStream out, Component c, Border dragBorder, FileDrop.Listener listener)
out. A common way to use this constructor is with
System.out or System.err. A null value for the
parameter out will result in no debugging output.out - PrintStream to record debugging info or null for no debugging.c - Component on which files will be dropped.dragBorder - Border to use on JComponent when dragging occurs.listener - Listens for filesDropped.protected FileDrop(PrintStream out, Component c, Border dragBorder, boolean recursive, FileDrop.Listener listener)
out. A common way to use this constructor is with
System.out or System.err. A null value for the
parameter out will result in no debugging output.out - PrintStream to record debugging info or null for no debugging.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.public static boolean remove(Component c)
Container.c - The component to unregister as a drop targetprotected static boolean remove(PrintStream out, Component c, boolean recursive)
out - Optional PrintStream for logging drag and drop
messagesc - The component to unregisterrecursive - Recursively unregister components within a containerCopyright © 2009–2023 SciJava. All rights reserved.