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;