move: api to check if move via DnD is actually redundant (IDEA-57366 ;IDEA-57365 )

This commit is contained in:
anna
2010-09-01 18:54:52 +04:00
parent d1a1ac985d
commit 1d58909163
6 changed files with 50 additions and 2 deletions
@@ -24,6 +24,7 @@ import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.impl.file.JavaDirectoryServiceImpl;
import com.intellij.psi.impl.source.jsp.jspJava.JspClass;
import com.intellij.refactoring.JavaRefactoringSettings;
import com.intellij.refactoring.RefactoringBundle;
@@ -33,6 +34,7 @@ import com.intellij.refactoring.util.CommonRefactoringUtil;
import com.intellij.openapi.project.Project;
import com.intellij.refactoring.util.RadioUpDownListener;
import com.intellij.refactoring.util.RefactoringUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.HashSet;
import org.jetbrains.annotations.Nullable;
@@ -294,4 +296,17 @@ public class MoveClassesOrPackagesHandlerBase extends MoveHandlerDelegate {
}
return false;
}
@Override
public boolean isMoveRedundant(PsiElement source, PsiElement target) {
if (target instanceof PsiDirectory && source instanceof PsiClass) {
try {
JavaDirectoryServiceImpl.checkCreateClassOrInterface((PsiDirectory)target, ((PsiClass)source).getName());
}
catch (IncorrectOperationException e) {
return true;
}
}
return super.isMoveRedundant(source, target);
}
}