From e82558cb475f337983289e92567584a43446451c Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 22 Apr 2010 14:01:25 +0400 Subject: [PATCH] allow to move java files without classes, e.g. package-info.java ( IDEA-53558 ) --- .../moveClassesOrPackages/MoveJavaFileHandler.java | 14 ++++++++++++++ .../JavaMoveFilesOrDirectoriesHandler.java | 5 +++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveJavaFileHandler.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveJavaFileHandler.java index 69264c50165a..ec5a3c00fcfa 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveJavaFileHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveJavaFileHandler.java @@ -84,5 +84,19 @@ public class MoveJavaFileHandler extends MoveFileHandler { @Override public void updateMovedFile(PsiFile file) throws IncorrectOperationException { ChangeContextUtil.decodeContextInfo(file, null, null); + final PsiDirectory containingDirectory = file.getContainingDirectory(); + if (containingDirectory != null) { + final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(containingDirectory); + if (aPackage != null) { + final PsiPackageStatement packageStatement = + JavaPsiFacade.getElementFactory(file.getProject()).createPackageStatement(aPackage.getQualifiedName()); + if (file instanceof PsiJavaFile) { + final PsiPackageStatement filePackageStatement = ((PsiJavaFile)file).getPackageStatement(); + if (filePackageStatement != null) { + filePackageStatement.getPackageReference().replace(packageStatement.getPackageReference()); + } + } + } + } } } \ No newline at end of file diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/JavaMoveFilesOrDirectoriesHandler.java b/java/java-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/JavaMoveFilesOrDirectoriesHandler.java index e114782b7c0f..f56925dfded3 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/JavaMoveFilesOrDirectoriesHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveFilesOrDirectories/JavaMoveFilesOrDirectoriesHandler.java @@ -33,7 +33,8 @@ public class JavaMoveFilesOrDirectoriesHandler extends MoveFilesOrDirectoriesHan allJava &= JavaCopyFilesOrDirectoriesHandler.hasPackages((PsiDirectory)element); } else if (element instanceof PsiFile) { - allJava &= element instanceof PsiJavaFile && !JspPsiUtil.isInJspFile(element) && !CollectHighlightsUtil.isOutsideSourceRootJavaFile((PsiJavaFile) element); + allJava &= element instanceof PsiJavaFile && !JspPsiUtil.isInJspFile(element) && + ((PsiJavaFile)element).getClasses().length > 0 && !CollectHighlightsUtil.isOutsideSourceRootJavaFile((PsiJavaFile) element); } else { return false; @@ -55,6 +56,6 @@ public class JavaMoveFilesOrDirectoriesHandler extends MoveFilesOrDirectoriesHan @Override public void doMove(Project project, PsiElement[] elements, PsiElement targetContainer, MoveCallback callback) { - super.doMove(project, elements, targetContainer, callback); //To change body of overridden methods use File | Settings | File Templates. + super.doMove(project, elements, targetContainer, callback); } }