java.awt.dnd.DropTargetDropEvent#getTransferable ( )源码实例Demo

下面列出了java.awt.dnd.DropTargetDropEvent#getTransferable ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: rest-client   文件: FileDropTargetListener.java
@Override
public void drop(DropTargetDropEvent evt) {
    final int action = evt.getDropAction();
    evt.acceptDrop(action);
    try {
        Transferable data = evt.getTransferable();
        if (data.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
            java.util.List<File> list = (java.util.List<File>) data.getTransferData(
                DataFlavor.javaFileListFlavor);
            for(DndAction a: actions) {
                a.onDrop(list);
            }
        }
    }
    catch (UnsupportedFlavorException | IOException e) {
        LOG.log(Level.WARNING, null, e);
    }
    finally {
        evt.dropComplete(true);
        evt.getDropTargetContext().getComponent()
                .setCursor(Cursor.getDefaultCursor());
    }
}
 
public void drop(DropTargetDropEvent dtde) {
    gestureStarted = false;
    if ((dtde.getDropAction() & DnDConstants.ACTION_MOVE) == DnDConstants.ACTION_MOVE) {
        dtde.acceptDrop(DnDConstants.ACTION_MOVE);
        Transferable t = dtde.getTransferable();

        try {
            DBTableInternalFrame iFrame = (DBTableInternalFrame) t
                    .getTransferData(InternalFrameTransferable.DATA_FLAVOR);
            if (iFrame != DBTableInternalFrame.this) {
                JoinLine joinLine = new JoinLine(iFrame, iFrame
                        .getSelectedRow(), DBTableInternalFrame.this,
                        columnsListBox.getSelectedIndex());
                desktop.addJoinLine(joinLine);
                desktop.repaint();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        dtde.dropComplete(true);
    }
}
 
源代码3 项目: trufflesqueak   文件: SqueakDisplay.java
@Override
public void drop(final DropTargetDropEvent dtde) {
    final Transferable transferable = dtde.getTransferable();
    for (final DataFlavor flavor : transferable.getTransferDataFlavors()) {
        if (DataFlavor.javaFileListFlavor.equals(flavor)) {
            dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
            try {
                @SuppressWarnings("unchecked")
                final List<File> fileList = (List<File>) transferable.getTransferData(DataFlavor.javaFileListFlavor);
                final String[] fileArray = new String[fileList.size()];
                int i = 0;
                for (final File file : fileList) {
                    fileArray[i++] = file.getCanonicalPath();
                }
                image.dropPluginFileList = fileArray;
                addDragEvent(DRAG.DROP, dtde.getLocation());
                dtde.getDropTargetContext().dropComplete(true);
                return;
            } catch (final IOException | UnsupportedFlavorException e) {
                CompilerDirectives.transferToInterpreter();
                e.printStackTrace();
            }
        }
    }
    dtde.rejectDrop();
}
 
源代码4 项目: Spark   文件: FileDragLabel.java
@Override
public synchronized void drop(DropTargetDropEvent dropTargetDropEvent) {
       try {
           final Transferable transferable = dropTargetDropEvent.getTransferable();
           if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
               dropTargetDropEvent.acceptDrop(DnDConstants.ACTION_COPY);
               dropTargetDropEvent.getDropTargetContext().dropComplete(true);
           }
           else {
               dropTargetDropEvent.rejectDrop();
           }
       }
       catch (Exception ex) {
           Log.error(ex);
           dropTargetDropEvent.rejectDrop();
       }
   }
 
源代码5 项目: jadx   文件: MainDropTarget.java
@Override
@SuppressWarnings("unchecked")
public void drop(DropTargetDropEvent dtde) {
	if (!dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
		dtde.rejectDrop();
		return;
	}
	dtde.acceptDrop(dtde.getDropAction());
	try {
		Transferable transferable = dtde.getTransferable();
		List<File> transferData = (List<File>) transferable.getTransferData(DataFlavor.javaFileListFlavor);
		if (!transferData.isEmpty()) {
			dtde.dropComplete(true);
			// load first file
			mainWindow.open(transferData.get(0).toPath());
		}
	} catch (Exception e) {
		LOG.error("File drop operation failed", e);
	}
}
 
@Override
public void drop(DropTargetDropEvent dtde) {
    try {
        final Transferable transferable = dtde.getTransferable();
        if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
            dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
            final List<File> fileList = (List<File>) transferable.getTransferData(DataFlavor.javaFileListFlavor);
            if (fileList.size() > 0) {
                final OpenProductAction open = new OpenProductAction();
                open.setFiles(fileList.toArray(new File[fileList.size()]));
                dtde.dropComplete(Boolean.TRUE.equals(open.execute()));
            }
        } else {
            dtde.rejectDrop();
        }
    } catch (UnsupportedFlavorException | IOException e) {
        SystemUtils.LOG.log(Level.SEVERE, "Exception during drag-and-drop operation", e);
        dtde.rejectDrop();
    }
}
 
