From ab14d9220f7fa2e8b675f947dfee153c25e9307f Mon Sep 17 00:00:00 2001 From: Pavel Dolgov Date: Thu, 7 Apr 2016 16:08:47 +0300 Subject: [PATCH] Javafx: Allow fx:value attribute's value to start with $ character. Test added (IDEA-154239) --- .../plugins/javaFX/fxml/JavaFXHighlightingTest.java | 4 ++++ .../descriptors/JavaFxBuiltInAttributeDescriptor.java | 2 +- .../JavaFxPropertyAttributeDescriptor.java | 2 +- .../fxml/refs/JavaFxComponentIdReferenceProvider.java | 5 +++++ .../javaFX/testData/highlighting/literalValue.fxml | 11 +++++++++++ 5 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 plugins/javaFX/testData/highlighting/literalValue.fxml diff --git a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java index 4016d0b2061d..b7e3309e7f0b 100644 --- a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java +++ b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXHighlightingTest.java @@ -370,6 +370,10 @@ public class JavaFXHighlightingTest extends AbstractJavaFXTestCase { doTest(); } + public void testLiteralValue() throws Exception { + doTest(); + } + public void testFactoryMethod() throws Exception { doTest(); } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxBuiltInAttributeDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxBuiltInAttributeDescriptor.java index 1e7df2b75965..3032b2f6ffda 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxBuiltInAttributeDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxBuiltInAttributeDescriptor.java @@ -147,7 +147,7 @@ public class JavaFxBuiltInAttributeDescriptor extends JavaFxPropertyAttributeDes return "Unable to coerce '" + value + "' to " + tagClass.getQualifiedName() + "."; } } - return super.validateAttributeValue(xmlAttributeValue, value); + return validateLiteral(xmlAttributeValue, value); } } diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyAttributeDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyAttributeDescriptor.java index 4033999d169f..ee17676b1872 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyAttributeDescriptor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyAttributeDescriptor.java @@ -188,7 +188,7 @@ public class JavaFxPropertyAttributeDescriptor extends BasicXmlAttributeDescript } @Nullable - private static String validateLiteral(@NotNull XmlAttributeValue xmlAttributeValue, @NotNull String value) { + protected static String validateLiteral(@NotNull XmlAttributeValue xmlAttributeValue, @NotNull String value) { final PsiClass tagClass = JavaFxPsiUtil.getTagClass(xmlAttributeValue); final PsiElement declaration = JavaFxPsiUtil.getAttributeDeclaration(xmlAttributeValue); final String boxedQName; diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxComponentIdReferenceProvider.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxComponentIdReferenceProvider.java index 452119cf5f1b..d7c8779dce7e 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxComponentIdReferenceProvider.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxComponentIdReferenceProvider.java @@ -26,6 +26,7 @@ import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PropertyUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.TypeConversionUtil; +import com.intellij.psi.xml.XmlAttribute; import com.intellij.psi.xml.XmlAttributeValue; import com.intellij.psi.xml.XmlTag; import com.intellij.util.ArrayUtil; @@ -48,6 +49,10 @@ class JavaFxComponentIdReferenceProvider extends PsiReferenceProvider { @Override public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) { + final PsiElement parent = element.getParent(); + if (parent instanceof XmlAttribute && FxmlConstants.FX_VALUE.equals(((XmlAttribute)parent).getName())) { + return PsiReference.EMPTY_ARRAY; + } final XmlAttributeValue xmlAttributeValue = (XmlAttributeValue)element; final String value = xmlAttributeValue.getValue(); if (JavaFxPsiUtil.isIncorrectExpressionBinding(value)) { diff --git a/plugins/javaFX/testData/highlighting/literalValue.fxml b/plugins/javaFX/testData/highlighting/literalValue.fxml new file mode 100644 index 000000000000..ecdecc0a5cfc --- /dev/null +++ b/plugins/javaFX/testData/highlighting/literalValue.fxml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file