private boolean processDrop(AWorkspaceTreeNode targetNode, DropTargetDropEvent event) { event.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); final Transferable transferable = event.getTransferable(); final int dropAction = event.getDropAction(); try { if (!targetNode.getAllowsChildren()) { targetNode = targetNode.getParent(); } if (!DnDController.isDropAllowed(targetNode)) { event.dropComplete(false); return false; } if (handleDrop(targetNode, transferable, dropAction)) { event.dropComplete(true); return true; } } catch (NoDropHandlerFoundExeption e) { LogUtils.info( "org.freeplane.plugin.workspace.dnd.WorkspaceTransferHandler.processDrop(targetNode, event): " + e.getMessage()); } event.dropComplete(false); return false; }
private void processWorkspaceNodeDrop(List<AWorkspaceTreeNode> nodes, int dropAction) { try { File targetDir = WorkspaceUtils.resolveURI(getPath()); for (AWorkspaceTreeNode node : nodes) { if (node instanceof DefaultFileNode) { if (targetDir != null && targetDir.isDirectory()) { if (dropAction == DnDConstants.ACTION_COPY) { ((DefaultFileNode) node).copyTo(targetDir); } else if (dropAction == DnDConstants.ACTION_MOVE) { File oldFile = ((DefaultFileNode) node).getFile(); ((DefaultFileNode) node).moveTo(targetDir); File newFile = new File(targetDir, ((DefaultFileNode) node).getName()); AWorkspaceTreeNode parent = node.getParent(); WorkspaceUtils.getModel().cutNodeFromParent(node); parent.refresh(); WorkspaceUtils.getModel().nodeMoved(node, oldFile, newFile); } } } else if (node instanceof LinkTypeFileNode) { File srcFile = WorkspaceUtils.resolveURI(((LinkTypeFileNode) node).getLinkPath()); if (targetDir != null && targetDir.isDirectory()) { FileUtils.copyFileToDirectory(srcFile, targetDir); if (dropAction == DnDConstants.ACTION_MOVE) { AWorkspaceTreeNode parent = node.getParent(); WorkspaceUtils.getModel().cutNodeFromParent(node); parent.refresh(); WorkspaceUtils.getModel() .nodeMoved(node, srcFile, new File(targetDir, srcFile.getName())); } } } } WorkspaceController.getController().getExpansionStateHandler().addPathKey(this.getKey()); refresh(); } catch (Exception e) { LogUtils.warn(e); } }