源代码7 项目: dsworkbench   文件: AbstractDSWorkbenchFrame.java
@Override
public void drop(DropTargetDropEvent dtde) {
    if (dtde.isDataFlavorSupported(VillageTransferable.villageDataFlavor) || dtde.isDataFlavorSupported(DataFlavor.stringFlavor)) {
        dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
    } else {
        dtde.rejectDrop();
        return;
    }

    Transferable t = dtde.getTransferable();
    List<Village> v;
    MapPanel.getSingleton().setCurrentCursor(MapPanel.getSingleton().getCurrentCursor());
    try {
        v = (List<Village>) t.getTransferData(VillageTransferable.villageDataFlavor);
        fireVillagesDraggedEvent(v, dtde.getLocation());
    } catch (Exception ignored) {
    }
}
 
public void drop(DropTargetDropEvent event) {
    int dropAction = event.getDropAction();
    JComponent c = (JComponent) event.getDropTargetContext().getComponent();
    DataObjectTransferHandler transferHandler = (DataObjectTransferHandler) c.getTransferHandler();

    if (canImport && (transferHandler != null) && actionSupported(dropAction)) {
        event.acceptDrop(dropAction);
        try {
            Transferable transferable = event.getTransferable();
            transferHandler.setDropPoint(event.getLocation());
            transferHandler.setDropComponent(c);
            event.dropComplete(transferHandler.importData(c, transferable));
        } catch (RuntimeException e) {
            event.dropComplete(false);
        }
    } else {
        event.rejectDrop();
    }
}
 
源代码9 项目: dragonwell8_jdk   文件: ImageTransferTest.java
void checkImage(DropTargetDropEvent dtde) {
    final Transferable t = dtde.getTransferable();
    if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
        dtde.acceptDrop(DnDConstants.ACTION_COPY);
        Image im;
        try {
            im = (Image) t.getTransferData(DataFlavor.imageFlavor);
            System.err.println("getTransferData was successful");
        } catch (Exception e) {
            System.err.println("Can't getTransferData: " + e);
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
            return;
        }

        if (im == null) {
            System.err.println("getTransferData returned null");
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
        } else if (areImagesIdentical(image, im)) {
            dtde.dropComplete(true);
            notifyTransferSuccess(true);
        } else {
            System.err.println("transferred image is different from initial image");
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
        }

    } else {
        System.err.println("imageFlavor is not supported by Transferable");
        dtde.rejectDrop();
        notifyTransferSuccess(false);
    }
}
 
源代码10 项目: PDF4Teachers   文件: FileDrop.java
@SuppressWarnings("rawtypes")
public void drop(DropTargetDropEvent e){
	
	Transferable transferable = e.getTransferable();
	DataFlavor[] types = transferable.getTransferDataFlavors();
	
       for(DataFlavor type : types){
          try{
             if(type.equals(DataFlavor.javaFileListFlavor)){
           	 e.acceptDrop(DnDConstants.ACTION_COPY);

			  for(Object o : (List) transferable.getTransferData(type)){
				  File file = (File) o;

				  if (isFileAcceptable(file)) {

					  if (component == 1) {
						  MainWindow.mainScreen.openFile(file);
					  } else if (component == 2) {
						  MainWindow.lbFilesTab.openFiles(new File[]{file});
					  }
				  }

			  }
             }
          }catch (Exception e1){ e1.printStackTrace(); }
       }
       
       e.dropComplete(true);
}
 
