From ae644774f94c2c412a412b2f1bade805de9ba1ca Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 23 Nov 2011 14:54:24 +0100 Subject: [PATCH] paste in project view should work for files with multiple classes (IDEA-77309 ) --- .../com/intellij/ide/JavaFilePasteProvider.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/java/java-impl/src/com/intellij/ide/JavaFilePasteProvider.java b/java/java-impl/src/com/intellij/ide/JavaFilePasteProvider.java index 79416038cddf..f7775adce57e 100644 --- a/java/java-impl/src/com/intellij/ide/JavaFilePasteProvider.java +++ b/java/java-impl/src/com/intellij/ide/JavaFilePasteProvider.java @@ -45,16 +45,23 @@ public class JavaFilePasteProvider implements PasteProvider { final PsiJavaFile javaFile = createJavaFileFromClipboardContent(project); if (javaFile == null) return; final PsiClass[] classes = javaFile.getClasses(); - if (classes.length != 1) return; + if (classes.length < 1) return; final PsiDirectory targetDir = ideView.getOrChooseDirectory(); if (targetDir == null) return; - - new WriteCommandAction(project, "Paste class '" + classes[0].getName() + "'") { + PsiClass publicClass = classes[0]; + for (PsiClass aClass : classes) { + if (aClass.hasModifierProperty(PsiModifier.PUBLIC)) { + publicClass = aClass; + break; + } + } + final PsiClass mainClass = publicClass; + new WriteCommandAction(project, "Paste class '" + mainClass.getName() + "'") { @Override protected void run(Result result) throws Throwable { PsiFile file; try { - file = targetDir.createFile(classes[0].getName() + ".java"); + file = targetDir.createFile(mainClass.getName() + ".java"); } catch (IncorrectOperationException e) { return; @@ -111,7 +118,7 @@ public class JavaFilePasteProvider implements PasteProvider { return false; } PsiJavaFile file = createJavaFileFromClipboardContent(project); - return file != null && file.getClasses().length == 1; + return file != null && file.getClasses().length >= 1; } @Nullable