void (@NotNull AnActionEvent e) { final Project project = e.getProject(); if (project == null) { return; } DocumentationManager documentationManager = DocumentationManager.getInstance(project); final DocumentationComponent component = new DocumentationComponent(documentationManager); final Property property = myTable.getSelectionProperty(); if (property == null) { return; } PsiElement javadocElement = property.getJavadocElement(); ActionCallback callback; if (javadocElement == null) { callback = new ActionCallback(); component.setText(Objects.requireNonNull(property.getJavadocText()), null, null); component.clearHistory(); } else { callback = documentationManager.queueFetchDocInfo(javadocElement, component); } callback.doWhenProcessed(() -> { JBPopup hint = JBPopupFactory.getInstance().createComponentPopupBuilder(component, component) .setProject(project) .setDimensionServiceKey(project, DocumentationManager.JAVADOC_LOCATION_AND_SIZE, false) .setResizable(true) .setMovable(true) .setRequestFocus(true) .setTitle(DesignerBundle.message("designer.properties.javadoc.title", property.getName())) .setCancelCallback(() -> { Disposer.dispose(component); return Boolean.TRUE; }) .createPopup(); component.setHint(hint); Disposer.register(hint, component); hint.show(new RelativePoint(myTable.getParent(), new Point(0, 0))); }); if (javadocElement == null) { callback.setDone(); } }