void (@NotNull PluginsGroupComponent component) { CopyProvider copyProvider = new CopyProvider() { @Override public void performCopy(@NotNull DataContext dataContext) { String text = StringUtil.join(component.getSelection(), pluginComponent -> { IdeaPluginDescriptor descriptor = pluginComponent.getPluginDescriptor(); return String.format("%s (%s)", descriptor.getName(), descriptor.getVersion()); }, "\n"); CopyPasteManager.getInstance().setContents(new TextTransferable(text)); } @Override public @NotNull ActionUpdateThread getActionUpdateThread() { return ActionUpdateThread.EDT; } @Override public boolean isCopyEnabled(@NotNull DataContext dataContext) { return !component.getSelection().isEmpty(); } @Override public boolean isCopyVisible(@NotNull DataContext dataContext) { return true; } }; DataManager.registerDataProvider(component, dataId -> PlatformDataKeys.COPY_PROVIDER.is(dataId) ? copyProvider : null); }