Search in sources :

Example 96 with XmlTag

use of com.intellij.psi.xml.XmlTag in project intellij-community by JetBrains.

the class XslZenCodingFilter method filterNode.

@NotNull
@Override
public GenerationNode filterNode(@NotNull final GenerationNode node) {
    TemplateToken token = node.getTemplateToken();
    final XmlTag tag = token != null ? token.getXmlTag() : null;
    if (tag != null) {
        if (token.getAttributes().containsKey(SELECT_ATTR_NAME)) {
            return node;
        }
        ApplicationManager.getApplication().runWriteAction(() -> {
            if (isOurTag(tag, node.getChildren().size() > 0)) {
                XmlAttribute attribute = tag.getAttribute(SELECT_ATTR_NAME);
                if (attribute != null) {
                    attribute.delete();
                }
            }
        });
        return node;
    }
    return node;
}
Also used : XmlAttribute(com.intellij.psi.xml.XmlAttribute) TemplateToken(com.intellij.codeInsight.template.emmet.tokens.TemplateToken) XmlTag(com.intellij.psi.xml.XmlTag) NotNull(org.jetbrains.annotations.NotNull)

Example 97 with XmlTag

use of com.intellij.psi.xml.XmlTag in project intellij-community by JetBrains.

the class TemplateToken method createTemplateText.

@NotNull
private static String createTemplateText(@NotNull TemplateImpl template, @NotNull CustomTemplateCallback callback, @NotNull Map<String, String> attributes) {
    XmlTag dummyRootTag = null;
    String templateString = template.getString();
    if (!containsAttrsVar(template)) {
        PsiFile dummyFile = PsiFileFactory.getInstance(callback.getProject()).createFileFromText("dummy.html", callback.getFile().getLanguage(), templateString, false, true);
        dummyRootTag = PsiTreeUtil.findChildOfType(dummyFile, XmlTag.class);
        if (dummyRootTag != null && !attributes.isEmpty()) {
            addMissingAttributes(dummyRootTag, attributes);
        }
    }
    return dummyRootTag != null ? dummyRootTag.getContainingFile().getText() : templateString;
}
Also used : PsiFile(com.intellij.psi.PsiFile) XmlTag(com.intellij.psi.xml.XmlTag) NotNull(org.jetbrains.annotations.NotNull)

Example 98 with XmlTag

use of com.intellij.psi.xml.XmlTag in project intellij-community by JetBrains.

the class Html5CustomAttributeDescriptorsProvider method getAttributeDescriptors.

@Override
public XmlAttributeDescriptor[] getAttributeDescriptors(XmlTag tag) {
    if (tag == null || !HtmlUtil.isHtml5Context(tag)) {
        return XmlAttributeDescriptor.EMPTY;
    }
    final List<String> currentAttrs = new ArrayList<>();
    for (XmlAttribute attribute : tag.getAttributes()) {
        currentAttrs.add(attribute.getName());
    }
    final Project project = tag.getProject();
    final Collection<String> keys = CachedValuesManager.getManager(project).getCachedValue(project, () -> {
        final Collection<String> keys1 = FileBasedIndex.getInstance().getAllKeys(Html5CustomAttributesIndex.INDEX_ID, project);
        final GlobalSearchScope scope = GlobalSearchScope.allScope(project);
        return CachedValueProvider.Result.<Collection<String>>create(ContainerUtil.filter(keys1, key -> !FileBasedIndex.getInstance().processValues(Html5CustomAttributesIndex.INDEX_ID, key, null, (file, value) -> false, scope)), PsiModificationTracker.MODIFICATION_COUNT);
    });
    if (keys.isEmpty())
        return XmlAttributeDescriptor.EMPTY;
    final List<XmlAttributeDescriptor> result = new ArrayList<>();
    for (String key : keys) {
        boolean add = true;
        for (String attr : currentAttrs) {
            if (attr.startsWith(key)) {
                add = false;
            }
        }
        if (add) {
            result.add(new AnyXmlAttributeDescriptor(key));
        }
    }
    return result.toArray(new XmlAttributeDescriptor[result.size()]);
}
Also used : HtmlUtil(com.intellij.xml.util.HtmlUtil) Html5CustomAttributesIndex(com.intellij.html.index.Html5CustomAttributesIndex) XmlAttribute(com.intellij.psi.xml.XmlAttribute) Collection(java.util.Collection) GlobalSearchScope(com.intellij.psi.search.GlobalSearchScope) XmlAttributeDescriptorsProvider(com.intellij.xml.XmlAttributeDescriptorsProvider) ContainerUtil(com.intellij.util.containers.ContainerUtil) CachedValuesManager(com.intellij.psi.util.CachedValuesManager) ArrayList(java.util.ArrayList) CachedValueProvider(com.intellij.psi.util.CachedValueProvider) PsiModificationTracker(com.intellij.psi.util.PsiModificationTracker) List(java.util.List) Project(com.intellij.openapi.project.Project) XmlAttributeDescriptor(com.intellij.xml.XmlAttributeDescriptor) AnyXmlAttributeDescriptor(com.intellij.xml.impl.schema.AnyXmlAttributeDescriptor) FileBasedIndex(com.intellij.util.indexing.FileBasedIndex) XmlTag(com.intellij.psi.xml.XmlTag) AnyXmlAttributeDescriptor(com.intellij.xml.impl.schema.AnyXmlAttributeDescriptor) XmlAttribute(com.intellij.psi.xml.XmlAttribute) ArrayList(java.util.ArrayList) Project(com.intellij.openapi.project.Project) GlobalSearchScope(com.intellij.psi.search.GlobalSearchScope) XmlAttributeDescriptor(com.intellij.xml.XmlAttributeDescriptor) AnyXmlAttributeDescriptor(com.intellij.xml.impl.schema.AnyXmlAttributeDescriptor) Collection(java.util.Collection)

