summaryrefslogtreecommitdiff
path: root/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngXmlAttributeDescriptor.java
diff options
context:
space:
mode:
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.java25
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