diff --git a/java/java-backend/resources/META-INF/JavaPlugin.xml b/java/java-backend/resources/META-INF/JavaPlugin.xml
index e6adc3bbf07c..be81bd31d06d 100644
--- a/java/java-backend/resources/META-INF/JavaPlugin.xml
+++ b/java/java-backend/resources/META-INF/JavaPlugin.xml
@@ -1214,6 +1214,8 @@
+
diff --git a/java/java-impl/src/com/intellij/ide/actions/CreateClassAction.java b/java/java-impl/src/com/intellij/ide/actions/CreateClassAction.java
index 566ccc0fe8ea..022945f29a3e 100644
--- a/java/java-impl/src/com/intellij/ide/actions/CreateClassAction.java
+++ b/java/java-impl/src/com/intellij/ide/actions/CreateClassAction.java
@@ -13,6 +13,7 @@ import com.intellij.ide.fileTemplates.JavaTemplateUtil;
import com.intellij.ide.highlighter.JavaFileType;
import com.intellij.java.JavaBundle;
import com.intellij.openapi.actionSystem.DataContext;
+import com.intellij.openapi.options.advanced.AdvancedSettings;
import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.PackageIndex;
@@ -32,6 +33,7 @@ import com.intellij.psi.util.PsiUtil;
import com.intellij.ui.IconManager;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.PlatformIcons;
+import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
@@ -62,13 +64,11 @@ public class CreateClassAction extends JavaCreateTemplateInPackageAction list = JavaClassActionSuppressor.EP_NAME.getExtensionList();
- for (JavaClassActionSuppressor suppressor : list) {
- if (suppressor.isSuppressed(dataContext)) {
- return false;
- }
- }
- return true;
+ if (AdvancedSettings.getBoolean("java.show.new.class.in.irrelevant.java.source.roots")) return true;
+
+ List suppressors = JavaClassActionSuppressor.EP_NAME.getExtensionList();
+ return !ContainerUtil.exists(suppressors,
+ suppressor -> suppressor.isSuppressed(dataContext));
}
@Override
diff --git a/java/openapi/resources/messages/JavaBundle.properties b/java/openapi/resources/messages/JavaBundle.properties
index 2185723296a4..8ca5c7745bb0 100644
--- a/java/openapi/resources/messages/JavaBundle.properties
+++ b/java/openapi/resources/messages/JavaBundle.properties
@@ -2003,6 +2003,7 @@ command.completion.generate.no.args.constructor.text=No-Args Constructor
command.completion.generate.all.args.constructor.text=All-Args Constructor
advanced.setting.java.show.irrelevant.templates.in.source.roots=Show irrelevant New File templates in Java source roots
+advanced.setting.java.show.new.class.in.irrelevant.java.source.roots=Show New Class in irrelevant Java source roots
java.test.use.wall.time=Use Wall Time
java.test.overall.time=Overall time: {0}
java.test.sum.time=Sum time: {0}
diff --git a/plugins/kotlin/base/code-insight/src/org/jetbrains/kotlin/idea/core/KotlinJavaClassActionSuppressor.kt b/plugins/kotlin/base/code-insight/src/org/jetbrains/kotlin/idea/core/KotlinJavaClassActionSuppressor.kt
index a2f4e1fd0c6a..fc2637ca71e9 100644
--- a/plugins/kotlin/base/code-insight/src/org/jetbrains/kotlin/idea/core/KotlinJavaClassActionSuppressor.kt
+++ b/plugins/kotlin/base/code-insight/src/org/jetbrains/kotlin/idea/core/KotlinJavaClassActionSuppressor.kt
@@ -23,7 +23,9 @@ internal class KotlinJavaClassActionSuppressor: JavaClassActionSuppressor {
val kotlinSourceFolders = kotlinFacet?.configuration?.settings?.pureKotlinSourceFolders
val kotlinSourceRootOfType =
projectFileIndex.isUnderSourceRootOfType(virtualFile, KOTLIN_SOURCE_ROOT_TYPES) ||
- (kotlinSourceFolders?.let { virtualFile.toNioPath().toString() in it } ?: false)
+ (kotlinSourceFolders?.let {
+ projectFileIndex.getSourceRootForFile(virtualFile)?.toNioPath()?.toString() in it
+ } ?: false)
kotlinSourceRootOfType
}
}