Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.embl.ebi.escience.scuflui.workbench
Class FileDrop  view FileDrop download FileDrop.java

java.lang.Object
  extended byorg.embl.ebi.escience.scuflui.workbench.FileDrop

public class FileDrop
extends java.lang.Object

This class makes it easy to drag and drop files from the operating system to a Java program. Any 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, rharder@usa.net

Version:
1.0

Nested Class Summary
static interface FileDrop.Listener
          Implement this inner interface to listen for when files are dropped.
 
Field Summary
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.
 
Constructor Summary
FileDrop(java.awt.Component c, boolean recursive, FileDrop.Listener listener)
          Constructor with a default border and the option to recursively set drop targets.
FileDrop(java.awt.Component c, javax.swing.border.Border dragBorder, boolean recursive, FileDrop.Listener listener)
          Constructor with a specified border and the option to recursively set drop targets.
FileDrop(java.awt.Component c, javax.swing.border.Border dragBorder, FileDrop.Listener listener)
          Constructor with a specified border
FileDrop(java.awt.Component c, FileDrop.Listener listener)
          Constructs a FileDrop with a default light-blue border and, if c is a java.awt.Container, recursively sets all elements contained within as drop targets, though only the top level container will change borders.
FileDrop(java.io.PrintStream out, java.awt.Component c, boolean recursive, FileDrop.Listener listener)
          Constructor with a default border, debugging optionally turned on and the option to recursively set drop targets.
FileDrop(java.io.PrintStream out, 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.
FileDrop(java.io.PrintStream out, java.awt.Component c, javax.swing.border.Border dragBorder, FileDrop.Listener listener)
          Constructor with a specified border and debugging optionally turned on.
FileDrop(java.io.PrintStream out, java.awt.Component c, FileDrop.Listener listener)
          Constructor with a default border and debugging optionally turned on.
 
Method Summary
private  boolean isDragOk(java.io.PrintStream out, java.awt.dnd.DropTargetDragEvent evt)
          Determine if the dragged data is a file list.
private static void log(java.io.PrintStream out, java.lang.String message)
          Outputs message to out if it's not null.
static void main(java.lang.String[] args)
          Runs a sample program that shows dropped files
private  void makeDropTarget(java.io.PrintStream out, 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.io.PrintStream out, 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()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

normalBorder

private transient javax.swing.border.Border normalBorder

dropListener

private transient java.awt.dnd.DropTargetListener dropListener

supportsDnD

private static java.lang.Boolean supportsDnD
Discover if the running JVM is modern enough to have drag and drop.


defaultBorderColor

private static java.awt.Color defaultBorderColor
Constructor Detail

FileDrop

public FileDrop(java.awt.Component c,
                FileDrop.Listener listener)
Constructs a FileDrop with a default light-blue border and, if c is a java.awt.Container, recursively sets all elements contained within as drop targets, though only the top level container will change borders.

Since:
1.0

FileDrop

public FileDrop(java.awt.Component c,
                boolean recursive,
                FileDrop.Listener listener)
Constructor with a default border and the option to recursively set drop targets. If your component is a java.awt.Container, then each of its children components will also listen for drops, though only the parent will change borders.

Since:
1.0

FileDrop

public FileDrop(java.io.PrintStream out,
                java.awt.Component c,
                FileDrop.Listener listener)
Constructor with a default border and debugging optionally turned on. 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.

Since:
1.0

FileDrop

public FileDrop(java.io.PrintStream out,
                java.awt.Component c,
                boolean recursive,
                FileDrop.Listener listener)
Constructor with a default border, debugging optionally turned on and the option to recursively set drop targets. If your component is a 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.

Since:
1.0

FileDrop

public FileDrop(java.awt.Component c,
                javax.swing.border.Border dragBorder,
                FileDrop.Listener listener)
Constructor with a specified border

Since:
1.0

FileDrop

public FileDrop(java.awt.Component c,
                javax.swing.border.Border dragBorder,
                boolean recursive,
                FileDrop.Listener listener)
Constructor with a specified border and the option to recursively set drop targets. If your component is a java.awt.Container, then each of its children components will also listen for drops, though only the parent will change borders.

Since:
1.0

FileDrop

public FileDrop(java.io.PrintStream out,
                java.awt.Component c,
                javax.swing.border.Border dragBorder,
                FileDrop.Listener listener)
Constructor with a specified border and debugging optionally turned on. 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.

Since:
1.0

FileDrop

public FileDrop(java.io.PrintStream out,
                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. 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.

Since:
1.0
Method Detail

supportsDnD

private static boolean supportsDnD()

makeDropTarget

private void makeDropTarget(java.io.PrintStream out,
                            java.awt.Component c,
                            boolean recursive)

isDragOk

private boolean isDragOk(java.io.PrintStream out,
                         java.awt.dnd.DropTargetDragEvent evt)
Determine if the dragged data is a file list.


log

private static void log(java.io.PrintStream out,
                        java.lang.String message)
Outputs message to out if it's not null.


remove

public static boolean remove(java.awt.Component c)
Removes the drag-and-drop hooks from the component and optionally from the all children. You should call this if you add and remove components after you've set up the drag-and-drop. This will recursively unregister all components contained within c if c is a java.awt.Container.

Since:
1.0

remove

public static boolean remove(java.io.PrintStream out,
                             java.awt.Component c,
                             boolean recursive)
Removes the drag-and-drop hooks from the component and optionally from the all children. You should call this if you add and remove components after you've set up the drag-and-drop.

Since:
1.0

main

public static void main(java.lang.String[] args)
Runs a sample program that shows dropped files