package org.docear.plugin.pdfutilities.actions; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.event.ActionEvent; import java.io.File; import java.util.ArrayList; import java.util.List; import org.docear.plugin.pdfutilities.listener.DocearNodeDropListener; import org.freeplane.core.ui.AFreeplaneAction; import org.freeplane.features.clipboard.ClipboardController; import org.freeplane.features.clipboard.MindMapNodesSelection; import org.freeplane.features.clipboard.mindmapmode.MClipboardController; import org.freeplane.features.map.NodeModel; import org.freeplane.features.mode.Controller; public class DocearPasteAction extends AFreeplaneAction { public DocearPasteAction() { super("PasteAction"); //$NON-NLS-1$ } /** * */ private static final long serialVersionUID = 1L; @SuppressWarnings("unchecked") public void actionPerformed(final ActionEvent evt) { final MClipboardController clipboardController = (MClipboardController) ClipboardController.getController(); final NodeModel targetNode = Controller.getCurrentController().getSelection().getSelected(); final Transferable transferable = clipboardController.getClipboardContents(); try{ final DataFlavor fileListFlavor = new DataFlavor("application/x-java-file-list; class=java.util.List"); //$NON-NLS-1$ final DataFlavor uriListFlavor = new DataFlavor("text/uri-list; class=java.lang.String"); //$NON-NLS-1$ if(!transferable.isDataFlavorSupported(MindMapNodesSelection.mindMapNodesFlavor) && (transferable.isDataFlavorSupported(fileListFlavor) || transferable.isDataFlavorSupported(uriListFlavor))){ List<File> fileList = new ArrayList<File>(); if(transferable.isDataFlavorSupported(fileListFlavor)){ fileList = (List<File>) (transferable.getTransferData(fileListFlavor)); } else if(transferable.isDataFlavorSupported(uriListFlavor)){ fileList = DocearNodeDropListener.textURIListToFileList((String) transferable.getTransferData(uriListFlavor)); } DocearNodeDropListener.pasteFileList(fileList, targetNode, targetNode.isNewChildLeft()); return; } } catch (Exception e) { clipboardController.paste(clipboardController.getClipboardContents(), targetNode, false, targetNode.isNewChildLeft()); } clipboardController.paste(clipboardController.getClipboardContents(), targetNode, false, targetNode.isNewChildLeft()); } }