Search in sources :

Example 1 with Item

use of org.jetbrains.android.dom.resources.Item in project android by JetBrains.

the class AndroidResourceUtil method addValueResource.

@NotNull
public static ResourceElement addValueResource(@NotNull final ResourceType resType, @NotNull final Resources resources, @Nullable final String value) {
    switch(resType) {
        case STRING:
            return resources.addString();
        case PLURALS:
            return resources.addPlurals();
        case DIMEN:
            if (value != null && value.trim().endsWith("%")) {
                // Deals with dimension values in the form of percentages, e.g. "65%"
                final Item item = resources.addItem();
                item.getType().setStringValue(ResourceType.DIMEN.getName());
                return item;
            }
            if (value != null && value.indexOf('.') > 0) {
                // Deals with dimension values in the form of floating-point numbers, e.g. "0.24"
                final Item item = resources.addItem();
                item.getType().setStringValue(ResourceType.DIMEN.getName());
                item.getFormat().setStringValue("float");
                return item;
            }
            return resources.addDimen();
        case COLOR:
            return resources.addColor();
        case DRAWABLE:
            return resources.addDrawable();
        case STYLE:
            return resources.addStyle();
        case ARRAY:
            // todo: choose among string-array, integer-array and array
            return resources.addStringArray();
        case INTEGER:
            return resources.addInteger();
        case FRACTION:
            return resources.addFraction();
        case BOOL:
            return resources.addBool();
        case ID:
            final Item item = resources.addItem();
            item.getType().setValue(ResourceType.ID.getName());
            return item;
        case ATTR:
            return resources.addAttr();
        case STYLEABLE:
            return resources.addDeclareStyleable();
        default:
            throw new IllegalArgumentException("Incorrect resource type");
    }
}
Also used : Item(org.jetbrains.android.dom.resources.Item) NotNull(org.jetbrains.annotations.NotNull)

Example 2 with Item

use of org.jetbrains.android.dom.resources.Item in project android by JetBrains.

the class ValueResourceInfoImpl method computeDomElement.

@Nullable
public ResourceElement computeDomElement() {
    final PsiFile file = PsiManager.getInstance(myProject).findFile(myFile);
    if (!(file instanceof XmlFile)) {
        return null;
    }
    final XmlTag tag = PsiTreeUtil.findElementOfClassAtOffset(file, myOffset, XmlTag.class, true);
    if (tag == null) {
        return null;
    }
    final DomElement domElement = DomManager.getDomManager(myProject).getDomElement(tag);
    if (!(domElement instanceof ResourceElement)) {
        return null;
    }
    final String resType = domElement instanceof Item ? ((Item) domElement).getType().getStringValue() : AndroidCommonUtils.getResourceTypeByTagName(tag.getName());
    if (!myType.getName().equals(resType)) {
        return null;
    }
    final ResourceElement resDomElement = (ResourceElement) domElement;
    final String resName = ((ResourceElement) domElement).getName().getStringValue();
    return myName.equals(resName) ? resDomElement : null;
}
Also used : ResourceElement(org.jetbrains.android.dom.resources.ResourceElement) Item(org.jetbrains.android.dom.resources.Item) DomElement(com.intellij.util.xml.DomElement) XmlFile(com.intellij.psi.xml.XmlFile) PsiFile(com.intellij.psi.PsiFile) XmlTag(com.intellij.psi.xml.XmlTag) Nullable(org.jetbrains.annotations.Nullable)

Example 3 with Item

use of org.jetbrains.android.dom.resources.Item in project android by JetBrains.

the class AndroidResourceUtil method getValueResourcesFromElement.

@NotNull
public static List<ResourceElement> getValueResourcesFromElement(@NotNull ResourceType resourceType, @NotNull Resources resources) {
    final List<ResourceElement> result = new ArrayList<>();
    //noinspection EnumSwitchStatementWhichMissesCases
    switch(resourceType) {
        case STRING:
            result.addAll(resources.getStrings());
            break;
        case PLURALS:
            result.addAll(resources.getPluralses());
            break;
        case DRAWABLE:
            result.addAll(resources.getDrawables());
            break;
        case COLOR:
            result.addAll(resources.getColors());
            break;
        case DIMEN:
            result.addAll(resources.getDimens());
            break;
        case STYLE:
            result.addAll(resources.getStyles());
            break;
        case ARRAY:
            result.addAll(resources.getStringArrays());
            result.addAll(resources.getIntegerArrays());
            result.addAll(resources.getArrays());
            break;
        case INTEGER:
            result.addAll(resources.getIntegers());
            break;
        case FRACTION:
            result.addAll(resources.getFractions());
            break;
        case BOOL:
            result.addAll(resources.getBools());
            break;
    }
    for (Item item : resources.getItems()) {
        String type = item.getType().getValue();
        if (resourceType.getName().equals(type)) {
            result.add(item);
        }
    }
    return result;
}
Also used : ResourceElement(org.jetbrains.android.dom.resources.ResourceElement) Item(org.jetbrains.android.dom.resources.Item) NotNull(org.jetbrains.annotations.NotNull)

Aggregations

Item (org.jetbrains.android.dom.resources.Item)3 ResourceElement (org.jetbrains.android.dom.resources.ResourceElement)2 NotNull (org.jetbrains.annotations.NotNull)2 PsiFile (com.intellij.psi.PsiFile)1 XmlFile (com.intellij.psi.xml.XmlFile)1 XmlTag (com.intellij.psi.xml.XmlTag)1 DomElement (com.intellij.util.xml.DomElement)1 Nullable (org.jetbrains.annotations.Nullable)1