From 6bef5e0cbe2ddadde379b8bead7c528ab6dff6cc Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 27 Sep 2022 15:06:28 +0200 Subject: [PATCH] [copy] disable copy class when directory with a single class is selected (IDEA-301957) GitOrigin-RevId: 57389a2bf5eb652e352298a6ceba515d40afa67c --- .../com/intellij/refactoring/copy/CopyClassesHandler.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/copy/CopyClassesHandler.java b/java/java-impl-refactorings/src/com/intellij/refactoring/copy/CopyClassesHandler.java index 863b51f8cacc..df4e02e75a49 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/copy/CopyClassesHandler.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/copy/CopyClassesHandler.java @@ -1,4 +1,4 @@ -// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.refactoring.copy; import com.intellij.codeInsight.actions.OptimizeImportsProcessor; @@ -203,7 +203,7 @@ public class CopyClassesHandler extends CopyHandlerDelegateBase { Object targetDirectory = null; String className = null; boolean openInEditor = true; - if (copyOneClass(classes)) { + if (copyOneClass(classes, elements)) { final String commonPath = ArrayUtilRt.find(elements, classes.values().iterator().next()) == -1 ? normalizeRelativeMap(relativePathsMap) : null; CopyClassDialog dialog = new CopyClassDialog(classes.values().iterator().next()[0], defaultTargetDirectory, project, false) { @@ -268,8 +268,8 @@ public class CopyClassesHandler extends CopyHandlerDelegateBase { CopyFilesOrDirectoriesHandler.copyAsFiles(files.toArray(PsiElement.EMPTY_ARRAY), defaultTargetDirectory, project); } - private static boolean copyOneClass(Map classes) { - if (classes.size() == 1) { + private static boolean copyOneClass(Map classes, PsiElement[] elements) { + if (classes.size() == 1 && !(elements.length == 1 && elements[0] instanceof PsiDirectory)) { final PsiClass[] psiClasses = classes.values().iterator().next(); return psiClasses != null && psiClasses.length == 1; }