From 53fbb28fda52e9b44ed9f3bdb1f1caff5eb35884 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 22 Feb 2011 18:22:35 +0100 Subject: [PATCH] enable documentation for directories according to containing files (IDEA-65679 ) --- .../javadoc/JavaDocInfoGenerator.java | 5 +++++ .../com/intellij/lang/LanguageDocumentation.java | 1 + .../documentation/DocumentationManager.java | 16 +++++++++++++--- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java index 4e2a522d17d1..b930439cecfd 100644 --- a/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java +++ b/java/java-impl/src/com/intellij/codeInsight/javadoc/JavaDocInfoGenerator.java @@ -221,6 +221,11 @@ public class JavaDocInfoGenerator { else if (myElement instanceof PsiVariable) { generateVariableJavaDoc(buffer, (PsiVariable)myElement); } + else if (myElement instanceof PsiDirectory) { + final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage((PsiDirectory)myElement); + if (aPackage == null) return null; + generatePackageJavaDoc(buffer, aPackage); + } else if (myElement instanceof PsiPackage) { generatePackageJavaDoc(buffer, (PsiPackage) myElement); } else { diff --git a/platform/lang-api/src/com/intellij/lang/LanguageDocumentation.java b/platform/lang-api/src/com/intellij/lang/LanguageDocumentation.java index ddd0c5cca6f0..130a63b34452 100644 --- a/platform/lang-api/src/com/intellij/lang/LanguageDocumentation.java +++ b/platform/lang-api/src/com/intellij/lang/LanguageDocumentation.java @@ -21,6 +21,7 @@ package com.intellij.lang; import com.intellij.lang.documentation.CompositeDocumentationProvider; import com.intellij.lang.documentation.DocumentationProvider; +import org.jetbrains.annotations.NonNls; import java.util.List; diff --git a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java index 9e2dd837d3d8..8606406f6a06 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/documentation/DocumentationManager.java @@ -43,6 +43,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; +import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.OrderEntry; @@ -78,10 +79,8 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.lang.ref.WeakReference; -import java.util.Collections; -import java.util.LinkedHashSet; +import java.util.*; import java.util.List; -import java.util.Set; public class DocumentationManager { private static final Logger LOG = Logger.getInstance("#" + DocumentationManager.class.getName()); @@ -802,6 +801,17 @@ public class DocumentationManager { result.add(LanguageDocumentation.INSTANCE.forLanguage(baseLanguage)); } } + else if (element instanceof PsiDirectory) { + final Set langs = new HashSet(); + + for (PsiFile file : ((PsiDirectory)element).getFiles()) { + final Language baseLanguage = file.getViewProvider().getBaseLanguage(); + if (!langs.contains(baseLanguage)) { + langs.add(baseLanguage); + result.add(LanguageDocumentation.INSTANCE.forLanguage(baseLanguage)); + } + } + } return CompositeDocumentationProvider.wrapProviders(result); }