From 1c95d116909a0333eb1df9ec6a1f72b0eaef0306 Mon Sep 17 00:00:00 2001 From: greg Date: Tue, 25 Sep 2007 00:05:31 +0400 Subject: [PATCH] Extensible Documentation Provider --- .../lang/documentation/DocumentationProvider.java | 3 +++ .../com/intellij/lang/java/JavaDocumentationProvider.java | 8 ++++---- .../xml/util/documentation/XmlDocumentationProvider.java | 15 ++++++++------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/openapi/src/com/intellij/lang/documentation/DocumentationProvider.java b/openapi/src/com/intellij/lang/documentation/DocumentationProvider.java index 49d59ad2cd..1ecaa0202d 100644 --- a/openapi/src/com/intellij/lang/documentation/DocumentationProvider.java +++ b/openapi/src/com/intellij/lang/documentation/DocumentationProvider.java @@ -19,10 +19,13 @@ package com.intellij.lang.documentation; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiManager; +import com.intellij.openapi.extensions.ExtensionPointName; import org.jetbrains.annotations.Nullable; public interface DocumentationProvider { + ExtensionPointName EP_NAME = ExtensionPointName.create("com.intellij.documentationProvider"); + @Nullable String getQuickNavigateInfo(PsiElement element); diff --git a/source/com/intellij/lang/java/JavaDocumentationProvider.java b/source/com/intellij/lang/java/JavaDocumentationProvider.java index 22143a651b..7e525d4d91 100644 --- a/source/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/source/com/intellij/lang/java/JavaDocumentationProvider.java @@ -5,10 +5,10 @@ package com.intellij.lang.java; import com.intellij.codeInsight.javadoc.JavaDocUtil; -import com.intellij.lang.LangBundle; import com.intellij.lang.CodeDocumentationAwareCommenter; -import com.intellij.lang.documentation.QuickDocumentationProvider; +import com.intellij.lang.LangBundle; import com.intellij.lang.documentation.CodeDocumentationProvider; +import com.intellij.lang.documentation.ExtensibleDocumentationProvider; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; @@ -24,7 +24,7 @@ import org.jetbrains.annotations.NonNls; * Time: 7:45:12 PM * To change this template use File | Settings | File Templates. */ -public class JavaDocumentationProvider extends QuickDocumentationProvider implements CodeDocumentationProvider { +public class JavaDocumentationProvider extends ExtensibleDocumentationProvider implements CodeDocumentationProvider { private static final String LINE_SEPARATOR = "\n"; @NonNls private static final String PARAM_TAG = "@param"; @@ -43,7 +43,7 @@ public class JavaDocumentationProvider extends QuickDocumentationProvider implem } else if (element instanceof PsiPackage) { return generatePackageInfo((PsiPackage) element); } - return null; + return super.getQuickNavigateInfo(element); } private static void newLine(StringBuffer buffer) { diff --git a/xml/impl/src/com/intellij/xml/util/documentation/XmlDocumentationProvider.java b/xml/impl/src/com/intellij/xml/util/documentation/XmlDocumentationProvider.java index cbc77d726f..b59a07aa2a 100644 --- a/xml/impl/src/com/intellij/xml/util/documentation/XmlDocumentationProvider.java +++ b/xml/impl/src/com/intellij/xml/util/documentation/XmlDocumentationProvider.java @@ -4,6 +4,7 @@ import com.intellij.codeInsight.completion.XmlCompletionData; import com.intellij.codeInsight.javadoc.JavaDocUtil; import com.intellij.lang.documentation.DocumentationProvider; import com.intellij.lang.documentation.MetaDataDocumentationProvider; +import com.intellij.lang.documentation.ExtensibleDocumentationProvider; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Key; import com.intellij.psi.*; @@ -33,7 +34,7 @@ import org.jetbrains.annotations.Nullable; * Time: 0:00:05 * To change this template use File | Settings | File Templates. */ -public class XmlDocumentationProvider implements DocumentationProvider { +public class XmlDocumentationProvider extends ExtensibleDocumentationProvider implements DocumentationProvider { private static final Key DESCRIPTOR_KEY = Key.create("Original element"); private static final Logger LOG = Logger.getInstance("#com.intellij.xml.util.documentation.XmlDocumentationProvider"); @@ -43,7 +44,8 @@ public class XmlDocumentationProvider implements DocumentationProvider { @Nullable public String getQuickNavigateInfo(PsiElement element) { - return myDocumentationProvider.getQuickNavigateInfo(element); + final String navigateInfo = myDocumentationProvider.getQuickNavigateInfo(element); + return navigateInfo != null? navigateInfo : super.getQuickNavigateInfo(element); } public String getUrlFor(PsiElement element, PsiElement originalElement) { @@ -63,8 +65,7 @@ public class XmlDocumentationProvider implements DocumentationProvider { return processor.url; } - - return null; + return super.getUrlFor(element, originalElement); } public String generateDoc(PsiElement element, PsiElement originalElement) { @@ -118,7 +119,7 @@ public class XmlDocumentationProvider implements DocumentationProvider { return findDocRightAfterElement(element, entityDecl.getName()); } - return null; + return super.generateDoc(element, originalElement); } public static String findDocRightAfterElement(final PsiElement parent, final String referenceName) { @@ -274,7 +275,7 @@ public class XmlDocumentationProvider implements DocumentationProvider { if (object instanceof String && element != null) { return findEntityDeclWithName((String)object, element); } - return null; + return super.getDocumentationElementForLookupItem(psiManager, object, element); } public static PsiElement findEntityDeclWithName(final String name, final @NotNull PsiElement element) { @@ -308,7 +309,7 @@ public class XmlDocumentationProvider implements DocumentationProvider { } public PsiElement getDocumentationElementForLink(final PsiManager psiManager, String link, PsiElement context) { - return null; + return super.getDocumentationElementForLink(psiManager, link, context); } private static class MyPsiElementProcessor implements PsiElementProcessor { -- 2.11.4.GIT