@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; }
@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<AntDomElement>(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; }
@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; }
@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; }
@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; }
protected AntInspection() { super(AntDomProject.class); }
@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) { return null; // not configured properly and bundled installation missing } 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); }
@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 Sdk installation = antProject.getAntInstallation(); if (installation == null) { return null; // not configured properly and bundled installation missing } final String antHomeDir = installation.getHomePath(); 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(ZipArchiveFileType.PROTOCOL, FileUtil.toSystemIndependentName(path) + URLUtil.ARCHIVE_SEPARATOR + "docs/manual"); } else { return null; } } final VirtualFile documentationRoot = VirtualFileManager.getInstance().findFileByUrl(url); if (documentationRoot == null) { return null; } return getHelpFile(antElement, documentationRoot); }
@Nullable AntDomProject getAntProject();