package com.opendoorlogistics.studio; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; import java.io.File; import java.util.List; import org.apache.commons.io.FilenameUtils; import com.opendoorlogistics.api.io.ImportFileType; import com.opendoorlogistics.core.utils.strings.Strings; import com.opendoorlogistics.studio.appframe.AppFrame; public class DropFileImporterListener implements DropTargetListener { private final AppFrame appFrame; public DropFileImporterListener(AppFrame appFrame) { this.appFrame = appFrame; } @Override public void drop(DropTargetDropEvent event) { // Accept copy drops event.acceptDrop(DnDConstants.ACTION_COPY); // Get the transfer which can provide the dropped item data Transferable transferable = event.getTransferable(); // Get the data formats of the dropped item DataFlavor[] flavors = transferable.getTransferDataFlavors(); // Loop through the flavors for (DataFlavor flavor : flavors) { try { // If the drop items are files if (flavor.isFlavorJavaFileListType()) { // Get all of the dropped files List<File> files = (List<File>) transferable.getTransferData(flavor); // Loop them through for (File file : files) { // just import first file.. multiple not supported at the moment String ext = FilenameUtils.getExtension(file.getName()); if(Strings.equalsStd(ext, "xls") || Strings.equalsStd(ext, "xlsx")){ if(appFrame.getLoadedDatastore()==null){ appFrame.openFile(file); }else{ appFrame.importFile(file, ImportFileType.EXCEL); } break; } else if(Strings.equalsStd(ext, "csv")) { appFrame.importFile(file, ImportFileType.CSV); } } } } catch (Exception e) { // Print out the error stack e.printStackTrace(); } } // Inform that the drop is complete event.dropComplete(true); } @Override public void dragEnter(DropTargetDragEvent event) { } @Override public void dragExit(DropTargetEvent event) { } @Override public void dragOver(DropTargetDragEvent event) { } @Override public void dropActionChanged(DropTargetDragEvent event) { } }