javafx: path refs in url attributes (IDEA-100135)

This commit is contained in:
Anna Kozlova
2013-02-01 10:27:20 +04:00
parent a24e9bd2fc
commit be773a9f1c
3 changed files with 18 additions and 2 deletions
@@ -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),
@@ -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();
}
}
@@ -10,6 +10,11 @@
<Image url="@appIcon.png"/>
</image>
</ImageView>
<ImageView>
<image>
<Image url="appIcon.png"/>
</image>
</ImageView>
<ImageView>
<image>
<Image url="@<error descr="Cannot resolve file 'unknownIcon.png'">unknownIcon.png</error>"/>