JComponent () { ApplicationInfoEx appInfo = ApplicationInfoEx.getInstanceEx(); NonOpaquePanel panel = new NonOpaquePanel(new BorderLayout()); String welcomeScreenLogoUrl = appInfo.getApplicationSvgIconUrl(); Icon icon = IconLoader.getIcon(welcomeScreenLogoUrl, WelcomeScreenComponentFactory.class.getClassLoader()); JLabel logo = new JLabel() { @Override public void updateUI() { super.updateUI(); float scale = JBUIScale.scale(28f) / icon.getIconWidth(); Icon smallLogoIcon = IconUtil.scale(icon, null, scale); setIcon(smallLogoIcon); } }; logo.setBorder(JBUI.Borders.empty(29, 0, 27, 0)); logo.setHorizontalAlignment(SwingConstants.CENTER); panel.add(logo, BorderLayout.WEST); String applicationName = getAppName(); JLabel appName = new JLabel(applicationName); appName.setForeground(JBColor.foreground()); appName.setFont(JBFont.create(appName.getFont().deriveFont(Font.PLAIN), false)); ActionLink copyAbout = new ActionLink("", EmptyIcon.ICON_16, createCopyAboutAction()); copyAbout.setHoveringIcon(AllIcons.Actions.Copy); copyAbout.setToolTipText(IdeBundle.message("welcome.screen.copy.about.action.text")); String appVersion = appInfo.getFullVersion(); if (appInfo.isEAP() && !appInfo.getBuild().isSnapshot()) { appVersion += " (" + appInfo.getBuild().asStringWithoutProductCode() + ")"; } JLabel version = new JLabel(appVersion); version.setFont(UIUtil.getLabelFont(UIUtil.FontSize.SMALL)); version.setForeground(ExperimentalUI.isNewUI() ? JBUI.CurrentTheme.ContextHelp.FOREGROUND : Gray._128); NonOpaquePanel textPanel = new NonOpaquePanel(); textPanel.setLayout(new VerticalFlowLayout(0, 0)); textPanel.setBorder(JBUI.Borders.empty(28, 10, 25, 10)); JPanel namePanel = JBUI.Panels.simplePanel(appName).andTransparent().addToRight(copyAbout); textPanel.add(namePanel); textPanel.add(version); panel.add(textPanel, BorderLayout.CENTER); panel.setToolTipText(applicationName + " " + appVersion); panel.addMouseListener(new MouseAdapter() { @Override public void mouseEntered(MouseEvent e) { copyAbout.setIcon(AllIcons.Actions.Copy); } @Override public void mouseExited(MouseEvent e) { copyAbout.setIcon(EmptyIcon.ICON_16); } }); return panel; }