mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
prompt to configure external documentation location if none is configured
This commit is contained in:
@@ -681,6 +681,15 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
|
||||
return CompositeDocumentationProvider.hasUrlsFor(this, element, originalElement);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPromptToConfigureDocumentation(PsiElement element) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void promptToConfigureDocumentation(PsiElement element) {
|
||||
}
|
||||
|
||||
public static String fetchExternalJavadoc(PsiElement element, final Project project, final List<String> docURLs) {
|
||||
final JavaDocExternalFilter docFilter = new JavaDocExternalFilter(project);
|
||||
|
||||
|
||||
+22
@@ -148,6 +148,28 @@ public class CompositeDocumentationProvider implements DocumentationProvider, Ex
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPromptToConfigureDocumentation(PsiElement element) {
|
||||
for (DocumentationProvider provider : myProviders) {
|
||||
if (provider instanceof ExternalDocumentationProvider &&
|
||||
((ExternalDocumentationProvider)provider).canPromptToConfigureDocumentation(element)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void promptToConfigureDocumentation(PsiElement element) {
|
||||
for (DocumentationProvider provider : myProviders) {
|
||||
if (provider instanceof ExternalDocumentationProvider &&
|
||||
((ExternalDocumentationProvider)provider).canPromptToConfigureDocumentation(element)) {
|
||||
((ExternalDocumentationProvider)provider).promptToConfigureDocumentation(element);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean hasUrlsFor(DocumentationProvider provider, PsiElement element, PsiElement originalElement) {
|
||||
final List<String> urls = provider.getUrlFor(element, originalElement);
|
||||
if (urls != null && !urls.isEmpty()) return true;
|
||||
|
||||
+15
@@ -39,4 +39,19 @@ public interface ExternalDocumentationProvider {
|
||||
* @return true if the external documentation action should be enabled, false otherwise.
|
||||
*/
|
||||
boolean hasDocumentationFor(PsiElement element, PsiElement originalElement);
|
||||
|
||||
/**
|
||||
* Checks if the provider is capable of asking the user to configure external documentation for an element.
|
||||
*
|
||||
* @param element the element for which no documentation was found
|
||||
* @return true if the element is applicable to this provider and the provider has a UI to configure the documentation location, false otherwise
|
||||
*/
|
||||
boolean canPromptToConfigureDocumentation(PsiElement element);
|
||||
|
||||
/**
|
||||
* Prompts the user to configure the external documentation for an element if none was found.
|
||||
*
|
||||
* @param element the element for which no documentation was found
|
||||
*/
|
||||
void promptToConfigureDocumentation(PsiElement element);
|
||||
}
|
||||
@@ -68,9 +68,15 @@ public class ExternalJavaDocAction extends AnAction {
|
||||
DocumentationManager.storeOriginalElement(project, originalElement, element);
|
||||
final DocumentationProvider provider = DocumentationManager.getProviderFromElement(element);
|
||||
final List<String> urls = provider.getUrlFor(element, originalElement);
|
||||
assert urls != null;
|
||||
assert !urls.isEmpty();
|
||||
showExternalJavadoc(urls);
|
||||
if (urls != null && !urls.isEmpty()) {
|
||||
showExternalJavadoc(urls);
|
||||
}
|
||||
else if (provider instanceof ExternalDocumentationProvider) {
|
||||
final ExternalDocumentationProvider externalDocumentationProvider = (ExternalDocumentationProvider)provider;
|
||||
if (externalDocumentationProvider.canPromptToConfigureDocumentation(element)) {
|
||||
externalDocumentationProvider.promptToConfigureDocumentation(element);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void showExternalJavadoc(List<String> urls) {
|
||||
@@ -103,7 +109,8 @@ public class ExternalJavaDocAction extends AnAction {
|
||||
final DocumentationProvider provider = DocumentationManager.getProviderFromElement(element);
|
||||
boolean enabled;
|
||||
if (provider instanceof ExternalDocumentationProvider) {
|
||||
enabled = ((ExternalDocumentationProvider) provider).hasDocumentationFor(element, originalElement);
|
||||
final ExternalDocumentationProvider edProvider = (ExternalDocumentationProvider)provider;
|
||||
enabled = edProvider.hasDocumentationFor(element, originalElement) || edProvider.canPromptToConfigureDocumentation(element);
|
||||
}
|
||||
else {
|
||||
final List<String> urls = provider.getUrlFor(element, originalElement);
|
||||
|
||||
@@ -18,7 +18,6 @@ package org.jetbrains.android;
|
||||
import com.android.sdklib.SdkConstants;
|
||||
import com.intellij.codeInsight.javadoc.JavaDocExternalFilter;
|
||||
import com.intellij.facet.ProjectFacetManager;
|
||||
import com.intellij.lang.documentation.CompositeDocumentationProvider;
|
||||
import com.intellij.lang.documentation.DocumentationProvider;
|
||||
import com.intellij.lang.documentation.ExternalDocumentationProvider;
|
||||
import com.intellij.lang.java.JavaDocumentationProvider;
|
||||
@@ -85,6 +84,15 @@ public class AndroidDocumentationProvider implements DocumentationProvider, Exte
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPromptToConfigureDocumentation(PsiElement element) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void promptToConfigureDocumentation(PsiElement element) {
|
||||
}
|
||||
|
||||
private static boolean isMyContext(@NotNull final PsiElement element, @NotNull final Project project) {
|
||||
if (element instanceof PsiClass) {
|
||||
return ApplicationManager.getApplication().runReadAction(new Computable<Boolean>() {
|
||||
|
||||
+9
@@ -298,6 +298,15 @@ public class GroovyDocumentationProvider implements CodeDocumentationProvider, E
|
||||
return CompositeDocumentationProvider.hasUrlsFor(this, element, originalElement);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPromptToConfigureDocumentation(PsiElement element) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void promptToConfigureDocumentation(PsiElement element) {
|
||||
}
|
||||
|
||||
private static String getMethodCandidateInfo(GrReferenceExpression expr) {
|
||||
final GroovyResolveResult[] candidates = expr.multiResolve(false);
|
||||
final String text = expr.getText();
|
||||
|
||||
Reference in New Issue
Block a user