package com.seventh7.mybatis.dom.converter; import com.intellij.psi.ElementManipulators; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import com.intellij.psi.xml.XmlAttributeValue; import com.intellij.util.xml.ConvertContext; import com.intellij.util.xml.CustomReferenceConverter; import com.intellij.util.xml.DomElement; import com.intellij.util.xml.GenericAttributeValue; import com.intellij.util.xml.GenericDomValue; import com.seventh7.mybatis.reference.ResultPropertyReferenceSet; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * @author yanglin */ public class PropertyConverter extends ConverterAdaptor<XmlAttributeValue> implements CustomReferenceConverter<XmlAttributeValue> { @NotNull @Override public PsiReference[] createReferences(GenericDomValue<XmlAttributeValue> value, PsiElement element, ConvertContext context) { final String s = value.getStringValue(); if (s == null) { return PsiReference.EMPTY_ARRAY; } return new ResultPropertyReferenceSet(s, element, ElementManipulators.getOffsetInElement(element)).getPsiReferences(); } @Nullable @Override public XmlAttributeValue fromString(@Nullable @NonNls String s, ConvertContext context) { DomElement ctxElement = context.getInvocationElement(); return ctxElement instanceof GenericAttributeValue ? ((GenericAttributeValue)ctxElement).getXmlAttributeValue() : null; } }