From 5746aacdc138cab9874ef11d28e17ce800fa3d0f Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Tue, 6 Sep 2016 21:49:25 +0300 Subject: [PATCH] [groovy] enable 'New Class' action in resource folders (IDEA-160694) --- .../actions/JavaCreateTemplateInPackageAction.java | 11 ++++++++++- .../groovy/actions/NewGroovyClassAction.java | 14 ++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/ide/actions/JavaCreateTemplateInPackageAction.java b/java/java-impl/src/com/intellij/ide/actions/JavaCreateTemplateInPackageAction.java index 3b8ee86f3235..1859532ea8d7 100644 --- a/java/java-impl/src/com/intellij/ide/actions/JavaCreateTemplateInPackageAction.java +++ b/java/java-impl/src/com/intellij/ide/actions/JavaCreateTemplateInPackageAction.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,8 +18,10 @@ package com.intellij.ide.actions; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import org.jetbrains.jps.model.java.JavaModuleSourceRootTypes; +import org.jetbrains.jps.model.module.JpsModuleSourceRootType; import javax.swing.*; +import java.util.Set; public abstract class JavaCreateTemplateInPackageAction extends CreateTemplateInPackageAction { @@ -27,6 +29,13 @@ public abstract class JavaCreateTemplateInPackageAction ex super(text, description, icon, inSourceOnly ? JavaModuleSourceRootTypes.SOURCES : null); } + protected JavaCreateTemplateInPackageAction(String text, + String description, + Icon icon, + Set> rootTypes) { + super(text, description, icon, rootTypes); + } + @Override protected boolean checkPackageExists(PsiDirectory directory) { PsiPackage pkg = JavaDirectoryService.getInstance().getPackage(directory); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/actions/NewGroovyClassAction.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/actions/NewGroovyClassAction.java index 5ea9b1bcd4ba..b7369325b2a7 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/actions/NewGroovyClassAction.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/actions/NewGroovyClassAction.java @@ -37,8 +37,12 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.util.IncorrectOperationException; +import com.intellij.util.containers.ContainerUtil; import icons.JetgroovyIcons; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jps.model.java.JavaResourceRootType; +import org.jetbrains.jps.model.java.JavaSourceRootType; +import org.jetbrains.jps.model.module.JpsModuleSourceRootType; import org.jetbrains.plugins.groovy.GroovyBundle; import org.jetbrains.plugins.groovy.GroovyFileType; import org.jetbrains.plugins.groovy.config.GroovyConfigUtils; @@ -46,11 +50,18 @@ import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition; import org.jetbrains.plugins.groovy.util.LibrariesUtil; +import java.util.Set; + public class NewGroovyClassAction extends JavaCreateTemplateInPackageAction implements DumbAware { + private final static Set> ROOT_TYPES = ContainerUtil.newHashSet( + JavaSourceRootType.SOURCE, JavaSourceRootType.TEST_SOURCE, + JavaResourceRootType.RESOURCE, JavaResourceRootType.RESOURCE + ); + public NewGroovyClassAction() { super(GroovyBundle.message("newclass.menu.action.text"), GroovyBundle.message("newclass.menu.action.description"), - JetgroovyIcons.Groovy.Class, true); + JetgroovyIcons.Groovy.Class, ROOT_TYPES); } @Override @@ -127,5 +138,4 @@ public class NewGroovyClassAction extends JavaCreateTemplateInPackageAction