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