use of com.intellij.xml.impl.dom.DomElementXmlDescriptor in project intellij-community by JetBrains.
the class DomDescriptorProvider method getDescriptor.
@Override
@Nullable
public XmlElementDescriptor getDescriptor(final XmlTag tag) {
Project project = tag.getProject();
if (project.isDefault())
return null;
final DomInvocationHandler<?, ?> handler = DomManagerImpl.getDomManager(project).getDomHandler(tag);
if (handler != null) {
final DefinesXml definesXml = handler.getAnnotation(DefinesXml.class);
if (definesXml != null) {
return new DomElementXmlDescriptor(handler);
}
final PsiElement parent = tag.getParent();
if (parent instanceof XmlTag) {
final XmlElementDescriptor descriptor = ((XmlTag) parent).getDescriptor();
if (descriptor instanceof DomElementXmlDescriptor) {
return descriptor.getElementDescriptor(tag, (XmlTag) parent);
}
}
}
return null;
}
use of com.intellij.xml.impl.dom.DomElementXmlDescriptor in project android by JetBrains.
the class AndroidDomElementDescriptorProvider method getDescriptor.
@Nullable
private static XmlElementDescriptor getDescriptor(DomElement domElement, XmlTag tag, @Nullable String baseClassName) {
AndroidFacet facet = AndroidFacet.getInstance(domElement);
if (facet == null)
return null;
final String name = domElement.getXmlTag().getName();
final PsiClass aClass = baseClassName != null ? LayoutViewClassUtils.findClassByTagName(facet, name, baseClassName) : null;
final Icon icon = getIconForTag(name, domElement);
final DefinesXml definesXml = domElement.getAnnotation(DefinesXml.class);
if (definesXml != null) {
return new AndroidXmlTagDescriptor(aClass, new DomElementXmlDescriptor(domElement), baseClassName, icon);
}
final PsiElement parent = tag.getParent();
if (parent instanceof XmlTag) {
final XmlElementDescriptor parentDescriptor = ((XmlTag) parent).getDescriptor();
if (parentDescriptor != null && parentDescriptor instanceof AndroidXmlTagDescriptor) {
XmlElementDescriptor domDescriptor = parentDescriptor.getElementDescriptor(tag, (XmlTag) parent);
if (domDescriptor != null) {
return new AndroidXmlTagDescriptor(aClass, domDescriptor, baseClassName, icon);
}
}
}
return null;
}
Aggregations