blob: 4302ea6ab606c8dee034d47e2500e6c99627c5b1 [file] [log] [blame]
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;
}
}