@Override
  public void actionPerformed(@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();
    }
  }
@Override
  public void actionPerformed(@NotNull AnActionEvent e)