use of com.intellij.lang.documentation.DocumentationProvider in project android by JetBrains.
the class AndroidJavaDocWithGradleTest method checkJavadoc.
private void checkJavadoc(@NotNull String targetPath, @Nullable String expectedDoc) {
VirtualFile f = findFile(targetPath);
myFixture.configureFromExistingVirtualFile(f);
PsiElement originalElement = myFixture.getFile().findElementAt(myFixture.getEditor().getCaretModel().getOffset());
assert originalElement != null;
final PsiElement docTargetElement = DocumentationManager.getInstance(getProject()).findTargetElement(myFixture.getEditor(), myFixture.getFile(), originalElement);
assert docTargetElement != null;
DocumentationProvider provider = DocumentationManager.getProviderFromElement(docTargetElement);
assertEquals(expectedDoc, provider.generateDoc(docTargetElement, originalElement));
}
use of com.intellij.lang.documentation.DocumentationProvider in project intellij-community by JetBrains.
the class JsonBySchemaDocumentationBaseTest method assertDocumentation.
protected void assertDocumentation(@NotNull PsiElement docElement, @NotNull PsiElement context, boolean shouldHaveDoc) {
DocumentationProvider documentationProvider = DocumentationManager.getProviderFromElement(context);
String inlineDoc = documentationProvider.generateDoc(docElement, context);
if (shouldHaveDoc) {
assertNotNull("inline help is null", inlineDoc);
} else {
assertNull("inline help is not null", inlineDoc);
}
if (shouldHaveDoc) {
assertSameLinesWithFile(getTestDataPath() + "/" + getTestName(true) + ".html", inlineDoc);
}
}
use of com.intellij.lang.documentation.DocumentationProvider in project intellij-community by JetBrains.
the class ExternalJavaDocAction method update.
@Override
public void update(AnActionEvent event) {
Presentation presentation = event.getPresentation();
DataContext dataContext = event.getDataContext();
Editor editor = CommonDataKeys.EDITOR.getData(dataContext);
PsiElement element = getElement(dataContext, editor);
final PsiElement originalElement = getOriginalElement(CommonDataKeys.PSI_FILE.getData(dataContext), editor);
DocumentationManager.storeOriginalElement(CommonDataKeys.PROJECT.getData(dataContext), originalElement, element);
final DocumentationProvider provider = DocumentationManager.getProviderFromElement(element);
boolean enabled;
if (provider instanceof ExternalDocumentationProvider) {
final ExternalDocumentationProvider edProvider = (ExternalDocumentationProvider) provider;
enabled = edProvider.hasDocumentationFor(element, originalElement) || edProvider.canPromptToConfigureDocumentation(element);
} else {
final List<String> urls = provider.getUrlFor(element, originalElement);
enabled = urls != null && !urls.isEmpty();
}
if (editor != null) {
presentation.setEnabled(enabled);
if (ActionPlaces.isMainMenuOrActionSearch(event.getPlace())) {
presentation.setVisible(true);
} else {
presentation.setVisible(enabled);
}
} else {
presentation.setEnabled(enabled);
presentation.setVisible(true);
}
}
use of com.intellij.lang.documentation.DocumentationProvider in project intellij-community by JetBrains.
the class ExternalJavaDocAction method showExternalJavadoc.
public static void showExternalJavadoc(PsiElement element, PsiElement originalElement, String docUrl, DataContext dataContext) {
DocumentationProvider provider = DocumentationManager.getProviderFromElement(element);
if (provider instanceof ExternalDocumentationHandler && ((ExternalDocumentationHandler) provider).handleExternal(element, originalElement)) {
return;
}
Project project = dataContext.getData(CommonDataKeys.PROJECT);
final Component contextComponent = PlatformDataKeys.CONTEXT_COMPONENT.getData(dataContext);
ApplicationManager.getApplication().executeOnPooledThread(() -> {
List<String> urls;
if (StringUtil.isEmptyOrSpaces(docUrl)) {
urls = ReadAction.compute(() -> provider.getUrlFor(element, originalElement));
} else {
urls = Collections.singletonList(docUrl);
}
if (provider instanceof ExternalDocumentationProvider && urls != null && urls.size() > 1) {
for (String url : urls) {
List<String> thisUrlList = Collections.singletonList(url);
String doc = ((ExternalDocumentationProvider) provider).fetchExternalDocumentation(project, element, thisUrlList);
if (doc != null) {
urls = thisUrlList;
break;
}
}
}
final List<String> finalUrls = urls;
ApplicationManager.getApplication().invokeLater(() -> {
if (ContainerUtil.isEmpty(finalUrls)) {
if (element != null && provider instanceof ExternalDocumentationProvider) {
ExternalDocumentationProvider externalDocumentationProvider = (ExternalDocumentationProvider) provider;
if (externalDocumentationProvider.canPromptToConfigureDocumentation(element)) {
externalDocumentationProvider.promptToConfigureDocumentation(element);
}
}
} else if (finalUrls.size() == 1) {
BrowserUtil.browse(finalUrls.get(0));
} else {
JBPopupFactory.getInstance().createListPopup(new BaseListPopupStep<String>("Choose external documentation root", ArrayUtil.toStringArray(finalUrls)) {
@Override
public PopupStep onChosen(final String selectedValue, final boolean finalChoice) {
BrowserUtil.browse(selectedValue);
return FINAL_CHOICE;
}
}).showInBestPositionFor(DataManager.getInstance().getDataContext(contextComponent));
}
}, ModalityState.NON_MODAL);
});
}
use of com.intellij.lang.documentation.DocumentationProvider in project intellij-community by JetBrains.
the class ExtensionPointDocumentationProviderTest method testExtensionPointDocumentation.
public void testExtensionPointDocumentation() {
myFixture.configureByFiles("extensionPointDocumentation.xml", "bar/MyExtensionPoint.java");
final PsiElement docElement = DocumentationManager.getInstance(getProject()).findTargetElement(myFixture.getEditor(), myFixture.getFile());
DocumentationProvider provider = DocumentationManager.getProviderFromElement(docElement);
String epDefinition = "[" + myModule.getName() + "] foo<br/>" + "<b>bar</b> (extensionPointDocumentation.xml)<br/>" + "<a href=\"psi_element://bar.MyExtensionPoint\"><code>MyExtensionPoint</code></a>";
assertEquals(epDefinition, provider.getQuickNavigateInfo(docElement, null));
assertEquals("<em>EP Definition</em><br/>" + epDefinition + "<br/><br/>" + "<em>EP Implementation</em>" + "<html><head> <style type=\"text/css\"> #error { background-color: #eeeeee; margin-bottom: 10px; } p { margin: 5px 0; } </style></head>" + "<body><small><b>bar</b></small><PRE>public interface <b>MyExtensionPoint</b></PRE>\n" + " MyExtensionPoint JavaDoc.</body></html>", provider.generateDoc(docElement, null));
}
Aggregations