void (@NotNull final AnActionEvent e) { PropertyInspectorTable inspector = e.getData(PropertyInspectorTable.DATA_KEY); GuiEditor guiEditor = e.getData(GuiEditor.DATA_KEY); if (inspector == null || guiEditor == null) return; IntrospectedProperty<?> introspectedProperty = inspector.getSelectedIntrospectedProperty(); String radComponentClassName = inspector.getSelectedRadComponentClassName(); if (introspectedProperty == null || radComponentClassName == null) return; Module module = guiEditor.getModule(); PsiClass aClass = JavaPsiFacade.getInstance(module.getProject()).findClass( radComponentClassName, GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module)); if (aClass == null) return; PsiMethod getter = PropertyUtilBase.findPropertyGetter(aClass, introspectedProperty.getName(), false, true); PsiMethod setter = PropertyUtilBase.findPropertySetter(aClass, introspectedProperty.getName(), false, true); if (getter == null || setter == null) return; DocumentationManager documentationManager = DocumentationManager.getInstance(aClass.getProject()); DocumentationComponent component1 = new DocumentationComponent(documentationManager); DocumentationComponent component2 = new DocumentationComponent(documentationManager); Disposable disposable = Disposer.newDisposable(); TabbedPaneWrapper tabbedPane = new TabbedPaneWrapper(disposable); tabbedPane.addTab(UIDesignerBundle.message("tab.getter"), component1); tabbedPane.addTab(UIDesignerBundle.message("tab.setter"), component2); documentationManager.fetchDocInfo(getter, component1); documentationManager.queueFetchDocInfo(setter, component2).doWhenProcessed(() -> { final JBPopup hint = JBPopupFactory.getInstance().createComponentPopupBuilder(tabbedPane.getComponent(), component1) .setDimensionServiceKey(aClass.getProject(), DocumentationManager.JAVADOC_LOCATION_AND_SIZE, false) .setResizable(true) .setMovable(true) .setRequestFocus(true) .setTitle(UIDesignerBundle.message("property.javadoc.title", introspectedProperty.getName())) .createPopup(); component1.setHint(hint); component2.setHint(hint); Disposer.register(hint, component1); Disposer.register(hint, component2); Disposer.register(hint, disposable); hint.show(new RelativePoint(inspector, new Point(0, 0))); //component1.requestFocus(); }); }