void () { @NlsSafe String text = "<html><span>" + requireNonNull(myPlugin).getName() + "</span></html>"; myNameComponent.setText(text); myNameComponent.setForeground(null); updateNotifications(); updateIcon(); if (myErrorComponent != null) { myErrorComponent.setVisible(false); } updateButtons(); IdeaPluginDescriptor plugin = getDescriptorForActions(); String version = plugin.getVersion(); if (plugin.isBundled() && !plugin.allowBundledUpdate()) { version = IdeBundle.message("plugin.version.bundled") + (Strings.isEmptyOrSpaces(version) ? "" : " " + version); } if (myUpdateDescriptor != null) { version = NewUiUtil.getVersion(plugin, myUpdateDescriptor); } boolean isVersion = !Strings.isEmptyOrSpaces(version); if (myVersion != null) { myVersion.setText(version); myVersionSize.setText(version); myVersion.setPreferredSize( new Dimension(myVersionSize.getPreferredSize().width + JBUIScale.scale(4), myVersionSize.getPreferredSize().height)); myVersion.setVisible(isVersion); } if (myVersion1 != null) { myVersion1.setText(version); myVersion1.setVisible(isVersion); } if (myVersion2 != null) { myVersion2.setText(IdeBundle.message("plugins.configurable.version.0", version)); myVersion2.setVisible(isVersion); } myTagPanel.setTags(PluginManagerConfigurable.getTags(myPlugin)); if (myMarketplace) { showMarketplaceData(myPlugin); updateMarketplaceTabsVisible(myPlugin instanceof PluginNode node && !node.isConverted()); } else { PluginNode node = getInstalledPluginMarketplaceNode(); updateMarketplaceTabsVisible(node != null); if (node != null) { showMarketplaceData(node); } updateEnabledForProject(); } String vendor = myPlugin.isBundled() ? null : Strings.trim(myPlugin.getVendor()); String organization = myPlugin.isBundled() ? null : Strings.trim(myPlugin.getOrganization()); if (!Strings.isEmptyOrSpaces(organization)) { myAuthor.show(organization, () -> mySearchListener.linkSelected( null, SearchWords.VENDOR.getValue() + (organization.indexOf(' ') == -1 ? organization : '\"' + organization + "\"") )); } else if (!Strings.isEmptyOrSpaces(vendor)) { myAuthor.show(vendor, null); } else { myAuthor.hide(); } showLicensePanel(); if (myPlugin.isBundled() && !myPlugin.allowBundledUpdate() || !isPluginFromMarketplace()) { myHomePage.hide(); } else { myHomePage.showWithBrowseUrl( IdeBundle.message("plugins.configurable.plugin.homepage.link"), true, () -> MarketplaceUrls.getPluginHomepage(myPlugin.getPluginId()) ); } if (myDate != null) { IdeaPluginDescriptor pluginNode = myUpdateDescriptor != null ? myUpdateDescriptor : myPlugin; String date = pluginNode instanceof PluginNode ? ((PluginNode)pluginNode).getPresentableDate() : null; myDate.setText(myMultiTabs ? IdeBundle.message("plugins.configurable.release.date.0", date) : date); myDate.setVisible(date != null); } if (mySuggestedFeatures != null) { String feature = null; if (myMarketplace && myPlugin instanceof PluginNode node) { feature = ContainerUtil.getFirstItem(node.getSuggestedFeatures()); } mySuggestedFeatures.setSuggestedText(feature); } for (JBScrollPane scrollPane : myScrollPanes) { scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); } String description = getDescription(); if (description != null && !description.equals(myDescription)) { myDescription = description; myDescriptionComponent.setText(XmlStringUtil.wrapInHtml(description)); if (myDescriptionComponent.getCaret() != null) { myDescriptionComponent.setCaretPosition(0); } } myDescriptionComponent.setVisible(description != null); myChangeNotesPanel.show(getChangeNotes()); if (myChangeNotesEmptyState != null) { String message = IdeBundle.message("plugins.configurable.notes.empty.text", StringUtil.defaultIfEmpty(StringUtil.defaultIfEmpty(organization, vendor), IdeBundle.message( "plugins.configurable.notes.empty.text.default.vendor"))); myChangeNotesEmptyState.getEmptyText().setText(message); } if (myImagesComponent != null) { PluginNode node = getInstalledPluginMarketplaceNode(); myImagesComponent.show(node == null ? myPlugin : node); } ApplicationManager.getApplication().invokeLater(() -> { IdeEventQueue.getInstance().flushQueue(); for (JBScrollPane scrollPane : myScrollPanes) { ((JBScrollBar)scrollPane.getVerticalScrollBar()).setCurrentValue(0); } }, ModalityState.any()); if (MyPluginModel.isInstallingOrUpdate(myPlugin)) { showProgress(); } else { fullRepaint(); } }