From 8a3205c2f7d325f364b4aeb5124b8ee3cbbf673f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Tue, 31 Mar 2020 11:50:14 +0200 Subject: [PATCH] IDEA-236344 devkit: code insight for "action" extension point attribute GitOrigin-RevId: eca33e1a23bdfd0aeced5f3b93b88aae8a2c6691 --- .../src/dom/impl/ExtensionDomExtender.java | 4 ++++ .../codeInsight/MyActionAttributeEPBean.java | 5 +++++ .../actionExtensionPointAttribute.xml | 21 +++++++++++++++++++ .../PluginXmlFunctionalTest.groovy | 6 ++++++ 4 files changed, 36 insertions(+) create mode 100644 plugins/devkit/devkit-java-tests/testData/codeInsight/MyActionAttributeEPBean.java create mode 100644 plugins/devkit/devkit-java-tests/testData/codeInsight/actionExtensionPointAttribute.xml diff --git a/plugins/devkit/devkit-core/src/dom/impl/ExtensionDomExtender.java b/plugins/devkit/devkit-core/src/dom/impl/ExtensionDomExtender.java index 8c1a0f3d6faf..bd5fee000f8d 100644 --- a/plugins/devkit/devkit-core/src/dom/impl/ExtensionDomExtender.java +++ b/plugins/devkit/devkit-core/src/dom/impl/ExtensionDomExtender.java @@ -35,6 +35,7 @@ public class ExtensionDomExtender extends DomExtender { private static final PsiClassConverter CLASS_CONVERTER = new PluginPsiClassConverter(); private static final LanguageResolvingConverter LANGUAGE_CONVERTER = new LanguageResolvingConverter(); + private static final ActionOrGroupResolveConverter ACTION_CONVERTER = new ActionOrGroupResolveConverter.OnlyActions(); @Override public void registerExtensions(@NotNull final Extension extension, @NotNull final DomExtensionsRegistrar registrar) { @@ -107,6 +108,9 @@ public class ExtensionDomExtender extends DomExtender { if ("language".equals(attributeName)) { extension.setConverter(LANGUAGE_CONVERTER); } + else if ("action".equals(attributeName)) { + extension.setConverter(ACTION_CONVERTER); + } } else if (clazz == PsiClass.class) { markAsClass(extension, true, withElement); diff --git a/plugins/devkit/devkit-java-tests/testData/codeInsight/MyActionAttributeEPBean.java b/plugins/devkit/devkit-java-tests/testData/codeInsight/MyActionAttributeEPBean.java new file mode 100644 index 000000000000..37110df3c32d --- /dev/null +++ b/plugins/devkit/devkit-java-tests/testData/codeInsight/MyActionAttributeEPBean.java @@ -0,0 +1,5 @@ +public class MyActionAttributeEPBean { + + @com.intellij.util.xmlb.annotations.Attribute("action") + public String action; +} \ No newline at end of file diff --git a/plugins/devkit/devkit-java-tests/testData/codeInsight/actionExtensionPointAttribute.xml b/plugins/devkit/devkit-java-tests/testData/codeInsight/actionExtensionPointAttribute.xml new file mode 100644 index 000000000000..a8d0541594e2 --- /dev/null +++ b/plugins/devkit/devkit-java-tests/testData/codeInsight/actionExtensionPointAttribute.xml @@ -0,0 +1,21 @@ + + com.intellij.myPlugin + JetBrains + 1.0 + + + + + + + + + + INVALID_VALUE"/> + + + + + + + \ No newline at end of file diff --git a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy index 048193ef5e6b..c7630e9b4818 100644 --- a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy +++ b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy @@ -384,6 +384,12 @@ class PluginXmlFunctionalTest extends JavaCodeInsightFixtureTestCase { "myTag", "myTagWithoutAnnotation") } + @SuppressWarnings("ComponentNotRegistered") + void testActionExtensionPointAttributeHighlighting() { + myFixture.addClass("package foo.bar; public class BarAction extends com.intellij.openapi.actionSystem.AnAction { }") + doHighlightingTest("actionExtensionPointAttribute.xml", "MyActionAttributeEPBean.java") + } + void testLanguageAttributeHighlighting() { myFixture.allowTreeAccessForFile(myFixture.copyFileToProject("MyLanguage.java")) doHighlightingTest("languageAttribute.xml", "MyLanguageAttributeEPBean.java")