copy to the same location should be possible (IDEA-62498) [spleaner]

This commit is contained in:
anna
2010-12-07 13:29:20 +03:00
parent 2f641610ce
commit 96a26d4c35
@@ -342,8 +342,11 @@ class ProjectViewDropTarget implements DnDNativeTarget {
protected boolean canDrop(@NotNull final TreeNode[] sourceNodes, @Nullable final TreeNode targetNode) {
final PsiElement[] sourceElements = getPsiElements(sourceNodes);
final PsiElement targetElement = getPsiElement(targetNode);
return (targetElement instanceof PsiDirectoryContainer || targetElement instanceof PsiDirectory) &&
CopyHandler.canCopy(sourceElements);
final PsiFile containingFile = targetElement.getContainingFile();
final boolean isTargetAcceptable = targetElement instanceof PsiDirectoryContainer ||
targetElement instanceof PsiDirectory ||
(containingFile != null && containingFile.getContainingDirectory() != null);
return isTargetAcceptable && CopyHandler.canCopy(sourceElements);
}
public void doDrop(@NotNull final TreeNode[] sourceNodes, @NotNull final TreeNode targetNode) {
@@ -358,8 +361,12 @@ class ProjectViewDropTarget implements DnDNativeTarget {
final PsiDirectoryContainer directoryContainer = (PsiDirectoryContainer)targetElement;
final PsiDirectory[] psiDirectories = directoryContainer.getDirectories();
psiDirectory = psiDirectories.length != 0 ? psiDirectories[0] : null;
} else {
} else if (targetElement instanceof PsiDirectory) {
psiDirectory = (PsiDirectory)targetElement;
} else {
final PsiFile containingFile = targetElement.getContainingFile();
LOG.assertTrue(containingFile != null);
psiDirectory = containingFile.getContainingDirectory();
}
CopyHandler.doCopy(sourceElements, psiDirectory);
}