Search in sources :

Example 1 with AntDomProject

use of com.intellij.lang.ant.dom.AntDomProject in project intellij-community by JetBrains.

the class AntBuildTargetImpl method findTask.

@Nullable
public BuildTask findTask(final String taskName) {
    final PsiFile psiFile = PsiManager.getInstance(myProject).findFile(myFile);
    final AntDomProject domProject = AntSupport.getAntDomProject(psiFile);
    if (domProject != null) {
        final AntDomTarget antTarget = domProject.findDeclaredTarget(myName);
        if (antTarget != null) {
            final Ref<AntDomElement> result = new Ref<>(null);
            antTarget.accept(new AntDomRecursiveVisitor() {

                public void visitAntDomElement(AntDomElement element) {
                    if (result.get() != null) {
                        return;
                    }
                    if (element.isTask() && taskName.equals(element.getXmlElementName())) {
                        result.set(element);
                        return;
                    }
                    super.visitAntDomElement(element);
                }
            });
            final AntDomElement task = result.get();
            if (task != null) {
                return new BuildTask(this, task);
            }
        }
    }
    return null;
}
Also used : Ref(com.intellij.openapi.util.Ref) AntDomElement(com.intellij.lang.ant.dom.AntDomElement) AntDomRecursiveVisitor(com.intellij.lang.ant.dom.AntDomRecursiveVisitor) PsiFile(com.intellij.psi.PsiFile) AntDomTarget(com.intellij.lang.ant.dom.AntDomTarget) AntDomProject(com.intellij.lang.ant.dom.AntDomProject) Nullable(org.jetbrains.annotations.Nullable)

Example 2 with AntDomProject

use of com.intellij.lang.ant.dom.AntDomProject in project intellij-community by JetBrains.

the class AntDomDocumentationProvider method getHelpFile.

@Nullable
private static VirtualFile getHelpFile(final PsiElement element) {
    final XmlTag xmlTag = PsiTreeUtil.getParentOfType(element, XmlTag.class);
    if (xmlTag == null) {
        return null;
    }
    final AntDomElement antElement = AntSupport.getAntDomElement(xmlTag);
    if (antElement == null) {
        return null;
    }
    final AntDomProject antProject = antElement.getAntProject();
    if (antProject == null) {
        return null;
    }
    final AntInstallation installation = antProject.getAntInstallation();
    if (installation == null) {
        // not configured properly and bundled installation missing
        return null;
    }
    final String antHomeDir = AntInstallation.HOME_DIR.get(installation.getProperties());
    if (antHomeDir == null) {
        return null;
    }
    @NonNls String path = antHomeDir + "/docs/manual";
    String url;
    if (new File(path).exists()) {
        url = VirtualFileManager.constructUrl(LocalFileSystem.PROTOCOL, FileUtil.toSystemIndependentName(path));
    } else {
        path = antHomeDir + "/docs.zip";
        if (new File(path).exists()) {
            url = VirtualFileManager.constructUrl(JarFileSystem.PROTOCOL, FileUtil.toSystemIndependentName(path) + JarFileSystem.JAR_SEPARATOR + "docs/manual");
        } else {
            return null;
        }
    }
    final VirtualFile documentationRoot = VirtualFileManager.getInstance().findFileByUrl(url);
    if (documentationRoot == null) {
        return null;
    }
    return getHelpFile(antElement, documentationRoot);
}
Also used : NonNls(org.jetbrains.annotations.NonNls) AntDomElement(com.intellij.lang.ant.dom.AntDomElement) AntInstallation(com.intellij.lang.ant.config.impl.AntInstallation) PsiFile(com.intellij.psi.PsiFile) File(java.io.File) XmlTag(com.intellij.psi.xml.XmlTag) AntDomProject(com.intellij.lang.ant.dom.AntDomProject) Nullable(org.jetbrains.annotations.Nullable)

Example 3 with AntDomProject

use of com.intellij.lang.ant.dom.AntDomProject in project intellij-community by JetBrains.

the class AntDuplicateTargetsInspection method checkDomElement.

