blob: b77ed3a1b86698866e7290124506841221e96261 [file] [log] [blame]
package com.intellij.xml.impl;
import com.intellij.openapi.util.Comparing;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiReference;
import com.intellij.psi.xml.XmlElement;
import com.intellij.xml.util.XmlEnumeratedValueReference;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author Dmitry Avdeev
* Date: 22.08.13
*/
public abstract class XmlEnumerationDescriptor<T extends XmlElement> {
public abstract boolean isFixed();
public abstract String getDefaultValue();
public abstract boolean isEnumerated(@Nullable XmlElement context);
public abstract String[] getEnumeratedValues();
public PsiElement getValueDeclaration(XmlElement attributeValue, String value) {
String defaultValue = getDefaultValue();
if (Comparing.equal(defaultValue, value)) {
return getDefaultValueDeclaration();
}
return isFixed() ? null : getEnumeratedValueDeclaration(attributeValue, value);
}
protected abstract PsiElement getEnumeratedValueDeclaration(XmlElement value, String s);
protected abstract PsiElement getDefaultValueDeclaration();
public PsiReference[] getValueReferences(T element, @NotNull String text) {
return new PsiReference[] { new XmlEnumeratedValueReference(element, this)};
}
}