源代码11 项目: openjdk-jdk8u-backup   文件: ImageTransferTest.java
void checkImage(DropTargetDropEvent dtde) {
    final Transferable t = dtde.getTransferable();
    if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
        dtde.acceptDrop(DnDConstants.ACTION_COPY);
        Image im;
        try {
            im = (Image) t.getTransferData(DataFlavor.imageFlavor);
            System.err.println("getTransferData was successful");
        } catch (Exception e) {
            System.err.println("Can't getTransferData: " + e);
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
            return;
        }

        if (im == null) {
            System.err.println("getTransferData returned null");
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
        } else if (areImagesIdentical(image, im)) {
            dtde.dropComplete(true);
            notifyTransferSuccess(true);
        } else {
            System.err.println("transferred image is different from initial image");
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
        }

    } else {
        System.err.println("imageFlavor is not supported by Transferable");
        dtde.rejectDrop();
        notifyTransferSuccess(false);
    }
}
 
源代码12 项目: openjdk-jdk9   文件: ImageTransferTest.java
void checkImage(DropTargetDropEvent dtde) {
    final Transferable t = dtde.getTransferable();
    if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
        dtde.acceptDrop(DnDConstants.ACTION_COPY);
        Image im;
        try {
            im = (Image) t.getTransferData(DataFlavor.imageFlavor);
            System.err.println("getTransferData was successful");
        } catch (Exception e) {
            System.err.println("Can't getTransferData: " + e);
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
            return;
        }

        if (im == null) {
            System.err.println("getTransferData returned null");
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
        } else if (areImagesIdentical(image, im)) {
            dtde.dropComplete(true);
            notifyTransferSuccess(true);
        } else {
            System.err.println("transferred image is different from initial image");
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
        }

    } else {
        System.err.println("imageFlavor is not supported by Transferable");
        dtde.rejectDrop();
        notifyTransferSuccess(false);
    }
}
 
源代码13 项目: Logisim   文件: JTreeUtil.java
@Override
public final void drop(DropTargetDropEvent dtde) {
	try {
		if (drawImage) {
			clearImage();
		}
		int action = dtde.getDropAction();
		Transferable transferable = dtde.getTransferable();
		Point pt = dtde.getLocation();
		if (transferable.isDataFlavorSupported(NODE_FLAVOR)
				&& controller.canPerformAction(tree, draggedNode, action, pt)) {
			TreePath pathTarget = tree.getPathForLocation(pt.x, pt.y);
			Object node = transferable.getTransferData(NODE_FLAVOR);
			Object newParentNode = pathTarget.getLastPathComponent();
			if (controller.executeDrop(tree, node, newParentNode, action)) {
				dtde.acceptDrop(action);
				dtde.dropComplete(true);
				return;
			}
		}
		dtde.rejectDrop();
		dtde.dropComplete(false);
	} catch (Exception e) {
		dtde.rejectDrop();
		dtde.dropComplete(false);
	}
}
 
源代码14 项目: hottub   文件: ImageTransferTest.java
void checkImage(DropTargetDropEvent dtde) {
    final Transferable t = dtde.getTransferable();
    if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
        dtde.acceptDrop(DnDConstants.ACTION_COPY);
        Image im;
        try {
            im = (Image) t.getTransferData(DataFlavor.imageFlavor);
            System.err.println("getTransferData was successful");
        } catch (Exception e) {
            System.err.println("Can't getTransferData: " + e);
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
            return;
        }

        if (im == null) {
            System.err.println("getTransferData returned null");
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
        } else if (areImagesIdentical(image, im)) {
            dtde.dropComplete(true);
            notifyTransferSuccess(true);
        } else {
            System.err.println("transferred image is different from initial image");
            dtde.dropComplete(false);
            notifyTransferSuccess(false);
        }

    } else {
        System.err.println("imageFlavor is not supported by Transferable");
        dtde.rejectDrop();
        notifyTransferSuccess(false);
    }
}
 