protected void checkDomElement(DomElement element, final DomElementAnnotationHolder holder, DomHighlightingHelper helper) {
    if (element instanceof AntDomProject) {
        final AntDomProject project = (AntDomProject) element;
        TargetResolver.validateDuplicateTargets(project.getContextAntProject(), new TargetResolver.TargetSink() {

            public void duplicateTargetDetected(AntDomTarget existingTarget, AntDomTarget duplicatingTarget, String targetEffectiveName) {
                final AntDomProject existingTargetProj = existingTarget.getAntProject();
                final AntDomProject duplucatingTargetProj = duplicatingTarget.getAntProject();
                final boolean isFromDifferentFiles = !Comparing.equal(existingTargetProj, duplucatingTargetProj);
                if (project.equals(existingTargetProj)) {
                    final String duplicatedMessage = isFromDifferentFiles ? AntBundle.message("target.is.duplicated.in.imported.file", targetEffectiveName, duplucatingTargetProj != null ? duplucatingTargetProj.getName() : "") : AntBundle.message("target.is.duplicated", targetEffectiveName);
                    holder.createProblem(existingTarget.getName(), duplicatedMessage);
                }
                if (project.equals(duplucatingTargetProj)) {
                    final String duplicatedMessage = isFromDifferentFiles ? AntBundle.message("target.is.duplicated.in.imported.file", targetEffectiveName, existingTargetProj != null ? existingTargetProj.getName() : "") : AntBundle.message("target.is.duplicated", targetEffectiveName);
                    holder.createProblem(duplicatingTarget.getName(), duplicatedMessage);
                }
            }
        });
    }
}
Also used : AntDomTarget(com.intellij.lang.ant.dom.AntDomTarget) TargetResolver(com.intellij.lang.ant.dom.TargetResolver) AntDomProject(com.intellij.lang.ant.dom.AntDomProject)

Example 4 with AntDomProject

use of com.intellij.lang.ant.dom.AntDomProject in project intellij-community by JetBrains.

the class AntSupport method getAntDomProject.

//
// Managing ant files dependencies via the <import> task.
//
@Nullable
public static AntDomProject getAntDomProject(PsiFile psiFile) {
    if (psiFile instanceof XmlFile) {
        final DomManager domManager = DomManager.getDomManager(psiFile.getProject());
        final DomFileElement<AntDomProject> fileElement = domManager.getFileElement((XmlFile) psiFile, AntDomProject.class);
        return fileElement != null ? fileElement.getRootElement() : null;
    }
    return null;
}
Also used : XmlFile(com.intellij.psi.xml.XmlFile) DomManager(com.intellij.util.xml.DomManager) AntDomProject(com.intellij.lang.ant.dom.AntDomProject) Nullable(org.jetbrains.annotations.Nullable)

Example 5 with AntDomProject

use of com.intellij.lang.ant.dom.AntDomProject in project intellij-community by JetBrains.

the class AntSupport method getAntDomProjectForceAntFile.

@Nullable
public static AntDomProject getAntDomProjectForceAntFile(PsiFile psiFile) {
    if (psiFile instanceof XmlFile) {
        final DomManager domManager = DomManager.getDomManager(psiFile.getProject());
        DomFileElement<AntDomProject> fileElement = domManager.getFileElement((XmlFile) psiFile, AntDomProject.class);
        if (fileElement == null) {
            ForcedAntFileAttribute.forceAntFile(psiFile.getVirtualFile(), true);
            fileElement = domManager.getFileElement((XmlFile) psiFile, AntDomProject.class);
        }
        return fileElement != null ? fileElement.getRootElement() : null;
    }
    return null;
}
Also used : XmlFile(com.intellij.psi.xml.XmlFile) DomManager(com.intellij.util.xml.DomManager) AntDomProject(com.intellij.lang.ant.dom.AntDomProject) Nullable(org.jetbrains.annotations.Nullable)

Aggregations

AntDomProject (com.intellij.lang.ant.dom.AntDomProject)7 Nullable (org.jetbrains.annotations.Nullable)5 AntDomElement (com.intellij.lang.ant.dom.AntDomElement)3 AntDomTarget (com.intellij.lang.ant.dom.AntDomTarget)3 PsiFile (com.intellij.psi.PsiFile)3 AntDomRecursiveVisitor (com.intellij.lang.ant.dom.AntDomRecursiveVisitor)2 Ref (com.intellij.openapi.util.Ref)2 XmlFile (com.intellij.psi.xml.XmlFile)2 XmlTag (com.intellij.psi.xml.XmlTag)2 DomManager (com.intellij.util.xml.DomManager)2 NonNls (org.jetbrains.annotations.NonNls)2 AntInstallation (com.intellij.lang.ant.config.impl.AntInstallation)1 AntDomCustomElement (com.intellij.lang.ant.dom.AntDomCustomElement)1 TargetResolver (com.intellij.lang.ant.dom.TargetResolver)1 AntCustomTask (com.intellij.lang.ant.typedefs.AntCustomTask)1 File (java.io.File)1