KTIJ-19876 [kotlin] Fixed source root condition check, added advanced setting

Signed-off-by: Vladimir Dolzhenko <vladimir.dolzhenko@jetbrains.com>


IJ-CR-208625

GitOrigin-RevId: a74ef78743de476137bcad6f5aa43f191b049336
This commit is contained in:
Vladimir Dolzhenko
2026-06-19 17:07:03 +00:00
committed by intellij-monorepo-bot
parent c9f19033f4
commit b8c17d996e
4 changed files with 13 additions and 8 deletions
@@ -1214,6 +1214,8 @@
<advancedSetting id="java.show.irrelevant.templates.in.source.roots" default="false"
groupKey="advanced.settings.group.java" bundle="messages.JavaBundle"/>
<advancedSetting id="java.show.new.class.in.irrelevant.java.source.roots" default="false"
groupKey="advanced.settings.group.java" bundle="messages.JavaBundle"/>
<newFileActionCategoryHandler implementation="com.intellij.ide.actions.JavaNewFileCategoryHandler"/>
<inspection.basicVisitor class="com.intellij.psi.JavaElementVisitor"/>
@@ -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<PsiClas
protected boolean isAvailable(@NotNull DataContext dataContext) {
if (!super.isAvailable(dataContext)) return false;
List<JavaClassActionSuppressor> 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<JavaClassActionSuppressor> suppressors = JavaClassActionSuppressor.EP_NAME.getExtensionList();
return !ContainerUtil.exists(suppressors,
suppressor -> suppressor.isSuppressed(dataContext));
}
@Override
@@ -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}
@@ -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
}
}