diff options
Diffstat (limited to 'xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngXmlAttributeDescriptor.java')
-rw-r--r-- | xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngXmlAttributeDescriptor.java | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngXmlAttributeDescriptor.java b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngXmlAttributeDescriptor.java index db3d85e44600..f9d9f7cbe23e 100644 --- a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngXmlAttributeDescriptor.java +++ b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngXmlAttributeDescriptor.java @@ -17,9 +17,6 @@ package org.intellij.plugins.relaxNG.model.descriptors; import com.intellij.openapi.util.Comparing; -import com.intellij.openapi.util.TextRange; -import com.intellij.openapi.util.text.DelimitedListProcessor; -import com.intellij.psi.ElementManipulators; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; @@ -30,8 +27,8 @@ import com.intellij.psi.xml.XmlTag; import com.intellij.util.ArrayUtil; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; -import com.intellij.xml.util.XmlAttributeValueReference; import com.intellij.xml.impl.BasicXmlAttributeDescriptor; +import com.intellij.xml.util.XmlEnumeratedValueReference; import gnu.trove.THashSet; import gnu.trove.TObjectHashingStrategy; import org.jetbrains.annotations.NonNls; @@ -212,19 +209,15 @@ public class RngXmlAttributeDescriptor extends BasicXmlAttributeDescriptor { public PsiReference[] getValueReferences(final XmlAttributeValue value) { String text = value.getValue(); if (text == null) return PsiReference.EMPTY_ARRAY; - final int offset = ElementManipulators.getValueTextRange(value).getStartOffset(); - final List<PsiReference> list = new ArrayList<PsiReference>(); - new DelimitedListProcessor("") { + return new PsiReference[] { new XmlEnumeratedValueReference(value, this) { + @Nullable @Override - protected boolean isDelimiter(char ch) { - return Character.isWhitespace(ch); - } - - @Override - protected void processToken(int start, int end, boolean delimitersOnly) { - list.add(new XmlAttributeValueReference(value, TextRange.create(offset + start, offset + end), RngXmlAttributeDescriptor.this)); + public PsiElement resolve() { + if (isTokenDatatype(getValue())) { + return getElement(); + } + return super.resolve(); } - }.processText(text); - return list.toArray(new PsiReference[list.size()]); + }}; } }
\ No newline at end of file |