void (JComponent component) { @NlsSafe String licenseText; try { var title = IdeBundle.message("progress.third.party.software"); licenseText = ProgressManager.getInstance().run(new Task.WithResult<String, IOException>(null, component, title, true) { @Override protected String compute(@NotNull ProgressIndicator indicator) throws IOException { return DiskQueryRelay.compute(() -> { var content = Files.readString(Path.of(PathManager.getHomePath(), THIRD_PARTY_LIBRARIES_FILE)); var matcher = Pattern.compile("(\\d+)px").matcher(content); var sb = new StringBuilder(); while (matcher.find()) { matcher.appendReplacement(sb, JBUIScale.scale(Integer.parseInt(matcher.group(1))) + "px"); } matcher.appendTail(sb); content = sb.toString(); if (StartupUiUtil.isUnderDarcula()) { content = content.replace("779dbd", "5676a0"); } return content; }); } }); } catch (IOException e) { Logger.getInstance(AboutDialog.class).error(e); return; } var dialog = new DialogWrapper(true) { { init(); setAutoAdjustable(false); setOKButtonText(CommonBundle.message("close.action.name")); } @Override protected JComponent createCenterPanel() { var viewer = SwingHelper.createHtmlViewer(true, null, JBColor.WHITE, JBColor.BLACK); viewer.setFocusable(true); viewer.addHyperlinkListener(new BrowserHyperlinkListener()); viewer.setText(licenseText); var styleSheet = ((HTMLDocument)viewer.getDocument()).getStyleSheet(); styleSheet.addRule("body {font-family: \"Segoe UI\", Tahoma, \"Helvetica Neue\", Helvetica, Arial, sans-serif;}"); styleSheet.addRule("body {margin-top:0;padding-top:0;}"); styleSheet.addRule("body {font-size:" + JBUIScale.scaleFontSize((float)14) + "pt;}"); viewer.setCaretPosition(0); viewer.setBorder(JBUI.Borders.empty(0, 5, 5, 5)); var scrollPane = new JBScrollPane(viewer, VERTICAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER); var centerPanel = new JPanel(new BorderLayout(JBUIScale.scale(5), JBUIScale.scale(5))); centerPanel.add(scrollPane, BorderLayout.CENTER); return centerPanel; } @Override protected Action @NotNull [] createActions() { return new Action[]{getOKAction()}; } }; dialog.setTitle(IdeBundle.message("dialog.title.third.party.software", ApplicationNamesInfo.getInstance().getFullProductName(), ApplicationInfo.getInstance().getFullVersion())); dialog.setSize(JBUIScale.scale(750), JBUIScale.scale(650)); dialog.show(); }