copy refactoring can copy a mix of files and directories

This commit is contained in:
Dmitry Jemerov
2009-10-07 16:25:20 +04:00
parent 3e928e71dd
commit e75883a6b7
4 changed files with 49 additions and 43 deletions
@@ -8,32 +8,21 @@ import com.intellij.codeInsight.daemon.impl.CollectHighlightsUtil;
* @author yole
*/
public class JavaCopyFilesOrDirectoriesHandler extends CopyFilesOrDirectoriesHandler {
protected boolean canCopyFiles(final PsiElement[] elements) {
for (PsiElement element : elements) {
if (!(element instanceof PsiFile) ||
element instanceof PsiClassOwner &&
PsiUtilBase.getTemplateLanguageFile(element) != element &&
!CollectHighlightsUtil.isOutsideSourceRoot((PsiFile) element)) {
return false;
}
}
return super.canCopyFiles(elements);
}
protected boolean canCopyDirectories(final PsiElement[] elements) {
if (!super.canCopyDirectories(elements)) return false;
for (PsiElement element1 : elements) {
PsiDirectory directory = (PsiDirectory)element1;
if (hasPackages(directory)) {
return false;
}
@Override
protected boolean canCopyFile(final PsiFile element) {
if (element instanceof PsiClassOwner &&
PsiUtilBase.getTemplateLanguageFile(element) != element &&
!CollectHighlightsUtil.isOutsideSourceRoot(element)) {
return false;
}
return true;
}
@Override
protected boolean canCopyDirectory(PsiDirectory element) {
return !hasPackages(element);
}
public static boolean hasPackages(PsiDirectory directory) {
if (JavaDirectoryService.getInstance().getPackage(directory) != null) {
return true;