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);
   }
 }