void (IdeaPluginDescriptor plugin) { myPlugin = plugin; myRoot.setVisible(true); myRoot.setBackground(UIUtil.getTextFieldBackground()); myCategory.setVisible(true); myDownloadsPanel.setVisible(true); myUpdated.setVisible(true); myName.setFont(StartupUiUtil.getLabelFont().deriveFont(4f + StartupUiUtil.getLabelFont().getSize())); myName.setText("<html><body>" + plugin.getName() + "</body></html>"); myCategory.setText(plugin.getDisplayCategory() == null ? IdeBundle.message("label.category.unknown") : StringUtil.toUpperCase(plugin.getDisplayCategory())); String versionText; boolean showVersion = !plugin.isBundled() || plugin.allowBundledUpdate(); if (plugin instanceof PluginNode node) { myRating.setRate(node.getRating()); myDownloads.setText(IdeBundle.message("label.plugin.0.downloads", node.getDownloads())); versionText = showVersion ? "v" + node.getVersion() : null; //NON-NLS myUpdated.setText(IdeBundle.message("label.plugin.updated.0", DateFormatUtil.formatDate(node.getDate()))); if (node.getRepositoryName() != null) { myCategory.setVisible(false); myDownloadsPanel.setVisible(false); myUpdated.setVisible(false); } } else { myVersionInfoPanel.remove(myUpdated); myCategory.setVisible(false); myDownloadsPanel.setVisible(false); final String version = plugin.getVersion(); if (InstalledPluginsState.getInstance().wasUpdated(plugin.getPluginId())) { versionText = IdeBundle.message("label.new.version.will.be.available.after.restart"); } else if (version != null && showVersion) { versionText = IdeBundle.message("label.version", version); } else { versionText = null; } myUpdated.setVisible(false); } myVersion.setVisible(versionText != null); myVersion.setText(StringUtil.notNullize(versionText)); myRoot.revalidate(); myVersion.getParent().revalidate(); myVersion.revalidate(); }