From 0dea06c322cfef6a1c976cbb23d7971819092b7e Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 13 Aug 2013 19:44:19 +0400 Subject: [PATCH] plugins: ignore additional info when Ctrl-C from plugin's table (IDEA-111927) --- .../com/intellij/ide/plugins/PluginTable.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginTable.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginTable.java index 5d06987c5006..086aaa80d8cd 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginTable.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginTable.java @@ -15,16 +15,23 @@ */ package com.intellij.ide.plugins; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.psi.PsiElement; import com.intellij.ui.TableUtil; import com.intellij.ui.table.JBTable; import com.intellij.util.ArrayUtil; +import com.intellij.util.Function; import com.intellij.util.ui.ColumnInfo; +import com.intellij.util.ui.TextTransferrable; +import com.intellij.xml.util.XmlStringUtil; +import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; +import java.awt.datatransfer.Transferable; import java.util.List; /** @@ -54,6 +61,32 @@ public class PluginTable extends JBTable { setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); setShowGrid(false); setStriped(true); + setTransferHandler(new TransferHandler() { + @Nullable + @Override + protected Transferable createTransferable(JComponent c) { + final IdeaPluginDescriptor[] selectedValues = getSelectedObjects(); + if (selectedValues == null) return null; + final String text = StringUtil.join(selectedValues, new Function() { + @Override + public String fun(IdeaPluginDescriptor descriptor) { + return descriptor.getName(); + } + }, ", "); + final String htmlText = "\n\n\n"; + return new TextTransferrable(XmlStringUtil.wrapInHtml(htmlText), text); + } + + @Override + public int getSourceActions(JComponent c) { + return COPY; + } + }); } public void setColumnWidth(final int columnIndex, final int width) {