Merge remote-tracking branch 'origin/master'

This commit is contained in:
Maxim.Medvedev
2011-12-20 15:21:20 +04:00
2 changed files with 23 additions and 11 deletions
@@ -128,9 +128,7 @@ public class CopyClassesHandler extends CopyHandlerDelegateBase {
if (classes != null) {
topLevelClasses = ArrayUtil.mergeArrays(classes, topLevelClasses, PsiClass.ARRAY_FACTORY);
}
if (topLevelClasses != null) {
result.put(containingFile, topLevelClasses);
}
result.put(containingFile, topLevelClasses);
}
public void doCopy(PsiElement[] elements, PsiDirectory defaultTargetDirectory) {
@@ -361,19 +359,26 @@ public class CopyClassesHandler extends CopyHandlerDelegateBase {
}
private static PsiFile copy(@NotNull PsiFile file, PsiDirectory directory, String name, String relativePath) {
final String fileName;
if (name != null) {
fileName = file instanceof PsiClassOwner ? name + "." + file.getViewProvider().getVirtualFile().getExtension() : name;
}
else {
fileName = file.getName();
}
final String fileName = getNewFileName(file, name);
if (relativePath != null && !relativePath.isEmpty()) {
return buildRelativeDir(directory, relativePath).findOrCreateTargetDirectory().copyFileFrom(fileName, file);
}
return directory.copyFileFrom(fileName, file);
}
private static String getNewFileName(PsiFile file, String name) {
if (name != null) {
if (file instanceof PsiClassOwner) {
final PsiClass[] classes = ((PsiClassOwner)file).getClasses();
if (classes.length > 0 && !(classes[0] instanceof SyntheticElement)) {
return name + "." + file.getViewProvider().getVirtualFile().getExtension();
}
}
return name;
}
return file.getName();
}
@NotNull
private static MoveDirectoryWithClassesProcessor.TargetDirectoryWrapper buildRelativeDir(final @NotNull PsiDirectory directory,
final @NotNull String relativePath) {
@@ -50,6 +50,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.regex.PatternSyntaxException;
import static org.jetbrains.idea.eclipse.conversion.EPathUtil.*;
@@ -150,7 +151,13 @@ public class EclipseClasspathReader {
}
else {
String srcUrl = VfsUtil.pathToUrl(myRootPath + "/" + path);
final boolean isTestFolder = testPattern != null && testPattern.length() > 0 && path.matches(testPattern);
boolean isTestFolder = false;
try {
isTestFolder = testPattern != null && testPattern.length() > 0 && path.matches(testPattern);
}
catch (PatternSyntaxException e) {
isTestFolder = false;
}
final EclipseProjectFinder.LinkedResource linkedResource = EclipseProjectFinder.findLinkedResource(myRootPath, path);
if (linkedResource != null) {
if (linkedResource.containsPathVariable()) {