| package org.jetbrains.android.refactoring; |
| |
| import com.android.resources.ResourceType; |
| import com.android.SdkConstants; |
| import com.intellij.psi.PsiFile; |
| import com.intellij.psi.xml.XmlTag; |
| import com.intellij.util.xml.GenericAttributeValue; |
| import org.jetbrains.android.dom.converters.AndroidResourceReferenceBase; |
| import org.jetbrains.android.dom.resources.ResourceValue; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| import java.util.Map; |
| |
| /** |
| * @author Eugene.Kudelevsky |
| */ |
| class ViewStyleUsageData implements StyleUsageData { |
| private final XmlTag myTag; |
| private final GenericAttributeValue<ResourceValue> myStyleAttribute; |
| private final AndroidResourceReferenceBase myReference; |
| |
| ViewStyleUsageData(@NotNull XmlTag tag, |
| @NotNull GenericAttributeValue<ResourceValue> styleAttribute, |
| @NotNull AndroidResourceReferenceBase reference) { |
| myTag = tag; |
| myStyleAttribute = styleAttribute; |
| myReference = reference; |
| } |
| |
| @Override |
| @Nullable |
| public PsiFile getFile() { |
| return myTag.getContainingFile(); |
| } |
| |
| @Override |
| public void inline(@NotNull Map<AndroidAttributeInfo, String> attributeValues, @Nullable StyleRefData parentStyleRef) { |
| for (Map.Entry<AndroidAttributeInfo, String> entry : attributeValues.entrySet()) { |
| final AndroidAttributeInfo info = entry.getKey(); |
| final String localName = info.getName(); |
| final String namespace = info.getNamespace(); |
| |
| if (myTag.getAttribute(localName, namespace) == null) { |
| myTag.setAttribute(localName, namespace, entry.getValue()); |
| } |
| } |
| myStyleAttribute.setValue(parentStyleRef != null |
| ? ResourceValue.referenceTo('@', parentStyleRef.getStylePackage(), ResourceType.STYLE.getName(), |
| parentStyleRef.getStyleName()) |
| : null); |
| } |
| |
| @Override |
| @NotNull |
| public AndroidResourceReferenceBase getReference() { |
| return myReference; |
| } |
| } |