源代码15 项目: pega-tracerviewer   文件: TraceTabbedPane.java
@Override
public void drop(DropTargetDropEvent dtde) {

    try {
        Transferable tr = dtde.getTransferable();

        if (tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {

            dtde.acceptDrop(DnDConstants.ACTION_COPY);

            // Get a useful list
            @SuppressWarnings("unchecked")
            List<File> fileList = (List<File>) tr.getTransferData(DataFlavor.javaFileListFlavor);

            for (File file : fileList) {
                loadFile(file);
            }

            // Mark that drop is completed.
            dtde.getDropTargetContext().dropComplete(true);

        }

    } catch (Exception e) {
        LOG.error("Error in drop operation", e);
    } finally {
        // reset border
        setBorder(normalBorder);
    }

}
 
源代码16 项目: Spark   文件: DroppableFrame.java
@Override
public void drop(DropTargetDropEvent dropTargetDropEvent) {
       try {
           Transferable transferable = dropTargetDropEvent.getTransferable();
           if (transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
               dropTargetDropEvent.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
               List<File> fileList = (List<File>) transferable.getTransferData(DataFlavor.javaFileListFlavor);
               for (File aFileList : fileList) {
                   File file = aFileList;
                   if (file.isFile()) {
                       fileDropped(file);
                   }

                   if (file.isDirectory()) {
                       directoryDropped(file);
                   }
               }
               dropTargetDropEvent.getDropTargetContext().dropComplete(true);
           }
           else {
               dropTargetDropEvent.rejectDrop();
           }
       }
       catch (Exception io) {
           Log.error(io);
           dropTargetDropEvent.rejectDrop();
       }

   }
 
源代码17 项目: constellation   文件: TypeDropper.java
@Override
public BiConsumer<Graph, DropInfo> drop(final DropTargetDropEvent dtde) {
    final Transferable transferable = dtde.getTransferable();
    if (transferable.isDataFlavorSupported(VX_DATA_FLAVOR) || transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) {
        try {
            final String data;
            if (transferable.isDataFlavorSupported(VX_DATA_FLAVOR)) {
                final InputStream in = new ByteArrayInputStream(((ByteBuffer) transferable.getTransferData(VX_DATA_FLAVOR)).array());
                final ObjectInputStream oin = new ObjectInputStream(in);
                data = (String) oin.readObject();
            } else {
                final String t = (String) transferable.getTransferData(DataFlavor.stringFlavor);

                // Do we have the correct indicator?
                if (t != null && t.startsWith(INDICATOR)) {
                    // Skip the leading "indicator=".
                    data = t.substring(INDICATOR.length());
                } else {
                    data = null;
                }
            }

            if (data != null) {
                return (graph, dropInfo) -> {
                    PluginExecution.withPlugin(new SimpleEditPlugin("Drag and Drop: Type to Vertex") {
                        @Override
                        public void edit(final GraphWriteMethods wg, final PluginInteraction interaction, final PluginParameters parameters) throws InterruptedException, PluginException {
                            final int ix = data.indexOf(':');
                            if (ix != -1) {
                                final String attrLabel = data.substring(0, ix);
                                final String value = data.substring(ix + 1);
                                final int attrId = wg.getAttribute(GraphElementType.VERTEX, attrLabel);
                                if (attrId != Graph.NOT_FOUND) {
                                    final int vxId;

                                    if (dropInfo.isIsVertex()) {
                                        vxId = dropInfo.id;

                                        // If the vertex is selected, modify all of the selected vertices.
                                        // Otherwise, just modify the dropped-on vertex.
                                        final int selectedId = VisualConcept.VertexAttribute.SELECTED.ensure(wg);
                                        if (wg.getBooleanValue(selectedId, vxId)) {
                                            final GraphIndexResult gir = GraphIndexUtilities.filterElements(wg, selectedId, true);
                                            while (true) {
                                                final int selVxId = gir.getNextElement();
                                                if (selVxId == Graph.NOT_FOUND) {
                                                    break;
                                                }

                                                wg.setStringValue(attrId, selVxId, data);
                                                if (graph.getSchema() != null) {
                                                    graph.getSchema().completeVertex(wg, selVxId);
                                                }
                                            }
                                        } else {
                                            wg.setStringValue(attrId, vxId, data);
                                            if (graph.getSchema() != null) {
                                                graph.getSchema().completeVertex(wg, vxId);
                                            }
                                        }
                                    } else {
                                        vxId = wg.addVertex();
                                        final int xId = VisualConcept.VertexAttribute.X.ensure(wg);
                                        final int yId = VisualConcept.VertexAttribute.Y.ensure(wg);
                                        final int zId = VisualConcept.VertexAttribute.Z.ensure(wg);
                                        wg.setStringValue(attrId, vxId, value);
                                        wg.setFloatValue(xId, vxId, dropInfo.location.getX());
                                        wg.setFloatValue(yId, vxId, dropInfo.location.getY());
                                        wg.setFloatValue(zId, vxId, dropInfo.location.getZ());

                                        if (graph.getSchema() != null) {
                                            graph.getSchema().newVertex(wg, vxId);
                                            graph.getSchema().completeVertex(wg, vxId);
                                        }
                                    }

                                    ConstellationLoggerHelper.importPropertyBuilder(
                                            this,
                                            Arrays.asList(data),
                                            null,
                                            ConstellationLoggerHelper.SUCCESS
                                    );
                                }
                            }
                        }
                    }).executeLater(graph);
                };
            }
        } catch (final UnsupportedFlavorException | IOException | ClassNotFoundException ex) {
            Exceptions.printStackTrace(ex);
        }
    }
    return null;
}
 
源代码18 项目: netbeans   文件: CssExternalDropHandler.java
@Override
public boolean handleDrop(DropTargetDropEvent e) {
    Transferable t = e.getTransferable();
    if (null == t) {
        return false;
    }
    List<File> fileList = getFileList(t);
    if ((fileList == null) || fileList.isEmpty()) {
        return false;
    }

    //handle just the first file
    File file = fileList.get(0);
    FileObject target = FileUtil.toFileObject(file);
    if (file.isDirectory()) {
        return true; //as we previously claimed we canDrop() it so we need to say we've handled it even if did nothing.
    }

    JEditorPane pane = findPane(e.getDropTargetContext().getComponent());
    if (pane == null) {
        return false;
    }

    final BaseDocument document = (BaseDocument) pane.getDocument();
    FileObject current = DataLoadersBridge.getDefault().getFileObject(document);
    String relativePath = WebUtils.getRelativePath(current, target);

    final StringBuilder sb = new StringBuilder();

    //hardcoded support for common file types
    String mimeType = target.getMIMEType();
    switch (mimeType) { //NOI18N -- whole switch content
        case "text/css":
        case "text/less":
        case "text/scss":
            sb.append("@import \"").append(relativePath).append("\";");
            break;
        default:
            LOG.log(Level.INFO, "Dropping of files with mimetype {0} is not supported -  what would you like to generate? Let me know in the issue 219985 please. Thank you!", mimeType);
            return true;
    }

    //check if the line is white, and if not, insert a new line before the text
    final int offset = getLineEndOffset(pane, e.getLocation());

    final Indent indent = Indent.get(document);
    indent.lock();
    try {

        document.runAtomic(new Runnable() {

            @Override
            public void run() {
                try {
                    int ofs = offset;
                    if (!Utilities.isRowWhite(document, ofs)) {
                        document.insertString(ofs, "\n", null);
                        ofs++;
                    }
                    document.insertString(ofs, sb.toString(), null);

                    //reformat the line
                    final int from = Utilities.getRowStart(document, ofs);
                    final int to = Utilities.getRowEnd(document, ofs);

                    indent.reindent(from, to);

                } catch (BadLocationException ex) {
                    Exceptions.printStackTrace(ex);
                }
            }

        });

    } finally {
        indent.unlock();
    }

    return true;
}
 
源代码19 项目: nextreports-designer   文件: QueryBuilderPanel.java
public void drop(DropTargetDropEvent dtde) {
    if ((dtde.getDropAction() & DnDConstants.ACTION_MOVE) == DnDConstants.ACTION_MOVE) {
        dtde.acceptDrop(DnDConstants.ACTION_MOVE);

        Transferable t = dtde.getTransferable();
        Point point = dtde.getLocation();

        try {
            DBProcedure proc = (DBProcedure) t.getTransferData(DBProcTransferable.DATA_FLAVOR);
            List<DBProcedureColumn> columns = Globals.getDBViewer().getProcedureColumns(proc.getSchema(), proc.getCatalog(), proc.getName());
            if (!Globals.getDBViewer().isValidProcedure(columns)) {
                Show.info(I18NSupport.getString("procedure.invalid"));
                return;
            } else {
                StringBuilder sb = new StringBuilder("call ");
                boolean order = Globals.getDialect().schemaBeforeCatalog();
                if (!order) {
                    if (proc.getCatalog() != null) {
                        sb.append(proc.getCatalog()).append(".");
                    }
                }
                if (!"%".equals(proc.getSchema())) {
                    sb.append(proc.getSchema()).append(".");
                }
                if (order) {
                    if (proc.getCatalog() != null) {
                        sb.append(proc.getCatalog()).append(".");
                    }
                }
                sb.append(proc.getName());
                sb.append("(");
                int index = 1;
                for (int i = 0, size = columns.size(); i < size; i++) {
                    DBProcedureColumn col = columns.get(i);
                    if (ProcUtil.IN.equals(col.getReturnType())) {
                        sb.append("${P").append(index).append("}");
                        index++;
                        if (i < size - 1) {
                            sb.append(", ");
                        }
                    } else if (ProcUtil.OUT.equals(col.getReturnType())) {
                        if (ProcUtil.REF_CURSOR.equals(col.getDataType())) {
                            sb.append("?");
                            if (i < size - 1) {
                                sb.append(" , ");
                            }
                        }
                    }
                }
                sb.append(")");
                sqlView.setQueryString(sb.toString());
            }

        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
            e.printStackTrace();
        }

        dtde.dropComplete(true);
    }
}
 
源代码20 项目: opencards   文件: CardSetDndHandler.java
public void drop(DropTargetDropEvent dtde) {
        try {
            Transferable tr = dtde.getTransferable();
            DataFlavor[] flavors = tr.getTransferDataFlavors();

            for (DataFlavor flavor : flavors) {
                // Check for file lists specifically
                if (flavor.isFlavorJavaFileListType()) {
                    // Great!  Accept copy drops...
                    dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);

                    // And add the list of file names to our text area

                    boolean invalidDrop = false;

                    List<File> droppedFiles = (List<File>) tr.getTransferData(flavor);
                    for (File file : droppedFiles) {
                        if (CardFileBackend.hasSupportedExtension(file)) {
                            Category curCat = CategoryUtils.getSelectedCategory();
                            curCat.registerCardSet(CardFileCache.getCardFile(file));
                        } else {
                            invalidDrop = true;
                        }
                    }

                    if (invalidDrop) {
                        Runnable task2 = () -> {
                            JOptionPane.showMessageDialog(OpenCards.getInstance(),
                                    "Just PowerPoint (ppt) and MarkDown (md) are supported as flashcard-sets by OpenCards",
                                    "Invalid file format of dropped file",
                                    JOptionPane.WARNING_MESSAGE)
                            ;
                        };

// start the thread
                        new Thread(task2).start();
                    }

                    // If we made it this far, everything worked.
                    dtde.dropComplete(true);
                    return;
                }
            }
            // Hmm, the user must not have dropped a file list
            System.out.println("Drop failed: " + dtde);
            dtde.rejectDrop();
        } catch (Exception e) {
            e.printStackTrace();
            dtde.rejectDrop();
        }
    }