From 4b45f5cf3f2403e3cd8ce1ddf6ec3ccd5d3bd9b1 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Wed, 2 May 2012 20:42:42 +0400 Subject: [PATCH] Disallowed creating Kotlin files outside source directories. #KT-1623 fixed --- .../plugin/actions/NewKotlinFileAction.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/idea/src/org/jetbrains/jet/plugin/actions/NewKotlinFileAction.java b/idea/src/org/jetbrains/jet/plugin/actions/NewKotlinFileAction.java index 31e7868df1e..b14d84bbe5e 100644 --- a/idea/src/org/jetbrains/jet/plugin/actions/NewKotlinFileAction.java +++ b/idea/src/org/jetbrains/jet/plugin/actions/NewKotlinFileAction.java @@ -16,9 +16,15 @@ package org.jetbrains.jet.plugin.actions; +import com.intellij.ide.IdeView; import com.intellij.ide.actions.CreateFileFromTemplateAction; import com.intellij.ide.actions.CreateFileFromTemplateDialog; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; +import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ProjectFileIndex; +import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.psi.PsiDirectory; import com.intellij.util.PlatformIcons; import org.jetbrains.jet.plugin.JetBundle; @@ -48,6 +54,22 @@ public class NewKotlinFileAction extends CreateFileFromTemplateAction { return JetBundle.message("new.kotlin.file.action"); } + @Override + protected boolean isAvailable(DataContext dataContext) { + if (super.isAvailable(dataContext)) { + IdeView ideView = LangDataKeys.IDE_VIEW.getData(dataContext); + Project project = PlatformDataKeys.PROJECT.getData(dataContext); + assert ideView != null && project != null; + ProjectFileIndex projectFileIndex = ProjectRootManager.getInstance(project).getFileIndex(); + for (PsiDirectory dir : ideView.getDirectories()) { + if (projectFileIndex.isInSourceContent(dir.getVirtualFile())) { + return true; + } + } + } + return false; + } + @Override public int hashCode() { return 0; -- GitLab