diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/FxmlReferencesContributor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/FxmlReferencesContributor.java index f4d44b4446d3..ffa0f044168e 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/FxmlReferencesContributor.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/FxmlReferencesContributor.java @@ -64,6 +64,9 @@ public class FxmlReferencesContributor extends PsiReferenceContributor { registrar.registerReferenceProvider(XmlPatterns.xmlAttributeValue().withValue(string().startsWith("@")).and(attributeValueInFxml), new JavaFxLocationReferenceProvider()); + registrar.registerReferenceProvider(XmlPatterns.xmlAttributeValue().withParent(XmlPatterns.xmlAttribute().withName("url")).and(attributeValueInFxml), + new JavaFxLocationReferenceProvider()); + registrar.registerReferenceProvider(PlatformPatterns.psiElement(XmlTokenType.XML_TAG_CHARACTERS).inFile(inFxmlElementPattern()), new ImportReferenceProvider()); registrar.registerReferenceProvider(XmlPatterns.xmlAttributeValue().and(attributeValueInFxml), diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxLocationReferenceProvider.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxLocationReferenceProvider.java index 9e2f2eb771c4..c901ad7c9697 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxLocationReferenceProvider.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/refs/JavaFxLocationReferenceProvider.java @@ -32,8 +32,16 @@ class JavaFxLocationReferenceProvider extends PsiReferenceProvider { public PsiReference[] getReferencesByElement(@NotNull final PsiElement element, @NotNull ProcessingContext context) { final String value = ((XmlAttributeValue)element).getValue(); - final String relativePathToResource = value.substring(1); - final FileReferenceSet set = new FileReferenceSet(relativePathToResource, element, 2, null, true); + final FileReferenceSet set; + if (value.startsWith("@")) { + set = new FileReferenceSet(value.substring(1), element, 2, null, true); + } + else { + set = new FileReferenceSet(value, element, 1, null, true); + if (value.startsWith("/")) { + set.addCustomization(FileReferenceSet.DEFAULT_PATH_EVALUATOR_OPTION, FileReferenceSet.ABSOLUTE_TOP_LEVEL); + } + } return set.getAllReferences(); } } diff --git a/plugins/javaFX/testData/highlighting/imageIcon.fxml b/plugins/javaFX/testData/highlighting/imageIcon.fxml index 060671ad1c65..76d655bdbed7 100644 --- a/plugins/javaFX/testData/highlighting/imageIcon.fxml +++ b/plugins/javaFX/testData/highlighting/imageIcon.fxml @@ -10,6 +10,11 @@ + + + + + unknownIcon.png"/>