BorderLayoutPanel ( @NotNull TripleFunction<@NotNull String, @NotNull String, @Nullable Project, @Nullable DialogWrapper> createDialogWrapperFunction) { final BorderLayoutPanel panel = createBaseNotificationPanel(); final HyperlinkEventAction action = (e) -> { if (myPlugin == null) { return; } if (e.getDescription().equals("showFeedback")) { final String pluginIdString = myPlugin.getPluginId().getIdString(); final String pluginName = myPlugin.getName(); final Component component = e.getInputEvent().getComponent(); final Project project = ProjectUtil.getProjectForComponent(component); final DialogWrapper feedbackDialog = createDialogWrapperFunction.fun(pluginIdString, pluginName, project); if (feedbackDialog == null) { return; } boolean isSent = feedbackDialog.showAndGet(); if (isSent) { mySentFeedbackPlugins.add(myPlugin.getPluginId()); updateNotifications(); } } }; final DslLabel label = new DslLabel(DslLabelType.LABEL); label.setText(IdeBundle.message("plugins.configurable.plugin.feedback")); label.setAction(action); panel.addToCenter(label); return panel; }