Revision: 30689
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 19, 2010 12:24 by laurenceosx
Initial Code
import java.awt.datatransfer.*; import java.awt.dnd.*; public class TFileDropHandler { // TFileDropHandler.groovy // Laurence Toenjes - 2010-08-18 // Based on 1999 example from Cay Horstmann found at // http://java.itags.org/java-core-gui-apis/33457/ // dropped files closure example: { files -> println files }; def TFileDropHandler( aSwingControl, Closure a_onDroppedFiles ) { // ctor def dropTarget = new DropTarget( aSwingControl, new TFileDropTargetListener( a_onDroppedFiles ) ) aSwingControl.setDropTarget( dropTarget ) } // -------------------------------------------------------- class TFileDropTargetListener implements DropTargetListener { def Closure onDroppedFiles = null // our callback event public TFileDropTargetListener( a_onDroppedFiles ) { // ctor onDroppedFiles = a_onDroppedFiles } public void dragEnter(DropTargetDragEvent event) {} public void dragExit(DropTargetEvent event) {} public void dropActionChanged(DropTargetDragEvent event) {} public void dragOver(DropTargetDragEvent event) { // provide visual feedback event.acceptDrag(DnDConstants.ACTION_COPY); } public void drop(DropTargetDropEvent event) { if ( (event.getSourceActions() & DnDConstants.ACTION_COPY) != 0 ) { event.acceptDrop(DnDConstants.ACTION_COPY); } else { event.rejectDrop(); return; // !!!!!!!!!!!!!!!!!!!!! } Transferable transferable = event.getTransferable(); DataFlavor[] flavors = event.getCurrentDataFlavors(); for (int i = 0; i < flavors.length; i++) { DataFlavor dataFlavor = flavors[i]; try { // file flavor if ( dataFlavor.equals( DataFlavor.javaFileListFlavor ) ) { java.util.List fileList = (java.util.List) transferable.getTransferData(dataFlavor); def files = [] fileList.each { files << it } this?.onDroppedFiles( files ) event.dropComplete(true); return; } } catch(Exception e) { event.dropComplete(false); return; } } // end for event.dropComplete(false); } // end drop } // -------------------------------------------------------- public static void main(String[] args) { // simple example def f = new javax.swing.JFrame() f.setDefaultCloseOperation( javax.swing.JFrame.EXIT_ON_CLOSE ) f.size = [400,300] def ta = new javax.swing.JTextArea() f.add( ta ) new TFileDropHandler( ta, { files -> files.each { ta.append("${it}\n") println it } } ) f.show() } }
Initial URL
http://java.itags.org/java-core-gui-apis/33457/
Initial Description
Initial Title
Groovy Swing Explorer File Drop Handler
Initial Tags
groovy
Initial Language
Groovy