Example 99 with XmlTag

use of com.intellij.psi.xml.XmlTag in project intellij-community by JetBrains.

the class XmlParameterInfoHandler method findElementForParameterInfo.

@Override
public XmlTag findElementForParameterInfo(@NotNull final CreateParameterInfoContext context) {
    final XmlTag tag = findXmlTag(context.getFile(), context.getOffset());
    final XmlElementDescriptor descriptor = tag != null ? tag.getDescriptor() : null;
    if (descriptor == null) {
        DaemonCodeAnalyzer.getInstance(context.getProject()).updateVisibleHighlighters(context.getEditor());
        return null;
    }
    context.setItemsToShow(new Object[] { descriptor });
    return tag;
}
Also used : XmlElementDescriptor(com.intellij.xml.XmlElementDescriptor) XmlTag(com.intellij.psi.xml.XmlTag)

Example 100 with XmlTag

use of com.intellij.psi.xml.XmlTag in project intellij-community by JetBrains.

the class FormReferenceProvider method processReferences.

private static void processReferences(final PsiPlainTextFile file, final PsiReferenceProcessor processor) {
    final Project project = file.getProject();
    final XmlTag rootTag = ApplicationManager.getApplication().runReadAction(new Computable<XmlTag>() {

        public XmlTag compute() {
            final XmlFile xmlFile = (XmlFile) PsiFileFactory.getInstance(project).createFileFromText("a.xml", XmlFileType.INSTANCE, file.getViewProvider().getContents());
            return xmlFile.getRootTag();
        }
    });
    if (rootTag == null || !Utils.FORM_NAMESPACE.equals(rootTag.getNamespace())) {
        return;
    }
    @NonNls final String name = rootTag.getName();
    if (!"form".equals(name)) {
        return;
    }
    PsiReference classReference = null;
    final XmlAttribute classToBind = rootTag.getAttribute("bind-to-class", null);
    if (classToBind != null) {
        // reference to class
        final XmlAttributeValue valueElement = classToBind.getValueElement();
        if (valueElement == null) {
            return;
        }
        final String className = valueElement.getValue().replace('$', '.');
        final PsiReference[] referencesByString = new JavaClassReferenceProvider().getReferencesByString(className, file, valueElement.getTextRange().getStartOffset() + 1);
        if (referencesByString.length < 1) {
            // There are no references there
            return;
        }
        for (PsiReference aReferencesByString : referencesByString) {
            processor.execute(aReferencesByString);
        }
        classReference = referencesByString[referencesByString.length - 1];
    }
    final PsiReference finalClassReference = classReference;
    ApplicationManager.getApplication().runReadAction(() -> processReferences(rootTag, finalClassReference, file, processor));
}
Also used : Project(com.intellij.openapi.project.Project) NonNls(org.jetbrains.annotations.NonNls) XmlAttribute(com.intellij.psi.xml.XmlAttribute) XmlFile(com.intellij.psi.xml.XmlFile) XmlAttributeValue(com.intellij.psi.xml.XmlAttributeValue) XmlTag(com.intellij.psi.xml.XmlTag) JavaClassReferenceProvider(com.intellij.psi.impl.source.resolve.reference.impl.providers.JavaClassReferenceProvider)

Aggregations

XmlTag (com.intellij.psi.xml.XmlTag)668 XmlFile (com.intellij.psi.xml.XmlFile)151 PsiElement (com.intellij.psi.PsiElement)128 XmlAttribute (com.intellij.psi.xml.XmlAttribute)119 Nullable (org.jetbrains.annotations.Nullable)97 XmlElementDescriptor (com.intellij.xml.XmlElementDescriptor)89 NotNull (org.jetbrains.annotations.NotNull)88 PsiFile (com.intellij.psi.PsiFile)70 XmlNSDescriptor (com.intellij.xml.XmlNSDescriptor)52 VirtualFile (com.intellij.openapi.vfs.VirtualFile)50 XmlAttributeValue (com.intellij.psi.xml.XmlAttributeValue)49 Project (com.intellij.openapi.project.Project)47 XmlAttributeDescriptor (com.intellij.xml.XmlAttributeDescriptor)47 ArrayList (java.util.ArrayList)41 XmlDocument (com.intellij.psi.xml.XmlDocument)39 DomElement (com.intellij.util.xml.DomElement)35 WriteCommandAction (com.intellij.openapi.command.WriteCommandAction)33 TextRange (com.intellij.openapi.util.TextRange)31 Result (com.intellij.openapi.application.Result)24 Document (com.intellij.openapi.editor.Document)24