mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
OC-16776 [Doc UI] Add ability to hide external doc link
Extend interface @ExternalDocumentationHandler to check whether ExternalDocumentationHandler can handle external documentation or not.
This commit is contained in:
+13
@@ -27,4 +27,17 @@ public interface ExternalDocumentationHandler {
|
||||
|
||||
@NotNull
|
||||
String fetchExternalDocumentation(@NotNull String link, @Nullable PsiElement element);
|
||||
|
||||
/**
|
||||
* Defines whether we will show external documentation
|
||||
* link at the bottom of the documentation pane or not.
|
||||
*
|
||||
*
|
||||
* @return true if external documentation link should be
|
||||
* shown, false otherwise
|
||||
*/
|
||||
default boolean canHandleExternal(@Nullable PsiElement element,
|
||||
@Nullable PsiElement originalElement) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+21
-2
@@ -990,10 +990,14 @@ public class DocumentationComponent extends JPanel implements Disposable, DataPr
|
||||
final PsiElement element = getElement();
|
||||
if (element == null) return null;
|
||||
|
||||
String title = myManager.getTitle(element);
|
||||
final DocumentationProvider provider = DocumentationManager.getProviderFromElement(element);
|
||||
final PsiElement originalElement = DocumentationManager.getOriginalElement(element);
|
||||
if (!shouldShowExternalDocumentationLink(provider, element, originalElement)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
final String title = myManager.getTitle(element);
|
||||
if (myEffectiveExternalUrl == null) {
|
||||
final PsiElement originalElement = DocumentationManager.getOriginalElement(element);
|
||||
List<String> urls = provider.getUrlFor(element, originalElement);
|
||||
if (urls != null) {
|
||||
boolean hasBadUrl = false;
|
||||
@@ -1036,6 +1040,21 @@ public class DocumentationComponent extends JPanel implements Disposable, DataPr
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
private static boolean shouldShowExternalDocumentationLink(DocumentationProvider provider,
|
||||
PsiElement element,
|
||||
PsiElement originalElement) {
|
||||
if (provider instanceof CompositeDocumentationProvider) {
|
||||
for (DocumentationProvider documentationProvider : ((CompositeDocumentationProvider)provider).getProviders()) {
|
||||
if (documentationProvider instanceof ExternalDocumentationHandler) {
|
||||
return ((ExternalDocumentationHandler)documentationProvider).canHandleExternal(element, originalElement);
|
||||
}
|
||||
}
|
||||
} else if (provider instanceof ExternalDocumentationHandler) {
|
||||
return ((ExternalDocumentationHandler)provider).canHandleExternal(element, originalElement);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private static String getHostname(String url) {
|
||||
try {
|
||||
return new URL(url).toURI().getHost();
|
||||
|
||||
Reference in New Issue
Block a user