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;
}
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);
}
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);
}
}
});
}
}
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;
}
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;
}
Aggregations