mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-13 21:55:01 +07:00
IDEA-236344 devkit: code insight for "action" extension point attribute
GitOrigin-RevId: eca33e1a23bdfd0aeced5f3b93b88aae8a2c6691
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3cd90bf4f7
commit
8a3205c2f7
@@ -35,6 +35,7 @@ public class ExtensionDomExtender extends DomExtender<Extension> {
|
||||
|
||||
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<Extension> {
|
||||
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);
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
public class MyActionAttributeEPBean {
|
||||
|
||||
@com.intellij.util.xmlb.annotations.Attribute("action")
|
||||
public String action;
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
<idea-plugin>
|
||||
<id>com.intellij.myPlugin</id>
|
||||
<vendor>JetBrains</vendor>
|
||||
<version>1.0</version>
|
||||
|
||||
<extensionPoints>
|
||||
<extensionPoint name="myActionEP" beanClass="MyActionAttributeEPBean"/>
|
||||
</extensionPoints>
|
||||
|
||||
<extensions defaultExtensionNs="com.intellij.myPlugin">
|
||||
|
||||
<myActionEP action="myActionId"/>
|
||||
|
||||
<myActionEP action="<error descr="Cannot resolve action 'INVALID_VALUE'">INVALID_VALUE</error>"/>
|
||||
</extensions>
|
||||
|
||||
<actions>
|
||||
<action id="myActionId" class="foo.bar.BarAction"/>
|
||||
</actions>
|
||||
|
||||
</idea-plugin>
|
||||
+6
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user