allow to move java files without classes, e.g. package-info.java ( IDEA-53558 )

This commit is contained in:
anna
2010-04-22 20:38:58 +04:00
parent 88c0e1289d
commit e82558cb47
2 changed files with 17 additions and 2 deletions
@@ -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());
}
}
}
}
}
}
@@ -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);
}
}