blob: 68002b73c441c9265b98697b6a38ee7226e5d7bd [file] [log] [blame]
package org.jetbrains.android.resourceManagers;
import com.android.resources.ResourceType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.XmlRecursiveElementVisitor;
import com.intellij.psi.xml.XmlAttributeValue;
import com.intellij.psi.xml.XmlFile;
import org.jetbrains.android.util.AndroidResourceUtil;
import org.jetbrains.annotations.NotNull;
/**
* @author Eugene.Kudelevsky
*/
public class IdResourceInfo extends ValueResourceInfoBase {
private final Project myProject;
IdResourceInfo(@NotNull String name, @NotNull VirtualFile file, @NotNull Project project) {
super(name, ResourceType.ID, file);
myProject = project;
}
@Override
public XmlAttributeValue computeXmlElement() {
final PsiFile psiFile = PsiManager.getInstance(myProject).findFile(myFile);
if (!(psiFile instanceof XmlFile)) {
return null;
}
final Ref<XmlAttributeValue> result = Ref.create();
psiFile.accept(new XmlRecursiveElementVisitor() {
@Override
public void visitXmlAttributeValue(XmlAttributeValue attributeValue) {
if (!result.isNull()) {
return;
}
if (AndroidResourceUtil.isIdDeclaration(attributeValue)) {
final String idInAttr = AndroidResourceUtil.getResourceNameByReferenceText(attributeValue.getValue());
if (myName.equals(idInAttr)) {
result.set(attributeValue);
}
}
}
});
return result.get();
}
@Override
protected int getSortingRank() {
return 0;
}
}