package org.jetbrains.android.dom.converters; import com.android.sdklib.AndroidVersion; import com.android.sdklib.SdkVersionInfo; import com.intellij.codeInsight.completion.PrioritizedLookupElement; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.util.xml.ConvertContext; import com.intellij.util.xml.ResolvingConverter; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * @author Eugene.Kudelevsky */ public class ApiVersionConverter extends ResolvingConverter<String> { @NotNull @Override public Collection<? extends String> getVariants(ConvertContext context) { final List<String> result = new ArrayList<String>(SdkVersionInfo.HIGHEST_KNOWN_API); for (int i = 1; i <= SdkVersionInfo.HIGHEST_KNOWN_API; i++) { if (i > SdkVersionInfo.HIGHEST_KNOWN_STABLE_API) { result.add(SdkVersionInfo.getBuildCode(i)); } else { result.add(Integer.toString(i)); } } return result; } @Nullable @Override public LookupElement createLookupElement(String s) { AndroidVersion version = SdkVersionInfo.getVersion(s, null); if (version == null) { return null; } return PrioritizedLookupElement.withPriority(LookupElementBuilder.create(s). withTypeText(version.getApiString()), version.getFeatureLevel()); } @Nullable @Override public String fromString(@Nullable @NonNls String s, ConvertContext context) { return s; } @Nullable @Override public String toString(@Nullable String s, ConvertContext context) { return s; } }