Box () { Box box = Box.createVerticalBox(); List<String> lines = new ArrayList<>(); ApplicationInfoEx appInfo = ApplicationInfoEx.getInstanceEx(); @NlsSafe String appName = appInfo.getFullApplicationName(); String edition = ApplicationNamesInfo.getInstance().getEditionName(); if (edition != null) appName += " (" + edition + ")"; box.add(label(appName, JBFont.h3().asBold())); box.add(Box.createVerticalStrut(10)); myInfo.add(appName); @NotNull Pair<String, String> result = getBuildInfo(appInfo); lines.add(result.first); lines.add(""); myInfo.add(result.second); LicensingFacade la = LicensingFacade.getInstance(); if (la != null) { String licensedTo = la.getLicensedToMessage(); if (licensedTo != null) { lines.add(licensedTo); myInfo.add(licensedTo); } lines.addAll(la.getLicenseRestrictionsMessages()); myInfo.addAll(la.getLicenseRestrictionsMessages()); } lines.add(""); Properties properties = System.getProperties(); String javaVersion = properties.getProperty("java.runtime.version", properties.getProperty("java.version", "unknown")); String arch = properties.getProperty("os.arch", ""); String jreInfo = IdeBundle.message("about.box.jre", javaVersion, arch); lines.add(jreInfo); myInfo.add(MessageFormat.format("Runtime version: {0} {1}", javaVersion, arch)); String vmVersion = properties.getProperty("java.vm.name", "unknown"); String vmVendor = properties.getProperty("java.vendor", "unknown"); String vmVendorInfo = IdeBundle.message("about.box.vm", vmVersion, vmVendor); lines.add(vmVendorInfo); lines.add(""); myInfo.add(MessageFormat.format("VM: {0} by {1}", vmVersion, vmVendor)); //Print extra information from plugins ExtensionPointName<AboutPopupDescriptionProvider> ep = new ExtensionPointName<>("com.intellij.aboutPopupDescriptionProvider"); for (AboutPopupDescriptionProvider aboutInfoProvider : ep.getExtensions()) { String description = aboutInfoProvider.getDescription(); if (description != null) { lines.add(description); lines.add(""); } } @NlsSafe String text = String.join("<p>", lines); // joining with paragraph separators for better-looking copied text box.add(label(text, getDefaultTextFont())); addEmptyLine(box); //Link to open-source projects HyperlinkLabel openSourceSoftware = hyperlinkLabel(IdeBundle.message("about.box.powered.by")); openSourceSoftware.addHyperlinkListener(new HyperlinkAdapter() { @Override protected void hyperlinkActivated(@NotNull HyperlinkEvent e) { showOssInfo(box); } }); box.add(openSourceSoftware); //Copyright var year = Integer.toString(LocalDate.now().getYear()); var copyright = hyperlinkLabel(IdeBundle.message("about.box.copyright", appInfo.getCopyrightStart(), year, appInfo.getCompanyName())); copyright.addHyperlinkListener(new HyperlinkAdapter() { @Override protected void hyperlinkActivated(@NotNull HyperlinkEvent e) { BrowserUtil.browse(appInfo.getCompanyURL()); } }); box.add(copyright); addEmptyLine(box); return box; }