mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
OC-1152 Shift+F1 does not work on selectors + more AppCode QuickDock fixes
This commit is contained in:
+24
@@ -20,6 +20,7 @@ import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -76,6 +77,29 @@ public class CompositeDocumentationProvider implements DocumentationProvider, Ex
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canFetchDocumentationLink(String link) {
|
||||
for (DocumentationProvider provider : myProviders) {
|
||||
if (provider instanceof ExternalDocumentationHandler && ((ExternalDocumentationHandler)provider).canFetchDocumentationLink(link)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String fetchExternalDocumentation(String link, Project project) {
|
||||
for (DocumentationProvider provider : myProviders) {
|
||||
if (provider instanceof ExternalDocumentationHandler && ((ExternalDocumentationHandler)provider).canFetchDocumentationLink(link)) {
|
||||
return ((ExternalDocumentationHandler)provider).fetchExternalDocumentation(link, project);
|
||||
}
|
||||
}
|
||||
|
||||
throw new IllegalStateException("Unable to find a provider to fetch documentation link!");
|
||||
}
|
||||
|
||||
public String getQuickNavigateInfo(PsiElement element, PsiElement originalElement) {
|
||||
for ( DocumentationProvider provider : myProviders ) {
|
||||
String result = provider.getQuickNavigateInfo(element, originalElement);
|
||||
|
||||
+6
@@ -15,8 +15,10 @@
|
||||
*/
|
||||
package com.intellij.lang.documentation;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* User: spLeaner
|
||||
@@ -24,4 +26,8 @@ import com.intellij.psi.PsiManager;
|
||||
public interface ExternalDocumentationHandler {
|
||||
boolean handleExternal(PsiElement element, PsiElement originalElement);
|
||||
boolean handleExternalLink(PsiManager psiManager, String link, PsiElement context);
|
||||
boolean canFetchDocumentationLink(String link);
|
||||
|
||||
@NotNull
|
||||
String fetchExternalDocumentation(String link, Project project);
|
||||
}
|
||||
|
||||
+21
-4
@@ -837,7 +837,7 @@ public class DocumentationManager {
|
||||
return originalElementPointer != null ? originalElementPointer.getElement() : null;
|
||||
}
|
||||
|
||||
void navigateByLink(final DocumentationComponent component, String url) {
|
||||
void navigateByLink(final DocumentationComponent component, final String url) {
|
||||
component.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||
final PsiElement psiElement = component.getElement();
|
||||
final PsiManager manager = PsiManager.getInstance(getProject(psiElement));
|
||||
@@ -863,9 +863,26 @@ public class DocumentationManager {
|
||||
boolean processed = false;
|
||||
if (provider instanceof CompositeDocumentationProvider) {
|
||||
for (DocumentationProvider documentationProvider : ((CompositeDocumentationProvider)provider).getProviders()) {
|
||||
if (documentationProvider instanceof ExternalDocumentationHandler && ((ExternalDocumentationHandler)documentationProvider).handleExternalLink(manager, url, psiElement)) {
|
||||
processed = true;
|
||||
break;
|
||||
if (documentationProvider instanceof ExternalDocumentationHandler) {
|
||||
final ExternalDocumentationHandler externalDocumentationHandler = (ExternalDocumentationHandler)documentationProvider;
|
||||
if (externalDocumentationHandler.canFetchDocumentationLink(url)) {
|
||||
fetchDocInfo(new DocumentationCollector() {
|
||||
@Override
|
||||
public String getDocumentation() throws Exception {
|
||||
return externalDocumentationHandler.fetchExternalDocumentation(url, myProject);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PsiElement getElement() {
|
||||
return psiElement;
|
||||
}
|
||||
}, component);
|
||||
processed = true;
|
||||
}
|
||||
else if (externalDocumentationHandler.handleExternalLink(manager, url, psiElement)) {
|
||||
processed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user