use of com.intellij.lang.ant.dom.AntDomElement 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.AntDomElement 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.AntDomElement in project intellij-community by JetBrains.
the class AntDomDocumentationProvider method getAdditionalDocumentation.
@Nullable
private static String getAdditionalDocumentation(PsiElement elem) {
final XmlTag xmlTag = PsiTreeUtil.getParentOfType(elem, XmlTag.class);
if (xmlTag == null) {
return null;
}
final AntDomElement antElement = AntSupport.getAntDomElement(xmlTag);
if (antElement instanceof AntFilesProvider) {
final List<File> list = ((AntFilesProvider) antElement).getFiles(new HashSet<>());
if (list.size() > 0) {
@NonNls final StringBuilder builder = StringBuilderSpinAllocator.alloc();
try {
final XmlTag tag = antElement.getXmlTag();
if (tag != null) {
builder.append("<b>");
builder.append(tag.getName());
builder.append(":</b>");
}
for (File file : list) {
if (builder.length() > 0) {
builder.append("<br>");
}
builder.append(file.getPath());
}
return builder.toString();
} finally {
StringBuilderSpinAllocator.dispose(builder);
}
}
}
return null;
}
use of com.intellij.lang.ant.dom.AntDomElement in project intellij-community by JetBrains.
the class CustomTypesTest method doTest.
protected void doTest() throws Exception {
String name = getTestName(false);
String text = loadFile(name + ".ant");
PsiFile file = myFixture.addFileToProject(name + ".ant", text);
final AntDomProject antProject = AntSupport.getAntDomProject(file);
final Ref<Boolean> found = new Ref<>(false);
antProject.accept(new AntDomRecursiveVisitor() {
@Override
public void visitAntDomElement(AntDomElement element) {
if (!found.get()) {
super.visitAntDomElement(element);
}
}
@Override
public void visitAntDomCustomElement(AntDomCustomElement element) {
final Class clazz = element.getDefinitionClass();
if (clazz != null && AntCustomTask.class.getName().equals(clazz.getName())) {
found.set(true);
} else {
super.visitAntDomElement(element);
}
}
});
assertTrue(found.get());
}
Aggregations