[groovy] enable 'New Class' action in resource folders (IDEA-160694)

This commit is contained in:
Daniil Ovchinnikov
2016-09-06 21:49:25 +03:00
parent 8fd6e6d59d
commit 5746aacdc1
2 changed files with 22 additions and 3 deletions
@@ -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<T extends PsiElement> extends CreateTemplateInPackageAction<T> {
@@ -27,6 +29,13 @@ public abstract class JavaCreateTemplateInPackageAction<T extends PsiElement> ex
super(text, description, icon, inSourceOnly ? JavaModuleSourceRootTypes.SOURCES : null);
}
protected JavaCreateTemplateInPackageAction(String text,
String description,
Icon icon,
Set<? extends JpsModuleSourceRootType<?>> rootTypes) {
super(text, description, icon, rootTypes);
}
@Override
protected boolean checkPackageExists(PsiDirectory directory) {
PsiPackage pkg = JavaDirectoryService.getInstance().getPackage(directory);
@@ -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<GrTypeDefinition> implements DumbAware {
private final static Set<? extends JpsModuleSourceRootType<?>> 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<GrTy
final String description = fromTemplate.getFileType().getDescription();
throw new IncorrectOperationException(GroovyBundle.message("groovy.file.extension.is.not.mapped.to.groovy.file.type", description));
}
}